Allow new relmapper entries when allow_system_table_mods is true.

This restores the pre-9.0 situation that it's possible to add new indexes
on pg_class and other mapped-but-not-shared catalogs, so long as you broke
the glass and flipped the big red Dont-Touch-Me switch.  As before, there
are a lot of gotchas, and you'd have to be pretty desperate to try this
on a production database; but there doesn't seem to be a reason for
relmapper.c to be preventing such things all by itself.  Per
experimentation with a case suggested by Cody Cutrer.
This commit is contained in:
Tom Lane 2012-03-21 14:09:39 -04:00
parent 99081c63e4
commit f70f095c90
1 changed files with 5 additions and 2 deletions

View File

@ -837,8 +837,11 @@ perform_relmap_update(bool shared, const RelMapFile *updates)
else
memcpy(&newmap, &local_map, sizeof(RelMapFile));
/* Apply the updates to newmap. No new mappings should appear. */
merge_map_updates(&newmap, updates, false);
/*
* Apply the updates to newmap. No new mappings should appear, unless
* somebody is adding indexes to system catalogs.
*/
merge_map_updates(&newmap, updates, allowSystemTableMods);
/* Write out the updated map and do other necessary tasks */
write_relmap_file(shared, &newmap, true, true, true,