=== Applying patches on top of PostgreSQL commit ID 03facc1211b0ff1550f41bcd4da09329080c30f9 === /etc/rc.d/jail: WARNING: Per-jail configuration via jail_* variables is obsolete. Please consider migrating to /etc/jail.conf. Tue Mar 10 10:05:27 UTC 2026 On branch cf/5323 nothing to commit, working tree clean === using 'git am' to apply patch ./v20260305-0001-Online-enabling-and-disabling-of-data-chec.patch === Applying: Online enabling and disabling of data checksums Using index info to reconstruct a base tree... M doc/src/sgml/func/func-admin.sgml M doc/src/sgml/monitoring.sgml M src/backend/access/transam/xlog.c M src/backend/access/transam/xlogfuncs.c M src/backend/access/transam/xlogrecovery.c M src/backend/backup/basebackup.c M src/backend/catalog/system_functions.sql M src/backend/catalog/system_views.sql M src/backend/postmaster/auxprocess.c M src/backend/postmaster/bgworker.c M src/backend/postmaster/postmaster.c M src/backend/postmaster/walsummarizer.c M src/backend/replication/logical/decode.c M src/backend/storage/ipc/ipci.c M src/backend/storage/ipc/procsignal.c M src/backend/utils/activity/pgstat_backend.c M src/backend/utils/adt/pgstatfuncs.c M src/backend/utils/init/miscinit.c M src/backend/utils/init/postinit.c M src/backend/utils/misc/guc_parameters.dat M src/backend/utils/misc/guc_tables.c M src/include/access/xlog_internal.h M src/include/catalog/pg_proc.dat M src/include/miscadmin.h M src/include/postmaster/proctypelist.h M src/include/storage/bufpage.h M src/include/storage/proc.h M src/include/storage/procsignal.h M src/test/modules/Makefile M src/test/modules/meson.build M src/test/regress/expected/rules.out M src/tools/pgindent/typedefs.list Falling back to patching base and 3-way merge... Auto-merging src/tools/pgindent/typedefs.list Auto-merging src/test/regress/expected/rules.out Auto-merging src/test/modules/meson.build Auto-merging src/test/modules/Makefile Auto-merging src/include/storage/procsignal.h Auto-merging src/include/storage/proc.h CONFLICT (content): Merge conflict in src/include/storage/proc.h Auto-merging src/include/storage/bufpage.h Auto-merging src/include/postmaster/proctypelist.h CONFLICT (content): Merge conflict in src/include/postmaster/proctypelist.h Auto-merging src/include/miscadmin.h Auto-merging src/include/catalog/pg_proc.dat Auto-merging src/include/access/xlog_internal.h Auto-merging src/backend/utils/misc/guc_tables.c CONFLICT (content): Merge conflict in src/backend/utils/misc/guc_tables.c Auto-merging src/backend/utils/misc/guc_parameters.dat Auto-merging src/backend/utils/init/postinit.c Auto-merging src/backend/utils/init/miscinit.c Auto-merging src/backend/utils/adt/pgstatfuncs.c Auto-merging src/backend/utils/activity/pgstat_backend.c Auto-merging src/backend/storage/ipc/procsignal.c Auto-merging src/backend/storage/ipc/ipci.c Auto-merging src/backend/replication/logical/decode.c Auto-merging src/backend/postmaster/walsummarizer.c Auto-merging src/backend/postmaster/postmaster.c Auto-merging src/backend/postmaster/bgworker.c Auto-merging src/backend/postmaster/auxprocess.c Auto-merging src/backend/catalog/system_views.sql Auto-merging src/backend/catalog/system_functions.sql CONFLICT (content): Merge conflict in src/backend/catalog/system_functions.sql Auto-merging src/backend/backup/basebackup.c Auto-merging src/backend/access/transam/xlogrecovery.c Auto-merging src/backend/access/transam/xlogfuncs.c CONFLICT (content): Merge conflict in src/backend/access/transam/xlogfuncs.c Auto-merging src/backend/access/transam/xlog.c Auto-merging doc/src/sgml/monitoring.sgml Auto-merging doc/src/sgml/func/func-admin.sgml error: Failed to merge in the changes. hint: Use 'git am --show-current-patch=diff' to see the failed patch Patch failed at 0001 Online enabling and disabling of data checksums When you have resolved this problem, run "git am --continue". If you prefer to skip this patch, run "git am --skip" instead. To restore the original branch and stop patching, run "git am --abort". Unstaged changes after reset: M doc/src/sgml/func/func-admin.sgml M doc/src/sgml/glossary.sgml M doc/src/sgml/images/Makefile M doc/src/sgml/monitoring.sgml M doc/src/sgml/ref/pg_checksums.sgml M doc/src/sgml/regress.sgml M doc/src/sgml/wal.sgml M src/backend/access/rmgrdesc/xlogdesc.c M src/backend/access/transam/xlog.c M src/backend/access/transam/xlogfuncs.c M src/backend/access/transam/xlogrecovery.c M src/backend/backup/basebackup.c M src/backend/catalog/system_functions.sql M src/backend/catalog/system_views.sql M src/backend/postmaster/Makefile M src/backend/postmaster/auxprocess.c M src/backend/postmaster/bgworker.c M src/backend/postmaster/meson.build M src/backend/postmaster/postmaster.c M src/backend/postmaster/walsummarizer.c M src/backend/replication/logical/decode.c M src/backend/storage/ipc/ipci.c M src/backend/storage/ipc/procsignal.c M src/backend/storage/page/README M src/backend/storage/page/bufpage.c M src/backend/utils/activity/pgstat_backend.c M src/backend/utils/activity/pgstat_io.c M src/backend/utils/activity/wait_event_names.txt M src/backend/utils/adt/pgstatfuncs.c M src/backend/utils/init/miscinit.c M src/backend/utils/init/postinit.c M src/backend/utils/misc/guc_parameters.dat M src/backend/utils/misc/guc_tables.c M src/bin/pg_checksums/pg_checksums.c M src/bin/pg_controldata/pg_controldata.c M src/bin/pg_upgrade/controldata.c M src/include/access/xlog.h M src/include/access/xlog_internal.h M src/include/catalog/pg_control.h M src/include/catalog/pg_proc.dat M src/include/commands/progress.h M src/include/miscadmin.h M src/include/postmaster/proctypelist.h M src/include/storage/bufpage.h M src/include/storage/checksum.h M src/include/storage/lwlocklist.h M src/include/storage/proc.h M src/include/storage/procsignal.h M src/include/utils/backend_progress.h M src/test/modules/Makefile M src/test/modules/meson.build M src/test/perl/PostgreSQL/Test/Cluster.pm M src/test/regress/expected/rules.out M src/test/regress/expected/stats.out M src/tools/pgindent/typedefs.list Removing doc/src/sgml/images/datachecksums.gv Removing doc/src/sgml/images/datachecksums.svg Removing src/backend/postmaster/datachecksumsworker.c Removing src/include/postmaster/datachecksumsworker.h Removing src/test/modules/test_checksums/ === using patch(1) to apply patch ./v20260305-0001-Online-enabling-and-disabling-of-data-chec.patch === patching file doc/src/sgml/func/func-admin.sgml Hunk #1 succeeded at 3123 (offset 36 lines). patching file doc/src/sgml/glossary.sgml patching file doc/src/sgml/images/Makefile patching file doc/src/sgml/images/datachecksums.gv patching file doc/src/sgml/images/datachecksums.svg patching file doc/src/sgml/monitoring.sgml Hunk #1 succeeded at 3773 (offset 151 lines). Hunk #2 succeeded at 3789 (offset 151 lines). Hunk #3 succeeded at 7273 (offset 151 lines). patching file doc/src/sgml/ref/pg_checksums.sgml patching file doc/src/sgml/regress.sgml patching file doc/src/sgml/wal.sgml patching file src/backend/access/rmgrdesc/xlogdesc.c patching file src/backend/access/transam/xlog.c Hunk #1 succeeded at 553 (offset 1 line). Hunk #2 succeeded at 579 (offset 1 line). Hunk #3 succeeded at 693 (offset 1 line). Hunk #4 succeeded at 777 (offset 1 line). Hunk #5 succeeded at 893 (offset 1 line). Hunk #6 succeeded at 4317 (offset -16 lines). Hunk #7 succeeded at 4657 (offset -16 lines). Hunk #8 succeeded at 4690 (offset -16 lines). Hunk #9 succeeded at 5388 (offset -16 lines). Hunk #10 succeeded at 5558 (offset -16 lines). Hunk #11 succeeded at 5637 (offset -16 lines). Hunk #12 succeeded at 6252 (offset -16 lines). Hunk #13 succeeded at 6719 (offset -16 lines). Hunk #14 succeeded at 7065 (offset -16 lines). Hunk #15 succeeded at 7643 (offset -6 lines). Hunk #16 succeeded at 7701 (offset -6 lines). Hunk #17 succeeded at 7768 (offset -6 lines). Hunk #18 succeeded at 7921 (offset -6 lines). Hunk #19 succeeded at 8067 (offset -6 lines). Hunk #20 succeeded at 8414 (offset -6 lines). Hunk #21 succeeded at 8832 (offset -6 lines). Hunk #22 succeeded at 8976 (offset -6 lines). Hunk #23 succeeded at 9040 (offset -6 lines). Hunk #24 succeeded at 9067 (offset -6 lines). Hunk #25 succeeded at 9107 (offset -6 lines). Hunk #26 succeeded at 9119 (offset -6 lines). Hunk #27 succeeded at 9312 (offset -6 lines). Hunk #28 succeeded at 9399 (offset -6 lines). patching file src/backend/access/transam/xlogfuncs.c Hunk #1 FAILED at 26. Hunk #2 succeeded at 857 with fuzz 2 (offset 109 lines). 1 out of 2 hunks FAILED -- saving rejects to file src/backend/access/transam/xlogfuncs.c.rej patching file src/backend/access/transam/xlogrecovery.c Hunk #1 succeeded at 719 (offset -63 lines). patching file src/backend/backup/basebackup.c Hunk #1 succeeded at 1615 (offset 2 lines). Hunk #2 succeeded at 1748 (offset 2 lines). Hunk #3 succeeded at 1843 (offset 2 lines). Hunk #4 succeeded at 1872 (offset 2 lines). Hunk #5 succeeded at 1901 (offset 2 lines). Hunk #6 succeeded at 2021 (offset 2 lines). patching file src/backend/catalog/system_functions.sql Hunk #1 FAILED at 657. Hunk #2 FAILED at 782. 2 out of 2 hunks FAILED -- saving rejects to file src/backend/catalog/system_functions.sql.rej patching file src/backend/catalog/system_views.sql Hunk #1 succeeded at 1413 (offset 28 lines). patching file src/backend/postmaster/Makefile patching file src/backend/postmaster/auxprocess.c Hunk #2 succeeded at 70 (offset 1 line). patching file src/backend/postmaster/bgworker.c Hunk #2 succeeded at 144 (offset 1 line). patching file src/backend/postmaster/datachecksumsworker.c patching file src/backend/postmaster/meson.build patching file src/backend/postmaster/postmaster.c patching file src/backend/postmaster/walsummarizer.c Hunk #1 succeeded at 1428 (offset -1 lines). patching file src/backend/replication/logical/decode.c patching file src/backend/storage/ipc/ipci.c Hunk #2 succeeded at 143 (offset 1 line). Hunk #3 succeeded at 318 (offset 1 line). patching file src/backend/storage/ipc/procsignal.c Hunk #1 FAILED at 18. Hunk #2 succeeded at 582 (offset 3 lines). 1 out of 2 hunks FAILED -- saving rejects to file src/backend/storage/ipc/procsignal.c.rej patching file src/backend/storage/page/README patching file src/backend/storage/page/bufpage.c patching file src/backend/utils/activity/pgstat_backend.c patching file src/backend/utils/activity/pgstat_io.c patching file src/backend/utils/activity/wait_event_names.txt patching file src/backend/utils/adt/pgstatfuncs.c Hunk #1 succeeded at 296 (offset 1 line). Hunk #2 succeeded at 1182 (offset 13 lines). Hunk #3 succeeded at 1197 (offset 13 lines). patching file src/backend/utils/init/miscinit.c Hunk #1 succeeded at 845 (offset 1 line). patching file src/backend/utils/init/postinit.c Hunk #1 succeeded at 757 (offset 8 lines). Hunk #2 succeeded at 903 (offset 8 lines). patching file src/backend/utils/misc/guc_parameters.dat patching file src/backend/utils/misc/guc_tables.c Hunk #1 succeeded at 501 (offset 10 lines). Hunk #2 succeeded at 636 (offset 10 lines). patching file src/bin/pg_checksums/pg_checksums.c patching file src/bin/pg_controldata/pg_controldata.c patching file src/bin/pg_upgrade/controldata.c patching file src/include/access/xlog.h patching file src/include/access/xlog_internal.h Hunk #2 succeeded at 288 (offset -2 lines). Hunk #3 succeeded at 310 (offset -2 lines). patching file src/include/catalog/pg_control.h patching file src/include/catalog/pg_proc.dat Hunk #1 succeeded at 12531 (offset 126 lines). patching file src/include/commands/progress.h patching file src/include/miscadmin.h patching file src/include/postmaster/datachecksumsworker.h patching file src/include/postmaster/proctypelist.h Hunk #1 FAILED at 38. 1 out of 1 hunk FAILED -- saving rejects to file src/include/postmaster/proctypelist.h.rej patching file src/include/storage/bufpage.h patching file src/include/storage/checksum.h patching file src/include/storage/lwlocklist.h patching file src/include/storage/proc.h Hunk #1 FAILED at 463. 1 out of 1 hunk FAILED -- saving rejects to file src/include/storage/proc.h.rej patching file src/include/storage/procsignal.h Hunk #1 succeeded at 48 (offset -8 lines). patching file src/include/utils/backend_progress.h patching file src/test/modules/Makefile patching file src/test/modules/meson.build patching file src/test/modules/test_checksums/.gitignore patching file src/test/modules/test_checksums/Makefile patching file src/test/modules/test_checksums/README patching file src/test/modules/test_checksums/meson.build patching file src/test/modules/test_checksums/t/001_basic.pl patching file src/test/modules/test_checksums/t/002_restarts.pl patching file src/test/modules/test_checksums/t/003_standby_restarts.pl patching file src/test/modules/test_checksums/t/004_offline.pl patching file src/test/modules/test_checksums/t/005_injection.pl patching file src/test/modules/test_checksums/t/006_pgbench_single.pl patching file src/test/modules/test_checksums/t/007_pgbench_standby.pl patching file src/test/modules/test_checksums/t/DataChecksums/Utils.pm patching file src/test/modules/test_checksums/test_checksums--1.0.sql patching file src/test/modules/test_checksums/test_checksums.c patching file src/test/modules/test_checksums/test_checksums.control patching file src/test/perl/PostgreSQL/Test/Cluster.pm patching file src/test/regress/expected/rules.out patching file src/test/regress/expected/stats.out patching file src/tools/pgindent/typedefs.list Hunk #1 succeeded at 429 (offset 1 line). Hunk #2 succeeded at 601 with fuzz 2 (offset 1 line). Hunk #3 succeeded at 626 (offset 2 lines). Hunk #4 succeeded at 4334 (offset 13 lines). Unstaged changes after reset: M doc/src/sgml/func/func-admin.sgml M doc/src/sgml/glossary.sgml M doc/src/sgml/images/Makefile M doc/src/sgml/monitoring.sgml M doc/src/sgml/ref/pg_checksums.sgml M doc/src/sgml/regress.sgml M doc/src/sgml/wal.sgml M src/backend/access/rmgrdesc/xlogdesc.c M src/backend/access/transam/xlog.c M src/backend/access/transam/xlogfuncs.c M src/backend/access/transam/xlogrecovery.c M src/backend/backup/basebackup.c M src/backend/catalog/system_views.sql M src/backend/postmaster/Makefile M src/backend/postmaster/auxprocess.c M src/backend/postmaster/bgworker.c M src/backend/postmaster/meson.build M src/backend/postmaster/postmaster.c M src/backend/postmaster/walsummarizer.c M src/backend/replication/logical/decode.c M src/backend/storage/ipc/ipci.c M src/backend/storage/ipc/procsignal.c M src/backend/storage/page/README M src/backend/storage/page/bufpage.c M src/backend/utils/activity/pgstat_backend.c M src/backend/utils/activity/pgstat_io.c M src/backend/utils/activity/wait_event_names.txt M src/backend/utils/adt/pgstatfuncs.c M src/backend/utils/init/miscinit.c M src/backend/utils/init/postinit.c M src/backend/utils/misc/guc_parameters.dat M src/backend/utils/misc/guc_tables.c M src/bin/pg_checksums/pg_checksums.c M src/bin/pg_controldata/pg_controldata.c M src/bin/pg_upgrade/controldata.c M src/include/access/xlog.h M src/include/access/xlog_internal.h M src/include/catalog/pg_control.h M src/include/catalog/pg_proc.dat M src/include/commands/progress.h M src/include/miscadmin.h M src/include/storage/bufpage.h M src/include/storage/checksum.h M src/include/storage/lwlocklist.h M src/include/storage/procsignal.h M src/include/utils/backend_progress.h M src/test/modules/Makefile M src/test/modules/meson.build M src/test/perl/PostgreSQL/Test/Cluster.pm M src/test/regress/expected/rules.out M src/test/regress/expected/stats.out M src/tools/pgindent/typedefs.list Removing doc/src/sgml/images/datachecksums.gv Removing doc/src/sgml/images/datachecksums.svg Removing src/backend/access/transam/xlogfuncs.c.rej Removing src/backend/catalog/system_functions.sql.rej Removing src/backend/postmaster/datachecksumsworker.c Removing src/backend/storage/ipc/procsignal.c.rej Removing src/include/postmaster/datachecksumsworker.h Removing src/include/postmaster/proctypelist.h.rej Removing src/include/storage/proc.h.rej Removing src/test/modules/test_checksums/ === using 'git apply' to apply patch ./v20260305-0001-Online-enabling-and-disabling-of-data-chec.patch === Applied patch to 'doc/src/sgml/func/func-admin.sgml' cleanly. Applied patch to 'doc/src/sgml/glossary.sgml' cleanly. Applied patch to 'doc/src/sgml/images/Makefile' cleanly. Falling back to direct application... Falling back to direct application... Applied patch to 'doc/src/sgml/monitoring.sgml' cleanly. Applied patch to 'doc/src/sgml/ref/pg_checksums.sgml' cleanly. Applied patch to 'doc/src/sgml/regress.sgml' cleanly. Applied patch to 'doc/src/sgml/wal.sgml' cleanly. Applied patch to 'src/backend/access/rmgrdesc/xlogdesc.c' cleanly. Applied patch to 'src/backend/access/transam/xlog.c' cleanly. Applied patch to 'src/backend/access/transam/xlogfuncs.c' with conflicts. Applied patch to 'src/backend/access/transam/xlogrecovery.c' cleanly. Applied patch to 'src/backend/backup/basebackup.c' cleanly. Applied patch to 'src/backend/catalog/system_functions.sql' with conflicts. Applied patch to 'src/backend/catalog/system_views.sql' cleanly. Applied patch to 'src/backend/postmaster/Makefile' cleanly. Applied patch to 'src/backend/postmaster/auxprocess.c' cleanly. Applied patch to 'src/backend/postmaster/bgworker.c' cleanly. Falling back to direct application... Applied patch to 'src/backend/postmaster/meson.build' cleanly. Applied patch to 'src/backend/postmaster/postmaster.c' cleanly. Applied patch to 'src/backend/postmaster/walsummarizer.c' cleanly. Applied patch to 'src/backend/replication/logical/decode.c' cleanly. Applied patch to 'src/backend/storage/ipc/ipci.c' cleanly. Applied patch to 'src/backend/storage/ipc/procsignal.c' cleanly. Applied patch to 'src/backend/storage/page/README' cleanly. Applied patch to 'src/backend/storage/page/bufpage.c' cleanly. Applied patch to 'src/backend/utils/activity/pgstat_backend.c' cleanly. Applied patch to 'src/backend/utils/activity/pgstat_io.c' cleanly. Applied patch to 'src/backend/utils/activity/wait_event_names.txt' cleanly. Applied patch to 'src/backend/utils/adt/pgstatfuncs.c' cleanly. Applied patch to 'src/backend/utils/init/miscinit.c' cleanly. Applied patch to 'src/backend/utils/init/postinit.c' cleanly. Applied patch to 'src/backend/utils/misc/guc_parameters.dat' cleanly. Applied patch to 'src/backend/utils/misc/guc_tables.c' with conflicts. Applied patch to 'src/bin/pg_checksums/pg_checksums.c' cleanly. Applied patch to 'src/bin/pg_controldata/pg_controldata.c' cleanly. Applied patch to 'src/bin/pg_upgrade/controldata.c' cleanly. Applied patch to 'src/include/access/xlog.h' cleanly. Applied patch to 'src/include/access/xlog_internal.h' cleanly. Applied patch to 'src/include/catalog/pg_control.h' cleanly. Applied patch to 'src/include/catalog/pg_proc.dat' cleanly. Applied patch to 'src/include/commands/progress.h' cleanly. Applied patch to 'src/include/miscadmin.h' cleanly. Falling back to direct application... Applied patch to 'src/include/postmaster/proctypelist.h' with conflicts. Applied patch to 'src/include/storage/bufpage.h' cleanly. Applied patch to 'src/include/storage/checksum.h' cleanly. Applied patch to 'src/include/storage/lwlocklist.h' cleanly. Applied patch to 'src/include/storage/proc.h' with conflicts. Applied patch to 'src/include/storage/procsignal.h' cleanly. Applied patch to 'src/include/utils/backend_progress.h' cleanly. Applied patch to 'src/test/modules/Makefile' cleanly. Applied patch to 'src/test/modules/meson.build' cleanly. Falling back to direct application... Falling back to direct application... Falling back to direct application... Falling back to direct application... Falling back to direct application... Falling back to direct application... Falling back to direct application... Falling back to direct application... Falling back to direct application... Falling back to direct application... Falling back to direct application... Falling back to direct application... Falling back to direct application... Falling back to direct application... Falling back to direct application... Applied patch to 'src/test/perl/PostgreSQL/Test/Cluster.pm' cleanly. Applied patch to 'src/test/regress/expected/rules.out' cleanly. Applied patch to 'src/test/regress/expected/stats.out' cleanly. Applied patch to 'src/tools/pgindent/typedefs.list' cleanly. U src/backend/access/transam/xlogfuncs.c U src/backend/catalog/system_functions.sql U src/backend/utils/misc/guc_tables.c U src/include/postmaster/proctypelist.h U src/include/storage/proc.h diff --cc src/backend/access/transam/xlogfuncs.c index ecb3c8c0820,742ddcf124a..00000000000 --- a/src/backend/access/transam/xlogfuncs.c +++ b/src/backend/access/transam/xlogfuncs.c @@@ -27,7 -26,7 +27,11 @@@ #include "funcapi.h" #include "miscadmin.h" #include "pgstat.h" ++<<<<<<< ours +#include "utils/acl.h" ++======= + #include "postmaster/datachecksumsworker.h" ++>>>>>>> theirs #include "replication/walreceiver.h" #include "storage/fd.h" #include "storage/latch.h" @@@ -768,92 -751,48 +772,139 @@@ pg_promote(PG_FUNCTION_ARGS } /* ++<<<<<<< ours + * pg_stat_get_recovery - returns information about WAL recovery state + * + * Returns NULL when not in recovery or when the caller lacks + * pg_read_all_stats privileges; one row otherwise. + */ +Datum +pg_stat_get_recovery(PG_FUNCTION_ARGS) +{ + TupleDesc tupdesc; + Datum *values; + bool *nulls; + + /* Local copies of shared state */ + bool promote_triggered; + XLogRecPtr last_replayed_read_lsn; + XLogRecPtr last_replayed_end_lsn; + TimeLineID last_replayed_tli; + XLogRecPtr replay_end_lsn; + TimeLineID replay_end_tli; + TimestampTz recovery_last_xact_time; + TimestampTz current_chunk_start_time; + RecoveryPauseState pause_state; + + if (!RecoveryInProgress()) + PG_RETURN_NULL(); + + if (!has_privs_of_role(GetUserId(), ROLE_PG_READ_ALL_STATS)) + PG_RETURN_NULL(); + + /* Take a lock to ensure value consistency */ + SpinLockAcquire(&XLogRecoveryCtl->info_lck); + promote_triggered = XLogRecoveryCtl->SharedPromoteIsTriggered; + last_replayed_read_lsn = XLogRecoveryCtl->lastReplayedReadRecPtr; + last_replayed_end_lsn = XLogRecoveryCtl->lastReplayedEndRecPtr; + last_replayed_tli = XLogRecoveryCtl->lastReplayedTLI; + replay_end_lsn = XLogRecoveryCtl->replayEndRecPtr; + replay_end_tli = XLogRecoveryCtl->replayEndTLI; + recovery_last_xact_time = XLogRecoveryCtl->recoveryLastXTime; + current_chunk_start_time = XLogRecoveryCtl->currentChunkStartTime; + pause_state = XLogRecoveryCtl->recoveryPauseState; + SpinLockRelease(&XLogRecoveryCtl->info_lck); + + if (get_call_result_type(fcinfo, NULL, &tupdesc) != TYPEFUNC_COMPOSITE) + elog(ERROR, "return type must be a row type"); + + values = palloc0_array(Datum, tupdesc->natts); + nulls = palloc0_array(bool, tupdesc->natts); + + values[0] = BoolGetDatum(promote_triggered); + + if (XLogRecPtrIsValid(last_replayed_read_lsn)) + values[1] = LSNGetDatum(last_replayed_read_lsn); + else + nulls[1] = true; + + if (XLogRecPtrIsValid(last_replayed_end_lsn)) + values[2] = LSNGetDatum(last_replayed_end_lsn); + else + nulls[2] = true; + + if (XLogRecPtrIsValid(last_replayed_end_lsn)) + values[3] = Int32GetDatum(last_replayed_tli); + else + nulls[3] = true; + + if (XLogRecPtrIsValid(replay_end_lsn)) + values[4] = LSNGetDatum(replay_end_lsn); + else + nulls[4] = true; + + if (XLogRecPtrIsValid(replay_end_lsn)) + values[5] = Int32GetDatum(replay_end_tli); + else + nulls[5] = true; + + if (recovery_last_xact_time != 0) + values[6] = TimestampTzGetDatum(recovery_last_xact_time); + else + nulls[6] = true; + + if (current_chunk_start_time != 0) + values[7] = TimestampTzGetDatum(current_chunk_start_time); + else + nulls[7] = true; + + values[8] = CStringGetTextDatum(GetRecoveryPauseStateString(pause_state)); + + PG_RETURN_DATUM(HeapTupleGetDatum(heap_form_tuple(tupdesc, values, nulls))); ++======= + * Disables data checksums for the cluster, if applicable. Starts a background + * worker which turns off the data checksums. + */ + Datum + disable_data_checksums(PG_FUNCTION_ARGS) + { + if (!superuser()) + ereport(ERROR, + errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), + errmsg("must be superuser to change data checksum state")); + + StartDataChecksumsWorkerLauncher(DISABLE_DATACHECKSUMS, 0, 0); + PG_RETURN_VOID(); + } + + /* + * Enables data checksums for the cluster, if applicable. Supports vacuum- + * like cost based throttling to limit system load. Starts a background worker + * which updates data checksums on existing data. + */ + Datum + enable_data_checksums(PG_FUNCTION_ARGS) + { + int cost_delay = PG_GETARG_INT32(0); + int cost_limit = PG_GETARG_INT32(1); + + if (!superuser()) + ereport(ERROR, + errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), + errmsg("must be superuser to change data checksum state")); + + if (cost_delay < 0) + ereport(ERROR, + errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("cost delay cannot be a negative value")); + + if (cost_limit <= 0) + ereport(ERROR, + errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("cost limit must be greater than zero")); + + StartDataChecksumsWorkerLauncher(ENABLE_DATACHECKSUMS, cost_delay, cost_limit); + + PG_RETURN_VOID(); ++>>>>>>> theirs } diff --cc src/backend/catalog/system_functions.sql index 1c5b6d6df05,b4c58652af1..00000000000 --- a/src/backend/catalog/system_functions.sql +++ b/src/backend/catalog/system_functions.sql @@@ -372,3 -382,446 +372,449 @@@ CREATE OR REPLACE FUNCTION ts_debug(doc BEGIN ATOMIC SELECT * FROM ts_debug(get_current_ts_config(), $1); END; ++<<<<<<< ours ++======= + + CREATE OR REPLACE FUNCTION + pg_backup_start(label text, fast boolean DEFAULT false) + RETURNS pg_lsn STRICT VOLATILE LANGUAGE internal AS 'pg_backup_start' + PARALLEL RESTRICTED; + + CREATE OR REPLACE FUNCTION pg_backup_stop ( + wait_for_archive boolean DEFAULT true, OUT lsn pg_lsn, + OUT labelfile text, OUT spcmapfile text) + RETURNS record STRICT VOLATILE LANGUAGE internal as 'pg_backup_stop' + PARALLEL RESTRICTED; + + CREATE OR REPLACE FUNCTION + pg_promote(wait boolean DEFAULT true, wait_seconds integer DEFAULT 60) + RETURNS boolean STRICT VOLATILE LANGUAGE INTERNAL AS 'pg_promote' + PARALLEL SAFE; + + CREATE OR REPLACE FUNCTION + pg_terminate_backend(pid integer, timeout int8 DEFAULT 0) + RETURNS boolean STRICT VOLATILE LANGUAGE INTERNAL AS 'pg_terminate_backend' + PARALLEL SAFE; + + -- legacy definition for compatibility with 9.3 + CREATE OR REPLACE FUNCTION + json_populate_record(base anyelement, from_json json, use_json_as_text boolean DEFAULT false) + RETURNS anyelement LANGUAGE internal STABLE AS 'json_populate_record' PARALLEL SAFE; + + -- legacy definition for compatibility with 9.3 + CREATE OR REPLACE FUNCTION + json_populate_recordset(base anyelement, from_json json, use_json_as_text boolean DEFAULT false) + RETURNS SETOF anyelement LANGUAGE internal STABLE ROWS 100 AS 'json_populate_recordset' PARALLEL SAFE; + + CREATE OR REPLACE FUNCTION pg_logical_slot_get_changes( + IN slot_name name, IN upto_lsn pg_lsn, IN upto_nchanges int, VARIADIC options text[] DEFAULT '{}', + OUT lsn pg_lsn, OUT xid xid, OUT data text) + RETURNS SETOF RECORD + LANGUAGE INTERNAL + VOLATILE ROWS 1000 COST 1000 + AS 'pg_logical_slot_get_changes'; + + CREATE OR REPLACE FUNCTION pg_logical_slot_peek_changes( + IN slot_name name, IN upto_lsn pg_lsn, IN upto_nchanges int, VARIADIC options text[] DEFAULT '{}', + OUT lsn pg_lsn, OUT xid xid, OUT data text) + RETURNS SETOF RECORD + LANGUAGE INTERNAL + VOLATILE ROWS 1000 COST 1000 + AS 'pg_logical_slot_peek_changes'; + + CREATE OR REPLACE FUNCTION pg_logical_slot_get_binary_changes( + IN slot_name name, IN upto_lsn pg_lsn, IN upto_nchanges int, VARIADIC options text[] DEFAULT '{}', + OUT lsn pg_lsn, OUT xid xid, OUT data bytea) + RETURNS SETOF RECORD + LANGUAGE INTERNAL + VOLATILE ROWS 1000 COST 1000 + AS 'pg_logical_slot_get_binary_changes'; + + CREATE OR REPLACE FUNCTION pg_logical_slot_peek_binary_changes( + IN slot_name name, IN upto_lsn pg_lsn, IN upto_nchanges int, VARIADIC options text[] DEFAULT '{}', + OUT lsn pg_lsn, OUT xid xid, OUT data bytea) + RETURNS SETOF RECORD + LANGUAGE INTERNAL + VOLATILE ROWS 1000 COST 1000 + AS 'pg_logical_slot_peek_binary_changes'; + + CREATE OR REPLACE FUNCTION pg_logical_emit_message( + transactional boolean, + prefix text, + message text, + flush boolean DEFAULT false) + RETURNS pg_lsn + LANGUAGE INTERNAL + STRICT VOLATILE + AS 'pg_logical_emit_message_text'; + + CREATE OR REPLACE FUNCTION pg_logical_emit_message( + transactional boolean, + prefix text, + message bytea, + flush boolean DEFAULT false) + RETURNS pg_lsn + LANGUAGE INTERNAL + STRICT VOLATILE + AS 'pg_logical_emit_message_bytea'; + + CREATE OR REPLACE FUNCTION pg_create_physical_replication_slot( + IN slot_name name, IN immediately_reserve boolean DEFAULT false, + IN temporary boolean DEFAULT false, + OUT slot_name name, OUT lsn pg_lsn) + RETURNS RECORD + LANGUAGE INTERNAL + STRICT VOLATILE + AS 'pg_create_physical_replication_slot'; + + CREATE OR REPLACE FUNCTION pg_create_logical_replication_slot( + IN slot_name name, IN plugin name, + IN temporary boolean DEFAULT false, + IN twophase boolean DEFAULT false, + IN failover boolean DEFAULT false, + OUT slot_name name, OUT lsn pg_lsn) + RETURNS RECORD + LANGUAGE INTERNAL + STRICT VOLATILE + AS 'pg_create_logical_replication_slot'; + + CREATE OR REPLACE FUNCTION + make_interval(years int4 DEFAULT 0, months int4 DEFAULT 0, weeks int4 DEFAULT 0, + days int4 DEFAULT 0, hours int4 DEFAULT 0, mins int4 DEFAULT 0, + secs double precision DEFAULT 0.0) + RETURNS interval + LANGUAGE INTERNAL + STRICT IMMUTABLE PARALLEL SAFE + AS 'make_interval'; + + CREATE OR REPLACE FUNCTION + jsonb_set(jsonb_in jsonb, path text[] , replacement jsonb, + create_if_missing boolean DEFAULT true) + RETURNS jsonb + LANGUAGE INTERNAL + STRICT IMMUTABLE PARALLEL SAFE + AS 'jsonb_set'; + + CREATE OR REPLACE FUNCTION + jsonb_set_lax(jsonb_in jsonb, path text[] , replacement jsonb, + create_if_missing boolean DEFAULT true, + null_value_treatment text DEFAULT 'use_json_null') + RETURNS jsonb + LANGUAGE INTERNAL + CALLED ON NULL INPUT IMMUTABLE PARALLEL SAFE + AS 'jsonb_set_lax'; + + CREATE OR REPLACE FUNCTION + parse_ident(str text, strict boolean DEFAULT true) + RETURNS text[] + LANGUAGE INTERNAL + STRICT IMMUTABLE PARALLEL SAFE + AS 'parse_ident'; + + CREATE OR REPLACE FUNCTION + jsonb_insert(jsonb_in jsonb, path text[] , replacement jsonb, + insert_after boolean DEFAULT false) + RETURNS jsonb + LANGUAGE INTERNAL + STRICT IMMUTABLE PARALLEL SAFE + AS 'jsonb_insert'; + + CREATE OR REPLACE FUNCTION + jsonb_path_exists(target jsonb, path jsonpath, vars jsonb DEFAULT '{}', + silent boolean DEFAULT false) + RETURNS boolean + LANGUAGE INTERNAL + STRICT IMMUTABLE PARALLEL SAFE + AS 'jsonb_path_exists'; + + CREATE OR REPLACE FUNCTION + jsonb_path_match(target jsonb, path jsonpath, vars jsonb DEFAULT '{}', + silent boolean DEFAULT false) + RETURNS boolean + LANGUAGE INTERNAL + STRICT IMMUTABLE PARALLEL SAFE + AS 'jsonb_path_match'; + + CREATE OR REPLACE FUNCTION + jsonb_path_query(target jsonb, path jsonpath, vars jsonb DEFAULT '{}', + silent boolean DEFAULT false) + RETURNS SETOF jsonb + LANGUAGE INTERNAL + STRICT IMMUTABLE PARALLEL SAFE + AS 'jsonb_path_query'; + + CREATE OR REPLACE FUNCTION + jsonb_path_query_array(target jsonb, path jsonpath, vars jsonb DEFAULT '{}', + silent boolean DEFAULT false) + RETURNS jsonb + LANGUAGE INTERNAL + STRICT IMMUTABLE PARALLEL SAFE + AS 'jsonb_path_query_array'; + + CREATE OR REPLACE FUNCTION + jsonb_path_query_first(target jsonb, path jsonpath, vars jsonb DEFAULT '{}', + silent boolean DEFAULT false) + RETURNS jsonb + LANGUAGE INTERNAL + STRICT IMMUTABLE PARALLEL SAFE + AS 'jsonb_path_query_first'; + + CREATE OR REPLACE FUNCTION + jsonb_path_exists_tz(target jsonb, path jsonpath, vars jsonb DEFAULT '{}', + silent boolean DEFAULT false) + RETURNS boolean + LANGUAGE INTERNAL + STRICT STABLE PARALLEL SAFE + AS 'jsonb_path_exists_tz'; + + CREATE OR REPLACE FUNCTION + jsonb_path_match_tz(target jsonb, path jsonpath, vars jsonb DEFAULT '{}', + silent boolean DEFAULT false) + RETURNS boolean + LANGUAGE INTERNAL + STRICT STABLE PARALLEL SAFE + AS 'jsonb_path_match_tz'; + + CREATE OR REPLACE FUNCTION + jsonb_path_query_tz(target jsonb, path jsonpath, vars jsonb DEFAULT '{}', + silent boolean DEFAULT false) + RETURNS SETOF jsonb + LANGUAGE INTERNAL + STRICT STABLE PARALLEL SAFE + AS 'jsonb_path_query_tz'; + + CREATE OR REPLACE FUNCTION + jsonb_path_query_array_tz(target jsonb, path jsonpath, vars jsonb DEFAULT '{}', + silent boolean DEFAULT false) + RETURNS jsonb + LANGUAGE INTERNAL + STRICT STABLE PARALLEL SAFE + AS 'jsonb_path_query_array_tz'; + + CREATE OR REPLACE FUNCTION + jsonb_path_query_first_tz(target jsonb, path jsonpath, vars jsonb DEFAULT '{}', + silent boolean DEFAULT false) + RETURNS jsonb + LANGUAGE INTERNAL + STRICT STABLE PARALLEL SAFE + AS 'jsonb_path_query_first_tz'; + + CREATE OR REPLACE FUNCTION + jsonb_strip_nulls(target jsonb, strip_in_arrays boolean DEFAULT false) + RETURNS jsonb + LANGUAGE INTERNAL + STRICT STABLE PARALLEL SAFE + AS 'jsonb_strip_nulls'; + + CREATE OR REPLACE FUNCTION + json_strip_nulls(target json, strip_in_arrays boolean DEFAULT false) + RETURNS json + LANGUAGE INTERNAL + STRICT STABLE PARALLEL SAFE + AS 'json_strip_nulls'; + + -- default normalization form is NFC, per SQL standard + CREATE OR REPLACE FUNCTION + "normalize"(text, text DEFAULT 'NFC') + RETURNS text + LANGUAGE internal + STRICT IMMUTABLE PARALLEL SAFE + AS 'unicode_normalize_func'; + + CREATE OR REPLACE FUNCTION + is_normalized(text, text DEFAULT 'NFC') + RETURNS boolean + LANGUAGE internal + STRICT IMMUTABLE PARALLEL SAFE + AS 'unicode_is_normalized'; + + CREATE OR REPLACE FUNCTION + pg_stat_reset_shared(target text DEFAULT NULL) + RETURNS void + LANGUAGE INTERNAL + CALLED ON NULL INPUT VOLATILE PARALLEL SAFE + AS 'pg_stat_reset_shared'; + + CREATE OR REPLACE FUNCTION + pg_stat_reset_slru(target text DEFAULT NULL) + RETURNS void + LANGUAGE INTERNAL + CALLED ON NULL INPUT VOLATILE PARALLEL SAFE + AS 'pg_stat_reset_slru'; + + CREATE OR REPLACE FUNCTION + pg_replication_origin_session_setup(node_name text, pid integer DEFAULT 0) + RETURNS void + LANGUAGE INTERNAL + STRICT VOLATILE PARALLEL UNSAFE + AS 'pg_replication_origin_session_setup'; + + CREATE OR REPLACE FUNCTION + pg_enable_data_checksums(cost_delay integer DEFAULT 0, + cost_limit integer DEFAULT 100) + RETURNS void + STRICT VOLATILE LANGUAGE internal + PARALLEL RESTRICTED + AS 'enable_data_checksums'; + + -- + -- The default permissions for functions mean that anyone can execute them. + -- A number of functions shouldn't be executable by just anyone, but rather + -- than use explicit 'superuser()' checks in those functions, we use the GRANT + -- system to REVOKE access to those functions at initdb time. Administrators + -- can later change who can access these functions, or leave them as only + -- available to superuser / cluster owner, if they choose. + -- + + REVOKE EXECUTE ON FUNCTION pg_backup_start(text, boolean) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_backup_stop(boolean) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_create_restore_point(text) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_switch_wal() FROM public; + + REVOKE EXECUTE ON FUNCTION pg_log_standby_snapshot() FROM public; + + REVOKE EXECUTE ON FUNCTION pg_wal_replay_pause() FROM public; + + REVOKE EXECUTE ON FUNCTION pg_wal_replay_resume() FROM public; + + REVOKE EXECUTE ON FUNCTION pg_rotate_logfile() FROM public; + + REVOKE EXECUTE ON FUNCTION pg_reload_conf() FROM public; + + REVOKE EXECUTE ON FUNCTION pg_current_logfile() FROM public; + + REVOKE EXECUTE ON FUNCTION pg_current_logfile(text) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_promote(boolean, integer) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_stat_reset() FROM public; + + REVOKE EXECUTE ON FUNCTION pg_stat_reset_shared(text) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_stat_reset_slru(text) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_stat_reset_single_table_counters(oid) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_stat_reset_single_function_counters(oid) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_stat_reset_backend_stats(integer) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_stat_reset_replication_slot(text) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_stat_have_stats(text, oid, int8) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_stat_reset_subscription_stats(oid) FROM public; + + REVOKE EXECUTE ON FUNCTION lo_import(text) FROM public; + + REVOKE EXECUTE ON FUNCTION lo_import(text, oid) FROM public; + + REVOKE EXECUTE ON FUNCTION lo_export(oid, text) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_ls_logdir() FROM public; + + REVOKE EXECUTE ON FUNCTION pg_ls_waldir() FROM public; + + REVOKE EXECUTE ON FUNCTION pg_ls_archive_statusdir() FROM public; + + REVOKE EXECUTE ON FUNCTION pg_ls_summariesdir() FROM public; + + REVOKE EXECUTE ON FUNCTION pg_ls_tmpdir() FROM public; + + REVOKE EXECUTE ON FUNCTION pg_ls_tmpdir(oid) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_read_file(text) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_read_file(text,boolean) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_read_file(text,bigint,bigint) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_read_file(text,bigint,bigint,boolean) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_read_binary_file(text) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_read_binary_file(text,boolean) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_read_binary_file(text,bigint,bigint) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_read_binary_file(text,bigint,bigint,boolean) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_replication_origin_advance(text, pg_lsn) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_replication_origin_create(text) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_replication_origin_drop(text) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_replication_origin_oid(text) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_replication_origin_progress(text, boolean) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_replication_origin_session_is_setup() FROM public; + + REVOKE EXECUTE ON FUNCTION pg_replication_origin_session_progress(boolean) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_replication_origin_session_reset() FROM public; + + REVOKE EXECUTE ON FUNCTION pg_replication_origin_session_setup(text, integer) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_replication_origin_xact_reset() FROM public; + + REVOKE EXECUTE ON FUNCTION pg_replication_origin_xact_setup(pg_lsn, timestamp with time zone) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_show_replication_origin_status() FROM public; + + REVOKE EXECUTE ON FUNCTION pg_stat_file(text) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_stat_file(text,boolean) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_ls_dir(text) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_ls_dir(text,boolean,boolean) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_log_backend_memory_contexts(integer) FROM PUBLIC; + + REVOKE EXECUTE ON FUNCTION pg_ls_logicalsnapdir() FROM PUBLIC; + + REVOKE EXECUTE ON FUNCTION pg_ls_logicalmapdir() FROM PUBLIC; + + REVOKE EXECUTE ON FUNCTION pg_ls_replslotdir(text) FROM PUBLIC; + + REVOKE EXECUTE ON FUNCTION pg_enable_data_checksums(integer, integer) FROM public; + + REVOKE EXECUTE ON FUNCTION pg_disable_data_checksums() FROM public; + + -- + -- We also set up some things as accessible to standard roles. + -- + + GRANT EXECUTE ON FUNCTION pg_ls_logdir() TO pg_monitor; + + GRANT EXECUTE ON FUNCTION pg_ls_waldir() TO pg_monitor; + + GRANT EXECUTE ON FUNCTION pg_ls_archive_statusdir() TO pg_monitor; + + GRANT EXECUTE ON FUNCTION pg_ls_summariesdir() TO pg_monitor; + + GRANT EXECUTE ON FUNCTION pg_ls_tmpdir() TO pg_monitor; + + GRANT EXECUTE ON FUNCTION pg_ls_tmpdir(oid) TO pg_monitor; + + GRANT EXECUTE ON FUNCTION pg_ls_logicalsnapdir() TO pg_monitor; + + GRANT EXECUTE ON FUNCTION pg_ls_logicalmapdir() TO pg_monitor; + + GRANT EXECUTE ON FUNCTION pg_ls_replslotdir(text) TO pg_monitor; + + GRANT EXECUTE ON FUNCTION pg_current_logfile() TO pg_monitor; + + GRANT EXECUTE ON FUNCTION pg_current_logfile(text) TO pg_monitor; + + GRANT pg_read_all_settings TO pg_monitor; + + GRANT pg_read_all_stats TO pg_monitor; + + GRANT pg_stat_scan_tables TO pg_monitor; ++>>>>>>> theirs diff --cc src/backend/utils/misc/guc_tables.c index 38aaf82f120,b657eab1119..00000000000 --- a/src/backend/utils/misc/guc_tables.c +++ b/src/backend/utils/misc/guc_tables.c @@@ -493,11 -491,11 +493,19 @@@ static const struct config_enum_entry f {NULL, 0, false} }; ++<<<<<<< ours +static const struct config_enum_entry file_extend_method_options[] = { +#ifdef HAVE_POSIX_FALLOCATE + {"posix_fallocate", FILE_EXTEND_METHOD_POSIX_FALLOCATE, false}, +#endif + {"write_zeros", FILE_EXTEND_METHOD_WRITE_ZEROS, false}, ++======= + static const struct config_enum_entry data_checksums_options[] = { + {"on", PG_DATA_CHECKSUM_VERSION, true}, + {"off", PG_DATA_CHECKSUM_OFF, true}, + {"inprogress-on", PG_DATA_CHECKSUM_INPROGRESS_ON_VERSION, true}, + {"inprogress-off", PG_DATA_CHECKSUM_INPROGRESS_OFF_VERSION, true}, ++>>>>>>> theirs {NULL, 0, false} }; diff --cc src/include/postmaster/proctypelist.h index feac19ba207,3c9aa1478fd..00000000000 --- a/src/include/postmaster/proctypelist.h +++ b/src/include/postmaster/proctypelist.h @@@ -30,22 -30,24 +30,46 @@@ */ ++<<<<<<< ours +/* bktype, bkcategory, description, main_func, shmem_attach */ +PG_PROCTYPE(B_ARCHIVER, "archiver", gettext_noop("archiver"), PgArchiverMain, true) +PG_PROCTYPE(B_AUTOVAC_LAUNCHER, "autovacuum", gettext_noop("autovacuum launcher"), AutoVacLauncherMain, true) +PG_PROCTYPE(B_AUTOVAC_WORKER, "autovacuum", gettext_noop("autovacuum worker"), AutoVacWorkerMain, true) +PG_PROCTYPE(B_BACKEND, "backend", gettext_noop("client backend"), BackendMain, true) +PG_PROCTYPE(B_BG_WORKER, "bgworker", gettext_noop("background worker"), BackgroundWorkerMain, true) +PG_PROCTYPE(B_BG_WRITER, "bgwriter", gettext_noop("background writer"), BackgroundWriterMain, true) +PG_PROCTYPE(B_CHECKPOINTER, "checkpointer", gettext_noop("checkpointer"), CheckpointerMain, true) +PG_PROCTYPE(B_DEAD_END_BACKEND, "backend", gettext_noop("dead-end client backend"), BackendMain, true) +PG_PROCTYPE(B_INVALID, "postmaster", gettext_noop("unrecognized"), NULL, false) +PG_PROCTYPE(B_IO_WORKER, "ioworker", gettext_noop("io worker"), IoWorkerMain, true) +PG_PROCTYPE(B_LOGGER, "syslogger", gettext_noop("syslogger"), SysLoggerMain, false) +PG_PROCTYPE(B_SLOTSYNC_WORKER, "slotsyncworker", gettext_noop("slotsync worker"), ReplSlotSyncWorkerMain, true) +PG_PROCTYPE(B_STANDALONE_BACKEND, "backend", gettext_noop("standalone backend"), NULL, false) +PG_PROCTYPE(B_STARTUP, "startup", gettext_noop("startup"), StartupProcessMain, true) +PG_PROCTYPE(B_WAL_RECEIVER, "walreceiver", gettext_noop("walreceiver"), WalReceiverMain, true) +PG_PROCTYPE(B_WAL_SENDER, "walsender", gettext_noop("walsender"), NULL, true) +PG_PROCTYPE(B_WAL_SUMMARIZER, "walsummarizer", gettext_noop("walsummarizer"), WalSummarizerMain, true) +PG_PROCTYPE(B_WAL_WRITER, "walwriter", gettext_noop("walwriter"), WalWriterMain, true) ++======= + /* bktype, description, main_func, shmem_attach */ + PG_PROCTYPE(B_ARCHIVER, gettext_noop("archiver"), PgArchiverMain, true) + PG_PROCTYPE(B_AUTOVAC_LAUNCHER, gettext_noop("autovacuum launcher"), AutoVacLauncherMain, true) + PG_PROCTYPE(B_AUTOVAC_WORKER, gettext_noop("autovacuum worker"), AutoVacWorkerMain, true) + PG_PROCTYPE(B_BACKEND, gettext_noop("client backend"), BackendMain, true) + PG_PROCTYPE(B_BG_WORKER, gettext_noop("background worker"), BackgroundWorkerMain, true) + PG_PROCTYPE(B_BG_WRITER, gettext_noop("background writer"), BackgroundWriterMain, true) + PG_PROCTYPE(B_CHECKPOINTER, gettext_noop("checkpointer"), CheckpointerMain, true) + PG_PROCTYPE(B_DATACHECKSUMSWORKER_LAUNCHER, gettext_noop("datachecksum launcher"), NULL, false) + PG_PROCTYPE(B_DATACHECKSUMSWORKER_WORKER, gettext_noop("datachecksum worker"), NULL, false) + PG_PROCTYPE(B_DEAD_END_BACKEND, gettext_noop("dead-end client backend"), BackendMain, true) + PG_PROCTYPE(B_INVALID, gettext_noop("unrecognized"), NULL, false) + PG_PROCTYPE(B_IO_WORKER, gettext_noop("io worker"), IoWorkerMain, true) + PG_PROCTYPE(B_LOGGER, gettext_noop("syslogger"), SysLoggerMain, false) + PG_PROCTYPE(B_SLOTSYNC_WORKER, gettext_noop("slotsync worker"), ReplSlotSyncWorkerMain, true) + PG_PROCTYPE(B_STANDALONE_BACKEND, gettext_noop("standalone backend"), NULL, false) + PG_PROCTYPE(B_STARTUP, gettext_noop("startup"), StartupProcessMain, true) + PG_PROCTYPE(B_WAL_RECEIVER, gettext_noop("walreceiver"), WalReceiverMain, true) + PG_PROCTYPE(B_WAL_SENDER, gettext_noop("walsender"), NULL, true) + PG_PROCTYPE(B_WAL_SUMMARIZER, gettext_noop("walsummarizer"), WalSummarizerMain, true) + PG_PROCTYPE(B_WAL_WRITER, gettext_noop("walwriter"), WalWriterMain, true) ++>>>>>>> theirs diff --cc src/include/storage/proc.h index 3f89450c216,4c90e27d1af..00000000000 --- a/src/include/storage/proc.h +++ b/src/include/storage/proc.h @@@ -532,8 -468,6 +532,11 @@@ extern PGDLLIMPORT PGPROC *PreparedXact #define MAX_IO_WORKERS 32 #define NUM_AUXILIARY_PROCS (6 + MAX_IO_WORKERS) ++<<<<<<< ours +#define FIRST_PREPARED_XACT_PROC_NUMBER (MaxBackends + NUM_AUXILIARY_PROCS) + ++======= ++>>>>>>> theirs /* configurable options */ extern PGDLLIMPORT int DeadlockTimeout; extern PGDLLIMPORT int StatementTimeout;