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
|
@ -837,8 +837,11 @@ perform_relmap_update(bool shared, const RelMapFile *updates)
|
||||||
else
|
else
|
||||||
memcpy(&newmap, &local_map, sizeof(RelMapFile));
|
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 out the updated map and do other necessary tasks */
|
||||||
write_relmap_file(shared, &newmap, true, true, true,
|
write_relmap_file(shared, &newmap, true, true, true,
|
||||||
|
|
Loading…
Reference in New Issue