{"Entry":{"collection":"guc","key":"allow_system_table_mods","name":"allow_system_table_mods","aliases":[],"metadata":{"baseline":false,"boot_human":"Not specified","boot_val":null,"category":"Developer Options","category_zh":"","changed_in":["13"],"changes":[{"documentation_changed":false,"fields":{},"from":"8.1","status":"added","to":"8.2"},{"documentation_changed":true,"fields":{"context":{"from":"postmaster","to":"superuser"}},"from":"12","status":"changed","to":"13"},{"documentation_changed":true,"fields":{},"from":"14","status":"changed","to":"15"}],"content_hash":"8412789b81dc0424a54eee824dd154fd6ecdba6fb29fc8c3cb28d45060115720","context":"","default_changed_in":[],"default_history":[{"from":"9.0","to":"19","value":"off"}],"editorial":{"advice":{"olap":"Workload type does not reduce the catalog-corruption risk from allow_system_table_mods; keep it off on analytical systems too.","oltp":"Never use allow_system_table_mods for performance tuning. Restrict it to PostgreSQL development or a documented, disposable maintenance procedure with a verified backup and exact rollback path.","small":"Keep allow_system_table_mods=off. Lack of a staging system is not permission to experiment on the only copy of the data."},"mechanism":["allow_system_table_mods removes protections against changing system-catalog structure and permits other normally forbidden catalog actions. Superuser status alone does not normally grant these operations.","Catalog definitions are coupled to PostgreSQL code, cache descriptors, bootstrap data, WAL, and upgrade assumptions. A superficially valid ALTER can create irreversible corruption or data loss.","The parameter exists for PostgreSQL development, bootstrap, and tightly controlled tooling. It does not provide a supported extension mechanism; extensions must use published catalog and hook interfaces. Its superuser context permits an authorized session change without a server restart."],"pitfalls":["Leaving allow_system_table_mods enabled after the bounded diagnostic or recovery task.","Running the experiment on the only copy of production data.","Underestimating log, core-file, temporary-file, WAL, CPU, or connection-slot amplification.","Treating a server that merely starts or completes a query as proof that data and behavior are correct."],"references":[{"title":"PostgreSQL 19 Beta 4: allow_system_table_mods","url":"https://www.postgresql.org/docs/19/runtime-config-developer.html#GUC-ALLOW-SYSTEM-TABLE-MODS"},{"title":"PostgreSQL 19 release notes","url":"https://www.postgresql.org/docs/19/release-19.html"}],"related":["allow_in_place_tablespaces","ignore_system_indexes","zero_damaged_pages","wal_consistency_checking"],"summary":"allow_system_table_mods — Allows modifications of the structure of system tables. Observed in PG9.0–19 Beta 4; its last measured boot default is off in PG19 Beta 4, with superuser context. This is a beta-snapshot fact and can change before PostgreSQL 19 GA."},"enumvals":[],"first_version":"8.2","group":"Developer Options","group_slug":"developer","imported_at":"2026-09-27T17:57:30.74126+08:00","intro_commit":{},"key":"allow_system_table_mods","last_version":"20","max_val":"","min_val":"","name":"allow_system_table_mods","position":6,"present_in":["8.2","8.3","8.4","9.0","9.1","9.2","9.3","9.4","9.5","9.6","10","11","12","13","14","15","16","17","18","19","20"],"short_desc":"Allows modification of the structure of system tables as well as certain other risky actions on system tables.","short_desc_zh":"","source_rev":"english-manuals:e096f2537b95f446b78e738fb7d186163c21a8ff51cf127a7531bf59db6361e6","unit":"","vartype":"bool"}},"Definition":{"Collection":"guc","Key":"allow_system_table_mods","SourceDatabase":"center","Version":"18","SourceTable":"guc","SourceKey":"allow_system_table_mods","SourceRevision":"english-manuals:e096f2537b95f446b78e738fb7d186163c21a8ff51cf127a7531bf59db6361e6","Facts":{"boot_val":"off","category":"Developer Options","context":"superuser","description":"Allows modification of the structure of system tables as well as certain other risky actions on system tables. This is otherwise not allowed even for superusers. Ill-advised use of this setting can cause irretrievable data loss or seriously corrupt the database system. Only superusers and users with the appropriate SET privilege can change this setting.","doc":{"anchor":"GUC-ALLOW-SYSTEM-TABLE-MODS","file":"runtime-config-developer.html","lang":"en","sha256":"f5e7e39d176c642ac0799c87669ce2f6f60fcd97d109e290860ec74c36d7ecad","slug":"18"},"documented":true,"enumvals":null,"extra_desc":null,"lang":"en","max_val":null,"metadata_version":"18","min_val":null,"name":"allow_system_table_mods","short_desc":"Allows modifications of the structure of system tables.","source":"pg-settings-source-snapshot","unit":null,"vartype":"bool"},"ManualEvidence":{"doc":{"anchor":"GUC-ALLOW-SYSTEM-TABLE-MODS","file":"runtime-config-developer.html","lang":"en","sha256":"f5e7e39d176c642ac0799c87669ce2f6f60fcd97d109e290860ec74c36d7ecad","slug":"18"}},"MeasuredEvidence":{"metadata_version":"18"}},"Text":{"Collection":"guc","Key":"allow_system_table_mods","SourceDatabase":"center","Version":"18","Locale":"en","Title":"allow_system_table_mods","Summary":"Allows modification of the structure of system tables as well as certain other risky actions on system tables. This is otherwise not allowed even for superusers. Ill-advised use of this setting can cause irretrievable data loss or seriously corrupt the database system. Only superusers and users with the appropriate SET privilege can change this setting.","BodyHTML":"\u003cp\u003eAllows modification of the structure of system tables as well as certain other risky actions on system tables. This is otherwise not allowed even for superusers. Ill-advised use of this setting can cause irretrievable data loss or seriously corrupt the database system. Only superusers and users with the appropriate SET privilege can change this setting.\u003c/p\u003e","SourceRevision":"english-manuals:e096f2537b95f446b78e738fb7d186163c21a8ff51cf127a7531bf59db6361e6","ContentHash":"170080a93bcedbb546375b02dfd42d427b4e6c9586098ba04251a9a724354480","Payload":{"description":"Allows modification of the structure of system tables as well as certain other risky actions on system tables. This is otherwise not allowed even for superusers. Ill-advised use of this setting can cause irretrievable data loss or seriously corrupt the database system. Only superusers and users with the appropriate SET privilege can change this setting."}},"RequestedLocale":"zh-Hans","Fallback":true,"Versions":["10","11","12","13","14","15","16","17","18","19","20","8.2","8.3","8.4","9.0","9.1","9.2","9.3","9.4","9.5","9.6"],"Locales":["en"],"Signatures":null,"Spellings":null,"SQLState":null,"Evidence":null}
