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
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* See utils/resowner/README for more info.
|
|
10
10
|
*
|
|
11
11
|
*
|
|
12
|
-
* Portions Copyright (c) 1996-
|
|
12
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
|
13
13
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
14
14
|
*
|
|
15
15
|
* src/include/utils/resowner.h
|
|
@@ -37,19 +37,88 @@ extern PGDLLIMPORT ResourceOwner AuxProcessResourceOwner;
|
|
|
37
37
|
|
|
38
38
|
/*
|
|
39
39
|
* Resource releasing is done in three phases: pre-locks, locks, and
|
|
40
|
-
* post-locks. The pre-lock phase must release any resources that are
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
44
|
-
*
|
|
40
|
+
* post-locks. The pre-lock phase must release any resources that are visible
|
|
41
|
+
* to other backends (such as pinned buffers); this ensures that when we
|
|
42
|
+
* release a lock that another backend may be waiting on, it will see us as
|
|
43
|
+
* being fully out of our transaction. The post-lock phase should be used for
|
|
44
|
+
* backend-internal cleanup.
|
|
45
|
+
*
|
|
46
|
+
* Within each phase, resources are released in priority order. Priority is
|
|
47
|
+
* just an integer specified in ResourceOwnerDesc. The priorities of built-in
|
|
48
|
+
* resource types are given below, extensions may use any priority relative to
|
|
49
|
+
* those or RELEASE_PRIO_FIRST/LAST. RELEASE_PRIO_FIRST is a fine choice if
|
|
50
|
+
* your resource doesn't depend on any other resources.
|
|
45
51
|
*/
|
|
46
52
|
typedef enum
|
|
47
53
|
{
|
|
48
|
-
RESOURCE_RELEASE_BEFORE_LOCKS,
|
|
54
|
+
RESOURCE_RELEASE_BEFORE_LOCKS = 1,
|
|
49
55
|
RESOURCE_RELEASE_LOCKS,
|
|
50
|
-
RESOURCE_RELEASE_AFTER_LOCKS
|
|
56
|
+
RESOURCE_RELEASE_AFTER_LOCKS,
|
|
51
57
|
} ResourceReleasePhase;
|
|
52
58
|
|
|
59
|
+
typedef uint32 ResourceReleasePriority;
|
|
60
|
+
|
|
61
|
+
/* priorities of built-in BEFORE_LOCKS resources */
|
|
62
|
+
#define RELEASE_PRIO_BUFFER_IOS 100
|
|
63
|
+
#define RELEASE_PRIO_BUFFER_PINS 200
|
|
64
|
+
#define RELEASE_PRIO_RELCACHE_REFS 300
|
|
65
|
+
#define RELEASE_PRIO_DSMS 400
|
|
66
|
+
#define RELEASE_PRIO_JIT_CONTEXTS 500
|
|
67
|
+
#define RELEASE_PRIO_CRYPTOHASH_CONTEXTS 600
|
|
68
|
+
#define RELEASE_PRIO_HMAC_CONTEXTS 700
|
|
69
|
+
|
|
70
|
+
/* priorities of built-in AFTER_LOCKS resources */
|
|
71
|
+
#define RELEASE_PRIO_CATCACHE_REFS 100
|
|
72
|
+
#define RELEASE_PRIO_CATCACHE_LIST_REFS 200
|
|
73
|
+
#define RELEASE_PRIO_PLANCACHE_REFS 300
|
|
74
|
+
#define RELEASE_PRIO_TUPDESC_REFS 400
|
|
75
|
+
#define RELEASE_PRIO_SNAPSHOT_REFS 500
|
|
76
|
+
#define RELEASE_PRIO_FILES 600
|
|
77
|
+
#define RELEASE_PRIO_WAITEVENTSETS 700
|
|
78
|
+
|
|
79
|
+
/* 0 is considered invalid */
|
|
80
|
+
#define RELEASE_PRIO_FIRST 1
|
|
81
|
+
#define RELEASE_PRIO_LAST UINT32_MAX
|
|
82
|
+
|
|
83
|
+
/*
|
|
84
|
+
* In order to track an object, resowner.c needs a few callbacks for it.
|
|
85
|
+
* The callbacks for resources of a specific kind are encapsulated in
|
|
86
|
+
* ResourceOwnerDesc.
|
|
87
|
+
*
|
|
88
|
+
* Note that the callbacks occur post-commit or post-abort, so the callback
|
|
89
|
+
* functions can only do noncritical cleanup and must not fail.
|
|
90
|
+
*/
|
|
91
|
+
typedef struct ResourceOwnerDesc
|
|
92
|
+
{
|
|
93
|
+
const char *name; /* name for the object kind, for debugging */
|
|
94
|
+
|
|
95
|
+
/* when are these objects released? */
|
|
96
|
+
ResourceReleasePhase release_phase;
|
|
97
|
+
ResourceReleasePriority release_priority;
|
|
98
|
+
|
|
99
|
+
/*
|
|
100
|
+
* Release resource.
|
|
101
|
+
*
|
|
102
|
+
* This is called for each resource in the resource owner, in the order
|
|
103
|
+
* specified by 'release_phase' and 'release_priority' when the whole
|
|
104
|
+
* resource owner is been released or when ResourceOwnerReleaseAllOfKind()
|
|
105
|
+
* is called. The resource is implicitly removed from the owner, the
|
|
106
|
+
* callback function doesn't need to call ResourceOwnerForget.
|
|
107
|
+
*/
|
|
108
|
+
void (*ReleaseResource) (Datum res);
|
|
109
|
+
|
|
110
|
+
/*
|
|
111
|
+
* Format a string describing the resource, for debugging purposes. If a
|
|
112
|
+
* resource has not been properly released before commit, this is used to
|
|
113
|
+
* print a WARNING.
|
|
114
|
+
*
|
|
115
|
+
* This can be left to NULL, in which case a generic "[resource name]: %p"
|
|
116
|
+
* format is used.
|
|
117
|
+
*/
|
|
118
|
+
char *(*DebugPrint) (Datum res);
|
|
119
|
+
|
|
120
|
+
} ResourceOwnerDesc;
|
|
121
|
+
|
|
53
122
|
/*
|
|
54
123
|
* Dynamically loaded modules can get control during ResourceOwnerRelease
|
|
55
124
|
* by providing a callback of this form.
|
|
@@ -71,16 +140,28 @@ extern void ResourceOwnerRelease(ResourceOwner owner,
|
|
|
71
140
|
ResourceReleasePhase phase,
|
|
72
141
|
bool isCommit,
|
|
73
142
|
bool isTopLevel);
|
|
74
|
-
extern void ResourceOwnerReleaseAllPlanCacheRefs(ResourceOwner owner);
|
|
75
143
|
extern void ResourceOwnerDelete(ResourceOwner owner);
|
|
76
144
|
extern ResourceOwner ResourceOwnerGetParent(ResourceOwner owner);
|
|
77
145
|
extern void ResourceOwnerNewParent(ResourceOwner owner,
|
|
78
146
|
ResourceOwner newparent);
|
|
147
|
+
|
|
148
|
+
extern void ResourceOwnerEnlarge(ResourceOwner owner);
|
|
149
|
+
extern void ResourceOwnerRemember(ResourceOwner owner, Datum value, const ResourceOwnerDesc *kind);
|
|
150
|
+
extern void ResourceOwnerForget(ResourceOwner owner, Datum value, const ResourceOwnerDesc *kind);
|
|
151
|
+
|
|
152
|
+
extern void ResourceOwnerReleaseAllOfKind(ResourceOwner owner, const ResourceOwnerDesc *kind);
|
|
153
|
+
|
|
79
154
|
extern void RegisterResourceReleaseCallback(ResourceReleaseCallback callback,
|
|
80
155
|
void *arg);
|
|
81
156
|
extern void UnregisterResourceReleaseCallback(ResourceReleaseCallback callback,
|
|
82
157
|
void *arg);
|
|
158
|
+
|
|
83
159
|
extern void CreateAuxProcessResourceOwner(void);
|
|
84
160
|
extern void ReleaseAuxProcessResources(bool isCommit);
|
|
85
161
|
|
|
162
|
+
/* special support for local lock management */
|
|
163
|
+
struct LOCALLOCK;
|
|
164
|
+
extern void ResourceOwnerRememberLock(ResourceOwner owner, struct LOCALLOCK *locallock);
|
|
165
|
+
extern void ResourceOwnerForgetLock(ResourceOwner owner, struct LOCALLOCK *locallock);
|
|
166
|
+
|
|
86
167
|
#endif /* RESOWNER_H */
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* ruleutils.h
|
|
4
4
|
* Declarations for ruleutils.c
|
|
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/utils/ruleutils.h
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* sharedtuplestore.h
|
|
4
4
|
* Simple mechanism for sharing tuples between backends.
|
|
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/utils/sharedtuplestore.h
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* snapmgr.h
|
|
4
4
|
* POSTGRES snapshot manager
|
|
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/utils/snapmgr.h
|
|
@@ -19,40 +19,6 @@
|
|
|
19
19
|
#include "utils/snapshot.h"
|
|
20
20
|
|
|
21
21
|
|
|
22
|
-
/*
|
|
23
|
-
* The structure used to map times to TransactionId values for the "snapshot
|
|
24
|
-
* too old" feature must have a few entries at the tail to hold old values;
|
|
25
|
-
* otherwise the lookup will often fail and the expected early pruning or
|
|
26
|
-
* vacuum will not usually occur. It is best if this padding is for a number
|
|
27
|
-
* of minutes greater than a thread would normally be stalled, but it's OK if
|
|
28
|
-
* early vacuum opportunities are occasionally missed, so there's no need to
|
|
29
|
-
* use an extreme value or get too fancy. 10 minutes seems plenty.
|
|
30
|
-
*/
|
|
31
|
-
#define OLD_SNAPSHOT_PADDING_ENTRIES 10
|
|
32
|
-
#define OLD_SNAPSHOT_TIME_MAP_ENTRIES (old_snapshot_threshold + OLD_SNAPSHOT_PADDING_ENTRIES)
|
|
33
|
-
|
|
34
|
-
/*
|
|
35
|
-
* Common definition of relation properties that allow early pruning/vacuuming
|
|
36
|
-
* when old_snapshot_threshold >= 0.
|
|
37
|
-
*/
|
|
38
|
-
#define RelationAllowsEarlyPruning(rel) \
|
|
39
|
-
( \
|
|
40
|
-
RelationIsPermanent(rel) && !IsCatalogRelation(rel) \
|
|
41
|
-
&& !RelationIsAccessibleInLogicalDecoding(rel) \
|
|
42
|
-
)
|
|
43
|
-
|
|
44
|
-
#define EarlyPruningEnabled(rel) (old_snapshot_threshold >= 0 && RelationAllowsEarlyPruning(rel))
|
|
45
|
-
|
|
46
|
-
/* GUC variables */
|
|
47
|
-
extern PGDLLIMPORT int old_snapshot_threshold;
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
extern Size SnapMgrShmemSize(void);
|
|
51
|
-
extern void SnapMgrInit(void);
|
|
52
|
-
extern TimestampTz GetSnapshotCurrentTimestamp(void);
|
|
53
|
-
extern TimestampTz GetOldSnapshotThresholdTimestamp(void);
|
|
54
|
-
extern void SnapshotTooOldMagicForTest(void);
|
|
55
|
-
|
|
56
22
|
extern PGDLLIMPORT bool FirstSnapshotSet;
|
|
57
23
|
|
|
58
24
|
extern PGDLLIMPORT TransactionId TransactionXmin;
|
|
@@ -97,14 +63,6 @@ extern PGDLLIMPORT SnapshotData CatalogSnapshotData;
|
|
|
97
63
|
((snapshot)->snapshot_type == SNAPSHOT_MVCC || \
|
|
98
64
|
(snapshot)->snapshot_type == SNAPSHOT_HISTORIC_MVCC)
|
|
99
65
|
|
|
100
|
-
#ifndef FRONTEND
|
|
101
|
-
static inline bool
|
|
102
|
-
OldSnapshotThresholdActive(void)
|
|
103
|
-
{
|
|
104
|
-
return old_snapshot_threshold >= 0;
|
|
105
|
-
}
|
|
106
|
-
#endif
|
|
107
|
-
|
|
108
66
|
extern Snapshot GetTransactionSnapshot(void);
|
|
109
67
|
extern Snapshot GetLatestSnapshot(void);
|
|
110
68
|
extern void SnapshotSetCommandId(CommandId curcid);
|
|
@@ -138,13 +96,6 @@ extern void DeleteAllExportedSnapshotFiles(void);
|
|
|
138
96
|
extern void WaitForOlderSnapshots(TransactionId limitXmin, bool progress);
|
|
139
97
|
extern bool ThereAreNoPriorRegisteredSnapshots(void);
|
|
140
98
|
extern bool HaveRegisteredOrActiveSnapshot(void);
|
|
141
|
-
extern bool TransactionIdLimitedForOldSnapshots(TransactionId recentXmin,
|
|
142
|
-
Relation relation,
|
|
143
|
-
TransactionId *limit_xid,
|
|
144
|
-
TimestampTz *limit_ts);
|
|
145
|
-
extern void SetOldSnapshotThresholdTimestamp(TimestampTz ts, TransactionId xlimit);
|
|
146
|
-
extern void MaintainOldSnapshotTimeMapping(TimestampTz whenTaken,
|
|
147
|
-
TransactionId xmin);
|
|
148
99
|
|
|
149
100
|
extern char *ExportSnapshot(Snapshot snapshot);
|
|
150
101
|
|
|
@@ -156,8 +107,6 @@ typedef struct GlobalVisState GlobalVisState;
|
|
|
156
107
|
extern GlobalVisState *GlobalVisTestFor(Relation rel);
|
|
157
108
|
extern bool GlobalVisTestIsRemovableXid(GlobalVisState *state, TransactionId xid);
|
|
158
109
|
extern bool GlobalVisTestIsRemovableFullXid(GlobalVisState *state, FullTransactionId fxid);
|
|
159
|
-
extern FullTransactionId GlobalVisTestNonRemovableFullHorizon(GlobalVisState *state);
|
|
160
|
-
extern TransactionId GlobalVisTestNonRemovableHorizon(GlobalVisState *state);
|
|
161
110
|
extern bool GlobalVisCheckRemovableXid(Relation rel, TransactionId xid);
|
|
162
111
|
extern bool GlobalVisCheckRemovableFullXid(Relation rel, FullTransactionId fxid);
|
|
163
112
|
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* snapshot.h
|
|
4
4
|
* POSTGRES snapshot definition
|
|
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/utils/snapshot.h
|
|
@@ -115,7 +115,7 @@ typedef enum SnapshotType
|
|
|
115
115
|
* For visibility checks snapshot->min must have been set up with the xmin
|
|
116
116
|
* horizon to use.
|
|
117
117
|
*/
|
|
118
|
-
SNAPSHOT_NON_VACUUMABLE
|
|
118
|
+
SNAPSHOT_NON_VACUUMABLE,
|
|
119
119
|
} SnapshotType;
|
|
120
120
|
|
|
121
121
|
typedef struct SnapshotData *Snapshot;
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
* function for such cases, but probably not any other acceleration method.
|
|
43
43
|
*
|
|
44
44
|
*
|
|
45
|
-
* Portions Copyright (c) 1996-
|
|
45
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
|
46
46
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
47
47
|
*
|
|
48
48
|
* src/include/utils/sortsupport.h
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* See also lsyscache.h, which provides convenience routines for
|
|
7
7
|
* common cache-lookup operations.
|
|
8
8
|
*
|
|
9
|
-
* Portions Copyright (c) 1996-
|
|
9
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
|
10
10
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
11
11
|
*
|
|
12
12
|
* src/include/utils/syscache.h
|
|
@@ -20,103 +20,7 @@
|
|
|
20
20
|
#include "access/htup.h"
|
|
21
21
|
/* we intentionally do not include utils/catcache.h here */
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
* SysCache identifiers.
|
|
25
|
-
*
|
|
26
|
-
* The order of these identifiers must match the order
|
|
27
|
-
* of the entries in the array cacheinfo[] in syscache.c.
|
|
28
|
-
* Keep them in alphabetical order (renumbering only costs a
|
|
29
|
-
* backend rebuild).
|
|
30
|
-
*/
|
|
31
|
-
|
|
32
|
-
enum SysCacheIdentifier
|
|
33
|
-
{
|
|
34
|
-
AGGFNOID = 0,
|
|
35
|
-
AMNAME,
|
|
36
|
-
AMOID,
|
|
37
|
-
AMOPOPID,
|
|
38
|
-
AMOPSTRATEGY,
|
|
39
|
-
AMPROCNUM,
|
|
40
|
-
ATTNAME,
|
|
41
|
-
ATTNUM,
|
|
42
|
-
AUTHMEMMEMROLE,
|
|
43
|
-
AUTHMEMROLEMEM,
|
|
44
|
-
AUTHNAME,
|
|
45
|
-
AUTHOID,
|
|
46
|
-
CASTSOURCETARGET,
|
|
47
|
-
CLAAMNAMENSP,
|
|
48
|
-
CLAOID,
|
|
49
|
-
COLLNAMEENCNSP,
|
|
50
|
-
COLLOID,
|
|
51
|
-
CONDEFAULT,
|
|
52
|
-
CONNAMENSP,
|
|
53
|
-
CONSTROID,
|
|
54
|
-
CONVOID,
|
|
55
|
-
DATABASEOID,
|
|
56
|
-
DEFACLROLENSPOBJ,
|
|
57
|
-
ENUMOID,
|
|
58
|
-
ENUMTYPOIDNAME,
|
|
59
|
-
EVENTTRIGGERNAME,
|
|
60
|
-
EVENTTRIGGEROID,
|
|
61
|
-
FOREIGNDATAWRAPPERNAME,
|
|
62
|
-
FOREIGNDATAWRAPPEROID,
|
|
63
|
-
FOREIGNSERVERNAME,
|
|
64
|
-
FOREIGNSERVEROID,
|
|
65
|
-
FOREIGNTABLEREL,
|
|
66
|
-
INDEXRELID,
|
|
67
|
-
LANGNAME,
|
|
68
|
-
LANGOID,
|
|
69
|
-
NAMESPACENAME,
|
|
70
|
-
NAMESPACEOID,
|
|
71
|
-
OPERNAMENSP,
|
|
72
|
-
OPEROID,
|
|
73
|
-
OPFAMILYAMNAMENSP,
|
|
74
|
-
OPFAMILYOID,
|
|
75
|
-
PARAMETERACLNAME,
|
|
76
|
-
PARAMETERACLOID,
|
|
77
|
-
PARTRELID,
|
|
78
|
-
PROCNAMEARGSNSP,
|
|
79
|
-
PROCOID,
|
|
80
|
-
PUBLICATIONNAME,
|
|
81
|
-
PUBLICATIONNAMESPACE,
|
|
82
|
-
PUBLICATIONNAMESPACEMAP,
|
|
83
|
-
PUBLICATIONOID,
|
|
84
|
-
PUBLICATIONREL,
|
|
85
|
-
PUBLICATIONRELMAP,
|
|
86
|
-
RANGEMULTIRANGE,
|
|
87
|
-
RANGETYPE,
|
|
88
|
-
RELNAMENSP,
|
|
89
|
-
RELOID,
|
|
90
|
-
REPLORIGIDENT,
|
|
91
|
-
REPLORIGNAME,
|
|
92
|
-
RULERELNAME,
|
|
93
|
-
SEQRELID,
|
|
94
|
-
STATEXTDATASTXOID,
|
|
95
|
-
STATEXTNAMENSP,
|
|
96
|
-
STATEXTOID,
|
|
97
|
-
STATRELATTINH,
|
|
98
|
-
SUBSCRIPTIONNAME,
|
|
99
|
-
SUBSCRIPTIONOID,
|
|
100
|
-
SUBSCRIPTIONRELMAP,
|
|
101
|
-
TABLESPACEOID,
|
|
102
|
-
TRFOID,
|
|
103
|
-
TRFTYPELANG,
|
|
104
|
-
TSCONFIGMAP,
|
|
105
|
-
TSCONFIGNAMENSP,
|
|
106
|
-
TSCONFIGOID,
|
|
107
|
-
TSDICTNAMENSP,
|
|
108
|
-
TSDICTOID,
|
|
109
|
-
TSPARSERNAMENSP,
|
|
110
|
-
TSPARSEROID,
|
|
111
|
-
TSTEMPLATENAMENSP,
|
|
112
|
-
TSTEMPLATEOID,
|
|
113
|
-
TYPENAMENSP,
|
|
114
|
-
TYPEOID,
|
|
115
|
-
USERMAPPINGOID,
|
|
116
|
-
USERMAPPINGUSERSERVER
|
|
117
|
-
|
|
118
|
-
#define SysCacheSize (USERMAPPINGUSERSERVER + 1)
|
|
119
|
-
};
|
|
23
|
+
#include "catalog/syscache_ids.h"
|
|
120
24
|
|
|
121
25
|
extern void InitCatalogCache(void);
|
|
122
26
|
extern void InitCatalogCachePhase2(void);
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Routines to multiplex SIGALRM interrupts for multiple timeout reasons.
|
|
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/utils/timeout.h
|
|
@@ -31,6 +31,7 @@ typedef enum TimeoutId
|
|
|
31
31
|
STANDBY_TIMEOUT,
|
|
32
32
|
STANDBY_LOCK_TIMEOUT,
|
|
33
33
|
IDLE_IN_TRANSACTION_SESSION_TIMEOUT,
|
|
34
|
+
TRANSACTION_TIMEOUT,
|
|
34
35
|
IDLE_SESSION_TIMEOUT,
|
|
35
36
|
IDLE_STATS_UPDATE_TIMEOUT,
|
|
36
37
|
CLIENT_CONNECTION_CHECK_TIMEOUT,
|
|
@@ -51,7 +52,7 @@ typedef enum TimeoutType
|
|
|
51
52
|
{
|
|
52
53
|
TMPARAM_AFTER,
|
|
53
54
|
TMPARAM_AT,
|
|
54
|
-
TMPARAM_EVERY
|
|
55
|
+
TMPARAM_EVERY,
|
|
55
56
|
} TimeoutType;
|
|
56
57
|
|
|
57
58
|
typedef struct
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* timestamp.h
|
|
4
4
|
* Definitions for the SQL "timestamp" and "interval" types.
|
|
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/utils/timestamp.h
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* algorithm. Parallel sorts use a variant of this external sort
|
|
12
12
|
* algorithm, and are typically only used for large amounts of data.
|
|
13
13
|
*
|
|
14
|
-
* Portions Copyright (c) 1996-
|
|
14
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
|
15
15
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
16
16
|
*
|
|
17
17
|
* src/include/utils/tuplesort.h
|
|
@@ -21,6 +21,7 @@
|
|
|
21
21
|
#ifndef TUPLESORT_H
|
|
22
22
|
#define TUPLESORT_H
|
|
23
23
|
|
|
24
|
+
#include "access/brin_tuple.h"
|
|
24
25
|
#include "access/itup.h"
|
|
25
26
|
#include "executor/tuptable.h"
|
|
26
27
|
#include "storage/dsm.h"
|
|
@@ -77,7 +78,7 @@ typedef enum
|
|
|
77
78
|
SORT_TYPE_TOP_N_HEAPSORT = 1 << 0,
|
|
78
79
|
SORT_TYPE_QUICKSORT = 1 << 1,
|
|
79
80
|
SORT_TYPE_EXTERNAL_SORT = 1 << 2,
|
|
80
|
-
SORT_TYPE_EXTERNAL_MERGE = 1 << 3
|
|
81
|
+
SORT_TYPE_EXTERNAL_MERGE = 1 << 3,
|
|
81
82
|
} TuplesortMethod;
|
|
82
83
|
|
|
83
84
|
#define NUM_TUPLESORTMETHODS 4
|
|
@@ -85,7 +86,7 @@ typedef enum
|
|
|
85
86
|
typedef enum
|
|
86
87
|
{
|
|
87
88
|
SORT_SPACE_TYPE_DISK,
|
|
88
|
-
SORT_SPACE_TYPE_MEMORY
|
|
89
|
+
SORT_SPACE_TYPE_MEMORY,
|
|
89
90
|
} TuplesortSpaceType;
|
|
90
91
|
|
|
91
92
|
/* Bitwise option flags for tuple sorts */
|
|
@@ -97,6 +98,15 @@ typedef enum
|
|
|
97
98
|
/* specifies if the tuplesort is able to support bounded sorts */
|
|
98
99
|
#define TUPLESORT_ALLOWBOUNDED (1 << 1)
|
|
99
100
|
|
|
101
|
+
/*
|
|
102
|
+
* For bounded sort, tuples get pfree'd when they fall outside of the bound.
|
|
103
|
+
* When bounded sorts are not required, we can use a bump context for tuple
|
|
104
|
+
* allocation as there's no risk that pfree will ever be called for a tuple.
|
|
105
|
+
* Define a macro to make it easier for code to figure out if we're using a
|
|
106
|
+
* bump allocator.
|
|
107
|
+
*/
|
|
108
|
+
#define TupleSortUseBumpTupleCxt(opt) (((opt) & TUPLESORT_ALLOWBOUNDED) == 0)
|
|
109
|
+
|
|
100
110
|
typedef struct TuplesortInstrumentation
|
|
101
111
|
{
|
|
102
112
|
TuplesortMethod sortMethod; /* sort algorithm used */
|
|
@@ -108,10 +118,11 @@ typedef struct TuplesortInstrumentation
|
|
|
108
118
|
* The objects we actually sort are SortTuple structs. These contain
|
|
109
119
|
* a pointer to the tuple proper (might be a MinimalTuple or IndexTuple),
|
|
110
120
|
* which is a separate palloc chunk --- we assume it is just one chunk and
|
|
111
|
-
* can be freed by a simple pfree() (except during merge,
|
|
112
|
-
* simple slab allocator
|
|
113
|
-
*
|
|
114
|
-
*
|
|
121
|
+
* can be freed by a simple pfree() (except during merge, where we use a
|
|
122
|
+
* simple slab allocator, and during a non-bounded sort where we use a bump
|
|
123
|
+
* allocator). SortTuples also contain the tuple's first key column in
|
|
124
|
+
* Datum/nullflag format, and a source/input tape number that tracks which
|
|
125
|
+
* tape each heap element/slot belongs to during merging.
|
|
115
126
|
*
|
|
116
127
|
* Storing the first key column lets us save heap_getattr or index_getattr
|
|
117
128
|
* calls during tuple comparisons. We could extract and save all the key
|
|
@@ -162,6 +173,13 @@ typedef struct
|
|
|
162
173
|
*/
|
|
163
174
|
SortTupleComparator comparetup;
|
|
164
175
|
|
|
176
|
+
/*
|
|
177
|
+
* Fall back to the full tuple for comparison, but only compare the first
|
|
178
|
+
* sortkey if it was abbreviated. Otherwise, only compare second and later
|
|
179
|
+
* sortkeys.
|
|
180
|
+
*/
|
|
181
|
+
SortTupleComparator comparetup_tiebreak;
|
|
182
|
+
|
|
165
183
|
/*
|
|
166
184
|
* Alter datum1 representation in the SortTuple's array back from the
|
|
167
185
|
* abbreviated key to the first column value.
|
|
@@ -275,6 +293,9 @@ typedef struct
|
|
|
275
293
|
* The "index_hash" API is similar to index_btree, but the tuples are
|
|
276
294
|
* actually sorted by their hash codes not the raw data.
|
|
277
295
|
*
|
|
296
|
+
* The "index_brin" API is similar to index_btree, but the tuples are
|
|
297
|
+
* BrinTuple and are sorted by their block number not the raw data.
|
|
298
|
+
*
|
|
278
299
|
* Parallel sort callers are required to coordinate multiple tuplesort states
|
|
279
300
|
* in a leader process and one or more worker processes. The leader process
|
|
280
301
|
* must launch workers, and have each perform an independent "partial"
|
|
@@ -356,7 +377,8 @@ extern Tuplesortstate *tuplesort_begin_common(int workMem,
|
|
|
356
377
|
extern void tuplesort_set_bound(Tuplesortstate *state, int64 bound);
|
|
357
378
|
extern bool tuplesort_used_bound(Tuplesortstate *state);
|
|
358
379
|
extern void tuplesort_puttuple_common(Tuplesortstate *state,
|
|
359
|
-
SortTuple *tuple, bool useAbbrev
|
|
380
|
+
SortTuple *tuple, bool useAbbrev,
|
|
381
|
+
Size tuplen);
|
|
360
382
|
extern void tuplesort_performsort(Tuplesortstate *state);
|
|
361
383
|
extern bool tuplesort_gettuple_common(Tuplesortstate *state, bool forward,
|
|
362
384
|
SortTuple *stup);
|
|
@@ -419,6 +441,8 @@ extern Tuplesortstate *tuplesort_begin_index_gist(Relation heapRel,
|
|
|
419
441
|
Relation indexRel,
|
|
420
442
|
int workMem, SortCoordinate coordinate,
|
|
421
443
|
int sortopt);
|
|
444
|
+
extern Tuplesortstate *tuplesort_begin_index_brin(int workMem, SortCoordinate coordinate,
|
|
445
|
+
int sortopt);
|
|
422
446
|
extern Tuplesortstate *tuplesort_begin_datum(Oid datumType,
|
|
423
447
|
Oid sortOperator, Oid sortCollation,
|
|
424
448
|
bool nullsFirstFlag,
|
|
@@ -430,7 +454,8 @@ extern void tuplesort_puttupleslot(Tuplesortstate *state,
|
|
|
430
454
|
extern void tuplesort_putheaptuple(Tuplesortstate *state, HeapTuple tup);
|
|
431
455
|
extern void tuplesort_putindextuplevalues(Tuplesortstate *state,
|
|
432
456
|
Relation rel, ItemPointer self,
|
|
433
|
-
Datum *values, bool *isnull);
|
|
457
|
+
const Datum *values, const bool *isnull);
|
|
458
|
+
extern void tuplesort_putbrintuple(Tuplesortstate *state, BrinTuple *tuple, Size size);
|
|
434
459
|
extern void tuplesort_putdatum(Tuplesortstate *state, Datum val,
|
|
435
460
|
bool isNull);
|
|
436
461
|
|
|
@@ -438,6 +463,8 @@ extern bool tuplesort_gettupleslot(Tuplesortstate *state, bool forward,
|
|
|
438
463
|
bool copy, TupleTableSlot *slot, Datum *abbrev);
|
|
439
464
|
extern HeapTuple tuplesort_getheaptuple(Tuplesortstate *state, bool forward);
|
|
440
465
|
extern IndexTuple tuplesort_getindextuple(Tuplesortstate *state, bool forward);
|
|
466
|
+
extern BrinTuple *tuplesort_getbrintuple(Tuplesortstate *state, Size *len,
|
|
467
|
+
bool forward);
|
|
441
468
|
extern bool tuplesort_getdatum(Tuplesortstate *state, bool forward, bool copy,
|
|
442
469
|
Datum *val, bool *isNull, Datum *abbrev);
|
|
443
470
|
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* Also, we have changed the API to return tuples in TupleTableSlots,
|
|
22
22
|
* so that there is a check to prevent attempted access to system columns.
|
|
23
23
|
*
|
|
24
|
-
* Portions Copyright (c) 1996-
|
|
24
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
|
25
25
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
26
26
|
*
|
|
27
27
|
* src/include/utils/tuplestore.h
|
|
@@ -54,10 +54,7 @@ extern void tuplestore_puttupleslot(Tuplestorestate *state,
|
|
|
54
54
|
TupleTableSlot *slot);
|
|
55
55
|
extern void tuplestore_puttuple(Tuplestorestate *state, HeapTuple tuple);
|
|
56
56
|
extern void tuplestore_putvalues(Tuplestorestate *state, TupleDesc tdesc,
|
|
57
|
-
Datum *values, bool *isnull);
|
|
58
|
-
|
|
59
|
-
/* Backwards compatibility macro */
|
|
60
|
-
#define tuplestore_donestoring(state) ((void) 0)
|
|
57
|
+
const Datum *values, const bool *isnull);
|
|
61
58
|
|
|
62
59
|
extern int tuplestore_alloc_read_pointer(Tuplestorestate *state, int eflags);
|
|
63
60
|
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* The type cache exists to speed lookup of certain information about data
|
|
7
7
|
* types that is not directly available from a type's pg_type row.
|
|
8
8
|
*
|
|
9
|
-
* Portions Copyright (c) 1996-
|
|
9
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
|
10
10
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
11
11
|
*
|
|
12
12
|
* src/include/utils/typcache.h
|
|
@@ -96,6 +96,7 @@ typedef struct TypeCacheEntry
|
|
|
96
96
|
* btree comparison function.
|
|
97
97
|
*/
|
|
98
98
|
struct TypeCacheEntry *rngelemtype; /* range's element type */
|
|
99
|
+
Oid rng_opfamily; /* opfamily to use for range comparisons */
|
|
99
100
|
Oid rng_collation; /* collation for comparisons, if any */
|
|
100
101
|
FmgrInfo rng_cmp_proc_finfo; /* comparison function */
|
|
101
102
|
FmgrInfo rng_canonical_finfo; /* canonicalization function, if any */
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* varlena.h
|
|
4
4
|
* Functions for the variable-length built-in types.
|
|
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/utils/varlena.h
|