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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/* autogenerated from src/
|
|
1
|
+
/* autogenerated from src/include/storage/lwlocklist.h, do not edit */
|
|
2
2
|
/* there is deliberately not an #ifndef LWLOCKNAMES_H here */
|
|
3
3
|
|
|
4
4
|
#define ShmemIndexLock (&MainLWLockArray[1].lock)
|
|
@@ -10,11 +10,7 @@
|
|
|
10
10
|
#define WALBufMappingLock (&MainLWLockArray[7].lock)
|
|
11
11
|
#define WALWriteLock (&MainLWLockArray[8].lock)
|
|
12
12
|
#define ControlFileLock (&MainLWLockArray[9].lock)
|
|
13
|
-
#define XactSLRULock (&MainLWLockArray[11].lock)
|
|
14
|
-
#define SubtransSLRULock (&MainLWLockArray[12].lock)
|
|
15
13
|
#define MultiXactGenLock (&MainLWLockArray[13].lock)
|
|
16
|
-
#define MultiXactOffsetSLRULock (&MainLWLockArray[14].lock)
|
|
17
|
-
#define MultiXactMemberSLRULock (&MainLWLockArray[15].lock)
|
|
18
14
|
#define RelCacheInitLock (&MainLWLockArray[16].lock)
|
|
19
15
|
#define CheckpointerCommLock (&MainLWLockArray[17].lock)
|
|
20
16
|
#define TwoPhaseStateLock (&MainLWLockArray[18].lock)
|
|
@@ -25,26 +21,27 @@
|
|
|
25
21
|
#define AutovacuumScheduleLock (&MainLWLockArray[23].lock)
|
|
26
22
|
#define SyncScanLock (&MainLWLockArray[24].lock)
|
|
27
23
|
#define RelationMappingLock (&MainLWLockArray[25].lock)
|
|
28
|
-
#define NotifySLRULock (&MainLWLockArray[26].lock)
|
|
29
24
|
#define NotifyQueueLock (&MainLWLockArray[27].lock)
|
|
30
25
|
#define SerializableXactHashLock (&MainLWLockArray[28].lock)
|
|
31
26
|
#define SerializableFinishedListLock (&MainLWLockArray[29].lock)
|
|
32
27
|
#define SerializablePredicateListLock (&MainLWLockArray[30].lock)
|
|
33
|
-
#define SerialSLRULock (&MainLWLockArray[31].lock)
|
|
34
28
|
#define SyncRepLock (&MainLWLockArray[32].lock)
|
|
35
29
|
#define BackgroundWorkerLock (&MainLWLockArray[33].lock)
|
|
36
30
|
#define DynamicSharedMemoryControlLock (&MainLWLockArray[34].lock)
|
|
37
31
|
#define AutoFileLock (&MainLWLockArray[35].lock)
|
|
38
32
|
#define ReplicationSlotAllocationLock (&MainLWLockArray[36].lock)
|
|
39
33
|
#define ReplicationSlotControlLock (&MainLWLockArray[37].lock)
|
|
40
|
-
#define CommitTsSLRULock (&MainLWLockArray[38].lock)
|
|
41
34
|
#define CommitTsLock (&MainLWLockArray[39].lock)
|
|
42
35
|
#define ReplicationOriginLock (&MainLWLockArray[40].lock)
|
|
43
36
|
#define MultiXactTruncationLock (&MainLWLockArray[41].lock)
|
|
44
|
-
#define OldSnapshotTimeMapLock (&MainLWLockArray[42].lock)
|
|
45
37
|
#define LogicalRepWorkerLock (&MainLWLockArray[43].lock)
|
|
46
38
|
#define XactTruncationLock (&MainLWLockArray[44].lock)
|
|
47
39
|
#define WrapLimitsVacuumLock (&MainLWLockArray[46].lock)
|
|
48
40
|
#define NotifyQueueTailLock (&MainLWLockArray[47].lock)
|
|
41
|
+
#define WaitEventCustomLock (&MainLWLockArray[48].lock)
|
|
42
|
+
#define WALSummarizerLock (&MainLWLockArray[49].lock)
|
|
43
|
+
#define DSMRegistryLock (&MainLWLockArray[50].lock)
|
|
44
|
+
#define InjectionPointLock (&MainLWLockArray[51].lock)
|
|
45
|
+
#define SerialControlLock (&MainLWLockArray[52].lock)
|
|
49
46
|
|
|
50
|
-
#define NUM_INDIVIDUAL_LWLOCKS
|
|
47
|
+
#define NUM_INDIVIDUAL_LWLOCKS 53
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* POSTGRES disk "offset" 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/off.h
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* be provided by each port.
|
|
11
11
|
*
|
|
12
12
|
*
|
|
13
|
-
* Portions Copyright (c) 1996-
|
|
13
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
|
14
14
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
15
15
|
*
|
|
16
16
|
* src/include/storage/pg_sema.h
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
* only one ID number.
|
|
15
15
|
*
|
|
16
16
|
*
|
|
17
|
-
* Portions Copyright (c) 1996-
|
|
17
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
|
18
18
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
19
19
|
*
|
|
20
20
|
* src/include/storage/pg_shmem.h
|
|
@@ -46,12 +46,13 @@ extern PGDLLIMPORT int shared_memory_type;
|
|
|
46
46
|
extern PGDLLIMPORT int huge_pages;
|
|
47
47
|
extern PGDLLIMPORT int huge_page_size;
|
|
48
48
|
|
|
49
|
-
/* Possible values for huge_pages */
|
|
49
|
+
/* Possible values for huge_pages and huge_pages_status */
|
|
50
50
|
typedef enum
|
|
51
51
|
{
|
|
52
52
|
HUGE_PAGES_OFF,
|
|
53
53
|
HUGE_PAGES_ON,
|
|
54
|
-
HUGE_PAGES_TRY
|
|
54
|
+
HUGE_PAGES_TRY, /* only for huge_pages */
|
|
55
|
+
HUGE_PAGES_UNKNOWN, /* only for huge_pages_status */
|
|
55
56
|
} HugePagesType;
|
|
56
57
|
|
|
57
58
|
/* Possible values for shared_memory_type */
|
|
@@ -59,7 +60,7 @@ typedef enum
|
|
|
59
60
|
{
|
|
60
61
|
SHMEM_TYPE_WINDOWS,
|
|
61
62
|
SHMEM_TYPE_SYSV,
|
|
62
|
-
SHMEM_TYPE_MMAP
|
|
63
|
+
SHMEM_TYPE_MMAP,
|
|
63
64
|
} PGShmemType;
|
|
64
65
|
|
|
65
66
|
#ifndef WIN32
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* routines for signaling between the postmaster and its child processes
|
|
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/pmsignal.h
|
|
@@ -51,7 +51,7 @@ typedef enum
|
|
|
51
51
|
{
|
|
52
52
|
PMQUIT_NOT_SENT = 0, /* postmaster hasn't sent SIGQUIT */
|
|
53
53
|
PMQUIT_FOR_CRASH, /* some other backend bought the farm */
|
|
54
|
-
PMQUIT_FOR_STOP
|
|
54
|
+
PMQUIT_FOR_STOP, /* immediate stop was commanded */
|
|
55
55
|
} QuitSignalReason;
|
|
56
56
|
|
|
57
57
|
/* PMSignalData is an opaque struct, details known only within pmsignal.c */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* POSTGRES public predicate locking 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/predicate.h
|
|
@@ -26,10 +26,6 @@ extern PGDLLIMPORT int max_predicate_locks_per_xact;
|
|
|
26
26
|
extern PGDLLIMPORT int max_predicate_locks_per_relation;
|
|
27
27
|
extern PGDLLIMPORT int max_predicate_locks_per_page;
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
/* Number of SLRU buffers to use for Serial SLRU */
|
|
31
|
-
#define NUM_SERIAL_BUFFERS 16
|
|
32
|
-
|
|
33
29
|
/*
|
|
34
30
|
* A handle used for sharing SERIALIZABLEXACT objects between the participants
|
|
35
31
|
* in a parallel query.
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* per-process shared memory data structures
|
|
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/proc.h
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
#include "storage/lock.h"
|
|
22
22
|
#include "storage/pg_sema.h"
|
|
23
23
|
#include "storage/proclist_types.h"
|
|
24
|
+
#include "storage/procnumber.h"
|
|
24
25
|
|
|
25
26
|
/*
|
|
26
27
|
* Each backend advertises up to PGPROC_MAX_CACHED_SUBXIDS TransactionIds
|
|
@@ -84,12 +85,6 @@ struct XidCache
|
|
|
84
85
|
*/
|
|
85
86
|
#define FP_LOCK_SLOTS_PER_BACKEND 16
|
|
86
87
|
|
|
87
|
-
/*
|
|
88
|
-
* An invalid pgprocno. Must be larger than the maximum number of PGPROC
|
|
89
|
-
* structures we could possibly have. See comments for MAX_BACKENDS.
|
|
90
|
-
*/
|
|
91
|
-
#define INVALID_PGPROCNO PG_INT32_MAX
|
|
92
|
-
|
|
93
88
|
/*
|
|
94
89
|
* Flags for PGPROC.delayChkptFlags
|
|
95
90
|
*
|
|
@@ -186,21 +181,31 @@ struct PGPROC
|
|
|
186
181
|
* vacuum must not remove tuples deleted by
|
|
187
182
|
* xid >= xmin ! */
|
|
188
183
|
|
|
189
|
-
LocalTransactionId lxid; /* local id of top-level transaction currently
|
|
190
|
-
* being executed by this proc, if running;
|
|
191
|
-
* else InvalidLocalTransactionId */
|
|
192
184
|
int pid; /* Backend's process ID; 0 if prepared xact */
|
|
193
185
|
|
|
194
186
|
int pgxactoff; /* offset into various ProcGlobal->arrays with
|
|
195
187
|
* data mirrored from this PGPROC */
|
|
196
188
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
189
|
+
/*
|
|
190
|
+
* Currently running top-level transaction's virtual xid. Together these
|
|
191
|
+
* form a VirtualTransactionId, but we don't use that struct because this
|
|
192
|
+
* is not atomically assignable as whole, and we want to enforce code to
|
|
193
|
+
* consider both parts separately. See comments at VirtualTransactionId.
|
|
194
|
+
*/
|
|
195
|
+
struct
|
|
196
|
+
{
|
|
197
|
+
ProcNumber procNumber; /* For regular backends, equal to
|
|
198
|
+
* GetNumberFromPGProc(proc). For prepared
|
|
199
|
+
* xacts, ID of the original backend that
|
|
200
|
+
* processed the transaction. For unused
|
|
201
|
+
* PGPROC entries, INVALID_PROC_NUMBER. */
|
|
202
|
+
LocalTransactionId lxid; /* local id of top-level transaction
|
|
203
|
+
* currently * being executed by this
|
|
204
|
+
* proc, if running; else
|
|
205
|
+
* InvalidLocalTransactionId */
|
|
206
|
+
} vxid;
|
|
201
207
|
|
|
202
208
|
/* These fields are zero while a backend is still starting up: */
|
|
203
|
-
BackendId backendId; /* This backend's backend ID (if assigned) */
|
|
204
209
|
Oid databaseId; /* OID of database this backend is using */
|
|
205
210
|
Oid roleId; /* OID of role using this backend */
|
|
206
211
|
|
|
@@ -281,7 +286,7 @@ struct PGPROC
|
|
|
281
286
|
TransactionId clogGroupMemberXid; /* transaction id of clog group member */
|
|
282
287
|
XidStatus clogGroupMemberXidStatus; /* transaction status of clog
|
|
283
288
|
* group member */
|
|
284
|
-
|
|
289
|
+
int64 clogGroupMemberPage; /* clog page corresponding to
|
|
285
290
|
* transaction id of clog group member */
|
|
286
291
|
XLogRecPtr clogGroupMemberLsn; /* WAL location of commit record for clog
|
|
287
292
|
* group member */
|
|
@@ -308,6 +313,19 @@ struct PGPROC
|
|
|
308
313
|
|
|
309
314
|
extern PGDLLIMPORT PGPROC *MyProc;
|
|
310
315
|
|
|
316
|
+
/* Proc number of this backend. Equal to GetNumberFromPGProc(MyProc). */
|
|
317
|
+
extern PGDLLIMPORT ProcNumber MyProcNumber;
|
|
318
|
+
|
|
319
|
+
/* Our parallel session leader, or INVALID_PROC_NUMBER if none */
|
|
320
|
+
extern PGDLLIMPORT ProcNumber ParallelLeaderProcNumber;
|
|
321
|
+
|
|
322
|
+
/*
|
|
323
|
+
* The proc number to use for our session's temp relations is normally our own,
|
|
324
|
+
* but parallel workers should use their leader's ID.
|
|
325
|
+
*/
|
|
326
|
+
#define ProcNumberForTempRelations() \
|
|
327
|
+
(ParallelLeaderProcNumber == INVALID_PROC_NUMBER ? MyProcNumber : ParallelLeaderProcNumber)
|
|
328
|
+
|
|
311
329
|
/*
|
|
312
330
|
* There is one ProcGlobal struct for the whole database cluster.
|
|
313
331
|
*
|
|
@@ -410,24 +428,29 @@ extern PGDLLIMPORT PROC_HDR *ProcGlobal;
|
|
|
410
428
|
|
|
411
429
|
extern PGDLLIMPORT PGPROC *PreparedXactProcs;
|
|
412
430
|
|
|
413
|
-
/*
|
|
431
|
+
/*
|
|
432
|
+
* Accessors for getting PGPROC given a ProcNumber and vice versa.
|
|
433
|
+
*/
|
|
414
434
|
#define GetPGProcByNumber(n) (&ProcGlobal->allProcs[(n)])
|
|
435
|
+
#define GetNumberFromPGProc(proc) ((proc) - &ProcGlobal->allProcs[0])
|
|
415
436
|
|
|
416
437
|
/*
|
|
417
438
|
* We set aside some extra PGPROC structures for auxiliary processes,
|
|
418
439
|
* ie things that aren't full-fledged backends but need shmem access.
|
|
419
440
|
*
|
|
420
|
-
* Background writer, checkpointer, WAL writer and archiver
|
|
421
|
-
* operation. Startup process and WAL receiver also consume
|
|
422
|
-
* writer is launched only after startup has exited, so we
|
|
441
|
+
* Background writer, checkpointer, WAL writer, WAL summarizer, and archiver
|
|
442
|
+
* run during normal operation. Startup process and WAL receiver also consume
|
|
443
|
+
* 2 slots, but WAL writer is launched only after startup has exited, so we
|
|
444
|
+
* only need 6 slots.
|
|
423
445
|
*/
|
|
424
|
-
#define NUM_AUXILIARY_PROCS
|
|
446
|
+
#define NUM_AUXILIARY_PROCS 6
|
|
425
447
|
|
|
426
448
|
/* configurable options */
|
|
427
449
|
extern PGDLLIMPORT int DeadlockTimeout;
|
|
428
450
|
extern PGDLLIMPORT int StatementTimeout;
|
|
429
451
|
extern PGDLLIMPORT int LockTimeout;
|
|
430
452
|
extern PGDLLIMPORT int IdleInTransactionSessionTimeout;
|
|
453
|
+
extern PGDLLIMPORT int TransactionTimeout;
|
|
431
454
|
extern PGDLLIMPORT int IdleSessionTimeout;
|
|
432
455
|
extern PGDLLIMPORT bool log_lock_waits;
|
|
433
456
|
|
|
@@ -448,7 +471,9 @@ extern int GetStartupBufferPinWaitBufId(void);
|
|
|
448
471
|
extern bool HaveNFreeProcs(int n, int *nfree);
|
|
449
472
|
extern void ProcReleaseLocks(bool isCommit);
|
|
450
473
|
|
|
451
|
-
extern ProcWaitStatus ProcSleep(LOCALLOCK *locallock,
|
|
474
|
+
extern ProcWaitStatus ProcSleep(LOCALLOCK *locallock,
|
|
475
|
+
LockMethod lockMethodTable,
|
|
476
|
+
bool dontWait);
|
|
452
477
|
extern void ProcWakeup(PGPROC *proc, ProcWaitStatus waitStatus);
|
|
453
478
|
extern void ProcLockWakeup(LockMethod lockMethodTable, LOCK *lock);
|
|
454
479
|
extern void CheckDeadLockAlert(void);
|
|
@@ -456,7 +481,7 @@ extern bool IsWaitingForLock(void);
|
|
|
456
481
|
extern void LockErrorCleanup(void);
|
|
457
482
|
|
|
458
483
|
extern void ProcWaitForSignal(uint32 wait_event_info);
|
|
459
|
-
extern void ProcSendSignal(
|
|
484
|
+
extern void ProcSendSignal(ProcNumber procNumber);
|
|
460
485
|
|
|
461
486
|
extern PGPROC *AuxiliaryPidGetProc(int pid);
|
|
462
487
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* POSTGRES process array 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/procarray.h
|
|
@@ -64,6 +64,10 @@ extern VirtualTransactionId *GetVirtualXIDsDelayingChkpt(int *nvxids, int type);
|
|
|
64
64
|
extern bool HaveVirtualXIDsDelayingChkpt(VirtualTransactionId *vxids,
|
|
65
65
|
int nvxids, int type);
|
|
66
66
|
|
|
67
|
+
extern PGPROC *ProcNumberGetProc(int procNumber);
|
|
68
|
+
extern void ProcNumberGetTransactionIds(int procNumber, TransactionId *xid,
|
|
69
|
+
TransactionId *xmin, int *nsubxid,
|
|
70
|
+
bool *overflowed);
|
|
67
71
|
extern PGPROC *BackendPidGetProc(int pid);
|
|
68
72
|
extern PGPROC *BackendPidGetProcWithLock(int pid);
|
|
69
73
|
extern int BackendXidGetPid(TransactionId xid);
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* See proclist.h for functions that operate on these types.
|
|
7
7
|
*
|
|
8
|
-
* Portions Copyright (c) 2016-
|
|
8
|
+
* Portions Copyright (c) 2016-2024, PostgreSQL Global Development Group
|
|
9
9
|
*
|
|
10
10
|
* IDENTIFICATION
|
|
11
11
|
* src/include/storage/proclist_types.h
|
|
@@ -15,28 +15,30 @@
|
|
|
15
15
|
#ifndef PROCLIST_TYPES_H
|
|
16
16
|
#define PROCLIST_TYPES_H
|
|
17
17
|
|
|
18
|
+
#include "storage/procnumber.h"
|
|
19
|
+
|
|
18
20
|
/*
|
|
19
21
|
* A node in a doubly-linked list of processes. The link fields contain
|
|
20
22
|
* the 0-based PGPROC indexes of the next and previous process, or
|
|
21
|
-
*
|
|
23
|
+
* INVALID_PROC_NUMBER in the next-link of the last node and the prev-link
|
|
22
24
|
* of the first node. A node that is currently not in any list
|
|
23
25
|
* should have next == prev == 0; this is not a possible state for a node
|
|
24
26
|
* that is in a list, because we disallow circularity.
|
|
25
27
|
*/
|
|
26
28
|
typedef struct proclist_node
|
|
27
29
|
{
|
|
28
|
-
|
|
29
|
-
|
|
30
|
+
ProcNumber next; /* pgprocno of the next PGPROC */
|
|
31
|
+
ProcNumber prev; /* pgprocno of the prev PGPROC */
|
|
30
32
|
} proclist_node;
|
|
31
33
|
|
|
32
34
|
/*
|
|
33
35
|
* Header of a doubly-linked list of PGPROCs, identified by pgprocno.
|
|
34
|
-
* An empty list is represented by head == tail ==
|
|
36
|
+
* An empty list is represented by head == tail == INVALID_PROC_NUMBER.
|
|
35
37
|
*/
|
|
36
38
|
typedef struct proclist_head
|
|
37
39
|
{
|
|
38
|
-
|
|
39
|
-
|
|
40
|
+
ProcNumber head; /* pgprocno of the head PGPROC */
|
|
41
|
+
ProcNumber tail; /* pgprocno of the tail PGPROC */
|
|
40
42
|
} proclist_head;
|
|
41
43
|
|
|
42
44
|
/*
|
|
@@ -44,8 +46,8 @@ typedef struct proclist_head
|
|
|
44
46
|
*/
|
|
45
47
|
typedef struct proclist_mutable_iter
|
|
46
48
|
{
|
|
47
|
-
|
|
48
|
-
|
|
49
|
+
ProcNumber cur; /* pgprocno of the current PGPROC */
|
|
50
|
+
ProcNumber next; /* pgprocno of the next PGPROC */
|
|
49
51
|
} proclist_mutable_iter;
|
|
50
52
|
|
|
51
53
|
#endif /* PROCLIST_TYPES_H */
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* procnumber.h
|
|
4
|
+
* definition of process number
|
|
5
|
+
*
|
|
6
|
+
*
|
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
|
8
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
|
+
*
|
|
10
|
+
* src/include/storage/procnumber.h
|
|
11
|
+
*
|
|
12
|
+
*-------------------------------------------------------------------------
|
|
13
|
+
*/
|
|
14
|
+
#ifndef PROCNUMBER_H
|
|
15
|
+
#define PROCNUMBER_H
|
|
16
|
+
|
|
17
|
+
/*
|
|
18
|
+
* ProcNumber uniquely identifies an active backend or auxiliary process.
|
|
19
|
+
* It's assigned at backend startup after authentication, when the process
|
|
20
|
+
* adds itself to the proc array. It is an index into the proc array,
|
|
21
|
+
* starting from 0. Note that a ProcNumber can be reused for a different
|
|
22
|
+
* backend immediately after a backend exits.
|
|
23
|
+
*/
|
|
24
|
+
typedef int ProcNumber;
|
|
25
|
+
|
|
26
|
+
#define INVALID_PROC_NUMBER (-1)
|
|
27
|
+
|
|
28
|
+
/*
|
|
29
|
+
* Proc number of this backend (same as GetNumberFromPGProc(MyProc))
|
|
30
|
+
*/
|
|
31
|
+
extern PGDLLIMPORT ProcNumber MyProcNumber;
|
|
32
|
+
|
|
33
|
+
/* proc number of our parallel session leader, or INVALID_PROC_NUMBER if none */
|
|
34
|
+
extern PGDLLIMPORT ProcNumber ParallelLeaderProcNumber;
|
|
35
|
+
|
|
36
|
+
/*
|
|
37
|
+
* The ProcNumber to use for our session's temp relations is normally our own,
|
|
38
|
+
* but parallel workers should use their leader's proc number.
|
|
39
|
+
*/
|
|
40
|
+
#define ProcNumberForTempRelations() \
|
|
41
|
+
(ParallelLeaderProcNumber == INVALID_PROC_NUMBER ? MyProcNumber : ParallelLeaderProcNumber)
|
|
42
|
+
|
|
43
|
+
#endif /* PROCNUMBER_H */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Routines for interprocess signaling
|
|
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/procsignal.h
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
#ifndef PROCSIGNAL_H
|
|
15
15
|
#define PROCSIGNAL_H
|
|
16
16
|
|
|
17
|
-
#include "storage/
|
|
17
|
+
#include "storage/procnumber.h"
|
|
18
18
|
|
|
19
19
|
|
|
20
20
|
/*
|
|
@@ -38,20 +38,22 @@ typedef enum
|
|
|
38
38
|
PROCSIG_PARALLEL_APPLY_MESSAGE, /* Message from parallel apply workers */
|
|
39
39
|
|
|
40
40
|
/* Recovery conflict reasons */
|
|
41
|
-
|
|
41
|
+
PROCSIG_RECOVERY_CONFLICT_FIRST,
|
|
42
|
+
PROCSIG_RECOVERY_CONFLICT_DATABASE = PROCSIG_RECOVERY_CONFLICT_FIRST,
|
|
42
43
|
PROCSIG_RECOVERY_CONFLICT_TABLESPACE,
|
|
43
44
|
PROCSIG_RECOVERY_CONFLICT_LOCK,
|
|
44
45
|
PROCSIG_RECOVERY_CONFLICT_SNAPSHOT,
|
|
45
46
|
PROCSIG_RECOVERY_CONFLICT_LOGICALSLOT,
|
|
46
47
|
PROCSIG_RECOVERY_CONFLICT_BUFFERPIN,
|
|
47
48
|
PROCSIG_RECOVERY_CONFLICT_STARTUP_DEADLOCK,
|
|
49
|
+
PROCSIG_RECOVERY_CONFLICT_LAST = PROCSIG_RECOVERY_CONFLICT_STARTUP_DEADLOCK,
|
|
48
50
|
|
|
49
51
|
NUM_PROCSIGNALS /* Must be last! */
|
|
50
52
|
} ProcSignalReason;
|
|
51
53
|
|
|
52
54
|
typedef enum
|
|
53
55
|
{
|
|
54
|
-
PROCSIGNAL_BARRIER_SMGRRELEASE
|
|
56
|
+
PROCSIGNAL_BARRIER_SMGRRELEASE, /* ask smgr to close files */
|
|
55
57
|
} ProcSignalBarrierType;
|
|
56
58
|
|
|
57
59
|
/*
|
|
@@ -60,9 +62,9 @@ typedef enum
|
|
|
60
62
|
extern Size ProcSignalShmemSize(void);
|
|
61
63
|
extern void ProcSignalShmemInit(void);
|
|
62
64
|
|
|
63
|
-
extern void ProcSignalInit(
|
|
65
|
+
extern void ProcSignalInit(void);
|
|
64
66
|
extern int SendProcSignal(pid_t pid, ProcSignalReason reason,
|
|
65
|
-
|
|
67
|
+
ProcNumber procNumber);
|
|
66
68
|
|
|
67
69
|
extern uint64 EmitProcSignalBarrier(ProcSignalBarrierType type);
|
|
68
70
|
extern void WaitForProcSignalBarrier(uint64 generation);
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* read_stream.h
|
|
4
|
+
* Mechanism for accessing buffered relation data with look-ahead
|
|
5
|
+
*
|
|
6
|
+
*
|
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
|
8
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
|
+
*
|
|
10
|
+
* src/include/storage/read_stream.h
|
|
11
|
+
*
|
|
12
|
+
*-------------------------------------------------------------------------
|
|
13
|
+
*/
|
|
14
|
+
#ifndef READ_STREAM_H
|
|
15
|
+
#define READ_STREAM_H
|
|
16
|
+
|
|
17
|
+
#include "storage/bufmgr.h"
|
|
18
|
+
|
|
19
|
+
/* Default tuning, reasonable for many users. */
|
|
20
|
+
#define READ_STREAM_DEFAULT 0x00
|
|
21
|
+
|
|
22
|
+
/*
|
|
23
|
+
* I/O streams that are performing maintenance work on behalf of potentially
|
|
24
|
+
* many users, and thus should be governed by maintenance_io_concurrency
|
|
25
|
+
* instead of effective_io_concurrency. For example, VACUUM or CREATE INDEX.
|
|
26
|
+
*/
|
|
27
|
+
#define READ_STREAM_MAINTENANCE 0x01
|
|
28
|
+
|
|
29
|
+
/*
|
|
30
|
+
* We usually avoid issuing prefetch advice automatically when sequential
|
|
31
|
+
* access is detected, but this flag explicitly disables it, for cases that
|
|
32
|
+
* might not be correctly detected. Explicit advice is known to perform worse
|
|
33
|
+
* than letting the kernel (at least Linux) detect sequential access.
|
|
34
|
+
*/
|
|
35
|
+
#define READ_STREAM_SEQUENTIAL 0x02
|
|
36
|
+
|
|
37
|
+
/*
|
|
38
|
+
* We usually ramp up from smaller reads to larger ones, to support users who
|
|
39
|
+
* don't know if it's worth reading lots of buffers yet. This flag disables
|
|
40
|
+
* that, declaring ahead of time that we'll be reading all available buffers.
|
|
41
|
+
*/
|
|
42
|
+
#define READ_STREAM_FULL 0x04
|
|
43
|
+
|
|
44
|
+
struct ReadStream;
|
|
45
|
+
typedef struct ReadStream ReadStream;
|
|
46
|
+
|
|
47
|
+
/* Callback that returns the next block number to read. */
|
|
48
|
+
typedef BlockNumber (*ReadStreamBlockNumberCB) (ReadStream *stream,
|
|
49
|
+
void *callback_private_data,
|
|
50
|
+
void *per_buffer_data);
|
|
51
|
+
|
|
52
|
+
extern ReadStream *read_stream_begin_relation(int flags,
|
|
53
|
+
BufferAccessStrategy strategy,
|
|
54
|
+
Relation rel,
|
|
55
|
+
ForkNumber forknum,
|
|
56
|
+
ReadStreamBlockNumberCB callback,
|
|
57
|
+
void *callback_private_data,
|
|
58
|
+
size_t per_buffer_data_size);
|
|
59
|
+
extern Buffer read_stream_next_buffer(ReadStream *stream, void **per_buffer_data);
|
|
60
|
+
extern BlockNumber read_stream_next_block(ReadStream *stream,
|
|
61
|
+
BufferAccessStrategy *strategy);
|
|
62
|
+
extern void read_stream_reset(ReadStream *stream);
|
|
63
|
+
extern void read_stream_end(ReadStream *stream);
|
|
64
|
+
|
|
65
|
+
#endif /* READ_STREAM_H */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Physical access information for relations.
|
|
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/relfilelocator.h
|
|
@@ -15,14 +15,15 @@
|
|
|
15
15
|
#define RELFILELOCATOR_H
|
|
16
16
|
|
|
17
17
|
#include "common/relpath.h"
|
|
18
|
-
#include "storage/
|
|
18
|
+
#include "storage/procnumber.h"
|
|
19
19
|
|
|
20
20
|
/*
|
|
21
21
|
* RelFileLocator must provide all that we need to know to physically access
|
|
22
|
-
* a relation, with the exception of the backend
|
|
23
|
-
* separately.
|
|
24
|
-
* multiple files on the filesystem, as each fork is stored as
|
|
25
|
-
* file, and each fork can be divided into multiple segments. See
|
|
22
|
+
* a relation, with the exception of the backend's proc number, which can be
|
|
23
|
+
* provided separately. Note, however, that a "physical" relation is
|
|
24
|
+
* comprised of multiple files on the filesystem, as each fork is stored as
|
|
25
|
+
* a separate file, and each fork can be divided into multiple segments. See
|
|
26
|
+
* md.c.
|
|
26
27
|
*
|
|
27
28
|
* spcOid identifies the tablespace of the relation. It corresponds to
|
|
28
29
|
* pg_tablespace.oid.
|
|
@@ -62,28 +63,28 @@ typedef struct RelFileLocator
|
|
|
62
63
|
} RelFileLocator;
|
|
63
64
|
|
|
64
65
|
/*
|
|
65
|
-
* Augmenting a relfilelocator with the backend
|
|
66
|
-
* we need to locate the physical storage.
|
|
67
|
-
* for regular relations (those accessible to more than
|
|
68
|
-
* owning backend's
|
|
69
|
-
* are always transient and removed in
|
|
70
|
-
* never WAL-logged or fsync'd.
|
|
66
|
+
* Augmenting a relfilelocator with the backend's proc number provides all the
|
|
67
|
+
* information we need to locate the physical storage. 'backend' is
|
|
68
|
+
* INVALID_PROC_NUMBER for regular relations (those accessible to more than
|
|
69
|
+
* one backend), or the owning backend's proc number for backend-local
|
|
70
|
+
* relations. Backend-local relations are always transient and removed in
|
|
71
|
+
* case of a database crash; they are never WAL-logged or fsync'd.
|
|
71
72
|
*/
|
|
72
73
|
typedef struct RelFileLocatorBackend
|
|
73
74
|
{
|
|
74
75
|
RelFileLocator locator;
|
|
75
|
-
|
|
76
|
+
ProcNumber backend;
|
|
76
77
|
} RelFileLocatorBackend;
|
|
77
78
|
|
|
78
79
|
#define RelFileLocatorBackendIsTemp(rlocator) \
|
|
79
|
-
((rlocator).backend !=
|
|
80
|
+
((rlocator).backend != INVALID_PROC_NUMBER)
|
|
80
81
|
|
|
81
82
|
/*
|
|
82
83
|
* Note: RelFileLocatorEquals and RelFileLocatorBackendEquals compare relNumber
|
|
83
84
|
* first since that is most likely to be different in two unequal
|
|
84
85
|
* RelFileLocators. It is probably redundant to compare spcOid if the other
|
|
85
86
|
* fields are found equal, but do it anyway to be sure. Likewise for checking
|
|
86
|
-
* the backend
|
|
87
|
+
* the backend number in RelFileLocatorBackendEquals.
|
|
87
88
|
*/
|
|
88
89
|
#define RelFileLocatorEquals(locator1, locator2) \
|
|
89
90
|
((locator1).relNumber == (locator2).relNumber && \
|