pg_query 5.1.0 → 6.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +30 -0
- data/README.md +1 -1
- data/Rakefile +4 -4
- data/ext/pg_query/ext_symbols_freebsd.sym +1 -0
- data/ext/pg_query/ext_symbols_freebsd_with_ruby_abi_version.sym +2 -0
- data/ext/pg_query/ext_symbols_openbsd.sym +1 -0
- data/ext/pg_query/ext_symbols_openbsd_with_ruby_abi_version.sym +2 -0
- data/ext/pg_query/ext_symbols_with_ruby_abi_version.sym +2 -0
- data/ext/pg_query/extconf.rb +20 -6
- data/ext/pg_query/include/pg_query.h +4 -3
- data/ext/pg_query/include/pg_query_enum_defs.c +424 -154
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +68 -4
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +2952 -1845
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +51 -3
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +210 -23
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +17 -1
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +271 -52
- data/ext/pg_query/include/postgres/access/amapi.h +14 -3
- data/ext/pg_query/include/postgres/access/attmap.h +1 -1
- data/ext/pg_query/include/postgres/access/attnum.h +1 -1
- data/ext/pg_query/include/postgres/access/brin_internal.h +116 -0
- data/ext/pg_query/include/postgres/access/brin_tuple.h +112 -0
- data/ext/pg_query/include/postgres/access/clog.h +2 -3
- data/ext/pg_query/include/postgres/access/commit_ts.h +2 -3
- data/ext/pg_query/include/postgres/access/detoast.h +1 -1
- data/ext/pg_query/include/postgres/access/genam.h +17 -4
- data/ext/pg_query/include/postgres/access/gin.h +1 -1
- data/ext/pg_query/include/postgres/access/htup.h +1 -1
- data/ext/pg_query/include/postgres/access/htup_details.h +11 -11
- data/ext/pg_query/include/postgres/access/itup.h +3 -3
- data/ext/pg_query/include/postgres/access/parallel.h +1 -2
- data/ext/pg_query/include/postgres/access/printtup.h +1 -1
- data/ext/pg_query/include/postgres/access/relation.h +1 -1
- data/ext/pg_query/include/postgres/access/relscan.h +1 -1
- data/ext/pg_query/include/postgres/access/rmgrlist.h +1 -1
- data/ext/pg_query/include/postgres/access/sdir.h +1 -1
- data/ext/pg_query/include/postgres/access/skey.h +1 -1
- data/ext/pg_query/include/postgres/access/slru.h +218 -0
- data/ext/pg_query/include/postgres/access/stratnum.h +1 -1
- data/ext/pg_query/include/postgres/access/sysattr.h +1 -1
- data/ext/pg_query/include/postgres/access/table.h +1 -1
- data/ext/pg_query/include/postgres/access/tableam.h +35 -25
- data/ext/pg_query/include/postgres/access/tidstore.h +50 -0
- data/ext/pg_query/include/postgres/access/toast_compression.h +2 -2
- data/ext/pg_query/include/postgres/access/transam.h +50 -7
- data/ext/pg_query/include/postgres/access/tsmapi.h +1 -1
- data/ext/pg_query/include/postgres/access/tupconvert.h +1 -1
- data/ext/pg_query/include/postgres/access/tupdesc.h +5 -5
- data/ext/pg_query/include/postgres/access/tupmacs.h +1 -1
- data/ext/pg_query/include/postgres/access/twophase.h +2 -2
- data/ext/pg_query/include/postgres/access/xact.h +5 -5
- data/ext/pg_query/include/postgres/access/xlog.h +20 -12
- data/ext/pg_query/include/postgres/access/xlog_internal.h +4 -3
- data/ext/pg_query/include/postgres/access/xlogbackup.h +3 -1
- data/ext/pg_query/include/postgres/access/xlogdefs.h +5 -5
- data/ext/pg_query/include/postgres/access/xlogprefetcher.h +2 -2
- data/ext/pg_query/include/postgres/access/xlogreader.h +2 -2
- data/ext/pg_query/include/postgres/access/xlogrecord.h +3 -3
- data/ext/pg_query/include/postgres/access/xlogrecovery.h +4 -4
- data/ext/pg_query/include/postgres/archive/archive_module.h +9 -1
- data/ext/pg_query/include/postgres/c.h +32 -37
- data/ext/pg_query/include/postgres/catalog/catalog.h +3 -1
- data/ext/pg_query/include/postgres/catalog/catversion.h +2 -2
- data/ext/pg_query/include/postgres/catalog/dependency.h +17 -59
- data/ext/pg_query/include/postgres/catalog/genbki.h +12 -6
- data/ext/pg_query/include/postgres/catalog/index.h +22 -18
- data/ext/pg_query/include/postgres/catalog/indexing.h +1 -1
- data/ext/pg_query/include/postgres/catalog/namespace.h +18 -19
- data/ext/pg_query/include/postgres/catalog/objectaccess.h +2 -2
- data/ext/pg_query/include/postgres/catalog/objectaddress.h +5 -1
- data/ext/pg_query/include/postgres/catalog/pg_aggregate.h +4 -2
- data/ext/pg_query/include/postgres/catalog/pg_aggregate_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_am.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_am_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_attribute.h +31 -14
- data/ext/pg_query/include/postgres/catalog/pg_attribute_d.h +3 -3
- data/ext/pg_query/include/postgres/catalog/pg_authid.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_authid_d.h +2 -1
- data/ext/pg_query/include/postgres/catalog/pg_class.h +10 -5
- data/ext/pg_query/include/postgres/catalog/pg_class_d.h +4 -2
- data/ext/pg_query/include/postgres/catalog/pg_collation.h +11 -5
- data/ext/pg_query/include/postgres/catalog/pg_collation_d.h +5 -2
- data/ext/pg_query/include/postgres/catalog/pg_constraint.h +15 -10
- data/ext/pg_query/include/postgres/catalog/pg_constraint_d.h +2 -1
- data/ext/pg_query/include/postgres/catalog/pg_control.h +5 -3
- data/ext/pg_query/include/postgres/catalog/pg_conversion.h +8 -4
- data/ext/pg_query/include/postgres/catalog/pg_conversion_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_database.h +9 -4
- data/ext/pg_query/include/postgres/catalog/pg_database_d.h +13 -12
- data/ext/pg_query/include/postgres/catalog/pg_depend.h +3 -3
- data/ext/pg_query/include/postgres/catalog/pg_depend_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_event_trigger.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_event_trigger_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_index.h +5 -3
- data/ext/pg_query/include/postgres/catalog/pg_index_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_language.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_language_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_namespace.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_namespace_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_opclass.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_opclass_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_operator.h +20 -3
- data/ext/pg_query/include/postgres/catalog/pg_operator_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_opfamily.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_opfamily_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_partitioned_table.h +4 -2
- data/ext/pg_query/include/postgres/catalog/pg_partitioned_table_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_proc.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_proc_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_publication.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_publication_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_replication_origin.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_replication_origin_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_statistic.h +10 -4
- data/ext/pg_query/include/postgres/catalog/pg_statistic_d.h +7 -3
- data/ext/pg_query/include/postgres/catalog/pg_statistic_ext.h +10 -7
- data/ext/pg_query/include/postgres/catalog/pg_statistic_ext_d.h +3 -3
- data/ext/pg_query/include/postgres/catalog/pg_transform.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_transform_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_trigger.h +4 -4
- data/ext/pg_query/include/postgres/catalog/pg_trigger_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_ts_config.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_ts_config_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_ts_dict.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_ts_dict_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_ts_parser.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_ts_parser_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_ts_template.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_ts_template_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/pg_type.h +6 -3
- data/ext/pg_query/include/postgres/catalog/pg_type_d.h +1 -1
- data/ext/pg_query/include/postgres/catalog/storage.h +1 -1
- data/ext/pg_query/include/postgres/catalog/syscache_ids.h +104 -0
- data/ext/pg_query/include/postgres/commands/async.h +2 -6
- data/ext/pg_query/include/postgres/commands/dbcommands.h +1 -1
- data/ext/pg_query/include/postgres/commands/defrem.h +6 -6
- data/ext/pg_query/include/postgres/commands/event_trigger.h +11 -2
- data/ext/pg_query/include/postgres/commands/explain.h +19 -3
- data/ext/pg_query/include/postgres/commands/prepare.h +1 -1
- data/ext/pg_query/include/postgres/commands/tablespace.h +1 -1
- data/ext/pg_query/include/postgres/commands/trigger.h +1 -1
- data/ext/pg_query/include/postgres/commands/vacuum.h +28 -26
- data/ext/pg_query/include/postgres/common/cryptohash.h +2 -2
- data/ext/pg_query/include/postgres/common/file_perm.h +1 -1
- data/ext/pg_query/include/postgres/common/file_utils.h +65 -0
- data/ext/pg_query/include/postgres/common/hashfn.h +16 -1
- data/ext/pg_query/include/postgres/common/hashfn_unstable.h +407 -0
- data/ext/pg_query/include/postgres/common/int.h +79 -4
- data/ext/pg_query/include/postgres/common/keywords.h +1 -1
- data/ext/pg_query/include/postgres/common/kwlookup.h +1 -1
- data/ext/pg_query/include/postgres/common/pg_prng.h +2 -1
- data/ext/pg_query/include/postgres/common/relpath.h +4 -4
- data/ext/pg_query/include/postgres/common/scram-common.h +1 -1
- data/ext/pg_query/include/postgres/common/sha2.h +1 -1
- data/ext/pg_query/include/postgres/common/string.h +1 -1
- data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +2 -3
- data/ext/pg_query/include/postgres/copyfuncs.funcs.c +278 -30
- data/ext/pg_query/include/postgres/copyfuncs.switch.c +55 -4
- data/ext/pg_query/include/postgres/datatype/timestamp.h +29 -3
- data/ext/pg_query/include/postgres/equalfuncs.funcs.c +239 -26
- data/ext/pg_query/include/postgres/equalfuncs.switch.c +55 -4
- data/ext/pg_query/include/postgres/executor/execdesc.h +2 -2
- data/ext/pg_query/include/postgres/executor/executor.h +6 -5
- data/ext/pg_query/include/postgres/executor/functions.h +2 -1
- data/ext/pg_query/include/postgres/executor/instrument.h +5 -3
- data/ext/pg_query/include/postgres/executor/spi.h +2 -8
- data/ext/pg_query/include/postgres/executor/tablefunc.h +1 -1
- data/ext/pg_query/include/postgres/executor/tuptable.h +31 -2
- data/ext/pg_query/include/postgres/fmgr.h +2 -2
- data/ext/pg_query/include/postgres/foreign/fdwapi.h +1 -1
- data/ext/pg_query/include/postgres/funcapi.h +2 -2
- data/ext/pg_query/include/postgres/gram.h +871 -830
- data/ext/pg_query/include/postgres/gramparse.h +1 -1
- data/ext/pg_query/include/postgres/jit/jit.h +4 -3
- data/ext/pg_query/include/postgres/kwlist_d.h +511 -466
- data/ext/pg_query/include/postgres/lib/dshash.h +25 -10
- data/ext/pg_query/include/postgres/lib/ilist.h +1 -1
- data/ext/pg_query/include/postgres/lib/pairingheap.h +1 -1
- data/ext/pg_query/include/postgres/lib/simplehash.h +40 -18
- data/ext/pg_query/include/postgres/lib/sort_template.h +14 -1
- data/ext/pg_query/include/postgres/lib/stringinfo.h +93 -11
- data/ext/pg_query/include/postgres/libpq/auth.h +1 -1
- data/ext/pg_query/include/postgres/libpq/crypt.h +2 -2
- data/ext/pg_query/include/postgres/libpq/hba.h +4 -4
- data/ext/pg_query/include/postgres/libpq/libpq-be.h +35 -28
- data/ext/pg_query/include/postgres/libpq/libpq.h +6 -7
- data/ext/pg_query/include/postgres/libpq/pqcomm.h +26 -20
- data/ext/pg_query/include/postgres/libpq/pqformat.h +2 -3
- data/ext/pg_query/include/postgres/libpq/pqsignal.h +1 -1
- data/ext/pg_query/include/postgres/libpq/protocol.h +89 -0
- data/ext/pg_query/include/postgres/libpq/sasl.h +1 -1
- data/ext/pg_query/include/postgres/libpq/scram.h +1 -1
- data/ext/pg_query/include/postgres/mb/pg_wchar.h +103 -82
- data/ext/pg_query/include/postgres/mb/stringinfo_mb.h +1 -1
- data/ext/pg_query/include/postgres/miscadmin.h +72 -52
- data/ext/pg_query/include/postgres/nodes/bitmapset.h +17 -3
- data/ext/pg_query/include/postgres/nodes/execnodes.h +112 -25
- data/ext/pg_query/include/postgres/nodes/extensible.h +1 -1
- data/ext/pg_query/include/postgres/nodes/lockoptions.h +4 -4
- data/ext/pg_query/include/postgres/nodes/makefuncs.h +8 -2
- data/ext/pg_query/include/postgres/nodes/memnodes.h +43 -4
- data/ext/pg_query/include/postgres/nodes/miscnodes.h +1 -1
- data/ext/pg_query/include/postgres/nodes/nodeFuncs.h +1 -1
- data/ext/pg_query/include/postgres/nodes/nodes.h +30 -41
- data/ext/pg_query/include/postgres/nodes/nodetags.h +464 -444
- data/ext/pg_query/include/postgres/nodes/params.h +1 -1
- data/ext/pg_query/include/postgres/nodes/parsenodes.h +358 -175
- data/ext/pg_query/include/postgres/nodes/pathnodes.h +64 -10
- data/ext/pg_query/include/postgres/nodes/pg_list.h +62 -11
- data/ext/pg_query/include/postgres/nodes/plannodes.h +11 -10
- data/ext/pg_query/include/postgres/nodes/primnodes.h +352 -54
- data/ext/pg_query/include/postgres/nodes/print.h +1 -1
- data/ext/pg_query/include/postgres/nodes/queryjumble.h +2 -2
- data/ext/pg_query/include/postgres/nodes/replnodes.h +23 -2
- data/ext/pg_query/include/postgres/nodes/supportnodes.h +1 -1
- data/ext/pg_query/include/postgres/nodes/tidbitmap.h +1 -1
- data/ext/pg_query/include/postgres/nodes/value.h +1 -1
- data/ext/pg_query/include/postgres/optimizer/cost.h +5 -4
- data/ext/pg_query/include/postgres/optimizer/geqo.h +1 -1
- data/ext/pg_query/include/postgres/optimizer/geqo_gene.h +1 -1
- data/ext/pg_query/include/postgres/optimizer/optimizer.h +5 -2
- data/ext/pg_query/include/postgres/optimizer/paths.h +13 -8
- data/ext/pg_query/include/postgres/optimizer/planmain.h +7 -1
- data/ext/pg_query/include/postgres/parser/analyze.h +3 -1
- data/ext/pg_query/include/postgres/parser/kwlist.h +22 -2
- data/ext/pg_query/include/postgres/parser/parse_agg.h +1 -1
- data/ext/pg_query/include/postgres/parser/parse_coerce.h +5 -2
- data/ext/pg_query/include/postgres/parser/parse_expr.h +1 -1
- data/ext/pg_query/include/postgres/parser/parse_func.h +2 -2
- data/ext/pg_query/include/postgres/parser/parse_node.h +3 -2
- data/ext/pg_query/include/postgres/parser/parse_oper.h +4 -1
- data/ext/pg_query/include/postgres/parser/parse_relation.h +1 -1
- data/ext/pg_query/include/postgres/parser/parse_type.h +2 -2
- data/ext/pg_query/include/postgres/parser/parser.h +3 -3
- data/ext/pg_query/include/postgres/parser/parsetree.h +1 -1
- data/ext/pg_query/include/postgres/parser/scanner.h +1 -1
- data/ext/pg_query/include/postgres/parser/scansup.h +1 -1
- data/ext/pg_query/include/postgres/partitioning/partdefs.h +1 -1
- data/ext/pg_query/include/postgres/pg_config.h +53 -45
- data/ext/pg_query/include/postgres/pg_config_manual.h +21 -8
- data/ext/pg_query/include/postgres/pg_getopt.h +1 -1
- data/ext/pg_query/include/postgres/pg_trace.h +1 -1
- data/ext/pg_query/include/postgres/pgstat.h +13 -11
- data/ext/pg_query/include/postgres/pgtime.h +1 -1
- data/ext/pg_query/include/postgres/pl_reserved_kwlist.h +1 -1
- data/ext/pg_query/include/postgres/pl_reserved_kwlist_d.h +1 -1
- data/ext/pg_query/include/postgres/pl_unreserved_kwlist.h +1 -1
- data/ext/pg_query/include/postgres/pl_unreserved_kwlist_d.h +1 -1
- data/ext/pg_query/include/postgres/plerrcodes.h +4 -4
- data/ext/pg_query/include/postgres/plpgsql.h +15 -13
- data/ext/pg_query/include/postgres/port/atomics/arch-arm.h +1 -1
- data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +1 -1
- data/ext/pg_query/include/postgres/port/atomics/arch-ppc.h +3 -1
- data/ext/pg_query/include/postgres/port/atomics/arch-x86.h +3 -1
- data/ext/pg_query/include/postgres/port/atomics/fallback.h +1 -1
- data/ext/pg_query/include/postgres/port/atomics/generic-gcc.h +38 -1
- data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +19 -1
- data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +16 -1
- data/ext/pg_query/include/postgres/port/atomics/generic.h +38 -2
- data/ext/pg_query/include/postgres/port/atomics.h +93 -6
- data/ext/pg_query/include/postgres/port/pg_bitutils.h +91 -9
- data/ext/pg_query/include/postgres/port/pg_bswap.h +1 -1
- data/ext/pg_query/include/postgres/port/pg_crc32c.h +10 -1
- data/ext/pg_query/include/postgres/port/pg_iovec.h +117 -0
- data/ext/pg_query/include/postgres/port/simd.h +48 -1
- data/ext/pg_query/include/postgres/port/win32/sys/socket.h +8 -0
- data/ext/pg_query/include/postgres/port/win32_port.h +1 -13
- data/ext/pg_query/include/postgres/port.h +39 -4
- data/ext/pg_query/include/postgres/portability/instr_time.h +1 -1
- data/ext/pg_query/include/postgres/postgres.h +1 -1
- data/ext/pg_query/include/postgres/postmaster/autovacuum.h +5 -16
- data/ext/pg_query/include/postgres/postmaster/bgworker.h +8 -6
- data/ext/pg_query/include/postgres/postmaster/bgworker_internals.h +3 -7
- data/ext/pg_query/include/postgres/postmaster/bgwriter.h +3 -3
- data/ext/pg_query/include/postgres/postmaster/interrupt.h +1 -1
- data/ext/pg_query/include/postgres/postmaster/pgarch.h +2 -2
- data/ext/pg_query/include/postgres/postmaster/postmaster.h +25 -5
- data/ext/pg_query/include/postgres/postmaster/startup.h +2 -2
- data/ext/pg_query/include/postgres/postmaster/syslogger.h +2 -4
- data/ext/pg_query/include/postgres/postmaster/walsummarizer.h +35 -0
- data/ext/pg_query/include/postgres/postmaster/walwriter.h +2 -2
- data/ext/pg_query/include/postgres/regex/regex.h +92 -9
- data/ext/pg_query/include/postgres/replication/logicallauncher.h +1 -1
- data/ext/pg_query/include/postgres/replication/logicalproto.h +2 -2
- data/ext/pg_query/include/postgres/replication/logicalworker.h +2 -1
- data/ext/pg_query/include/postgres/replication/origin.h +1 -1
- data/ext/pg_query/include/postgres/replication/reorderbuffer.h +27 -46
- data/ext/pg_query/include/postgres/replication/slot.h +45 -5
- data/ext/pg_query/include/postgres/replication/slotsync.h +38 -0
- data/ext/pg_query/include/postgres/replication/syncrep.h +1 -1
- data/ext/pg_query/include/postgres/replication/walreceiver.h +37 -11
- data/ext/pg_query/include/postgres/replication/walsender.h +5 -3
- data/ext/pg_query/include/postgres/rewrite/prs2lock.h +1 -1
- data/ext/pg_query/include/postgres/rewrite/rewriteHandler.h +7 -1
- data/ext/pg_query/include/postgres/rewrite/rewriteManip.h +2 -2
- data/ext/pg_query/include/postgres/rewrite/rewriteSupport.h +1 -1
- data/ext/pg_query/include/postgres/storage/block.h +1 -1
- data/ext/pg_query/include/postgres/storage/buf.h +1 -1
- data/ext/pg_query/include/postgres/storage/bufmgr.h +59 -41
- data/ext/pg_query/include/postgres/storage/bufpage.h +1 -1
- data/ext/pg_query/include/postgres/storage/condition_variable.h +1 -1
- data/ext/pg_query/include/postgres/storage/dsm.h +1 -1
- data/ext/pg_query/include/postgres/storage/dsm_impl.h +2 -2
- data/ext/pg_query/include/postgres/storage/fd.h +30 -13
- data/ext/pg_query/include/postgres/storage/fileset.h +1 -1
- data/ext/pg_query/include/postgres/storage/ipc.h +4 -1
- data/ext/pg_query/include/postgres/storage/item.h +1 -1
- data/ext/pg_query/include/postgres/storage/itemid.h +1 -1
- data/ext/pg_query/include/postgres/storage/itemptr.h +1 -1
- data/ext/pg_query/include/postgres/storage/large_object.h +1 -1
- data/ext/pg_query/include/postgres/storage/latch.h +4 -2
- data/ext/pg_query/include/postgres/storage/lmgr.h +8 -2
- data/ext/pg_query/include/postgres/storage/lock.h +19 -19
- data/ext/pg_query/include/postgres/storage/lockdefs.h +3 -1
- data/ext/pg_query/include/postgres/storage/lwlock.h +17 -9
- data/ext/pg_query/include/postgres/storage/lwlocknames.h +7 -10
- data/ext/pg_query/include/postgres/storage/off.h +1 -1
- data/ext/pg_query/include/postgres/storage/pg_sema.h +1 -1
- data/ext/pg_query/include/postgres/storage/pg_shmem.h +5 -4
- data/ext/pg_query/include/postgres/storage/pmsignal.h +2 -2
- data/ext/pg_query/include/postgres/storage/predicate.h +1 -5
- data/ext/pg_query/include/postgres/storage/proc.h +48 -26
- data/ext/pg_query/include/postgres/storage/procarray.h +5 -1
- data/ext/pg_query/include/postgres/storage/proclist_types.h +11 -9
- data/ext/pg_query/include/postgres/storage/procnumber.h +43 -0
- data/ext/pg_query/include/postgres/storage/procsignal.h +8 -6
- data/ext/pg_query/include/postgres/storage/read_stream.h +65 -0
- data/ext/pg_query/include/postgres/storage/relfilelocator.h +16 -15
- data/ext/pg_query/include/postgres/storage/s_lock.h +7 -27
- data/ext/pg_query/include/postgres/storage/sharedfileset.h +1 -1
- data/ext/pg_query/include/postgres/storage/shm_mq.h +2 -2
- data/ext/pg_query/include/postgres/storage/shm_toc.h +1 -1
- data/ext/pg_query/include/postgres/storage/shmem.h +1 -1
- data/ext/pg_query/include/postgres/storage/sinval.h +3 -3
- data/ext/pg_query/include/postgres/storage/smgr.h +46 -29
- data/ext/pg_query/include/postgres/storage/spin.h +1 -1
- data/ext/pg_query/include/postgres/storage/standby.h +13 -3
- data/ext/pg_query/include/postgres/storage/standbydefs.h +2 -2
- data/ext/pg_query/include/postgres/storage/sync.h +4 -4
- data/ext/pg_query/include/postgres/tcop/cmdtag.h +1 -2
- data/ext/pg_query/include/postgres/tcop/cmdtaglist.h +3 -2
- data/ext/pg_query/include/postgres/tcop/deparse_utility.h +2 -2
- data/ext/pg_query/include/postgres/tcop/dest.h +3 -2
- data/ext/pg_query/include/postgres/tcop/fastpath.h +1 -1
- data/ext/pg_query/include/postgres/tcop/pquery.h +1 -1
- data/ext/pg_query/include/postgres/tcop/tcopprot.h +9 -5
- data/ext/pg_query/include/postgres/tcop/utility.h +2 -2
- data/ext/pg_query/include/postgres/tsearch/ts_cache.h +1 -1
- data/ext/pg_query/include/postgres/utils/acl.h +19 -7
- data/ext/pg_query/include/postgres/utils/aclchk_internal.h +1 -1
- data/ext/pg_query/include/postgres/utils/array.h +1 -2
- data/ext/pg_query/include/postgres/utils/ascii.h +84 -0
- data/ext/pg_query/include/postgres/utils/backend_progress.h +3 -2
- data/ext/pg_query/include/postgres/utils/backend_status.h +8 -10
- data/ext/pg_query/include/postgres/utils/builtins.h +4 -1
- data/ext/pg_query/include/postgres/utils/bytea.h +2 -2
- data/ext/pg_query/include/postgres/utils/catcache.h +6 -6
- data/ext/pg_query/include/postgres/utils/date.h +1 -1
- data/ext/pg_query/include/postgres/utils/datetime.h +4 -1
- data/ext/pg_query/include/postgres/utils/datum.h +1 -1
- data/ext/pg_query/include/postgres/utils/dsa.h +44 -5
- data/ext/pg_query/include/postgres/utils/elog.h +3 -8
- data/ext/pg_query/include/postgres/utils/errcodes.h +1 -3
- data/ext/pg_query/include/postgres/utils/expandeddatum.h +1 -1
- data/ext/pg_query/include/postgres/utils/expandedrecord.h +1 -1
- data/ext/pg_query/include/postgres/utils/float.h +1 -1
- data/ext/pg_query/include/postgres/utils/fmgroids.h +49 -16
- data/ext/pg_query/include/postgres/utils/fmgrprotos.h +47 -14
- data/ext/pg_query/include/postgres/utils/fmgrtab.h +1 -1
- data/ext/pg_query/include/postgres/utils/guc.h +20 -6
- data/ext/pg_query/include/postgres/utils/guc_hooks.h +23 -2
- data/ext/pg_query/include/postgres/utils/guc_tables.h +6 -5
- data/ext/pg_query/include/postgres/utils/hsearch.h +2 -2
- data/ext/pg_query/include/postgres/utils/injection_point.h +44 -0
- data/ext/pg_query/include/postgres/utils/inval.h +1 -1
- data/ext/pg_query/include/postgres/utils/logtape.h +5 -5
- data/ext/pg_query/include/postgres/utils/lsyscache.h +6 -3
- data/ext/pg_query/include/postgres/utils/memdebug.h +1 -1
- data/ext/pg_query/include/postgres/utils/memutils.h +12 -5
- data/ext/pg_query/include/postgres/utils/memutils_internal.h +53 -13
- data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +25 -9
- data/ext/pg_query/include/postgres/utils/numeric.h +6 -1
- data/ext/pg_query/include/postgres/utils/palloc.h +1 -15
- data/ext/pg_query/include/postgres/utils/partcache.h +1 -1
- data/ext/pg_query/include/postgres/utils/pg_locale.h +8 -7
- data/ext/pg_query/include/postgres/utils/pgstat_internal.h +30 -17
- data/ext/pg_query/include/postgres/utils/plancache.h +5 -3
- data/ext/pg_query/include/postgres/utils/portal.h +10 -10
- data/ext/pg_query/include/postgres/utils/queryenvironment.h +2 -2
- data/ext/pg_query/include/postgres/utils/regproc.h +1 -1
- data/ext/pg_query/include/postgres/utils/rel.h +14 -15
- data/ext/pg_query/include/postgres/utils/relcache.h +2 -5
- data/ext/pg_query/include/postgres/utils/reltrigger.h +1 -1
- data/ext/pg_query/include/postgres/utils/resowner.h +90 -9
- data/ext/pg_query/include/postgres/utils/ruleutils.h +1 -1
- data/ext/pg_query/include/postgres/utils/sharedtuplestore.h +1 -1
- data/ext/pg_query/include/postgres/utils/snapmgr.h +1 -52
- data/ext/pg_query/include/postgres/utils/snapshot.h +2 -2
- data/ext/pg_query/include/postgres/utils/sortsupport.h +1 -1
- data/ext/pg_query/include/postgres/utils/syscache.h +7 -98
- data/ext/pg_query/include/postgres/utils/timeout.h +3 -2
- data/ext/pg_query/include/postgres/utils/timestamp.h +1 -1
- data/ext/pg_query/include/postgres/utils/tuplesort.h +36 -9
- data/ext/pg_query/include/postgres/utils/tuplestore.h +2 -5
- data/ext/pg_query/include/postgres/utils/typcache.h +2 -1
- data/ext/pg_query/include/postgres/utils/varlena.h +1 -1
- data/ext/pg_query/include/postgres/utils/wait_event.h +28 -214
- data/ext/pg_query/include/postgres/utils/wait_event_types.h +218 -0
- data/ext/pg_query/include/postgres/utils/xml.h +4 -4
- data/ext/pg_query/include/postgres/varatt.h +1 -1
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +1546 -792
- data/ext/pg_query/include/protobuf/pg_query.pb.h +58365 -46595
- data/ext/pg_query/pg_query.pb-c.c +6598 -3739
- data/ext/pg_query/pg_query_normalize.c +42 -1
- data/ext/pg_query/pg_query_outfuncs_json.c +3 -1
- data/ext/pg_query/pg_query_parse_plpgsql.c +12 -13
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +2 -2
- data/ext/pg_query/pg_query_scan.c +1 -1
- data/ext/pg_query/postgres_deparse.c +601 -172
- data/ext/pg_query/src_backend_catalog_namespace.c +241 -66
- data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -3
- data/ext/pg_query/src_backend_commands_define.c +2 -3
- data/ext/pg_query/src_backend_nodes_bitmapset.c +137 -94
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +1 -1
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +1 -1
- data/ext/pg_query/src_backend_nodes_extensible.c +1 -1
- data/ext/pg_query/src_backend_nodes_list.c +3 -7
- data/ext/pg_query/src_backend_nodes_makefuncs.c +59 -20
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +109 -2
- data/ext/pg_query/src_backend_nodes_value.c +1 -1
- data/ext/pg_query/src_backend_parser_gram.c +34491 -32136
- data/ext/pg_query/src_backend_parser_parser.c +8 -8
- data/ext/pg_query/src_backend_parser_scan.c +5637 -3028
- data/ext/pg_query/src_backend_parser_scansup.c +2 -1
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
- data/ext/pg_query/src_backend_tcop_postgres.c +34 -10
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +2 -2
- data/ext/pg_query/src_backend_utils_adt_datum.c +8 -6
- data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_numutils.c +4 -5
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +101 -28
- data/ext/pg_query/src_backend_utils_error_assert.c +1 -1
- data/ext/pg_query/src_backend_utils_error_elog.c +47 -42
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +4 -2
- data/ext/pg_query/src_backend_utils_init_globals.c +15 -3
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +11 -18
- data/ext/pg_query/src_backend_utils_misc_guc_tables.c +16 -6
- data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +8 -5
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +308 -238
- data/ext/pg_query/src_backend_utils_mmgr_bump.c +728 -0
- data/ext/pg_query/src_backend_utils_mmgr_generation.c +273 -197
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +270 -215
- data/ext/pg_query/src_backend_utils_mmgr_slab.c +154 -96
- data/ext/pg_query/src_common_encnames.c +43 -44
- data/ext/pg_query/src_common_hashfn.c +1 -1
- data/ext/pg_query/src_common_keywords.c +1 -1
- data/ext/pg_query/src_common_kwlist_d.h +511 -466
- data/ext/pg_query/src_common_kwlookup.c +1 -1
- data/ext/pg_query/src_common_psprintf.c +3 -3
- data/ext/pg_query/src_common_stringinfo.c +18 -1
- data/ext/pg_query/src_common_wchar.c +92 -109
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +99 -5
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +242 -143
- data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +19 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +1 -1
- data/ext/pg_query/src_port_pg_bitutils.c +173 -28
- data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
- data/ext/pg_query/src_port_snprintf.c +15 -18
- data/ext/pg_query/src_port_strerror.c +1 -3
- data/ext/pg_query/src_port_strlcpy.c +1 -1
- data/lib/pg_query/fingerprint.rb +3 -5
- data/lib/pg_query/param_refs.rb +2 -2
- data/lib/pg_query/parse.rb +5 -7
- data/lib/pg_query/parse_error.rb +1 -0
- data/lib/pg_query/pg_query_pb.rb +27 -25
- data/lib/pg_query/scan.rb +1 -0
- data/lib/pg_query/treewalker.rb +38 -15
- data/lib/pg_query/truncate.rb +18 -20
- data/lib/pg_query/version.rb +1 -1
- metadata +31 -82
- data/ext/pg_query/include/postgres/storage/backendid.h +0 -37
- data/ext/pg_query/include/postgres/storage/sinvaladt.h +0 -45
- data/ext/pg_query/pg_query_ruby_freebsd.sym +0 -2
- data/ext/pg_query/src_backend_nodes_nodes.c +0 -38
- /data/ext/pg_query/{pg_query_ruby.sym → ext_symbols.sym} +0 -0
@@ -3,7 +3,7 @@
|
|
3
3
|
* amapi.h
|
4
4
|
* API for Postgres index access methods.
|
5
5
|
*
|
6
|
-
* Copyright (c) 2015-
|
6
|
+
* Copyright (c) 2015-2024, PostgreSQL Global Development Group
|
7
7
|
*
|
8
8
|
* src/include/access/amapi.h
|
9
9
|
*
|
@@ -51,7 +51,7 @@ typedef enum IndexAMProperty
|
|
51
51
|
AMPROP_CAN_UNIQUE,
|
52
52
|
AMPROP_CAN_MULTI_COL,
|
53
53
|
AMPROP_CAN_EXCLUDE,
|
54
|
-
AMPROP_CAN_INCLUDE
|
54
|
+
AMPROP_CAN_INCLUDE,
|
55
55
|
} IndexAMProperty;
|
56
56
|
|
57
57
|
/*
|
@@ -76,6 +76,10 @@ typedef enum IndexAMProperty
|
|
76
76
|
* opfamily. This allows ALTER OPERATOR FAMILY DROP, and causes that to
|
77
77
|
* happen automatically if the operator or support func is dropped. This
|
78
78
|
* is the right behavior for inessential ("loose") objects.
|
79
|
+
*
|
80
|
+
* We also make dependencies on lefttype/righttype, of the same strength as
|
81
|
+
* the dependency on the operator or support func, unless these dependencies
|
82
|
+
* are redundant with the dependency on the operator or support func.
|
79
83
|
*/
|
80
84
|
typedef struct OpFamilyMember
|
81
85
|
{
|
@@ -113,6 +117,10 @@ typedef bool (*aminsert_function) (Relation indexRelation,
|
|
113
117
|
bool indexUnchanged,
|
114
118
|
struct IndexInfo *indexInfo);
|
115
119
|
|
120
|
+
/* cleanup after insert */
|
121
|
+
typedef void (*aminsertcleanup_function) (Relation indexRelation,
|
122
|
+
struct IndexInfo *indexInfo);
|
123
|
+
|
116
124
|
/* bulk delete */
|
117
125
|
typedef IndexBulkDeleteResult *(*ambulkdelete_function) (IndexVacuumInfo *info,
|
118
126
|
IndexBulkDeleteResult *stats,
|
@@ -191,7 +199,7 @@ typedef void (*amrestrpos_function) (IndexScanDesc scan);
|
|
191
199
|
*/
|
192
200
|
|
193
201
|
/* estimate size of parallel scan descriptor */
|
194
|
-
typedef Size (*amestimateparallelscan_function) (
|
202
|
+
typedef Size (*amestimateparallelscan_function) (int nkeys, int norderbys);
|
195
203
|
|
196
204
|
/* prepare for parallel index scan */
|
197
205
|
typedef void (*aminitparallelscan_function) (void *target);
|
@@ -240,6 +248,8 @@ typedef struct IndexAmRoutine
|
|
240
248
|
bool ampredlocks;
|
241
249
|
/* does AM support parallel scan? */
|
242
250
|
bool amcanparallel;
|
251
|
+
/* does AM support parallel build? */
|
252
|
+
bool amcanbuildparallel;
|
243
253
|
/* does AM support columns included with clause INCLUDE? */
|
244
254
|
bool amcaninclude;
|
245
255
|
/* does AM use maintenance_work_mem? */
|
@@ -261,6 +271,7 @@ typedef struct IndexAmRoutine
|
|
261
271
|
ambuild_function ambuild;
|
262
272
|
ambuildempty_function ambuildempty;
|
263
273
|
aminsert_function aminsert;
|
274
|
+
aminsertcleanup_function aminsertcleanup;
|
264
275
|
ambulkdelete_function ambulkdelete;
|
265
276
|
amvacuumcleanup_function amvacuumcleanup;
|
266
277
|
amcanreturn_function amcanreturn; /* can be NULL */
|
@@ -4,7 +4,7 @@
|
|
4
4
|
* Definitions for PostgreSQL attribute mappings
|
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/access/attmap.h
|
@@ -4,7 +4,7 @@
|
|
4
4
|
* POSTGRES attribute number definitions.
|
5
5
|
*
|
6
6
|
*
|
7
|
-
* Portions Copyright (c) 1996-
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
9
9
|
*
|
10
10
|
* src/include/access/attnum.h
|
@@ -0,0 +1,116 @@
|
|
1
|
+
/*
|
2
|
+
* brin_internal.h
|
3
|
+
* internal declarations for BRIN indexes
|
4
|
+
*
|
5
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
6
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
7
|
+
*
|
8
|
+
* IDENTIFICATION
|
9
|
+
* src/include/access/brin_internal.h
|
10
|
+
*/
|
11
|
+
#ifndef BRIN_INTERNAL_H
|
12
|
+
#define BRIN_INTERNAL_H
|
13
|
+
|
14
|
+
#include "access/amapi.h"
|
15
|
+
#include "storage/bufpage.h"
|
16
|
+
#include "utils/typcache.h"
|
17
|
+
|
18
|
+
|
19
|
+
/*
|
20
|
+
* A BrinDesc is a struct designed to enable decoding a BRIN tuple from the
|
21
|
+
* on-disk format to an in-memory tuple and vice-versa.
|
22
|
+
*/
|
23
|
+
|
24
|
+
/* struct returned by "OpcInfo" amproc */
|
25
|
+
typedef struct BrinOpcInfo
|
26
|
+
{
|
27
|
+
/* Number of columns stored in an index column of this opclass */
|
28
|
+
uint16 oi_nstored;
|
29
|
+
|
30
|
+
/* Regular processing of NULLs in BrinValues? */
|
31
|
+
bool oi_regular_nulls;
|
32
|
+
|
33
|
+
/* Opaque pointer for the opclass' private use */
|
34
|
+
void *oi_opaque;
|
35
|
+
|
36
|
+
/* Type cache entries of the stored columns */
|
37
|
+
TypeCacheEntry *oi_typcache[FLEXIBLE_ARRAY_MEMBER];
|
38
|
+
} BrinOpcInfo;
|
39
|
+
|
40
|
+
/* the size of a BrinOpcInfo for the given number of columns */
|
41
|
+
#define SizeofBrinOpcInfo(ncols) \
|
42
|
+
(offsetof(BrinOpcInfo, oi_typcache) + sizeof(TypeCacheEntry *) * ncols)
|
43
|
+
|
44
|
+
typedef struct BrinDesc
|
45
|
+
{
|
46
|
+
/* Containing memory context */
|
47
|
+
MemoryContext bd_context;
|
48
|
+
|
49
|
+
/* the index relation itself */
|
50
|
+
Relation bd_index;
|
51
|
+
|
52
|
+
/* tuple descriptor of the index relation */
|
53
|
+
TupleDesc bd_tupdesc;
|
54
|
+
|
55
|
+
/* cached copy for on-disk tuples; generated at first use */
|
56
|
+
TupleDesc bd_disktdesc;
|
57
|
+
|
58
|
+
/* total number of Datum entries that are stored on-disk for all columns */
|
59
|
+
int bd_totalstored;
|
60
|
+
|
61
|
+
/* per-column info; bd_tupdesc->natts entries long */
|
62
|
+
BrinOpcInfo *bd_info[FLEXIBLE_ARRAY_MEMBER];
|
63
|
+
} BrinDesc;
|
64
|
+
|
65
|
+
/*
|
66
|
+
* Globally-known function support numbers for BRIN indexes. Individual
|
67
|
+
* opclasses can define more function support numbers, which must fall into
|
68
|
+
* BRIN_FIRST_OPTIONAL_PROCNUM .. BRIN_LAST_OPTIONAL_PROCNUM.
|
69
|
+
*/
|
70
|
+
#define BRIN_PROCNUM_OPCINFO 1
|
71
|
+
#define BRIN_PROCNUM_ADDVALUE 2
|
72
|
+
#define BRIN_PROCNUM_CONSISTENT 3
|
73
|
+
#define BRIN_PROCNUM_UNION 4
|
74
|
+
#define BRIN_MANDATORY_NPROCS 4
|
75
|
+
#define BRIN_PROCNUM_OPTIONS 5 /* optional */
|
76
|
+
/* procedure numbers up to 10 are reserved for BRIN future expansion */
|
77
|
+
#define BRIN_FIRST_OPTIONAL_PROCNUM 11
|
78
|
+
#define BRIN_LAST_OPTIONAL_PROCNUM 15
|
79
|
+
|
80
|
+
#undef BRIN_DEBUG
|
81
|
+
|
82
|
+
#ifdef BRIN_DEBUG
|
83
|
+
#define BRIN_elog(args) elog args
|
84
|
+
#else
|
85
|
+
#define BRIN_elog(args) ((void) 0)
|
86
|
+
#endif
|
87
|
+
|
88
|
+
/* brin.c */
|
89
|
+
extern BrinDesc *brin_build_desc(Relation rel);
|
90
|
+
extern void brin_free_desc(BrinDesc *bdesc);
|
91
|
+
extern IndexBuildResult *brinbuild(Relation heap, Relation index,
|
92
|
+
struct IndexInfo *indexInfo);
|
93
|
+
extern void brinbuildempty(Relation index);
|
94
|
+
extern bool brininsert(Relation idxRel, Datum *values, bool *nulls,
|
95
|
+
ItemPointer heaptid, Relation heapRel,
|
96
|
+
IndexUniqueCheck checkUnique,
|
97
|
+
bool indexUnchanged,
|
98
|
+
struct IndexInfo *indexInfo);
|
99
|
+
extern void brininsertcleanup(Relation index, struct IndexInfo *indexInfo);
|
100
|
+
extern IndexScanDesc brinbeginscan(Relation r, int nkeys, int norderbys);
|
101
|
+
extern int64 bringetbitmap(IndexScanDesc scan, TIDBitmap *tbm);
|
102
|
+
extern void brinrescan(IndexScanDesc scan, ScanKey scankey, int nscankeys,
|
103
|
+
ScanKey orderbys, int norderbys);
|
104
|
+
extern void brinendscan(IndexScanDesc scan);
|
105
|
+
extern IndexBulkDeleteResult *brinbulkdelete(IndexVacuumInfo *info,
|
106
|
+
IndexBulkDeleteResult *stats,
|
107
|
+
IndexBulkDeleteCallback callback,
|
108
|
+
void *callback_state);
|
109
|
+
extern IndexBulkDeleteResult *brinvacuumcleanup(IndexVacuumInfo *info,
|
110
|
+
IndexBulkDeleteResult *stats);
|
111
|
+
extern bytea *brinoptions(Datum reloptions, bool validate);
|
112
|
+
|
113
|
+
/* brin_validate.c */
|
114
|
+
extern bool brinvalidate(Oid opclassoid);
|
115
|
+
|
116
|
+
#endif /* BRIN_INTERNAL_H */
|
@@ -0,0 +1,112 @@
|
|
1
|
+
/*
|
2
|
+
* brin_tuple.h
|
3
|
+
* Declarations for dealing with BRIN-specific tuples.
|
4
|
+
*
|
5
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
6
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
7
|
+
*
|
8
|
+
* IDENTIFICATION
|
9
|
+
* src/include/access/brin_tuple.h
|
10
|
+
*/
|
11
|
+
#ifndef BRIN_TUPLE_H
|
12
|
+
#define BRIN_TUPLE_H
|
13
|
+
|
14
|
+
#include "access/brin_internal.h"
|
15
|
+
#include "access/tupdesc.h"
|
16
|
+
|
17
|
+
/*
|
18
|
+
* The BRIN opclasses may register serialization callback, in case the on-disk
|
19
|
+
* and in-memory representations differ (e.g. for performance reasons).
|
20
|
+
*/
|
21
|
+
typedef void (*brin_serialize_callback_type) (BrinDesc *bdesc, Datum src, Datum *dst);
|
22
|
+
|
23
|
+
/*
|
24
|
+
* A BRIN index stores one index tuple per page range. Each index tuple
|
25
|
+
* has one BrinValues struct for each indexed column; in turn, each BrinValues
|
26
|
+
* has (besides the null flags) an array of Datum whose size is determined by
|
27
|
+
* the opclass.
|
28
|
+
*/
|
29
|
+
typedef struct BrinValues
|
30
|
+
{
|
31
|
+
AttrNumber bv_attno; /* index attribute number */
|
32
|
+
bool bv_hasnulls; /* are there any nulls in the page range? */
|
33
|
+
bool bv_allnulls; /* are all values nulls in the page range? */
|
34
|
+
Datum *bv_values; /* current accumulated values */
|
35
|
+
Datum bv_mem_value; /* expanded accumulated values */
|
36
|
+
MemoryContext bv_context;
|
37
|
+
brin_serialize_callback_type bv_serialize;
|
38
|
+
} BrinValues;
|
39
|
+
|
40
|
+
/*
|
41
|
+
* This struct is used to represent an in-memory index tuple. The values can
|
42
|
+
* only be meaningfully decoded with an appropriate BrinDesc.
|
43
|
+
*/
|
44
|
+
typedef struct BrinMemTuple
|
45
|
+
{
|
46
|
+
bool bt_placeholder; /* this is a placeholder tuple */
|
47
|
+
bool bt_empty_range; /* range represents no tuples */
|
48
|
+
BlockNumber bt_blkno; /* heap blkno that the tuple is for */
|
49
|
+
MemoryContext bt_context; /* memcxt holding the bt_columns values */
|
50
|
+
/* output arrays for brin_deform_tuple: */
|
51
|
+
Datum *bt_values; /* values array */
|
52
|
+
bool *bt_allnulls; /* allnulls array */
|
53
|
+
bool *bt_hasnulls; /* hasnulls array */
|
54
|
+
/* not an output array, but must be last */
|
55
|
+
BrinValues bt_columns[FLEXIBLE_ARRAY_MEMBER];
|
56
|
+
} BrinMemTuple;
|
57
|
+
|
58
|
+
/*
|
59
|
+
* An on-disk BRIN tuple. This is possibly followed by a nulls bitmask, with
|
60
|
+
* room for 2 null bits (two bits for each indexed column); an opclass-defined
|
61
|
+
* number of Datum values for each column follow.
|
62
|
+
*/
|
63
|
+
typedef struct BrinTuple
|
64
|
+
{
|
65
|
+
/* heap block number that the tuple is for */
|
66
|
+
BlockNumber bt_blkno;
|
67
|
+
|
68
|
+
/* ---------------
|
69
|
+
* bt_info is laid out in the following fashion:
|
70
|
+
*
|
71
|
+
* 7th (high) bit: has nulls
|
72
|
+
* 6th bit: is placeholder tuple
|
73
|
+
* 5th bit: range is empty
|
74
|
+
* 4-0 bit: offset of data
|
75
|
+
* ---------------
|
76
|
+
*/
|
77
|
+
uint8 bt_info;
|
78
|
+
} BrinTuple;
|
79
|
+
|
80
|
+
#define SizeOfBrinTuple (offsetof(BrinTuple, bt_info) + sizeof(uint8))
|
81
|
+
|
82
|
+
/*
|
83
|
+
* bt_info manipulation macros
|
84
|
+
*/
|
85
|
+
#define BRIN_OFFSET_MASK 0x1F
|
86
|
+
#define BRIN_EMPTY_RANGE_MASK 0x20
|
87
|
+
#define BRIN_PLACEHOLDER_MASK 0x40
|
88
|
+
#define BRIN_NULLS_MASK 0x80
|
89
|
+
|
90
|
+
#define BrinTupleDataOffset(tup) ((Size) (((BrinTuple *) (tup))->bt_info & BRIN_OFFSET_MASK))
|
91
|
+
#define BrinTupleHasNulls(tup) (((((BrinTuple *) (tup))->bt_info & BRIN_NULLS_MASK)) != 0)
|
92
|
+
#define BrinTupleIsPlaceholder(tup) (((((BrinTuple *) (tup))->bt_info & BRIN_PLACEHOLDER_MASK)) != 0)
|
93
|
+
#define BrinTupleIsEmptyRange(tup) (((((BrinTuple *) (tup))->bt_info & BRIN_EMPTY_RANGE_MASK)) != 0)
|
94
|
+
|
95
|
+
|
96
|
+
extern BrinTuple *brin_form_tuple(BrinDesc *brdesc, BlockNumber blkno,
|
97
|
+
BrinMemTuple *tuple, Size *size);
|
98
|
+
extern BrinTuple *brin_form_placeholder_tuple(BrinDesc *brdesc,
|
99
|
+
BlockNumber blkno, Size *size);
|
100
|
+
extern void brin_free_tuple(BrinTuple *tuple);
|
101
|
+
extern BrinTuple *brin_copy_tuple(BrinTuple *tuple, Size len,
|
102
|
+
BrinTuple *dest, Size *destsz);
|
103
|
+
extern bool brin_tuples_equal(const BrinTuple *a, Size alen,
|
104
|
+
const BrinTuple *b, Size blen);
|
105
|
+
|
106
|
+
extern BrinMemTuple *brin_new_memtuple(BrinDesc *brdesc);
|
107
|
+
extern BrinMemTuple *brin_memtuple_initialize(BrinMemTuple *dtuple,
|
108
|
+
BrinDesc *brdesc);
|
109
|
+
extern BrinMemTuple *brin_deform_tuple(BrinDesc *brdesc,
|
110
|
+
BrinTuple *tuple, BrinMemTuple *dMemtuple);
|
111
|
+
|
112
|
+
#endif /* BRIN_TUPLE_H */
|
@@ -3,7 +3,7 @@
|
|
3
3
|
*
|
4
4
|
* PostgreSQL transaction-commit-log 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/access/clog.h
|
@@ -31,7 +31,7 @@ typedef int XidStatus;
|
|
31
31
|
|
32
32
|
typedef struct xl_clog_truncate
|
33
33
|
{
|
34
|
-
|
34
|
+
int64 pageno;
|
35
35
|
TransactionId oldestXact;
|
36
36
|
Oid oldestXactDb;
|
37
37
|
} xl_clog_truncate;
|
@@ -40,7 +40,6 @@ extern void TransactionIdSetTreeStatus(TransactionId xid, int nsubxids,
|
|
40
40
|
TransactionId *subxids, XidStatus status, XLogRecPtr lsn);
|
41
41
|
extern XidStatus TransactionIdGetStatus(TransactionId xid, XLogRecPtr *lsn);
|
42
42
|
|
43
|
-
extern Size CLOGShmemBuffers(void);
|
44
43
|
extern Size CLOGShmemSize(void);
|
45
44
|
extern void CLOGShmemInit(void);
|
46
45
|
extern void BootStrapCLOG(void);
|
@@ -3,7 +3,7 @@
|
|
3
3
|
*
|
4
4
|
* PostgreSQL commit timestamp 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/access/commit_ts.h
|
@@ -27,7 +27,6 @@ extern bool TransactionIdGetCommitTsData(TransactionId xid,
|
|
27
27
|
extern TransactionId GetLatestCommitTsData(TimestampTz *ts,
|
28
28
|
RepOriginId *nodeid);
|
29
29
|
|
30
|
-
extern Size CommitTsShmemBuffers(void);
|
31
30
|
extern Size CommitTsShmemSize(void);
|
32
31
|
extern void CommitTsShmemInit(void);
|
33
32
|
extern void BootStrapCommitTs(void);
|
@@ -60,7 +59,7 @@ typedef struct xl_commit_ts_set
|
|
60
59
|
|
61
60
|
typedef struct xl_commit_ts_truncate
|
62
61
|
{
|
63
|
-
|
62
|
+
int64 pageno;
|
64
63
|
TransactionId oldestXid;
|
65
64
|
} xl_commit_ts_truncate;
|
66
65
|
|
@@ -4,7 +4,7 @@
|
|
4
4
|
* POSTGRES generalized index access method definitions.
|
5
5
|
*
|
6
6
|
*
|
7
|
-
* Portions Copyright (c) 1996-
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
9
9
|
*
|
10
10
|
* src/include/access/genam.h
|
@@ -117,7 +117,7 @@ typedef enum IndexUniqueCheck
|
|
117
117
|
UNIQUE_CHECK_NO, /* Don't do any uniqueness checking */
|
118
118
|
UNIQUE_CHECK_YES, /* Enforce uniqueness at insertion time */
|
119
119
|
UNIQUE_CHECK_PARTIAL, /* Test uniqueness, but no error */
|
120
|
-
UNIQUE_CHECK_EXISTING /* Check if existing tuple is unique */
|
120
|
+
UNIQUE_CHECK_EXISTING, /* Check if existing tuple is unique */
|
121
121
|
} IndexUniqueCheck;
|
122
122
|
|
123
123
|
|
@@ -139,6 +139,7 @@ typedef struct IndexOrderByDistance
|
|
139
139
|
#define IndexScanIsValid(scan) PointerIsValid(scan)
|
140
140
|
|
141
141
|
extern Relation index_open(Oid relationId, LOCKMODE lockmode);
|
142
|
+
extern Relation try_index_open(Oid relationId, LOCKMODE lockmode);
|
142
143
|
extern void index_close(Relation relation, LOCKMODE lockmode);
|
143
144
|
|
144
145
|
extern bool index_insert(Relation indexRelation,
|
@@ -148,6 +149,8 @@ extern bool index_insert(Relation indexRelation,
|
|
148
149
|
IndexUniqueCheck checkUnique,
|
149
150
|
bool indexUnchanged,
|
150
151
|
struct IndexInfo *indexInfo);
|
152
|
+
extern void index_insert_cleanup(Relation indexRelation,
|
153
|
+
struct IndexInfo *indexInfo);
|
151
154
|
|
152
155
|
extern IndexScanDesc index_beginscan(Relation heapRelation,
|
153
156
|
Relation indexRelation,
|
@@ -162,7 +165,8 @@ extern void index_rescan(IndexScanDesc scan,
|
|
162
165
|
extern void index_endscan(IndexScanDesc scan);
|
163
166
|
extern void index_markpos(IndexScanDesc scan);
|
164
167
|
extern void index_restrpos(IndexScanDesc scan);
|
165
|
-
extern Size index_parallelscan_estimate(Relation indexRelation,
|
168
|
+
extern Size index_parallelscan_estimate(Relation indexRelation,
|
169
|
+
int nkeys, int norderbys, Snapshot snapshot);
|
166
170
|
extern void index_parallelscan_initialize(Relation heapRelation,
|
167
171
|
Relation indexRelation, Snapshot snapshot,
|
168
172
|
ParallelIndexScanDesc target);
|
@@ -204,7 +208,7 @@ extern IndexScanDesc RelationGetIndexScan(Relation indexRelation,
|
|
204
208
|
int nkeys, int norderbys);
|
205
209
|
extern void IndexScanEnd(IndexScanDesc scan);
|
206
210
|
extern char *BuildIndexValueDescription(Relation indexRelation,
|
207
|
-
Datum *values, bool *isnull);
|
211
|
+
const Datum *values, const bool *isnull);
|
208
212
|
extern TransactionId index_compute_xid_horizon_for_tuples(Relation irel,
|
209
213
|
Relation hrel,
|
210
214
|
Buffer ibuf,
|
@@ -229,5 +233,14 @@ extern SysScanDesc systable_beginscan_ordered(Relation heapRelation,
|
|
229
233
|
extern HeapTuple systable_getnext_ordered(SysScanDesc sysscan,
|
230
234
|
ScanDirection direction);
|
231
235
|
extern void systable_endscan_ordered(SysScanDesc sysscan);
|
236
|
+
extern void systable_inplace_update_begin(Relation relation,
|
237
|
+
Oid indexId,
|
238
|
+
bool indexOK,
|
239
|
+
Snapshot snapshot,
|
240
|
+
int nkeys, const ScanKeyData *key,
|
241
|
+
HeapTuple *oldtupcopy,
|
242
|
+
void **state);
|
243
|
+
extern void systable_inplace_update_finish(void *state, HeapTuple tuple);
|
244
|
+
extern void systable_inplace_update_cancel(void *state);
|
232
245
|
|
233
246
|
#endif /* GENAM_H */
|
@@ -2,7 +2,7 @@
|
|
2
2
|
* gin.h
|
3
3
|
* Public header file for Generalized Inverted Index access method.
|
4
4
|
*
|
5
|
-
* Copyright (c) 2006-
|
5
|
+
* Copyright (c) 2006-2024, PostgreSQL Global Development Group
|
6
6
|
*
|
7
7
|
* src/include/access/gin.h
|
8
8
|
*--------------------------------------------------------------------------
|
@@ -4,7 +4,7 @@
|
|
4
4
|
* POSTGRES heap tuple definitions.
|
5
5
|
*
|
6
6
|
*
|
7
|
-
* Portions Copyright (c) 1996-
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
9
9
|
*
|
10
10
|
* src/include/access/htup.h
|
@@ -4,7 +4,7 @@
|
|
4
4
|
* POSTGRES heap tuple header definitions.
|
5
5
|
*
|
6
6
|
*
|
7
|
-
* Portions Copyright (c) 1996-
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
9
9
|
*
|
10
10
|
* src/include/access/htup_details.h
|
@@ -696,9 +696,9 @@ struct MinimalTupleData
|
|
696
696
|
|
697
697
|
/* prototypes for functions in common/heaptuple.c */
|
698
698
|
extern Size heap_compute_data_size(TupleDesc tupleDesc,
|
699
|
-
Datum *values, bool *isnull);
|
699
|
+
const Datum *values, const bool *isnull);
|
700
700
|
extern void heap_fill_tuple(TupleDesc tupleDesc,
|
701
|
-
Datum *values, bool *isnull,
|
701
|
+
const Datum *values, const bool *isnull,
|
702
702
|
char *data, Size data_size,
|
703
703
|
uint16 *infomask, bits8 *bit);
|
704
704
|
extern bool heap_attisnull(HeapTuple tup, int attnum, TupleDesc tupleDesc);
|
@@ -712,23 +712,23 @@ extern HeapTuple heap_copytuple(HeapTuple tuple);
|
|
712
712
|
extern void heap_copytuple_with_tuple(HeapTuple src, HeapTuple dest);
|
713
713
|
extern Datum heap_copy_tuple_as_datum(HeapTuple tuple, TupleDesc tupleDesc);
|
714
714
|
extern HeapTuple heap_form_tuple(TupleDesc tupleDescriptor,
|
715
|
-
Datum *values, bool *isnull);
|
715
|
+
const Datum *values, const bool *isnull);
|
716
716
|
extern HeapTuple heap_modify_tuple(HeapTuple tuple,
|
717
717
|
TupleDesc tupleDesc,
|
718
|
-
Datum *replValues,
|
719
|
-
bool *replIsnull,
|
720
|
-
bool *doReplace);
|
718
|
+
const Datum *replValues,
|
719
|
+
const bool *replIsnull,
|
720
|
+
const bool *doReplace);
|
721
721
|
extern HeapTuple heap_modify_tuple_by_cols(HeapTuple tuple,
|
722
722
|
TupleDesc tupleDesc,
|
723
723
|
int nCols,
|
724
|
-
int *replCols,
|
725
|
-
Datum *replValues,
|
726
|
-
bool *replIsnull);
|
724
|
+
const int *replCols,
|
725
|
+
const Datum *replValues,
|
726
|
+
const bool *replIsnull);
|
727
727
|
extern void heap_deform_tuple(HeapTuple tuple, TupleDesc tupleDesc,
|
728
728
|
Datum *values, bool *isnull);
|
729
729
|
extern void heap_freetuple(HeapTuple htup);
|
730
730
|
extern MinimalTuple heap_form_minimal_tuple(TupleDesc tupleDescriptor,
|
731
|
-
Datum *values, bool *isnull);
|
731
|
+
const Datum *values, const bool *isnull);
|
732
732
|
extern void heap_free_minimal_tuple(MinimalTuple mtup);
|
733
733
|
extern MinimalTuple heap_copy_minimal_tuple(MinimalTuple mtup);
|
734
734
|
extern HeapTuple heap_tuple_from_minimal_tuple(MinimalTuple mtup);
|
@@ -4,7 +4,7 @@
|
|
4
4
|
* POSTGRES index tuple definitions.
|
5
5
|
*
|
6
6
|
*
|
7
|
-
* Portions Copyright (c) 1996-
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
9
9
|
*
|
10
10
|
* src/include/access/itup.h
|
@@ -75,9 +75,9 @@ typedef IndexAttributeBitMapData * IndexAttributeBitMap;
|
|
75
75
|
|
76
76
|
/* routines in indextuple.c */
|
77
77
|
extern IndexTuple index_form_tuple(TupleDesc tupleDescriptor,
|
78
|
-
Datum *values, bool *isnull);
|
78
|
+
const Datum *values, const bool *isnull);
|
79
79
|
extern IndexTuple index_form_tuple_context(TupleDesc tupleDescriptor,
|
80
|
-
Datum *values, bool *isnull,
|
80
|
+
const Datum *values, const bool *isnull,
|
81
81
|
MemoryContext context);
|
82
82
|
extern Datum nocache_index_getattr(IndexTuple tup, int attnum,
|
83
83
|
TupleDesc tupleDesc);
|
@@ -3,7 +3,7 @@
|
|
3
3
|
* parallel.h
|
4
4
|
* Infrastructure for launching parallel workers
|
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/access/parallel.h
|
@@ -26,7 +26,6 @@ typedef struct ParallelWorkerInfo
|
|
26
26
|
{
|
27
27
|
BackgroundWorkerHandle *bgwhandle;
|
28
28
|
shm_mq_handle *error_mqh;
|
29
|
-
int32 pid;
|
30
29
|
} ParallelWorkerInfo;
|
31
30
|
|
32
31
|
typedef struct ParallelContext
|
@@ -4,7 +4,7 @@
|
|
4
4
|
*
|
5
5
|
*
|
6
6
|
*
|
7
|
-
* Portions Copyright (c) 1996-
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
9
9
|
*
|
10
10
|
* src/include/access/printtup.h
|
@@ -4,7 +4,7 @@
|
|
4
4
|
* Generic relation related routines.
|
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/access/relation.h
|
@@ -4,7 +4,7 @@
|
|
4
4
|
* POSTGRES relation scan descriptor definitions.
|
5
5
|
*
|
6
6
|
*
|
7
|
-
* Portions Copyright (c) 1996-
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
9
9
|
*
|
10
10
|
* src/include/access/relscan.h
|
@@ -6,7 +6,7 @@
|
|
6
6
|
* by the PG_RMGR macro, which is not defined in this file; it can be
|
7
7
|
* defined by the caller for special purposes.
|
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/access/rmgrlist.h
|
@@ -4,7 +4,7 @@
|
|
4
4
|
* POSTGRES scan direction definitions.
|
5
5
|
*
|
6
6
|
*
|
7
|
-
* Portions Copyright (c) 1996-
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
9
9
|
*
|
10
10
|
* src/include/access/sdir.h
|
@@ -4,7 +4,7 @@
|
|
4
4
|
* POSTGRES scan key definitions.
|
5
5
|
*
|
6
6
|
*
|
7
|
-
* Portions Copyright (c) 1996-
|
7
|
+
* Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
9
9
|
*
|
10
10
|
* src/include/access/skey.h
|