pg_query 5.1.0 → 6.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|