• Heikki Linnakangas's avatar
    Introduce wal_level GUC to explicitly control if information needed for · 9b8a7332
    Heikki Linnakangas authored
    archival or hot standby should be WAL-logged, instead of deducing that from
    other options like archive_mode. This replaces recovery_connections GUC in
    the primary, where it now has no effect, but it's still used in the standby
    to enable/disable hot standby.
    
    Remove the WAL-logging of "unlogged operations", like creating an index
    without WAL-logging and fsyncing it at the end. Instead, we keep a copy of
    the wal_mode setting and the settings that affect how much shared memory a
    hot standby server needs to track master transactions (max_connections,
    max_prepared_xacts, max_locks_per_xact) in pg_control. Whenever the settings
    change, at server restart, write a WAL record noting the new settings and
    update pg_control. This allows us to notice the change in those settings in
    the standby at the right moment, they used to be included in checkpoint
    records, but that meant that a changed value was not reflected in the
    standby until the first checkpoint after the change.
    
    Bump PG_CONTROL_VERSION and XLOG_PAGE_MAGIC. Whack XLOG_PAGE_MAGIC back to
    the sequence it used to follow, before hot standby and subsequent patches
    changed it to 0x9003.
    9b8a7332
guc.c 200 KB