pg_query 5.1.0 → 6.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +30 -0
- data/README.md +1 -1
- data/Rakefile +4 -4
- data/ext/pg_query/ext_symbols_freebsd.sym +1 -0
- data/ext/pg_query/ext_symbols_freebsd_with_ruby_abi_version.sym +2 -0
- data/ext/pg_query/ext_symbols_openbsd.sym +1 -0
- data/ext/pg_query/ext_symbols_openbsd_with_ruby_abi_version.sym +2 -0
- data/ext/pg_query/ext_symbols_with_ruby_abi_version.sym +2 -0
- data/ext/pg_query/extconf.rb +20 -6
- data/ext/pg_query/include/pg_query.h +4 -3
- data/ext/pg_query/include/pg_query_enum_defs.c +424 -154
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +68 -4
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +2952 -1845
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +51 -3
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +210 -23
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +17 -1
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +271 -52
- data/ext/pg_query/include/postgres/access/amapi.h +14 -3
- data/ext/pg_query/include/postgres/access/attmap.h +1 -1
- data/ext/pg_query/include/postgres/access/attnum.h +1 -1
- data/ext/pg_query/include/postgres/access/brin_internal.h +116 -0
- data/ext/pg_query/include/postgres/access/brin_tuple.h +112 -0
- data/ext/pg_query/include/postgres/access/clog.h +2 -3
- data/ext/pg_query/include/postgres/access/commit_ts.h +2 -3
- data/ext/pg_query/include/postgres/access/detoast.h +1 -1
- data/ext/pg_query/include/postgres/access/genam.h +17 -4
- data/ext/pg_query/include/postgres/access/gin.h +1 -1
- data/ext/pg_query/include/postgres/access/htup.h +1 -1
- data/ext/pg_query/include/postgres/access/htup_details.h +11 -11
- data/ext/pg_query/include/postgres/access/itup.h +3 -3
- data/ext/pg_query/include/postgres/access/parallel.h +1 -2
- data/ext/pg_query/include/postgres/access/printtup.h +1 -1
- data/ext/pg_query/include/postgres/access/relation.h +1 -1
- data/ext/pg_query/include/postgres/access/relscan.h +1 -1
- data/ext/pg_query/include/postgres/access/rmgrlist.h +1 -1
- data/ext/pg_query/include/postgres/access/sdir.h +1 -1
- data/ext/pg_query/include/postgres/access/skey.h +1 -1
- data/ext/pg_query/include/postgres/access/slru.h +218 -0
- data/ext/pg_query/include/postgres/access/stratnum.h +1 -1
- data/ext/pg_query/include/postgres/access/sysattr.h +1 -1
- data/ext/pg_query/include/postgres/access/table.h +1 -1
- data/ext/pg_query/include/postgres/access/tableam.h +35 -25
- data/ext/pg_query/include/postgres/access/tidstore.h +50 -0
- data/ext/pg_query/include/postgres/access/toast_compression.h +2 -2
- data/ext/pg_query/include/postgres/access/transam.h +50 -7
- data/ext/pg_query/include/postgres/access/tsmapi.h +1 -1
- data/ext/pg_query/include/postgres/access/tupconvert.h +1 -1
- data/ext/pg_query/include/postgres/access/tupdesc.h +5 -5
- data/ext/pg_query/include/postgres/access/tupmacs.h +1 -1
- data/ext/pg_query/include/postgres/access/twophase.h +2 -2
- data/ext/pg_query/include/postgres/access/xact.h +5 -5
- data/ext/pg_query/include/postgres/access/xlog.h +20 -12
- data/ext/pg_query/include/postgres/access/xlog_internal.h +4 -3
- data/ext/pg_query/include/postgres/access/xlogbackup.h +3 -1
- data/ext/pg_query/include/postgres/access/xlogdefs.h +5 -5
- data/ext/pg_query/include/postgres/access/xlogprefetcher.h +2 -2
- data/ext/pg_query/include/postgres/access/xlogreader.h +2 -2
- data/ext/pg_query/include/postgres/access/xlogrecord.h +3 -3
- data/ext/pg_query/include/postgres/access/xlogrecovery.h +4 -4
- data/ext/pg_query/include/postgres/archive/archive_module.h +9 -1
- data/ext/pg_query/include/postgres/c.h +32 -37
- data/ext/pg_query/include/postgres/catalog/catalog.h +3 -1
- data/ext/pg_query/include/postgres/catalog/catversion.h +2 -2
- data/ext/pg_query/include/postgres/catalog/dependency.h +17 -59
- data/ext/pg_query/include/postgres/catalog/genbki.h +12 -6
- data/ext/pg_query/include/postgres/catalog/index.h +22 -18
- data/ext/pg_query/include/postgres/catalog/indexing.h +1 -1
- data/ext/pg_query/include/postgres/catalog/namespace.h +18 -19
- data/ext/pg_query/include/postgres/catalog/objectaccess.h +2 -2
- data/ext/pg_query/include/postgres/catalog/objectaddress.h +5 -1
- data/ext/pg_query/include/postgres/catalog/pg_aggregate.h +4 -2
- data/ext/pg_query/include/postgres/catalog/pg_aggregate_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_am.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_am_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_attribute.h +31 -14
- data/ext/pg_query/include/postgres/catalog/pg_attribute_d.h +3 -3
- data/ext/pg_query/include/postgres/catalog/pg_authid.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_authid_d.h +2 -1
- data/ext/pg_query/include/postgres/catalog/pg_class.h +10 -5
- data/ext/pg_query/include/postgres/catalog/pg_class_d.h +4 -2
- data/ext/pg_query/include/postgres/catalog/pg_collation.h +11 -5
- data/ext/pg_query/include/postgres/catalog/pg_collation_d.h +5 -2
- data/ext/pg_query/include/postgres/catalog/pg_constraint.h +15 -10
- data/ext/pg_query/include/postgres/catalog/pg_constraint_d.h +2 -1
- data/ext/pg_query/include/postgres/catalog/pg_control.h +5 -3
- data/ext/pg_query/include/postgres/catalog/pg_conversion.h +8 -4
- data/ext/pg_query/include/postgres/catalog/pg_conversion_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_database.h +9 -4
- data/ext/pg_query/include/postgres/catalog/pg_database_d.h +13 -12
- data/ext/pg_query/include/postgres/catalog/pg_depend.h +3 -3
- data/ext/pg_query/include/postgres/catalog/pg_depend_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_event_trigger.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_event_trigger_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_index.h +5 -3
- data/ext/pg_query/include/postgres/catalog/pg_index_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_language.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_language_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_namespace.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_namespace_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_opclass.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_opclass_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_operator.h +20 -3
- data/ext/pg_query/include/postgres/catalog/pg_operator_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_opfamily.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_opfamily_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_partitioned_table.h +4 -2
- data/ext/pg_query/include/postgres/catalog/pg_partitioned_table_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_proc.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_proc_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_publication.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_publication_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_replication_origin.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_replication_origin_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_statistic.h +10 -4
- data/ext/pg_query/include/postgres/catalog/pg_statistic_d.h +7 -3
- data/ext/pg_query/include/postgres/catalog/pg_statistic_ext.h +10 -7
- data/ext/pg_query/include/postgres/catalog/pg_statistic_ext_d.h +3 -3
- data/ext/pg_query/include/postgres/catalog/pg_transform.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_transform_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_trigger.h +4 -4
- data/ext/pg_query/include/postgres/catalog/pg_trigger_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_ts_config.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_ts_config_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_ts_dict.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_ts_dict_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_ts_parser.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_ts_parser_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_ts_template.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_ts_template_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_type.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_type_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/storage.h +1 -1
- data/ext/pg_query/include/postgres/catalog/syscache_ids.h +104 -0
- data/ext/pg_query/include/postgres/commands/async.h +2 -6
- data/ext/pg_query/include/postgres/commands/dbcommands.h +1 -1
- data/ext/pg_query/include/postgres/commands/defrem.h +6 -6
- data/ext/pg_query/include/postgres/commands/event_trigger.h +11 -2
- data/ext/pg_query/include/postgres/commands/explain.h +19 -3
- data/ext/pg_query/include/postgres/commands/prepare.h +1 -1
- data/ext/pg_query/include/postgres/commands/tablespace.h +1 -1
- data/ext/pg_query/include/postgres/commands/trigger.h +1 -1
- data/ext/pg_query/include/postgres/commands/vacuum.h +28 -26
- data/ext/pg_query/include/postgres/common/cryptohash.h +2 -2
- data/ext/pg_query/include/postgres/common/file_perm.h +1 -1
- data/ext/pg_query/include/postgres/common/file_utils.h +65 -0
- data/ext/pg_query/include/postgres/common/hashfn.h +16 -1
- data/ext/pg_query/include/postgres/common/hashfn_unstable.h +407 -0
- data/ext/pg_query/include/postgres/common/int.h +79 -4
- data/ext/pg_query/include/postgres/common/keywords.h +1 -1
- data/ext/pg_query/include/postgres/common/kwlookup.h +1 -1
- data/ext/pg_query/include/postgres/common/pg_prng.h +2 -1
- data/ext/pg_query/include/postgres/common/relpath.h +4 -4
- data/ext/pg_query/include/postgres/common/scram-common.h +1 -1
- data/ext/pg_query/include/postgres/common/sha2.h +1 -1
- data/ext/pg_query/include/postgres/common/string.h +1 -1
- data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +2 -3
- data/ext/pg_query/include/postgres/copyfuncs.funcs.c +278 -30
- data/ext/pg_query/include/postgres/copyfuncs.switch.c +55 -4
- data/ext/pg_query/include/postgres/datatype/timestamp.h +29 -3
- data/ext/pg_query/include/postgres/equalfuncs.funcs.c +239 -26
- data/ext/pg_query/include/postgres/equalfuncs.switch.c +55 -4
- data/ext/pg_query/include/postgres/executor/execdesc.h +2 -2
- data/ext/pg_query/include/postgres/executor/executor.h +6 -5
- data/ext/pg_query/include/postgres/executor/functions.h +2 -1
- data/ext/pg_query/include/postgres/executor/instrument.h +5 -3
- data/ext/pg_query/include/postgres/executor/spi.h +2 -8
- data/ext/pg_query/include/postgres/executor/tablefunc.h +1 -1
- data/ext/pg_query/include/postgres/executor/tuptable.h +31 -2
- data/ext/pg_query/include/postgres/fmgr.h +2 -2
- data/ext/pg_query/include/postgres/foreign/fdwapi.h +1 -1
- data/ext/pg_query/include/postgres/funcapi.h +2 -2
- data/ext/pg_query/include/postgres/gram.h +871 -830
- data/ext/pg_query/include/postgres/gramparse.h +1 -1
- data/ext/pg_query/include/postgres/jit/jit.h +4 -3
- data/ext/pg_query/include/postgres/kwlist_d.h +511 -466
- data/ext/pg_query/include/postgres/lib/dshash.h +25 -10
- data/ext/pg_query/include/postgres/lib/ilist.h +1 -1
- data/ext/pg_query/include/postgres/lib/pairingheap.h +1 -1
- data/ext/pg_query/include/postgres/lib/simplehash.h +40 -18
- data/ext/pg_query/include/postgres/lib/sort_template.h +14 -1
- data/ext/pg_query/include/postgres/lib/stringinfo.h +93 -11
- data/ext/pg_query/include/postgres/libpq/auth.h +1 -1
- data/ext/pg_query/include/postgres/libpq/crypt.h +2 -2
- data/ext/pg_query/include/postgres/libpq/hba.h +4 -4
- data/ext/pg_query/include/postgres/libpq/libpq-be.h +35 -28
- data/ext/pg_query/include/postgres/libpq/libpq.h +6 -7
- data/ext/pg_query/include/postgres/libpq/pqcomm.h +26 -20
- data/ext/pg_query/include/postgres/libpq/pqformat.h +2 -3
- data/ext/pg_query/include/postgres/libpq/pqsignal.h +1 -1
- data/ext/pg_query/include/postgres/libpq/protocol.h +89 -0
- data/ext/pg_query/include/postgres/libpq/sasl.h +1 -1
- data/ext/pg_query/include/postgres/libpq/scram.h +1 -1
- data/ext/pg_query/include/postgres/mb/pg_wchar.h +103 -82
- data/ext/pg_query/include/postgres/mb/stringinfo_mb.h +1 -1
- data/ext/pg_query/include/postgres/miscadmin.h +72 -52
- data/ext/pg_query/include/postgres/nodes/bitmapset.h +17 -3
- data/ext/pg_query/include/postgres/nodes/execnodes.h +112 -25
- data/ext/pg_query/include/postgres/nodes/extensible.h +1 -1
- data/ext/pg_query/include/postgres/nodes/lockoptions.h +4 -4
- data/ext/pg_query/include/postgres/nodes/makefuncs.h +8 -2
- data/ext/pg_query/include/postgres/nodes/memnodes.h +43 -4
- data/ext/pg_query/include/postgres/nodes/miscnodes.h +1 -1
- data/ext/pg_query/include/postgres/nodes/nodeFuncs.h +1 -1
- data/ext/pg_query/include/postgres/nodes/nodes.h +30 -41
- data/ext/pg_query/include/postgres/nodes/nodetags.h +464 -444
- data/ext/pg_query/include/postgres/nodes/params.h +1 -1
- data/ext/pg_query/include/postgres/nodes/parsenodes.h +358 -175
- data/ext/pg_query/include/postgres/nodes/pathnodes.h +64 -10
- data/ext/pg_query/include/postgres/nodes/pg_list.h +62 -11
- data/ext/pg_query/include/postgres/nodes/plannodes.h +11 -10
- data/ext/pg_query/include/postgres/nodes/primnodes.h +352 -54
- data/ext/pg_query/include/postgres/nodes/print.h +1 -1
- data/ext/pg_query/include/postgres/nodes/queryjumble.h +2 -2
- data/ext/pg_query/include/postgres/nodes/replnodes.h +23 -2
- data/ext/pg_query/include/postgres/nodes/supportnodes.h +1 -1
- data/ext/pg_query/include/postgres/nodes/tidbitmap.h +1 -1
- data/ext/pg_query/include/postgres/nodes/value.h +1 -1
- data/ext/pg_query/include/postgres/optimizer/cost.h +5 -4
- data/ext/pg_query/include/postgres/optimizer/geqo.h +1 -1
- data/ext/pg_query/include/postgres/optimizer/geqo_gene.h +1 -1
- data/ext/pg_query/include/postgres/optimizer/optimizer.h +5 -2
- data/ext/pg_query/include/postgres/optimizer/paths.h +13 -8
- data/ext/pg_query/include/postgres/optimizer/planmain.h +7 -1
- data/ext/pg_query/include/postgres/parser/analyze.h +3 -1
- data/ext/pg_query/include/postgres/parser/kwlist.h +22 -2
- data/ext/pg_query/include/postgres/parser/parse_agg.h +1 -1
- data/ext/pg_query/include/postgres/parser/parse_coerce.h +5 -2
- data/ext/pg_query/include/postgres/parser/parse_expr.h +1 -1
- data/ext/pg_query/include/postgres/parser/parse_func.h +2 -2
- data/ext/pg_query/include/postgres/parser/parse_node.h +3 -2
- data/ext/pg_query/include/postgres/parser/parse_oper.h +4 -1
- data/ext/pg_query/include/postgres/parser/parse_relation.h +1 -1
- data/ext/pg_query/include/postgres/parser/parse_type.h +2 -2
- data/ext/pg_query/include/postgres/parser/parser.h +3 -3
- data/ext/pg_query/include/postgres/parser/parsetree.h +1 -1
- data/ext/pg_query/include/postgres/parser/scanner.h +1 -1
- data/ext/pg_query/include/postgres/parser/scansup.h +1 -1
- data/ext/pg_query/include/postgres/partitioning/partdefs.h +1 -1
- data/ext/pg_query/include/postgres/pg_config.h +53 -45
- data/ext/pg_query/include/postgres/pg_config_manual.h +21 -8
- data/ext/pg_query/include/postgres/pg_getopt.h +1 -1
- data/ext/pg_query/include/postgres/pg_trace.h +1 -1
- data/ext/pg_query/include/postgres/pgstat.h +13 -11
- data/ext/pg_query/include/postgres/pgtime.h +1 -1
- data/ext/pg_query/include/postgres/pl_reserved_kwlist.h +1 -1
- data/ext/pg_query/include/postgres/pl_reserved_kwlist_d.h +1 -1
- data/ext/pg_query/include/postgres/pl_unreserved_kwlist.h +1 -1
- data/ext/pg_query/include/postgres/pl_unreserved_kwlist_d.h +1 -1
- data/ext/pg_query/include/postgres/plerrcodes.h +4 -4
- data/ext/pg_query/include/postgres/plpgsql.h +15 -13
- data/ext/pg_query/include/postgres/port/atomics/arch-arm.h +1 -1
- data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +1 -1
- data/ext/pg_query/include/postgres/port/atomics/arch-ppc.h +3 -1
- data/ext/pg_query/include/postgres/port/atomics/arch-x86.h +3 -1
- data/ext/pg_query/include/postgres/port/atomics/fallback.h +1 -1
- data/ext/pg_query/include/postgres/port/atomics/generic-gcc.h +38 -1
- data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +19 -1
- data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +16 -1
- data/ext/pg_query/include/postgres/port/atomics/generic.h +38 -2
- data/ext/pg_query/include/postgres/port/atomics.h +93 -6
- data/ext/pg_query/include/postgres/port/pg_bitutils.h +91 -9
- data/ext/pg_query/include/postgres/port/pg_bswap.h +1 -1
- data/ext/pg_query/include/postgres/port/pg_crc32c.h +10 -1
- data/ext/pg_query/include/postgres/port/pg_iovec.h +117 -0
- data/ext/pg_query/include/postgres/port/simd.h +48 -1
- data/ext/pg_query/include/postgres/port/win32/sys/socket.h +8 -0
- data/ext/pg_query/include/postgres/port/win32_port.h +1 -13
- data/ext/pg_query/include/postgres/port.h +39 -4
- data/ext/pg_query/include/postgres/portability/instr_time.h +1 -1
- data/ext/pg_query/include/postgres/postgres.h +1 -1
- data/ext/pg_query/include/postgres/postmaster/autovacuum.h +5 -16
- data/ext/pg_query/include/postgres/postmaster/bgworker.h +8 -6
- data/ext/pg_query/include/postgres/postmaster/bgworker_internals.h +3 -7
- data/ext/pg_query/include/postgres/postmaster/bgwriter.h +3 -3
- data/ext/pg_query/include/postgres/postmaster/interrupt.h +1 -1
- data/ext/pg_query/include/postgres/postmaster/pgarch.h +2 -2
- data/ext/pg_query/include/postgres/postmaster/postmaster.h +25 -5
- data/ext/pg_query/include/postgres/postmaster/startup.h +2 -2
- data/ext/pg_query/include/postgres/postmaster/syslogger.h +2 -4
- data/ext/pg_query/include/postgres/postmaster/walsummarizer.h +35 -0
- data/ext/pg_query/include/postgres/postmaster/walwriter.h +2 -2
- data/ext/pg_query/include/postgres/regex/regex.h +92 -9
- data/ext/pg_query/include/postgres/replication/logicallauncher.h +1 -1
- data/ext/pg_query/include/postgres/replication/logicalproto.h +2 -2
- data/ext/pg_query/include/postgres/replication/logicalworker.h +2 -1
- data/ext/pg_query/include/postgres/replication/origin.h +1 -1
- data/ext/pg_query/include/postgres/replication/reorderbuffer.h +27 -46
- data/ext/pg_query/include/postgres/replication/slot.h +45 -5
- data/ext/pg_query/include/postgres/replication/slotsync.h +38 -0
- data/ext/pg_query/include/postgres/replication/syncrep.h +1 -1
- data/ext/pg_query/include/postgres/replication/walreceiver.h +37 -11
- data/ext/pg_query/include/postgres/replication/walsender.h +5 -3
- data/ext/pg_query/include/postgres/rewrite/prs2lock.h +1 -1
- data/ext/pg_query/include/postgres/rewrite/rewriteHandler.h +7 -1
- data/ext/pg_query/include/postgres/rewrite/rewriteManip.h +2 -2
- data/ext/pg_query/include/postgres/rewrite/rewriteSupport.h +1 -1
- data/ext/pg_query/include/postgres/storage/block.h +1 -1
- data/ext/pg_query/include/postgres/storage/buf.h +1 -1
- data/ext/pg_query/include/postgres/storage/bufmgr.h +59 -41
- data/ext/pg_query/include/postgres/storage/bufpage.h +1 -1
- data/ext/pg_query/include/postgres/storage/condition_variable.h +1 -1
- data/ext/pg_query/include/postgres/storage/dsm.h +1 -1
- data/ext/pg_query/include/postgres/storage/dsm_impl.h +2 -2
- data/ext/pg_query/include/postgres/storage/fd.h +30 -13
- data/ext/pg_query/include/postgres/storage/fileset.h +1 -1
- data/ext/pg_query/include/postgres/storage/ipc.h +4 -1
- data/ext/pg_query/include/postgres/storage/item.h +1 -1
- data/ext/pg_query/include/postgres/storage/itemid.h +1 -1
- data/ext/pg_query/include/postgres/storage/itemptr.h +1 -1
- data/ext/pg_query/include/postgres/storage/large_object.h +1 -1
- data/ext/pg_query/include/postgres/storage/latch.h +4 -2
- data/ext/pg_query/include/postgres/storage/lmgr.h +8 -2
- data/ext/pg_query/include/postgres/storage/lock.h +19 -19
- data/ext/pg_query/include/postgres/storage/lockdefs.h +3 -1
- data/ext/pg_query/include/postgres/storage/lwlock.h +17 -9
- data/ext/pg_query/include/postgres/storage/lwlocknames.h +7 -10
- data/ext/pg_query/include/postgres/storage/off.h +1 -1
- data/ext/pg_query/include/postgres/storage/pg_sema.h +1 -1
- data/ext/pg_query/include/postgres/storage/pg_shmem.h +5 -4
- data/ext/pg_query/include/postgres/storage/pmsignal.h +2 -2
- data/ext/pg_query/include/postgres/storage/predicate.h +1 -5
- data/ext/pg_query/include/postgres/storage/proc.h +48 -26
- data/ext/pg_query/include/postgres/storage/procarray.h +5 -1
- data/ext/pg_query/include/postgres/storage/proclist_types.h +11 -9
- data/ext/pg_query/include/postgres/storage/procnumber.h +43 -0
- data/ext/pg_query/include/postgres/storage/procsignal.h +8 -6
- data/ext/pg_query/include/postgres/storage/read_stream.h +65 -0
- data/ext/pg_query/include/postgres/storage/relfilelocator.h +16 -15
- data/ext/pg_query/include/postgres/storage/s_lock.h +7 -27
- data/ext/pg_query/include/postgres/storage/sharedfileset.h +1 -1
- data/ext/pg_query/include/postgres/storage/shm_mq.h +2 -2
- data/ext/pg_query/include/postgres/storage/shm_toc.h +1 -1
- data/ext/pg_query/include/postgres/storage/shmem.h +1 -1
- data/ext/pg_query/include/postgres/storage/sinval.h +3 -3
- data/ext/pg_query/include/postgres/storage/smgr.h +46 -29
- data/ext/pg_query/include/postgres/storage/spin.h +1 -1
- data/ext/pg_query/include/postgres/storage/standby.h +13 -3
- data/ext/pg_query/include/postgres/storage/standbydefs.h +2 -2
- data/ext/pg_query/include/postgres/storage/sync.h +4 -4
- data/ext/pg_query/include/postgres/tcop/cmdtag.h +1 -2
- data/ext/pg_query/include/postgres/tcop/cmdtaglist.h +3 -2
- data/ext/pg_query/include/postgres/tcop/deparse_utility.h +2 -2
- data/ext/pg_query/include/postgres/tcop/dest.h +3 -2
- data/ext/pg_query/include/postgres/tcop/fastpath.h +1 -1
- data/ext/pg_query/include/postgres/tcop/pquery.h +1 -1
- data/ext/pg_query/include/postgres/tcop/tcopprot.h +9 -5
- data/ext/pg_query/include/postgres/tcop/utility.h +2 -2
- data/ext/pg_query/include/postgres/tsearch/ts_cache.h +1 -1
- data/ext/pg_query/include/postgres/utils/acl.h +19 -7
- data/ext/pg_query/include/postgres/utils/aclchk_internal.h +1 -1
- data/ext/pg_query/include/postgres/utils/array.h +1 -2
- data/ext/pg_query/include/postgres/utils/ascii.h +84 -0
- data/ext/pg_query/include/postgres/utils/backend_progress.h +3 -2
- data/ext/pg_query/include/postgres/utils/backend_status.h +8 -10
- data/ext/pg_query/include/postgres/utils/builtins.h +4 -1
- data/ext/pg_query/include/postgres/utils/bytea.h +2 -2
- data/ext/pg_query/include/postgres/utils/catcache.h +6 -6
- data/ext/pg_query/include/postgres/utils/date.h +1 -1
- data/ext/pg_query/include/postgres/utils/datetime.h +4 -1
- data/ext/pg_query/include/postgres/utils/datum.h +1 -1
- data/ext/pg_query/include/postgres/utils/dsa.h +44 -5
- data/ext/pg_query/include/postgres/utils/elog.h +3 -8
- data/ext/pg_query/include/postgres/utils/errcodes.h +1 -3
- data/ext/pg_query/include/postgres/utils/expandeddatum.h +1 -1
- data/ext/pg_query/include/postgres/utils/expandedrecord.h +1 -1
- data/ext/pg_query/include/postgres/utils/float.h +1 -1
- data/ext/pg_query/include/postgres/utils/fmgroids.h +49 -16
- data/ext/pg_query/include/postgres/utils/fmgrprotos.h +47 -14
- data/ext/pg_query/include/postgres/utils/fmgrtab.h +1 -1
- data/ext/pg_query/include/postgres/utils/guc.h +20 -6
- data/ext/pg_query/include/postgres/utils/guc_hooks.h +23 -2
- data/ext/pg_query/include/postgres/utils/guc_tables.h +6 -5
- data/ext/pg_query/include/postgres/utils/hsearch.h +2 -2
- data/ext/pg_query/include/postgres/utils/injection_point.h +44 -0
- data/ext/pg_query/include/postgres/utils/inval.h +1 -1
- data/ext/pg_query/include/postgres/utils/logtape.h +5 -5
- data/ext/pg_query/include/postgres/utils/lsyscache.h +6 -3
- data/ext/pg_query/include/postgres/utils/memdebug.h +1 -1
- data/ext/pg_query/include/postgres/utils/memutils.h +12 -5
- data/ext/pg_query/include/postgres/utils/memutils_internal.h +53 -13
- data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +25 -9
- data/ext/pg_query/include/postgres/utils/numeric.h +6 -1
- data/ext/pg_query/include/postgres/utils/palloc.h +1 -15
- data/ext/pg_query/include/postgres/utils/partcache.h +1 -1
- data/ext/pg_query/include/postgres/utils/pg_locale.h +8 -7
- data/ext/pg_query/include/postgres/utils/pgstat_internal.h +30 -17
- data/ext/pg_query/include/postgres/utils/plancache.h +5 -3
- data/ext/pg_query/include/postgres/utils/portal.h +10 -10
- data/ext/pg_query/include/postgres/utils/queryenvironment.h +2 -2
- data/ext/pg_query/include/postgres/utils/regproc.h +1 -1
- data/ext/pg_query/include/postgres/utils/rel.h +14 -15
- data/ext/pg_query/include/postgres/utils/relcache.h +2 -5
- data/ext/pg_query/include/postgres/utils/reltrigger.h +1 -1
- data/ext/pg_query/include/postgres/utils/resowner.h +90 -9
- data/ext/pg_query/include/postgres/utils/ruleutils.h +1 -1
- data/ext/pg_query/include/postgres/utils/sharedtuplestore.h +1 -1
- data/ext/pg_query/include/postgres/utils/snapmgr.h +1 -52
- data/ext/pg_query/include/postgres/utils/snapshot.h +2 -2
- data/ext/pg_query/include/postgres/utils/sortsupport.h +1 -1
- data/ext/pg_query/include/postgres/utils/syscache.h +7 -98
- data/ext/pg_query/include/postgres/utils/timeout.h +3 -2
- data/ext/pg_query/include/postgres/utils/timestamp.h +1 -1
- data/ext/pg_query/include/postgres/utils/tuplesort.h +36 -9
- data/ext/pg_query/include/postgres/utils/tuplestore.h +2 -5
- data/ext/pg_query/include/postgres/utils/typcache.h +2 -1
- data/ext/pg_query/include/postgres/utils/varlena.h +1 -1
- data/ext/pg_query/include/postgres/utils/wait_event.h +28 -214
- data/ext/pg_query/include/postgres/utils/wait_event_types.h +218 -0
- data/ext/pg_query/include/postgres/utils/xml.h +4 -4
- data/ext/pg_query/include/postgres/varatt.h +1 -1
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +1546 -792
- data/ext/pg_query/include/protobuf/pg_query.pb.h +58365 -46595
- data/ext/pg_query/pg_query.pb-c.c +6598 -3739
- data/ext/pg_query/pg_query_normalize.c +42 -1
- data/ext/pg_query/pg_query_outfuncs_json.c +3 -1
- data/ext/pg_query/pg_query_parse_plpgsql.c +12 -13
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +2 -2
- data/ext/pg_query/pg_query_scan.c +1 -1
- data/ext/pg_query/postgres_deparse.c +601 -172
- data/ext/pg_query/src_backend_catalog_namespace.c +241 -66
- data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -3
- data/ext/pg_query/src_backend_commands_define.c +2 -3
- data/ext/pg_query/src_backend_nodes_bitmapset.c +137 -94
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +1 -1
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +1 -1
- data/ext/pg_query/src_backend_nodes_extensible.c +1 -1
- data/ext/pg_query/src_backend_nodes_list.c +3 -7
- data/ext/pg_query/src_backend_nodes_makefuncs.c +59 -20
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +109 -2
- data/ext/pg_query/src_backend_nodes_value.c +1 -1
- data/ext/pg_query/src_backend_parser_gram.c +34491 -32136
- data/ext/pg_query/src_backend_parser_parser.c +8 -8
- data/ext/pg_query/src_backend_parser_scan.c +5637 -3028
- data/ext/pg_query/src_backend_parser_scansup.c +2 -1
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
- data/ext/pg_query/src_backend_tcop_postgres.c +34 -10
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +2 -2
- data/ext/pg_query/src_backend_utils_adt_datum.c +8 -6
- data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_numutils.c +4 -5
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +101 -28
- data/ext/pg_query/src_backend_utils_error_assert.c +1 -1
- data/ext/pg_query/src_backend_utils_error_elog.c +47 -42
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +4 -2
- data/ext/pg_query/src_backend_utils_init_globals.c +15 -3
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +11 -18
- data/ext/pg_query/src_backend_utils_misc_guc_tables.c +16 -6
- data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +8 -5
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +308 -238
- data/ext/pg_query/src_backend_utils_mmgr_bump.c +728 -0
- data/ext/pg_query/src_backend_utils_mmgr_generation.c +273 -197
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +270 -215
- data/ext/pg_query/src_backend_utils_mmgr_slab.c +154 -96
- data/ext/pg_query/src_common_encnames.c +43 -44
- data/ext/pg_query/src_common_hashfn.c +1 -1
- data/ext/pg_query/src_common_keywords.c +1 -1
- data/ext/pg_query/src_common_kwlist_d.h +511 -466
- data/ext/pg_query/src_common_kwlookup.c +1 -1
- data/ext/pg_query/src_common_psprintf.c +3 -3
- data/ext/pg_query/src_common_stringinfo.c +18 -1
- data/ext/pg_query/src_common_wchar.c +92 -109
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +99 -5
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +242 -143
- data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +19 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +1 -1
- data/ext/pg_query/src_port_pg_bitutils.c +173 -28
- data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
- data/ext/pg_query/src_port_snprintf.c +15 -18
- data/ext/pg_query/src_port_strerror.c +1 -3
- data/ext/pg_query/src_port_strlcpy.c +1 -1
- data/lib/pg_query/fingerprint.rb +3 -5
- data/lib/pg_query/param_refs.rb +2 -2
- data/lib/pg_query/parse.rb +5 -7
- data/lib/pg_query/parse_error.rb +1 -0
- data/lib/pg_query/pg_query_pb.rb +27 -25
- data/lib/pg_query/scan.rb +1 -0
- data/lib/pg_query/treewalker.rb +38 -15
- data/lib/pg_query/truncate.rb +18 -20
- data/lib/pg_query/version.rb +1 -1
- metadata +31 -82
- data/ext/pg_query/include/postgres/storage/backendid.h +0 -37
- data/ext/pg_query/include/postgres/storage/sinvaladt.h +0 -45
- data/ext/pg_query/pg_query_ruby_freebsd.sym +0 -2
- data/ext/pg_query/src_backend_nodes_nodes.c +0 -38
- /data/ext/pg_query/{pg_query_ruby.sym → ext_symbols.sym} +0 -0
@@ -1,5 +1,5 @@
|
|
1
|
-
#ifndef
|
2
|
-
#define
|
1
|
+
#ifndef _PG_REGEX_H_
|
2
|
+
#define _PG_REGEX_H_ /* never again */
|
3
3
|
/*
|
4
4
|
* regular expressions
|
5
5
|
*
|
@@ -32,6 +32,84 @@
|
|
32
32
|
* src/include/regex/regex.h
|
33
33
|
*/
|
34
34
|
|
35
|
+
/*
|
36
|
+
* This is an implementation of POSIX regex_t, so it clashes with the
|
37
|
+
* system-provided <regex.h> header. That header might be unintentionally
|
38
|
+
* included already, so we force that to happen now on all systems to show that
|
39
|
+
* we can cope and that we completely replace the system regex interfaces.
|
40
|
+
*
|
41
|
+
* Note that we avoided using _REGEX_H_ as an include guard, as that confuses
|
42
|
+
* matters on BSD family systems including macOS that use the same include
|
43
|
+
* guard.
|
44
|
+
*/
|
45
|
+
#ifndef _WIN32
|
46
|
+
#include <regex.h>
|
47
|
+
#endif
|
48
|
+
|
49
|
+
/* Avoid redefinition errors due to the system header. */
|
50
|
+
#undef REG_UBACKREF
|
51
|
+
#undef REG_ULOOKAROUND
|
52
|
+
#undef REG_UBOUNDS
|
53
|
+
#undef REG_UBRACES
|
54
|
+
#undef REG_UBSALNUM
|
55
|
+
#undef REG_UPBOTCH
|
56
|
+
#undef REG_UBBS
|
57
|
+
#undef REG_UNONPOSIX
|
58
|
+
#undef REG_UUNSPEC
|
59
|
+
#undef REG_UUNPORT
|
60
|
+
#undef REG_ULOCALE
|
61
|
+
#undef REG_UEMPTYMATCH
|
62
|
+
#undef REG_UIMPOSSIBLE
|
63
|
+
#undef REG_USHORTEST
|
64
|
+
#undef REG_BASIC
|
65
|
+
#undef REG_EXTENDED
|
66
|
+
#undef REG_ADVF
|
67
|
+
#undef REG_ADVANCED
|
68
|
+
#undef REG_QUOTE
|
69
|
+
#undef REG_NOSPEC
|
70
|
+
#undef REG_ICASE
|
71
|
+
#undef REG_NOSUB
|
72
|
+
#undef REG_EXPANDED
|
73
|
+
#undef REG_NLSTOP
|
74
|
+
#undef REG_NLANCH
|
75
|
+
#undef REG_NEWLINE
|
76
|
+
#undef REG_PEND
|
77
|
+
#undef REG_EXPECT
|
78
|
+
#undef REG_BOSONLY
|
79
|
+
#undef REG_DUMP
|
80
|
+
#undef REG_FAKE
|
81
|
+
#undef REG_PROGRESS
|
82
|
+
#undef REG_NOTBOL
|
83
|
+
#undef REG_NOTEOL
|
84
|
+
#undef REG_STARTEND
|
85
|
+
#undef REG_FTRACE
|
86
|
+
#undef REG_MTRACE
|
87
|
+
#undef REG_SMALL
|
88
|
+
#undef REG_OKAY
|
89
|
+
#undef REG_NOMATCH
|
90
|
+
#undef REG_BADPAT
|
91
|
+
#undef REG_ECOLLATE
|
92
|
+
#undef REG_ECTYPE
|
93
|
+
#undef REG_EESCAPE
|
94
|
+
#undef REG_ESUBREG
|
95
|
+
#undef REG_EBRACK
|
96
|
+
#undef REG_EPAREN
|
97
|
+
#undef REG_EBRACE
|
98
|
+
#undef REG_BADBR
|
99
|
+
#undef REG_ERANGE
|
100
|
+
#undef REG_ESPACE
|
101
|
+
#undef REG_BADRPT
|
102
|
+
#undef REG_ASSERT
|
103
|
+
#undef REG_INVARG
|
104
|
+
#undef REG_MIXED
|
105
|
+
#undef REG_BADOPT
|
106
|
+
#undef REG_ETOOBIG
|
107
|
+
#undef REG_ECOLORS
|
108
|
+
#undef REG_ATOI
|
109
|
+
#undef REG_ITOA
|
110
|
+
#undef REG_PREFIX
|
111
|
+
#undef REG_EXACT
|
112
|
+
|
35
113
|
/*
|
36
114
|
* Add your own defines, if needed, here.
|
37
115
|
*/
|
@@ -45,7 +123,7 @@
|
|
45
123
|
* regoff_t has to be large enough to hold either off_t or ssize_t,
|
46
124
|
* and must be signed; it's only a guess that long is suitable.
|
47
125
|
*/
|
48
|
-
typedef long
|
126
|
+
typedef long pg_regoff_t;
|
49
127
|
|
50
128
|
/*
|
51
129
|
* other interface types
|
@@ -79,19 +157,19 @@ typedef struct
|
|
79
157
|
/* the rest is opaque pointers to hidden innards */
|
80
158
|
char *re_guts; /* `char *' is more portable than `void *' */
|
81
159
|
char *re_fns;
|
82
|
-
}
|
160
|
+
} pg_regex_t;
|
83
161
|
|
84
162
|
/* result reporting (may acquire more fields later) */
|
85
163
|
typedef struct
|
86
164
|
{
|
87
|
-
|
88
|
-
|
89
|
-
}
|
165
|
+
pg_regoff_t rm_so; /* start of substring */
|
166
|
+
pg_regoff_t rm_eo; /* end of substring */
|
167
|
+
} pg_regmatch_t;
|
90
168
|
|
91
169
|
/* supplementary control and reporting */
|
92
170
|
typedef struct
|
93
171
|
{
|
94
|
-
|
172
|
+
pg_regmatch_t rm_extend; /* see REG_EXPECT */
|
95
173
|
} rm_detail_t;
|
96
174
|
|
97
175
|
|
@@ -164,6 +242,11 @@ typedef struct
|
|
164
242
|
#define REG_EXACT (-2) /* identified an exact match */
|
165
243
|
|
166
244
|
|
245
|
+
/* Redirect the standard typenames to our typenames. */
|
246
|
+
#define regoff_t pg_regoff_t
|
247
|
+
#define regex_t pg_regex_t
|
248
|
+
#define regmatch_t pg_regmatch_t
|
249
|
+
|
167
250
|
|
168
251
|
/*
|
169
252
|
* the prototypes for exported functions
|
@@ -186,4 +269,4 @@ extern bool RE_compile_and_execute(text *text_re, char *dat, int dat_len,
|
|
186
269
|
int cflags, Oid collation,
|
187
270
|
int nmatch, regmatch_t *pmatch);
|
188
271
|
|
189
|
-
#endif /*
|
272
|
+
#endif /* _PG_REGEX_H_ */
|
@@ -3,7 +3,7 @@
|
|
3
3
|
* logicallauncher.h
|
4
4
|
* Exports for logical replication launcher.
|
5
5
|
*
|
6
|
-
* Portions Copyright (c) 2016-
|
6
|
+
* Portions Copyright (c) 2016-2024, PostgreSQL Global Development Group
|
7
7
|
*
|
8
8
|
* src/include/replication/logicallauncher.h
|
9
9
|
*
|
@@ -3,7 +3,7 @@
|
|
3
3
|
* logicalproto.h
|
4
4
|
* logical replication protocol
|
5
5
|
*
|
6
|
-
* Copyright (c) 2015-
|
6
|
+
* Copyright (c) 2015-2024, PostgreSQL Global Development Group
|
7
7
|
*
|
8
8
|
* IDENTIFICATION
|
9
9
|
* src/include/replication/logicalproto.h
|
@@ -74,7 +74,7 @@ typedef enum LogicalRepMsgType
|
|
74
74
|
LOGICAL_REP_MSG_STREAM_STOP = 'E',
|
75
75
|
LOGICAL_REP_MSG_STREAM_COMMIT = 'c',
|
76
76
|
LOGICAL_REP_MSG_STREAM_ABORT = 'A',
|
77
|
-
LOGICAL_REP_MSG_STREAM_PREPARE = 'p'
|
77
|
+
LOGICAL_REP_MSG_STREAM_PREPARE = 'p',
|
78
78
|
} LogicalRepMsgType;
|
79
79
|
|
80
80
|
/*
|
@@ -3,7 +3,7 @@
|
|
3
3
|
* logicalworker.h
|
4
4
|
* Exports for logical replication workers.
|
5
5
|
*
|
6
|
-
* Portions Copyright (c) 2016-
|
6
|
+
* Portions Copyright (c) 2016-2024, PostgreSQL Global Development Group
|
7
7
|
*
|
8
8
|
* src/include/replication/logicalworker.h
|
9
9
|
*
|
@@ -18,6 +18,7 @@ extern PGDLLIMPORT volatile sig_atomic_t ParallelApplyMessagePending;
|
|
18
18
|
|
19
19
|
extern void ApplyWorkerMain(Datum main_arg);
|
20
20
|
extern void ParallelApplyWorkerMain(Datum main_arg);
|
21
|
+
extern void TablesyncWorkerMain(Datum main_arg);
|
21
22
|
|
22
23
|
extern bool IsLogicalWorker(void);
|
23
24
|
extern bool IsLogicalParallelApplyWorker(void);
|
@@ -2,7 +2,7 @@
|
|
2
2
|
* origin.h
|
3
3
|
* Exports from replication/logical/origin.c
|
4
4
|
*
|
5
|
-
* Copyright (c) 2013-
|
5
|
+
* Copyright (c) 2013-2024, PostgreSQL Global Development Group
|
6
6
|
*
|
7
7
|
* src/include/replication/origin.h
|
8
8
|
*-------------------------------------------------------------------------
|
@@ -2,7 +2,7 @@
|
|
2
2
|
* reorderbuffer.h
|
3
3
|
* PostgreSQL logical replay/reorder buffer management.
|
4
4
|
*
|
5
|
-
* Copyright (c) 2012-
|
5
|
+
* Copyright (c) 2012-2024, PostgreSQL Global Development Group
|
6
6
|
*
|
7
7
|
* src/include/replication/reorderbuffer.h
|
8
8
|
*/
|
@@ -11,6 +11,7 @@
|
|
11
11
|
|
12
12
|
#include "access/htup_details.h"
|
13
13
|
#include "lib/ilist.h"
|
14
|
+
#include "lib/pairingheap.h"
|
14
15
|
#include "storage/sinval.h"
|
15
16
|
#include "utils/hsearch.h"
|
16
17
|
#include "utils/relcache.h"
|
@@ -25,28 +26,9 @@ extern PGDLLIMPORT int debug_logical_replication_streaming;
|
|
25
26
|
typedef enum
|
26
27
|
{
|
27
28
|
DEBUG_LOGICAL_REP_STREAMING_BUFFERED,
|
28
|
-
DEBUG_LOGICAL_REP_STREAMING_IMMEDIATE
|
29
|
+
DEBUG_LOGICAL_REP_STREAMING_IMMEDIATE,
|
29
30
|
} DebugLogicalRepStreamingMode;
|
30
31
|
|
31
|
-
/* an individual tuple, stored in one chunk of memory */
|
32
|
-
typedef struct ReorderBufferTupleBuf
|
33
|
-
{
|
34
|
-
/* position in preallocated list */
|
35
|
-
slist_node node;
|
36
|
-
|
37
|
-
/* tuple header, the interesting bit for users of logical decoding */
|
38
|
-
HeapTupleData tuple;
|
39
|
-
|
40
|
-
/* pre-allocated size of tuple buffer, different from tuple size */
|
41
|
-
Size alloc_tuple_size;
|
42
|
-
|
43
|
-
/* actual tuple data follows */
|
44
|
-
} ReorderBufferTupleBuf;
|
45
|
-
|
46
|
-
/* pointer to the data stored in a TupleBuf */
|
47
|
-
#define ReorderBufferTupleBufData(p) \
|
48
|
-
((HeapTupleHeader) MAXALIGN(((char *) p) + sizeof(ReorderBufferTupleBuf)))
|
49
|
-
|
50
32
|
/*
|
51
33
|
* Types of the change passed to a 'change' callback.
|
52
34
|
*
|
@@ -73,7 +55,7 @@ typedef enum ReorderBufferChangeType
|
|
73
55
|
REORDER_BUFFER_CHANGE_INTERNAL_SPEC_INSERT,
|
74
56
|
REORDER_BUFFER_CHANGE_INTERNAL_SPEC_CONFIRM,
|
75
57
|
REORDER_BUFFER_CHANGE_INTERNAL_SPEC_ABORT,
|
76
|
-
REORDER_BUFFER_CHANGE_TRUNCATE
|
58
|
+
REORDER_BUFFER_CHANGE_TRUNCATE,
|
77
59
|
} ReorderBufferChangeType;
|
78
60
|
|
79
61
|
/* forward declaration */
|
@@ -114,9 +96,9 @@ typedef struct ReorderBufferChange
|
|
114
96
|
bool clear_toast_afterwards;
|
115
97
|
|
116
98
|
/* valid for DELETE || UPDATE */
|
117
|
-
|
99
|
+
HeapTuple oldtuple;
|
118
100
|
/* valid for INSERT || UPDATE */
|
119
|
-
|
101
|
+
HeapTuple newtuple;
|
120
102
|
} tp;
|
121
103
|
|
122
104
|
/*
|
@@ -420,6 +402,11 @@ typedef struct ReorderBufferTXN
|
|
420
402
|
*/
|
421
403
|
dlist_node catchange_node;
|
422
404
|
|
405
|
+
/*
|
406
|
+
* A node in txn_heap
|
407
|
+
*/
|
408
|
+
pairingheap_node txn_node;
|
409
|
+
|
423
410
|
/*
|
424
411
|
* Size of this transaction (changes currently in memory, in bytes).
|
425
412
|
*/
|
@@ -491,45 +478,38 @@ typedef void (*ReorderBufferRollbackPreparedCB) (ReorderBuffer *rb,
|
|
491
478
|
TimestampTz prepare_time);
|
492
479
|
|
493
480
|
/* start streaming transaction callback signature */
|
494
|
-
typedef void (*ReorderBufferStreamStartCB) (
|
495
|
-
ReorderBuffer *rb,
|
481
|
+
typedef void (*ReorderBufferStreamStartCB) (ReorderBuffer *rb,
|
496
482
|
ReorderBufferTXN *txn,
|
497
483
|
XLogRecPtr first_lsn);
|
498
484
|
|
499
485
|
/* stop streaming transaction callback signature */
|
500
|
-
typedef void (*ReorderBufferStreamStopCB) (
|
501
|
-
ReorderBuffer *rb,
|
486
|
+
typedef void (*ReorderBufferStreamStopCB) (ReorderBuffer *rb,
|
502
487
|
ReorderBufferTXN *txn,
|
503
488
|
XLogRecPtr last_lsn);
|
504
489
|
|
505
490
|
/* discard streamed transaction callback signature */
|
506
|
-
typedef void (*ReorderBufferStreamAbortCB) (
|
507
|
-
ReorderBuffer *rb,
|
491
|
+
typedef void (*ReorderBufferStreamAbortCB) (ReorderBuffer *rb,
|
508
492
|
ReorderBufferTXN *txn,
|
509
493
|
XLogRecPtr abort_lsn);
|
510
494
|
|
511
495
|
/* prepare streamed transaction callback signature */
|
512
|
-
typedef void (*ReorderBufferStreamPrepareCB) (
|
513
|
-
ReorderBuffer *rb,
|
496
|
+
typedef void (*ReorderBufferStreamPrepareCB) (ReorderBuffer *rb,
|
514
497
|
ReorderBufferTXN *txn,
|
515
498
|
XLogRecPtr prepare_lsn);
|
516
499
|
|
517
500
|
/* commit streamed transaction callback signature */
|
518
|
-
typedef void (*ReorderBufferStreamCommitCB) (
|
519
|
-
ReorderBuffer *rb,
|
501
|
+
typedef void (*ReorderBufferStreamCommitCB) (ReorderBuffer *rb,
|
520
502
|
ReorderBufferTXN *txn,
|
521
503
|
XLogRecPtr commit_lsn);
|
522
504
|
|
523
505
|
/* stream change callback signature */
|
524
|
-
typedef void (*ReorderBufferStreamChangeCB) (
|
525
|
-
ReorderBuffer *rb,
|
506
|
+
typedef void (*ReorderBufferStreamChangeCB) (ReorderBuffer *rb,
|
526
507
|
ReorderBufferTXN *txn,
|
527
508
|
Relation relation,
|
528
509
|
ReorderBufferChange *change);
|
529
510
|
|
530
511
|
/* stream message callback signature */
|
531
|
-
typedef void (*ReorderBufferStreamMessageCB) (
|
532
|
-
ReorderBuffer *rb,
|
512
|
+
typedef void (*ReorderBufferStreamMessageCB) (ReorderBuffer *rb,
|
533
513
|
ReorderBufferTXN *txn,
|
534
514
|
XLogRecPtr message_lsn,
|
535
515
|
bool transactional,
|
@@ -537,16 +517,14 @@ typedef void (*ReorderBufferStreamMessageCB) (
|
|
537
517
|
const char *message);
|
538
518
|
|
539
519
|
/* stream truncate callback signature */
|
540
|
-
typedef void (*ReorderBufferStreamTruncateCB) (
|
541
|
-
ReorderBuffer *rb,
|
520
|
+
typedef void (*ReorderBufferStreamTruncateCB) (ReorderBuffer *rb,
|
542
521
|
ReorderBufferTXN *txn,
|
543
522
|
int nrelations,
|
544
523
|
Relation relations[],
|
545
524
|
ReorderBufferChange *change);
|
546
525
|
|
547
526
|
/* update progress txn callback signature */
|
548
|
-
typedef void (*ReorderBufferUpdateProgressTxnCB) (
|
549
|
-
ReorderBuffer *rb,
|
527
|
+
typedef void (*ReorderBufferUpdateProgressTxnCB) (ReorderBuffer *rb,
|
550
528
|
ReorderBufferTXN *txn,
|
551
529
|
XLogRecPtr lsn);
|
552
530
|
|
@@ -650,6 +628,9 @@ struct ReorderBuffer
|
|
650
628
|
/* memory accounting */
|
651
629
|
Size size;
|
652
630
|
|
631
|
+
/* Max-heap for sizes of all top-level and sub transactions */
|
632
|
+
pairingheap *txn_heap;
|
633
|
+
|
653
634
|
/*
|
654
635
|
* Statistics about transactions spilled to disk.
|
655
636
|
*
|
@@ -678,10 +659,10 @@ struct ReorderBuffer
|
|
678
659
|
extern ReorderBuffer *ReorderBufferAllocate(void);
|
679
660
|
extern void ReorderBufferFree(ReorderBuffer *rb);
|
680
661
|
|
681
|
-
extern
|
682
|
-
|
683
|
-
extern void ReorderBufferReturnTupleBuf(
|
684
|
-
|
662
|
+
extern HeapTuple ReorderBufferGetTupleBuf(ReorderBuffer *rb,
|
663
|
+
Size tuple_len);
|
664
|
+
extern void ReorderBufferReturnTupleBuf(HeapTuple tuple);
|
665
|
+
|
685
666
|
extern ReorderBufferChange *ReorderBufferGetChange(ReorderBuffer *rb);
|
686
667
|
extern void ReorderBufferReturnChange(ReorderBuffer *rb,
|
687
668
|
ReorderBufferChange *change, bool upd_mem);
|
@@ -2,7 +2,7 @@
|
|
2
2
|
* slot.h
|
3
3
|
* Replication slot management.
|
4
4
|
*
|
5
|
-
* Copyright (c) 2012-
|
5
|
+
* Copyright (c) 2012-2024, PostgreSQL Global Development Group
|
6
6
|
*
|
7
7
|
*-------------------------------------------------------------------------
|
8
8
|
*/
|
@@ -34,12 +34,15 @@ typedef enum ReplicationSlotPersistency
|
|
34
34
|
{
|
35
35
|
RS_PERSISTENT,
|
36
36
|
RS_EPHEMERAL,
|
37
|
-
RS_TEMPORARY
|
37
|
+
RS_TEMPORARY,
|
38
38
|
} ReplicationSlotPersistency;
|
39
39
|
|
40
40
|
/*
|
41
41
|
* Slots can be invalidated, e.g. due to max_slot_wal_keep_size. If so, the
|
42
42
|
* 'invalidated' field is set to a value other than _NONE.
|
43
|
+
*
|
44
|
+
* When adding a new invalidation cause here, remember to update
|
45
|
+
* SlotInvalidationCauses and RS_INVAL_MAX_CAUSES.
|
43
46
|
*/
|
44
47
|
typedef enum ReplicationSlotInvalidationCause
|
45
48
|
{
|
@@ -52,6 +55,8 @@ typedef enum ReplicationSlotInvalidationCause
|
|
52
55
|
RS_INVAL_WAL_LEVEL,
|
53
56
|
} ReplicationSlotInvalidationCause;
|
54
57
|
|
58
|
+
extern PGDLLIMPORT const char *const SlotInvalidationCauses[];
|
59
|
+
|
55
60
|
/*
|
56
61
|
* On-Disk data of a replication slot, preserved across restarts.
|
57
62
|
*/
|
@@ -111,6 +116,17 @@ typedef struct ReplicationSlotPersistentData
|
|
111
116
|
|
112
117
|
/* plugin name */
|
113
118
|
NameData plugin;
|
119
|
+
|
120
|
+
/*
|
121
|
+
* Was this slot synchronized from the primary server?
|
122
|
+
*/
|
123
|
+
char synced;
|
124
|
+
|
125
|
+
/*
|
126
|
+
* Is this a failover slot (sync candidate for standbys)? Only relevant
|
127
|
+
* for logical slots on the primary server.
|
128
|
+
*/
|
129
|
+
bool failover;
|
114
130
|
} ReplicationSlotPersistentData;
|
115
131
|
|
116
132
|
/*
|
@@ -178,6 +194,20 @@ typedef struct ReplicationSlot
|
|
178
194
|
XLogRecPtr candidate_xmin_lsn;
|
179
195
|
XLogRecPtr candidate_restart_valid;
|
180
196
|
XLogRecPtr candidate_restart_lsn;
|
197
|
+
|
198
|
+
/*
|
199
|
+
* This value tracks the last confirmed_flush LSN flushed which is used
|
200
|
+
* during a shutdown checkpoint to decide if logical's slot data should be
|
201
|
+
* forcibly flushed or not.
|
202
|
+
*/
|
203
|
+
XLogRecPtr last_saved_confirmed_flush;
|
204
|
+
|
205
|
+
/*
|
206
|
+
* The time when the slot became inactive. For synced slots on a standby
|
207
|
+
* server, it represents the time when slot synchronization was most
|
208
|
+
* recently stopped.
|
209
|
+
*/
|
210
|
+
TimestampTz inactive_since;
|
181
211
|
} ReplicationSlot;
|
182
212
|
|
183
213
|
#define SlotIsPhysical(slot) ((slot)->data.database == InvalidOid)
|
@@ -203,6 +233,7 @@ extern PGDLLIMPORT ReplicationSlot *MyReplicationSlot;
|
|
203
233
|
|
204
234
|
/* GUCs */
|
205
235
|
extern PGDLLIMPORT int max_replication_slots;
|
236
|
+
extern PGDLLIMPORT char *synchronized_standby_slots;
|
206
237
|
|
207
238
|
/* shmem initialization functions */
|
208
239
|
extern Size ReplicationSlotsShmemSize(void);
|
@@ -211,13 +242,16 @@ extern void ReplicationSlotsShmemInit(void);
|
|
211
242
|
/* management of individual slots */
|
212
243
|
extern void ReplicationSlotCreate(const char *name, bool db_specific,
|
213
244
|
ReplicationSlotPersistency persistency,
|
214
|
-
bool two_phase
|
245
|
+
bool two_phase, bool failover,
|
246
|
+
bool synced);
|
215
247
|
extern void ReplicationSlotPersist(void);
|
216
248
|
extern void ReplicationSlotDrop(const char *name, bool nowait);
|
249
|
+
extern void ReplicationSlotDropAcquired(void);
|
250
|
+
extern void ReplicationSlotAlter(const char *name, bool failover);
|
217
251
|
|
218
252
|
extern void ReplicationSlotAcquire(const char *name, bool nowait);
|
219
253
|
extern void ReplicationSlotRelease(void);
|
220
|
-
extern void ReplicationSlotCleanup(
|
254
|
+
extern void ReplicationSlotCleanup(bool synced_only);
|
221
255
|
extern void ReplicationSlotSave(void);
|
222
256
|
extern void ReplicationSlotMarkDirty(void);
|
223
257
|
|
@@ -241,9 +275,15 @@ extern void ReplicationSlotNameForTablesync(Oid suboid, Oid relid, char *syncslo
|
|
241
275
|
extern void ReplicationSlotDropAtPubNode(WalReceiverConn *wrconn, char *slotname, bool missing_ok);
|
242
276
|
|
243
277
|
extern void StartupReplicationSlots(void);
|
244
|
-
extern void CheckPointReplicationSlots(
|
278
|
+
extern void CheckPointReplicationSlots(bool is_shutdown);
|
245
279
|
|
246
280
|
extern void CheckSlotRequirements(void);
|
247
281
|
extern void CheckSlotPermissions(void);
|
282
|
+
extern ReplicationSlotInvalidationCause
|
283
|
+
GetSlotInvalidationCause(const char *invalidation_reason);
|
284
|
+
|
285
|
+
extern bool SlotExistsInSyncStandbySlots(const char *slot_name);
|
286
|
+
extern bool StandbySlotsHaveCaughtup(XLogRecPtr wait_for_lsn, int elevel);
|
287
|
+
extern void WaitForStandbyConfirmation(XLogRecPtr wait_for_lsn);
|
248
288
|
|
249
289
|
#endif /* SLOT_H */
|
@@ -0,0 +1,38 @@
|
|
1
|
+
/*-------------------------------------------------------------------------
|
2
|
+
*
|
3
|
+
* slotsync.h
|
4
|
+
* Exports for slot synchronization.
|
5
|
+
*
|
6
|
+
* Portions Copyright (c) 2016-2024, PostgreSQL Global Development Group
|
7
|
+
*
|
8
|
+
* src/include/replication/slotsync.h
|
9
|
+
*
|
10
|
+
*-------------------------------------------------------------------------
|
11
|
+
*/
|
12
|
+
#ifndef SLOTSYNC_H
|
13
|
+
#define SLOTSYNC_H
|
14
|
+
|
15
|
+
#include "replication/walreceiver.h"
|
16
|
+
|
17
|
+
extern PGDLLIMPORT bool sync_replication_slots;
|
18
|
+
|
19
|
+
/*
|
20
|
+
* GUCs needed by slot sync worker to connect to the primary
|
21
|
+
* server and carry on with slots synchronization.
|
22
|
+
*/
|
23
|
+
extern PGDLLIMPORT char *PrimaryConnInfo;
|
24
|
+
extern PGDLLIMPORT char *PrimarySlotName;
|
25
|
+
|
26
|
+
extern char *CheckAndGetDbnameFromConninfo(void);
|
27
|
+
extern bool ValidateSlotSyncParams(int elevel);
|
28
|
+
|
29
|
+
extern void ReplSlotSyncWorkerMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn();
|
30
|
+
|
31
|
+
extern void ShutDownSlotSync(void);
|
32
|
+
extern bool SlotSyncWorkerCanRestart(void);
|
33
|
+
extern bool IsSyncingReplicationSlots(void);
|
34
|
+
extern Size SlotSyncShmemSize(void);
|
35
|
+
extern void SlotSyncShmemInit(void);
|
36
|
+
extern void SyncReplicationSlots(WalReceiverConn *wrconn);
|
37
|
+
|
38
|
+
#endif /* SLOTSYNC_H */
|
@@ -3,7 +3,7 @@
|
|
3
3
|
* walreceiver.h
|
4
4
|
* Exports from replication/walreceiverfuncs.c.
|
5
5
|
*
|
6
|
-
* Portions Copyright (c) 2010-
|
6
|
+
* Portions Copyright (c) 2010-2024, PostgreSQL Global Development Group
|
7
7
|
*
|
8
8
|
* src/include/replication/walreceiver.h
|
9
9
|
*
|
@@ -13,7 +13,6 @@
|
|
13
13
|
#define _WALRECEIVER_H
|
14
14
|
|
15
15
|
#include <netdb.h>
|
16
|
-
#include <sys/socket.h>
|
17
16
|
|
18
17
|
#include "access/xlog.h"
|
19
18
|
#include "access/xlogdefs.h"
|
@@ -52,7 +51,7 @@ typedef enum
|
|
52
51
|
WALRCV_STREAMING, /* walreceiver is streaming */
|
53
52
|
WALRCV_WAITING, /* stopped streaming, waiting for orders */
|
54
53
|
WALRCV_RESTARTING, /* asked to restart streaming */
|
55
|
-
WALRCV_STOPPING
|
54
|
+
WALRCV_STOPPING, /* requested to stop, but still running */
|
56
55
|
} WalRcvState;
|
57
56
|
|
58
57
|
/* Shared memory area for management of walreceiver process */
|
@@ -207,7 +206,7 @@ typedef enum
|
|
207
206
|
WALRCV_OK_TUPLES, /* Query returned tuples. */
|
208
207
|
WALRCV_OK_COPY_IN, /* Query started COPY FROM. */
|
209
208
|
WALRCV_OK_COPY_OUT, /* Query started COPY TO. */
|
210
|
-
WALRCV_OK_COPY_BOTH
|
209
|
+
WALRCV_OK_COPY_BOTH, /* Query started COPY BOTH replication
|
211
210
|
* protocol. */
|
212
211
|
} WalRcvExecStatus;
|
213
212
|
|
@@ -229,8 +228,10 @@ typedef struct WalRcvExecResult
|
|
229
228
|
/*
|
230
229
|
* walrcv_connect_fn
|
231
230
|
*
|
232
|
-
* Establish connection to a cluster. '
|
233
|
-
* connection is
|
231
|
+
* Establish connection to a cluster. 'replication' is true if the
|
232
|
+
* connection is a replication connection, and false if it is a
|
233
|
+
* regular connection. If it is a replication connection, it could
|
234
|
+
* be either logical or physical based on input argument 'logical'.
|
234
235
|
* 'appname' is a name associated to the connection, to use for example
|
235
236
|
* with fallback_application_name or application_name. Returns the
|
236
237
|
* details about the connection established, as defined by
|
@@ -238,6 +239,7 @@ typedef struct WalRcvExecResult
|
|
238
239
|
* returned with 'err' including the error generated.
|
239
240
|
*/
|
240
241
|
typedef WalReceiverConn *(*walrcv_connect_fn) (const char *conninfo,
|
242
|
+
bool replication,
|
241
243
|
bool logical,
|
242
244
|
bool must_use_password,
|
243
245
|
const char *appname,
|
@@ -280,6 +282,13 @@ typedef void (*walrcv_get_senderinfo_fn) (WalReceiverConn *conn,
|
|
280
282
|
typedef char *(*walrcv_identify_system_fn) (WalReceiverConn *conn,
|
281
283
|
TimeLineID *primary_tli);
|
282
284
|
|
285
|
+
/*
|
286
|
+
* walrcv_get_dbname_from_conninfo_fn
|
287
|
+
*
|
288
|
+
* Returns the database name from the primary_conninfo
|
289
|
+
*/
|
290
|
+
typedef char *(*walrcv_get_dbname_from_conninfo_fn) (const char *conninfo);
|
291
|
+
|
283
292
|
/*
|
284
293
|
* walrcv_server_version_fn
|
285
294
|
*
|
@@ -356,9 +365,20 @@ typedef char *(*walrcv_create_slot_fn) (WalReceiverConn *conn,
|
|
356
365
|
const char *slotname,
|
357
366
|
bool temporary,
|
358
367
|
bool two_phase,
|
368
|
+
bool failover,
|
359
369
|
CRSSnapshotAction snapshot_action,
|
360
370
|
XLogRecPtr *lsn);
|
361
371
|
|
372
|
+
/*
|
373
|
+
* walrcv_alter_slot_fn
|
374
|
+
*
|
375
|
+
* Change the definition of a replication slot. Currently, it only supports
|
376
|
+
* changing the failover property of the slot.
|
377
|
+
*/
|
378
|
+
typedef void (*walrcv_alter_slot_fn) (WalReceiverConn *conn,
|
379
|
+
const char *slotname,
|
380
|
+
bool failover);
|
381
|
+
|
362
382
|
/*
|
363
383
|
* walrcv_get_backend_pid_fn
|
364
384
|
*
|
@@ -393,6 +413,7 @@ typedef struct WalReceiverFunctionsType
|
|
393
413
|
walrcv_get_conninfo_fn walrcv_get_conninfo;
|
394
414
|
walrcv_get_senderinfo_fn walrcv_get_senderinfo;
|
395
415
|
walrcv_identify_system_fn walrcv_identify_system;
|
416
|
+
walrcv_get_dbname_from_conninfo_fn walrcv_get_dbname_from_conninfo;
|
396
417
|
walrcv_server_version_fn walrcv_server_version;
|
397
418
|
walrcv_readtimelinehistoryfile_fn walrcv_readtimelinehistoryfile;
|
398
419
|
walrcv_startstreaming_fn walrcv_startstreaming;
|
@@ -400,6 +421,7 @@ typedef struct WalReceiverFunctionsType
|
|
400
421
|
walrcv_receive_fn walrcv_receive;
|
401
422
|
walrcv_send_fn walrcv_send;
|
402
423
|
walrcv_create_slot_fn walrcv_create_slot;
|
424
|
+
walrcv_alter_slot_fn walrcv_alter_slot;
|
403
425
|
walrcv_get_backend_pid_fn walrcv_get_backend_pid;
|
404
426
|
walrcv_exec_fn walrcv_exec;
|
405
427
|
walrcv_disconnect_fn walrcv_disconnect;
|
@@ -407,8 +429,8 @@ typedef struct WalReceiverFunctionsType
|
|
407
429
|
|
408
430
|
extern PGDLLIMPORT WalReceiverFunctionsType *WalReceiverFunctions;
|
409
431
|
|
410
|
-
#define walrcv_connect(conninfo, logical, must_use_password, appname, err) \
|
411
|
-
WalReceiverFunctions->walrcv_connect(conninfo, logical, must_use_password, appname, err)
|
432
|
+
#define walrcv_connect(conninfo, replication, logical, must_use_password, appname, err) \
|
433
|
+
WalReceiverFunctions->walrcv_connect(conninfo, replication, logical, must_use_password, appname, err)
|
412
434
|
#define walrcv_check_conninfo(conninfo, must_use_password) \
|
413
435
|
WalReceiverFunctions->walrcv_check_conninfo(conninfo, must_use_password)
|
414
436
|
#define walrcv_get_conninfo(conn) \
|
@@ -417,6 +439,8 @@ extern PGDLLIMPORT WalReceiverFunctionsType *WalReceiverFunctions;
|
|
417
439
|
WalReceiverFunctions->walrcv_get_senderinfo(conn, sender_host, sender_port)
|
418
440
|
#define walrcv_identify_system(conn, primary_tli) \
|
419
441
|
WalReceiverFunctions->walrcv_identify_system(conn, primary_tli)
|
442
|
+
#define walrcv_get_dbname_from_conninfo(conninfo) \
|
443
|
+
WalReceiverFunctions->walrcv_get_dbname_from_conninfo(conninfo)
|
420
444
|
#define walrcv_server_version(conn) \
|
421
445
|
WalReceiverFunctions->walrcv_server_version(conn)
|
422
446
|
#define walrcv_readtimelinehistoryfile(conn, tli, filename, content, size) \
|
@@ -429,8 +453,10 @@ extern PGDLLIMPORT WalReceiverFunctionsType *WalReceiverFunctions;
|
|
429
453
|
WalReceiverFunctions->walrcv_receive(conn, buffer, wait_fd)
|
430
454
|
#define walrcv_send(conn, buffer, nbytes) \
|
431
455
|
WalReceiverFunctions->walrcv_send(conn, buffer, nbytes)
|
432
|
-
#define walrcv_create_slot(conn, slotname, temporary, two_phase, snapshot_action, lsn) \
|
433
|
-
WalReceiverFunctions->walrcv_create_slot(conn, slotname, temporary, two_phase, snapshot_action, lsn)
|
456
|
+
#define walrcv_create_slot(conn, slotname, temporary, two_phase, failover, snapshot_action, lsn) \
|
457
|
+
WalReceiverFunctions->walrcv_create_slot(conn, slotname, temporary, two_phase, failover, snapshot_action, lsn)
|
458
|
+
#define walrcv_alter_slot(conn, slotname, failover) \
|
459
|
+
WalReceiverFunctions->walrcv_alter_slot(conn, slotname, failover)
|
434
460
|
#define walrcv_get_backend_pid(conn) \
|
435
461
|
WalReceiverFunctions->walrcv_get_backend_pid(conn)
|
436
462
|
#define walrcv_exec(conn, exec, nRetTypes, retTypes) \
|
@@ -457,7 +483,7 @@ walrcv_clear_result(WalRcvExecResult *walres)
|
|
457
483
|
}
|
458
484
|
|
459
485
|
/* prototypes for functions in walreceiver.c */
|
460
|
-
extern void WalReceiverMain(
|
486
|
+
extern void WalReceiverMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn();
|
461
487
|
extern void ProcessWalRcvInterrupts(void);
|
462
488
|
extern void WalRcvForceReply(void);
|
463
489
|
|