pg_query 5.1.0 → 6.0.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 +18 -0
- data/README.md +1 -1
- data/Rakefile +2 -2
- 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 +10 -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 +8 -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 +221 -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 +33 -24
- 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 +7 -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 +31 -36
- 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 +1 -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 +5 -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 +453 -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 +28 -2
- 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 +1 -1
- 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 +29 -25
- 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 +102 -82
- data/ext/pg_query/include/postgres/mb/stringinfo_mb.h +1 -1
- data/ext/pg_query/include/postgres/miscadmin.h +64 -52
- data/ext/pg_query/include/postgres/nodes/bitmapset.h +17 -3
- data/ext/pg_query/include/postgres/nodes/execnodes.h +109 -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 +60 -9
- 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 +344 -50
- 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 +2 -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 +34 -34
- 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 -11
- data/ext/pg_query/include/postgres/port.h +7 -3
- 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 +18 -28
- data/ext/pg_query/include/postgres/replication/slot.h +41 -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 +1 -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 -23
- 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 +41 -27
- 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 +5 -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 +11 -17
- data/ext/pg_query/include/postgres/utils/plancache.h +5 -3
- data/ext/pg_query/include/postgres/utils/portal.h +9 -9
- 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 +2 -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_ruby_freebsd.sym +0 -1
- data/ext/pg_query/pg_query_scan.c +1 -1
- data/ext/pg_query/postgres_deparse.c +409 -21
- 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 +34490 -32135
- 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 +45 -108
- 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 +1 -1
- data/ext/pg_query/src_port_strerror.c +1 -3
- data/ext/pg_query/src_port_strlcpy.c +1 -1
- data/lib/pg_query/param_refs.rb +1 -1
- data/lib/pg_query/pg_query_pb.rb +26 -3
- data/lib/pg_query/treewalker.rb +38 -11
- data/lib/pg_query/truncate.rb +1 -1
- data/lib/pg_query/version.rb +1 -1
- metadata +25 -11
- 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/src_backend_nodes_nodes.c +0 -38
|
@@ -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
|
*/
|
|
@@ -650,6 +637,9 @@ struct ReorderBuffer
|
|
|
650
637
|
/* memory accounting */
|
|
651
638
|
Size size;
|
|
652
639
|
|
|
640
|
+
/* Max-heap for sizes of all top-level and sub transactions */
|
|
641
|
+
pairingheap *txn_heap;
|
|
642
|
+
|
|
653
643
|
/*
|
|
654
644
|
* Statistics about transactions spilled to disk.
|
|
655
645
|
*
|
|
@@ -678,10 +668,10 @@ struct ReorderBuffer
|
|
|
678
668
|
extern ReorderBuffer *ReorderBufferAllocate(void);
|
|
679
669
|
extern void ReorderBufferFree(ReorderBuffer *rb);
|
|
680
670
|
|
|
681
|
-
extern
|
|
682
|
-
|
|
683
|
-
extern void ReorderBufferReturnTupleBuf(
|
|
684
|
-
|
|
671
|
+
extern HeapTuple ReorderBufferGetTupleBuf(ReorderBuffer *rb,
|
|
672
|
+
Size tuple_len);
|
|
673
|
+
extern void ReorderBufferReturnTupleBuf(HeapTuple tuple);
|
|
674
|
+
|
|
685
675
|
extern ReorderBufferChange *ReorderBufferGetChange(ReorderBuffer *rb);
|
|
686
676
|
extern void ReorderBufferReturnChange(ReorderBuffer *rb,
|
|
687
677
|
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,16 @@ 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
|
+
/* The time since the slot has become inactive */
|
|
206
|
+
TimestampTz inactive_since;
|
|
181
207
|
} ReplicationSlot;
|
|
182
208
|
|
|
183
209
|
#define SlotIsPhysical(slot) ((slot)->data.database == InvalidOid)
|
|
@@ -203,6 +229,7 @@ extern PGDLLIMPORT ReplicationSlot *MyReplicationSlot;
|
|
|
203
229
|
|
|
204
230
|
/* GUCs */
|
|
205
231
|
extern PGDLLIMPORT int max_replication_slots;
|
|
232
|
+
extern PGDLLIMPORT char *synchronized_standby_slots;
|
|
206
233
|
|
|
207
234
|
/* shmem initialization functions */
|
|
208
235
|
extern Size ReplicationSlotsShmemSize(void);
|
|
@@ -211,13 +238,16 @@ extern void ReplicationSlotsShmemInit(void);
|
|
|
211
238
|
/* management of individual slots */
|
|
212
239
|
extern void ReplicationSlotCreate(const char *name, bool db_specific,
|
|
213
240
|
ReplicationSlotPersistency persistency,
|
|
214
|
-
bool two_phase
|
|
241
|
+
bool two_phase, bool failover,
|
|
242
|
+
bool synced);
|
|
215
243
|
extern void ReplicationSlotPersist(void);
|
|
216
244
|
extern void ReplicationSlotDrop(const char *name, bool nowait);
|
|
245
|
+
extern void ReplicationSlotDropAcquired(void);
|
|
246
|
+
extern void ReplicationSlotAlter(const char *name, bool failover);
|
|
217
247
|
|
|
218
248
|
extern void ReplicationSlotAcquire(const char *name, bool nowait);
|
|
219
249
|
extern void ReplicationSlotRelease(void);
|
|
220
|
-
extern void ReplicationSlotCleanup(
|
|
250
|
+
extern void ReplicationSlotCleanup(bool synced_only);
|
|
221
251
|
extern void ReplicationSlotSave(void);
|
|
222
252
|
extern void ReplicationSlotMarkDirty(void);
|
|
223
253
|
|
|
@@ -241,9 +271,15 @@ extern void ReplicationSlotNameForTablesync(Oid suboid, Oid relid, char *syncslo
|
|
|
241
271
|
extern void ReplicationSlotDropAtPubNode(WalReceiverConn *wrconn, char *slotname, bool missing_ok);
|
|
242
272
|
|
|
243
273
|
extern void StartupReplicationSlots(void);
|
|
244
|
-
extern void CheckPointReplicationSlots(
|
|
274
|
+
extern void CheckPointReplicationSlots(bool is_shutdown);
|
|
245
275
|
|
|
246
276
|
extern void CheckSlotRequirements(void);
|
|
247
277
|
extern void CheckSlotPermissions(void);
|
|
278
|
+
extern ReplicationSlotInvalidationCause
|
|
279
|
+
GetSlotInvalidationCause(const char *invalidation_reason);
|
|
280
|
+
|
|
281
|
+
extern bool SlotExistsInSyncStandbySlots(const char *slot_name);
|
|
282
|
+
extern bool StandbySlotsHaveCaughtup(XLogRecPtr wait_for_lsn, int elevel);
|
|
283
|
+
extern void WaitForStandbyConfirmation(XLogRecPtr wait_for_lsn);
|
|
248
284
|
|
|
249
285
|
#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
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* walsender.h
|
|
4
4
|
* Exports from replication/walsender.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/walsender.h
|
|
9
9
|
*
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
#ifndef _WALSENDER_H
|
|
13
13
|
#define _WALSENDER_H
|
|
14
14
|
|
|
15
|
-
#include
|
|
15
|
+
#include "access/xlogdefs.h"
|
|
16
16
|
|
|
17
17
|
/*
|
|
18
18
|
* What to do with a snapshot in create replication slot command.
|
|
@@ -21,7 +21,7 @@ typedef enum
|
|
|
21
21
|
{
|
|
22
22
|
CRS_EXPORT_SNAPSHOT,
|
|
23
23
|
CRS_NOEXPORT_SNAPSHOT,
|
|
24
|
-
CRS_USE_SNAPSHOT
|
|
24
|
+
CRS_USE_SNAPSHOT,
|
|
25
25
|
} CRSSnapshotAction;
|
|
26
26
|
|
|
27
27
|
/* global state */
|
|
@@ -39,6 +39,8 @@ extern void InitWalSender(void);
|
|
|
39
39
|
extern bool exec_replication_command(const char *cmd_string);
|
|
40
40
|
extern void WalSndErrorCleanup(void);
|
|
41
41
|
extern void WalSndResourceCleanup(bool isCommit);
|
|
42
|
+
extern void PhysicalWakeupLogicalWalSnd(void);
|
|
43
|
+
extern XLogRecPtr GetStandbyFlushRecPtr(TimeLineID *tli);
|
|
42
44
|
extern void WalSndSignals(void);
|
|
43
45
|
extern Size WalSndShmemSize(void);
|
|
44
46
|
extern void WalSndShmemInit(void);
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* prs2lock.h
|
|
4
4
|
* data structures for POSTGRES Rule System II (rewrite rules only)
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* src/include/rewrite/prs2lock.h
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* External interface to query rewriter.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/rewrite/rewriteHandler.h
|
|
@@ -25,11 +25,17 @@ extern void AcquireRewriteLocks(Query *parsetree,
|
|
|
25
25
|
extern Node *build_column_default(Relation rel, int attrno);
|
|
26
26
|
|
|
27
27
|
extern Query *get_view_query(Relation view);
|
|
28
|
+
extern bool view_has_instead_trigger(Relation view, CmdType event,
|
|
29
|
+
List *mergeActionList);
|
|
28
30
|
extern const char *view_query_is_auto_updatable(Query *viewquery,
|
|
29
31
|
bool check_cols);
|
|
30
32
|
extern int relation_is_updatable(Oid reloid,
|
|
31
33
|
List *outer_reloids,
|
|
32
34
|
bool include_triggers,
|
|
33
35
|
Bitmapset *include_cols);
|
|
36
|
+
extern void error_view_not_updatable(Relation view,
|
|
37
|
+
CmdType command,
|
|
38
|
+
List *mergeActionList,
|
|
39
|
+
const char *detail);
|
|
34
40
|
|
|
35
41
|
#endif /* REWRITEHANDLER_H */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Querytree manipulation subroutines for query rewriter.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/rewrite/rewriteManip.h
|
|
@@ -37,7 +37,7 @@ typedef enum ReplaceVarsNoMatchOption
|
|
|
37
37
|
{
|
|
38
38
|
REPLACEVARS_REPORT_ERROR, /* throw error if no match */
|
|
39
39
|
REPLACEVARS_CHANGE_VARNO, /* change the Var's varno, nothing else */
|
|
40
|
-
REPLACEVARS_SUBSTITUTE_NULL
|
|
40
|
+
REPLACEVARS_SUBSTITUTE_NULL, /* replace with a NULL Const */
|
|
41
41
|
} ReplaceVarsNoMatchOption;
|
|
42
42
|
|
|
43
43
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/rewrite/rewriteSupport.h
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* POSTGRES disk block definitions.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/storage/block.h
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Basic buffer manager data types.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/storage/buf.h
|