{"Entry":{"collection":"guc","key":"promote_trigger_file","name":"promote_trigger_file","aliases":[],"metadata":{"baseline":false,"boot_human":"Empty string","boot_val":"","category":"Replication / Standby Servers","category_zh":"","changed_in":[],"changes":[{"documentation_changed":false,"fields":{},"from":"11","status":"added","to":"12"},{"documentation_changed":true,"fields":{},"from":"12","status":"changed","to":"13"},{"documentation_changed":false,"fields":{},"from":"15","status":"removed","to":"16"}],"content_hash":"9e6624d051316ce32b08d884d4ca12a1f4d609001af7e895adf18b40a1818082","context":"sighup","default_changed_in":[],"default_history":[{"from":"12","to":"15","value":"Empty string"}],"editorial":{"advice":{"olap":"Use the same migration path as OLTP, and also verify long batches, standbys, or large-object/extension workflows; removal of the old switch does not promise identical legacy behavior.","oltp":"Do not tune or continue emitting promote_trigger_file on PG16+. PostgreSQL 16 removed the trigger-file mechanism; use pg_ctl promote or pg_promote() through the HA controller. Scan every configuration layer and regression-test the application before upgrade.","small":"Delete the obsolete setting and adopt the supported replacement directly; do not emulate legacy behavior in scripts without a demonstrated compatibility requirement."},"mechanism":["Specifies a file name whose presence ends recovery in the standby. The parameter still exists in PG15 and is no longer recognized from PG16. PostgreSQL 16 removed the trigger-file mechanism; use pg_ctl promote or pg_promote() through the HA controller.","While present, the startup/recovery configuration watched for this path and promoted when the file appeared. File races, stale files, and shared-storage semantics made orchestration fragile; PostgreSQL 16 removed the setting.","Before upgrading, inspect hot_standby, hot_standby_feedback, max_standby_archive_delay, remove the old name from configuration, ALTER SYSTEM, role/database settings, and automation templates, and verify the replacement before starting PG16 or later."],"pitfalls":["Continuing to emit unknown parameter promote_trigger_file on PG16+.","Deleting only the setting name without migrating dependent application behavior.","Assuming the historical default equals the replacement mechanism's default.","Missing stale entries in ALTER SYSTEM, role/database settings, or automation templates."],"references":[{"title":"PostgreSQL 15: promote_trigger_file","url":"https://www.postgresql.org/docs/15/runtime-config-replication.html#GUC-PROMOTE-TRIGGER-FILE"}],"related":["hot_standby","hot_standby_feedback","max_standby_archive_delay","max_standby_streaming_delay","primary_conninfo","primary_slot_name"],"summary":"promote_trigger_file specifies a file name whose presence ends recovery in the standby. It appears in the PG12–15 evidence matrix and was removed in PG16. PostgreSQL 16 removed the trigger-file mechanism; use pg_ctl promote or pg_promote() through the HA controller."},"enumvals":[],"first_version":"12","group":"Replication","group_slug":"replication","imported_at":"2026-09-27T17:57:31.849246+08:00","intro_commit":{"authored_at":"2018-11-25T16:31:16+01:00","discussion":["https://www.postgresql.org/message-id/flat/607741529606767@web3g.yandex.ru/"],"hash":"2dedf4d9a899b36d1a8ed29be5efbd1b31a8fe85","subject":"Integrate recovery.conf into postgresql.conf","url":"https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=2dedf4d9a899b36d1a8ed29be5efbd1b31a8fe85"},"key":"promote_trigger_file","last_version":"15","max_val":"","min_val":"","name":"promote_trigger_file","position":318,"present_in":["12","13","14","15"],"short_desc":"Specifies a trigger file whose presence ends recovery in the standby.","short_desc_zh":"","source_rev":"english-manuals:e985b6381b60c7a519b2adc0f13dc35e2d389b957bfe9fc5f17888e8f58826c0","unit":"","vartype":"string"}},"Definition":{"Collection":"guc","Key":"promote_trigger_file","SourceDatabase":"center","Version":"15","SourceTable":"guc","SourceKey":"promote_trigger_file","SourceRevision":"english-manuals:e985b6381b60c7a519b2adc0f13dc35e2d389b957bfe9fc5f17888e8f58826c0","Facts":{"boot_val":"","category":"Replication / Standby Servers","context":"sighup","description":"Specifies a trigger file whose presence ends recovery in the standby. Even if this value is not set, you can still promote the standby using pg_ctl promote or calling pg_promote(). This parameter can only be set in the postgresql.conf file or on the server command line.","doc":{"anchor":"GUC-PROMOTE-TRIGGER-FILE","file":"runtime-config-replication.html","lang":"en","sha256":"ef03eaf0fb810253eda4b9183c03683b99b8d425f393d3bc69e906514425a34d","slug":"15"},"documented":true,"enumvals":null,"extra_desc":null,"lang":"en","max_val":null,"metadata_version":"15","min_val":null,"name":"promote_trigger_file","short_desc":"Specifies a file name whose presence ends recovery in the standby.","source":"pg-settings-source-snapshot","unit":null,"vartype":"string"},"ManualEvidence":{"doc":{"anchor":"GUC-PROMOTE-TRIGGER-FILE","file":"runtime-config-replication.html","lang":"en","sha256":"ef03eaf0fb810253eda4b9183c03683b99b8d425f393d3bc69e906514425a34d","slug":"15"}},"MeasuredEvidence":{"metadata_version":"15"}},"Text":{"Collection":"guc","Key":"promote_trigger_file","SourceDatabase":"center","Version":"15","Locale":"en","Title":"promote_trigger_file","Summary":"Specifies a trigger file whose presence ends recovery in the standby. Even if this value is not set, you can still promote the standby using pg_ctl promote or calling pg_promote(). This parameter can only be set in the postgresql.conf file or on the server command line.","BodyHTML":"\u003cp\u003eSpecifies a trigger file whose presence ends recovery in the standby. Even if this value is not set, you can still promote the standby using pg_ctl promote or calling pg_promote(). This parameter can only be set in the postgresql.conf file or on the server command line.\u003c/p\u003e","SourceRevision":"english-manuals:e985b6381b60c7a519b2adc0f13dc35e2d389b957bfe9fc5f17888e8f58826c0","ContentHash":"5c98c8f5c2297f9c6db6b53131968cc186e7aa9f4eb3fdedc23f91100e8aec01","Payload":{"description":"Specifies a trigger file whose presence ends recovery in the standby. Even if this value is not set, you can still promote the standby using pg_ctl promote or calling pg_promote(). This parameter can only be set in the postgresql.conf file or on the server command line."}},"RequestedLocale":"zh-Hans","Fallback":true,"Versions":["12","13","14","15"],"Locales":["en"],"Signatures":null,"Spellings":null,"SQLState":null,"Evidence":null}
