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:
parent
99081c63e4
commit
f70f095c90
7
src/backend/utils/cache/relmapper.c
vendored
7
src/backend/utils/cache/relmapper.c
vendored
|
@ -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,
|
||||
|
|
Loading…
Reference in a new issue