pg_query 2.1.0 → 4.2.1
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 +104 -0
- data/README.md +59 -31
- data/Rakefile +2 -2
- data/ext/pg_query/extconf.rb +8 -2
- data/ext/pg_query/include/access/amapi.h +45 -1
- data/ext/pg_query/include/access/attmap.h +1 -1
- data/ext/pg_query/include/access/attnum.h +2 -2
- data/ext/pg_query/include/access/clog.h +4 -2
- data/ext/pg_query/include/access/commit_ts.h +6 -9
- data/ext/pg_query/include/access/detoast.h +1 -11
- data/ext/pg_query/include/access/genam.h +15 -12
- data/ext/pg_query/include/access/gin.h +2 -2
- data/ext/pg_query/include/access/htup.h +1 -1
- data/ext/pg_query/include/access/htup_details.h +75 -87
- data/ext/pg_query/include/access/itup.h +7 -1
- data/ext/pg_query/include/access/parallel.h +2 -2
- data/ext/pg_query/include/access/printtup.h +1 -1
- data/ext/pg_query/include/access/relation.h +1 -1
- data/ext/pg_query/include/access/relscan.h +17 -2
- data/ext/pg_query/include/access/rmgr.h +30 -3
- data/ext/pg_query/include/access/rmgrlist.h +23 -23
- data/ext/pg_query/include/access/sdir.h +1 -1
- data/ext/pg_query/include/access/skey.h +1 -1
- data/ext/pg_query/include/access/stratnum.h +4 -2
- data/ext/pg_query/include/access/sysattr.h +1 -1
- data/ext/pg_query/include/access/table.h +2 -1
- data/ext/pg_query/include/access/tableam.h +272 -20
- data/ext/pg_query/include/access/toast_compression.h +73 -0
- data/ext/pg_query/include/access/transam.h +123 -13
- data/ext/pg_query/include/access/tupconvert.h +1 -1
- data/ext/pg_query/include/access/tupdesc.h +1 -1
- data/ext/pg_query/include/access/tupmacs.h +3 -3
- data/ext/pg_query/include/access/twophase.h +5 -1
- data/ext/pg_query/include/access/xact.h +79 -19
- data/ext/pg_query/include/access/xlog.h +60 -155
- data/ext/pg_query/include/access/xlog_internal.h +50 -14
- data/ext/pg_query/include/access/xlogdefs.h +8 -16
- data/ext/pg_query/include/access/xlogprefetcher.h +55 -0
- data/ext/pg_query/include/access/xlogreader.h +148 -32
- data/ext/pg_query/include/access/xlogrecord.h +18 -9
- data/ext/pg_query/include/access/xlogrecovery.h +157 -0
- data/ext/pg_query/include/c.h +101 -44
- data/ext/pg_query/include/catalog/catalog.h +3 -1
- data/ext/pg_query/include/catalog/catversion.h +2 -2
- data/ext/pg_query/include/catalog/dependency.h +10 -16
- data/ext/pg_query/include/catalog/genbki.h +83 -5
- data/ext/pg_query/include/catalog/index.h +18 -3
- data/ext/pg_query/include/catalog/indexing.h +12 -324
- data/ext/pg_query/include/catalog/namespace.h +4 -2
- data/ext/pg_query/include/catalog/objectaccess.h +70 -2
- data/ext/pg_query/include/catalog/objectaddress.h +11 -6
- data/ext/pg_query/include/catalog/pg_aggregate.h +14 -10
- data/ext/pg_query/include/catalog/pg_aggregate_d.h +2 -1
- data/ext/pg_query/include/catalog/pg_am.h +4 -1
- data/ext/pg_query/include/catalog/pg_am_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_attribute.h +27 -10
- data/ext/pg_query/include/catalog/pg_attribute_d.h +21 -18
- data/ext/pg_query/include/catalog/pg_authid.h +7 -2
- data/ext/pg_query/include/catalog/pg_authid_d.h +17 -9
- data/ext/pg_query/include/catalog/pg_class.h +45 -15
- data/ext/pg_query/include/catalog/pg_class_d.h +31 -2
- data/ext/pg_query/include/catalog/pg_collation.h +33 -8
- data/ext/pg_query/include/catalog/pg_collation_d.h +20 -3
- data/ext/pg_query/include/catalog/pg_constraint.h +38 -12
- data/ext/pg_query/include/catalog/pg_constraint_d.h +10 -4
- data/ext/pg_query/include/catalog/pg_control.h +5 -5
- data/ext/pg_query/include/catalog/pg_conversion.h +7 -4
- data/ext/pg_query/include/catalog/pg_conversion_d.h +4 -1
- data/ext/pg_query/include/catalog/pg_depend.h +11 -7
- data/ext/pg_query/include/catalog/pg_depend_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_event_trigger.h +9 -3
- data/ext/pg_query/include/catalog/pg_event_trigger_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_index.h +17 -7
- data/ext/pg_query/include/catalog/pg_index_d.h +20 -17
- data/ext/pg_query/include/catalog/pg_language.h +10 -5
- data/ext/pg_query/include/catalog/pg_language_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_namespace.h +7 -2
- data/ext/pg_query/include/catalog/pg_namespace_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_opclass.h +8 -5
- data/ext/pg_query/include/catalog/pg_opclass_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_operator.h +21 -16
- data/ext/pg_query/include/catalog/pg_operator_d.h +37 -1
- data/ext/pg_query/include/catalog/pg_opfamily.h +6 -3
- data/ext/pg_query/include/catalog/pg_opfamily_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_parameter_acl.h +60 -0
- data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +34 -0
- data/ext/pg_query/include/catalog/pg_partitioned_table.h +20 -9
- data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +2 -1
- data/ext/pg_query/include/catalog/pg_proc.h +20 -11
- data/ext/pg_query/include/catalog/pg_proc_d.h +10 -8
- data/ext/pg_query/include/catalog/pg_publication.h +50 -4
- data/ext/pg_query/include/catalog/pg_publication_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_replication_origin.h +6 -1
- data/ext/pg_query/include/catalog/pg_replication_origin_d.h +5 -1
- data/ext/pg_query/include/catalog/pg_statistic.h +19 -12
- data/ext/pg_query/include/catalog/pg_statistic_d.h +2 -1
- data/ext/pg_query/include/catalog/pg_statistic_ext.h +19 -5
- data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +7 -2
- data/ext/pg_query/include/catalog/pg_transform.h +8 -5
- data/ext/pg_query/include/catalog/pg_transform_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_trigger.h +24 -8
- data/ext/pg_query/include/catalog/pg_trigger_d.h +4 -1
- data/ext/pg_query/include/catalog/pg_ts_config.h +6 -3
- data/ext/pg_query/include/catalog/pg_ts_config_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_ts_dict.h +8 -3
- data/ext/pg_query/include/catalog/pg_ts_dict_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_ts_parser.h +6 -3
- data/ext/pg_query/include/catalog/pg_ts_parser_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_ts_template.h +6 -3
- data/ext/pg_query/include/catalog/pg_ts_template_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_type.h +56 -24
- data/ext/pg_query/include/catalog/pg_type_d.h +70 -31
- data/ext/pg_query/include/catalog/storage.h +5 -3
- data/ext/pg_query/include/commands/async.h +4 -5
- data/ext/pg_query/include/commands/dbcommands.h +2 -1
- data/ext/pg_query/include/commands/defrem.h +11 -24
- data/ext/pg_query/include/commands/event_trigger.h +2 -2
- data/ext/pg_query/include/commands/explain.h +1 -1
- data/ext/pg_query/include/commands/prepare.h +1 -1
- data/ext/pg_query/include/commands/tablespace.h +3 -1
- data/ext/pg_query/include/commands/trigger.h +27 -17
- data/ext/pg_query/include/commands/user.h +2 -2
- data/ext/pg_query/include/commands/vacuum.h +88 -41
- data/ext/pg_query/include/commands/variable.h +1 -1
- data/ext/pg_query/include/common/file_perm.h +4 -4
- data/ext/pg_query/include/common/hashfn.h +1 -1
- data/ext/pg_query/include/common/ip.h +1 -7
- data/ext/pg_query/include/common/keywords.h +2 -6
- data/ext/pg_query/include/common/kwlookup.h +1 -1
- data/ext/pg_query/include/common/pg_prng.h +60 -0
- data/ext/pg_query/include/common/relpath.h +2 -2
- data/ext/pg_query/include/common/string.h +24 -1
- data/ext/pg_query/include/common/unicode_combining_table.h +114 -2
- data/ext/pg_query/include/common/unicode_east_asian_fw_table.h +125 -0
- data/ext/pg_query/include/datatype/timestamp.h +40 -1
- data/ext/pg_query/include/executor/execdesc.h +1 -1
- data/ext/pg_query/include/executor/executor.h +65 -22
- data/ext/pg_query/include/executor/functions.h +17 -3
- data/ext/pg_query/include/executor/instrument.h +33 -16
- data/ext/pg_query/include/executor/spi.h +41 -3
- data/ext/pg_query/include/executor/tablefunc.h +1 -1
- data/ext/pg_query/include/executor/tuptable.h +1 -1
- data/ext/pg_query/include/fmgr.h +13 -7
- data/ext/pg_query/include/funcapi.h +16 -4
- data/ext/pg_query/include/getaddrinfo.h +1 -1
- data/ext/pg_query/include/jit/jit.h +11 -11
- data/ext/pg_query/include/kwlist_d.h +517 -494
- data/ext/pg_query/include/lib/dshash.h +112 -0
- data/ext/pg_query/include/lib/ilist.h +20 -1
- data/ext/pg_query/include/lib/pairingheap.h +1 -1
- data/ext/pg_query/include/lib/simplehash.h +150 -25
- data/ext/pg_query/include/lib/sort_template.h +432 -0
- data/ext/pg_query/include/lib/stringinfo.h +1 -1
- data/ext/pg_query/include/libpq/auth.h +6 -4
- data/ext/pg_query/include/libpq/crypt.h +5 -4
- data/ext/pg_query/include/libpq/hba.h +43 -4
- data/ext/pg_query/include/libpq/libpq-be.h +23 -6
- data/ext/pg_query/include/libpq/libpq.h +31 -20
- data/ext/pg_query/include/libpq/pqcomm.h +17 -31
- data/ext/pg_query/include/libpq/pqformat.h +1 -1
- data/ext/pg_query/include/libpq/pqsignal.h +4 -4
- data/ext/pg_query/include/mb/pg_wchar.h +106 -23
- data/ext/pg_query/include/mb/stringinfo_mb.h +1 -1
- data/ext/pg_query/include/miscadmin.h +71 -52
- data/ext/pg_query/include/nodes/bitmapset.h +1 -1
- data/ext/pg_query/include/nodes/execnodes.h +272 -80
- data/ext/pg_query/include/nodes/extensible.h +4 -2
- data/ext/pg_query/include/nodes/lockoptions.h +1 -1
- data/ext/pg_query/include/nodes/makefuncs.h +7 -6
- data/ext/pg_query/include/nodes/memnodes.h +5 -3
- data/ext/pg_query/include/nodes/nodeFuncs.h +1 -1
- data/ext/pg_query/include/nodes/nodes.h +30 -11
- data/ext/pg_query/include/nodes/params.h +1 -1
- data/ext/pg_query/include/nodes/parsenodes.h +327 -94
- data/ext/pg_query/include/nodes/pathnodes.h +245 -67
- data/ext/pg_query/include/nodes/pg_list.h +75 -68
- data/ext/pg_query/include/nodes/plannodes.h +128 -30
- data/ext/pg_query/include/nodes/primnodes.h +99 -47
- data/ext/pg_query/include/nodes/print.h +1 -1
- data/ext/pg_query/include/nodes/tidbitmap.h +1 -1
- data/ext/pg_query/include/nodes/value.h +58 -39
- data/ext/pg_query/include/optimizer/cost.h +9 -2
- data/ext/pg_query/include/optimizer/geqo.h +9 -7
- data/ext/pg_query/include/optimizer/geqo_gene.h +1 -1
- data/ext/pg_query/include/optimizer/optimizer.h +25 -22
- data/ext/pg_query/include/optimizer/paths.h +6 -6
- data/ext/pg_query/include/optimizer/planmain.h +15 -14
- data/ext/pg_query/include/parser/analyze.h +19 -5
- data/ext/pg_query/include/parser/gram.h +947 -913
- data/ext/pg_query/include/parser/gramparse.h +1 -1
- data/ext/pg_query/include/parser/kwlist.h +463 -453
- data/ext/pg_query/include/parser/parse_agg.h +2 -7
- data/ext/pg_query/include/parser/parse_coerce.h +4 -1
- data/ext/pg_query/include/parser/parse_expr.h +2 -3
- data/ext/pg_query/include/parser/parse_func.h +2 -1
- data/ext/pg_query/include/parser/parse_node.h +21 -9
- data/ext/pg_query/include/parser/parse_oper.h +1 -3
- data/ext/pg_query/include/parser/parse_relation.h +5 -4
- data/ext/pg_query/include/parser/parse_type.h +1 -1
- data/ext/pg_query/include/parser/parser.h +31 -4
- data/ext/pg_query/include/parser/parsetree.h +1 -1
- data/ext/pg_query/include/parser/scanner.h +1 -1
- data/ext/pg_query/include/parser/scansup.h +2 -5
- data/ext/pg_query/include/partitioning/partdefs.h +1 -1
- data/ext/pg_query/include/pg_config.h +94 -46
- data/ext/pg_query/include/pg_config_manual.h +74 -21
- data/ext/pg_query/include/pg_getopt.h +6 -6
- data/ext/pg_query/include/pg_query.h +5 -4
- data/ext/pg_query/include/pg_query_enum_defs.c +358 -241
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +44 -7
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +1220 -422
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +43 -13
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +152 -26
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +11 -2
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +174 -30
- data/ext/pg_query/include/pg_trace.h +1 -1
- data/ext/pg_query/include/pgstat.h +449 -1237
- data/ext/pg_query/include/pgtime.h +14 -4
- data/ext/pg_query/include/pl_gram.h +126 -128
- data/ext/pg_query/include/pl_reserved_kwlist.h +1 -1
- data/ext/pg_query/include/pl_reserved_kwlist_d.h +10 -10
- data/ext/pg_query/include/pl_unreserved_kwlist.h +2 -3
- data/ext/pg_query/include/pl_unreserved_kwlist_d.h +54 -56
- data/ext/pg_query/include/plerrcodes.h +9 -1
- data/ext/pg_query/include/plpgsql.h +52 -54
- data/ext/pg_query/include/port/atomics/arch-arm.h +7 -1
- data/ext/pg_query/include/port/atomics/arch-ppc.h +1 -1
- data/ext/pg_query/include/port/atomics/arch-x86.h +1 -1
- data/ext/pg_query/include/port/atomics/fallback.h +1 -1
- data/ext/pg_query/include/port/atomics/generic-gcc.h +3 -3
- data/ext/pg_query/include/port/atomics/generic.h +1 -1
- data/ext/pg_query/include/port/atomics.h +1 -1
- data/ext/pg_query/include/port/pg_bitutils.h +88 -12
- data/ext/pg_query/include/port/pg_bswap.h +1 -1
- data/ext/pg_query/include/port/pg_crc32c.h +1 -1
- data/ext/pg_query/include/port.h +72 -43
- data/ext/pg_query/include/portability/instr_time.h +1 -1
- data/ext/pg_query/include/postgres.h +60 -16
- data/ext/pg_query/include/postmaster/autovacuum.h +17 -17
- data/ext/pg_query/include/postmaster/auxprocess.h +20 -0
- data/ext/pg_query/include/postmaster/bgworker.h +2 -1
- data/ext/pg_query/include/postmaster/bgworker_internals.h +2 -2
- data/ext/pg_query/include/postmaster/bgwriter.h +5 -5
- data/ext/pg_query/include/postmaster/fork_process.h +1 -1
- data/ext/pg_query/include/postmaster/interrupt.h +1 -1
- data/ext/pg_query/include/postmaster/pgarch.h +42 -8
- data/ext/pg_query/include/postmaster/postmaster.h +18 -17
- data/ext/pg_query/include/postmaster/startup.h +39 -0
- data/ext/pg_query/include/postmaster/syslogger.h +15 -10
- data/ext/pg_query/include/postmaster/walwriter.h +3 -3
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +1422 -916
- data/ext/pg_query/include/protobuf/pg_query.pb.h +43678 -32769
- data/ext/pg_query/include/regex/regex.h +18 -16
- data/ext/pg_query/include/replication/logicallauncher.h +3 -5
- data/ext/pg_query/include/replication/logicalproto.h +161 -17
- data/ext/pg_query/include/replication/logicalworker.h +1 -1
- data/ext/pg_query/include/replication/origin.h +7 -7
- data/ext/pg_query/include/replication/reorderbuffer.h +262 -44
- data/ext/pg_query/include/replication/slot.h +23 -12
- data/ext/pg_query/include/replication/syncrep.h +5 -5
- data/ext/pg_query/include/replication/walreceiver.h +145 -13
- data/ext/pg_query/include/replication/walsender.h +8 -8
- data/ext/pg_query/include/rewrite/prs2lock.h +1 -1
- data/ext/pg_query/include/rewrite/rewriteHandler.h +1 -3
- data/ext/pg_query/include/rewrite/rewriteManip.h +1 -1
- data/ext/pg_query/include/rewrite/rewriteSupport.h +1 -1
- data/ext/pg_query/include/storage/backendid.h +3 -3
- data/ext/pg_query/include/storage/block.h +4 -10
- data/ext/pg_query/include/storage/buf.h +1 -1
- data/ext/pg_query/include/storage/bufmgr.h +19 -14
- data/ext/pg_query/include/storage/bufpage.h +6 -8
- data/ext/pg_query/include/storage/condition_variable.h +13 -2
- data/ext/pg_query/include/storage/dsm.h +4 -1
- data/ext/pg_query/include/storage/dsm_impl.h +3 -2
- data/ext/pg_query/include/storage/fd.h +33 -3
- data/ext/pg_query/include/storage/fileset.h +40 -0
- data/ext/pg_query/include/storage/ipc.h +4 -1
- data/ext/pg_query/include/storage/item.h +1 -1
- data/ext/pg_query/include/storage/itemid.h +1 -1
- data/ext/pg_query/include/storage/itemptr.h +3 -1
- data/ext/pg_query/include/storage/large_object.h +2 -2
- data/ext/pg_query/include/storage/latch.h +9 -13
- data/ext/pg_query/include/storage/lmgr.h +2 -1
- data/ext/pg_query/include/storage/lock.h +17 -13
- data/ext/pg_query/include/storage/lockdefs.h +2 -2
- data/ext/pg_query/include/storage/lwlock.h +6 -32
- data/ext/pg_query/include/storage/lwlocknames.h +0 -1
- data/ext/pg_query/include/storage/off.h +1 -1
- data/ext/pg_query/include/storage/pg_sema.h +1 -1
- data/ext/pg_query/include/storage/pg_shmem.h +9 -7
- data/ext/pg_query/include/storage/pmsignal.h +15 -4
- data/ext/pg_query/include/storage/predicate.h +4 -4
- data/ext/pg_query/include/storage/proc.h +183 -55
- data/ext/pg_query/include/storage/procarray.h +98 -0
- data/ext/pg_query/include/storage/proclist_types.h +1 -1
- data/ext/pg_query/include/storage/procsignal.h +3 -7
- data/ext/pg_query/include/storage/relfilenode.h +1 -1
- data/ext/pg_query/include/storage/s_lock.h +67 -4
- data/ext/pg_query/include/storage/sharedfileset.h +3 -11
- data/ext/pg_query/include/storage/shm_mq.h +5 -4
- data/ext/pg_query/include/storage/shm_toc.h +1 -1
- data/ext/pg_query/include/storage/shmem.h +1 -1
- data/ext/pg_query/include/storage/sinval.h +3 -3
- data/ext/pg_query/include/storage/sinvaladt.h +1 -1
- data/ext/pg_query/include/storage/smgr.h +10 -8
- data/ext/pg_query/include/storage/spin.h +2 -2
- data/ext/pg_query/include/storage/standby.h +13 -6
- data/ext/pg_query/include/storage/standbydefs.h +2 -2
- data/ext/pg_query/include/storage/sync.h +7 -3
- data/ext/pg_query/include/tcop/cmdtag.h +1 -1
- data/ext/pg_query/include/tcop/cmdtaglist.h +3 -2
- data/ext/pg_query/include/tcop/deparse_utility.h +1 -1
- data/ext/pg_query/include/tcop/dest.h +1 -1
- data/ext/pg_query/include/tcop/fastpath.h +1 -2
- data/ext/pg_query/include/tcop/pquery.h +7 -1
- data/ext/pg_query/include/tcop/tcopprot.h +19 -11
- data/ext/pg_query/include/tcop/utility.h +7 -3
- data/ext/pg_query/include/tsearch/ts_cache.h +2 -2
- data/ext/pg_query/include/utils/acl.h +24 -3
- data/ext/pg_query/include/utils/aclchk_internal.h +1 -1
- data/ext/pg_query/include/utils/array.h +7 -2
- data/ext/pg_query/include/utils/backend_progress.h +44 -0
- data/ext/pg_query/include/utils/backend_status.h +321 -0
- data/ext/pg_query/include/utils/builtins.h +11 -11
- data/ext/pg_query/include/utils/bytea.h +3 -2
- data/ext/pg_query/include/utils/catcache.h +1 -1
- data/ext/pg_query/include/utils/date.h +1 -1
- data/ext/pg_query/include/utils/datetime.h +8 -7
- data/ext/pg_query/include/utils/datum.h +9 -1
- data/ext/pg_query/include/utils/dsa.h +1 -1
- data/ext/pg_query/include/utils/dynahash.h +4 -3
- data/ext/pg_query/include/utils/elog.h +52 -21
- data/ext/pg_query/include/utils/errcodes.h +2 -0
- data/ext/pg_query/include/utils/expandeddatum.h +1 -1
- data/ext/pg_query/include/utils/expandedrecord.h +1 -1
- data/ext/pg_query/include/utils/float.h +7 -7
- data/ext/pg_query/include/utils/fmgroids.h +1300 -696
- data/ext/pg_query/include/utils/fmgrprotos.h +199 -16
- data/ext/pg_query/include/utils/fmgrtab.h +6 -5
- data/ext/pg_query/include/utils/guc.h +69 -43
- data/ext/pg_query/include/utils/guc_tables.h +23 -19
- data/ext/pg_query/include/utils/hsearch.h +15 -11
- data/ext/pg_query/include/utils/inval.h +5 -1
- data/ext/pg_query/include/utils/lsyscache.h +11 -1
- data/ext/pg_query/include/utils/memdebug.h +1 -1
- data/ext/pg_query/include/utils/memutils.h +8 -3
- data/ext/pg_query/include/utils/numeric.h +19 -5
- data/ext/pg_query/include/utils/palloc.h +25 -3
- data/ext/pg_query/include/utils/partcache.h +1 -1
- data/ext/pg_query/include/utils/pg_locale.h +17 -9
- data/ext/pg_query/include/utils/pg_lsn.h +1 -1
- data/ext/pg_query/include/utils/pgstat_internal.h +784 -0
- data/ext/pg_query/include/utils/pidfile.h +1 -1
- data/ext/pg_query/include/utils/plancache.h +6 -5
- data/ext/pg_query/include/utils/portal.h +12 -1
- data/ext/pg_query/include/utils/ps_status.h +1 -1
- data/ext/pg_query/include/utils/queryenvironment.h +1 -1
- data/ext/pg_query/include/utils/queryjumble.h +88 -0
- data/ext/pg_query/include/utils/regproc.h +14 -3
- data/ext/pg_query/include/utils/rel.h +71 -20
- data/ext/pg_query/include/utils/relcache.h +9 -7
- data/ext/pg_query/include/utils/reltrigger.h +1 -1
- data/ext/pg_query/include/utils/resowner.h +1 -1
- data/ext/pg_query/include/utils/rls.h +2 -2
- data/ext/pg_query/include/utils/ruleutils.h +4 -1
- data/ext/pg_query/include/utils/sharedtuplestore.h +1 -1
- data/ext/pg_query/include/utils/snapmgr.h +35 -14
- data/ext/pg_query/include/utils/snapshot.h +14 -1
- data/ext/pg_query/include/utils/sortsupport.h +117 -2
- data/ext/pg_query/include/utils/syscache.h +6 -1
- data/ext/pg_query/include/utils/timeout.h +11 -4
- data/ext/pg_query/include/utils/timestamp.h +6 -5
- data/ext/pg_query/include/utils/tuplesort.h +25 -11
- data/ext/pg_query/include/utils/tuplestore.h +2 -2
- data/ext/pg_query/include/utils/typcache.h +24 -17
- data/ext/pg_query/include/utils/tzparser.h +1 -1
- data/ext/pg_query/include/utils/varlena.h +5 -3
- data/ext/pg_query/include/utils/wait_event.h +289 -0
- data/ext/pg_query/include/utils/xml.h +4 -4
- data/ext/pg_query/pg_query.pb-c.c +4318 -2307
- data/ext/pg_query/pg_query_deparse.c +1114 -381
- data/ext/pg_query/pg_query_fingerprint.c +46 -10
- data/ext/pg_query/pg_query_fingerprint.h +3 -1
- data/ext/pg_query/pg_query_json_plpgsql.c +55 -12
- data/ext/pg_query/pg_query_normalize.c +163 -20
- data/ext/pg_query/pg_query_outfuncs.h +1 -0
- data/ext/pg_query/pg_query_outfuncs_json.c +65 -16
- data/ext/pg_query/pg_query_outfuncs_protobuf.c +70 -10
- data/ext/pg_query/pg_query_parse.c +1 -1
- data/ext/pg_query/pg_query_parse_plpgsql.c +79 -16
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +42 -8
- data/ext/pg_query/pg_query_ruby.c +1 -1
- data/ext/pg_query/pg_query_scan.c +2 -1
- data/ext/pg_query/pg_query_split.c +3 -2
- data/ext/pg_query/src_backend_catalog_namespace.c +21 -9
- data/ext/pg_query/src_backend_catalog_pg_proc.c +4 -1
- data/ext/pg_query/src_backend_commands_define.c +11 -1
- data/ext/pg_query/src_backend_nodes_bitmapset.c +3 -1
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +424 -109
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +291 -46
- data/ext/pg_query/src_backend_nodes_extensible.c +1 -1
- data/ext/pg_query/src_backend_nodes_list.c +86 -11
- data/ext/pg_query/src_backend_nodes_makefuncs.c +5 -4
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +55 -12
- data/ext/pg_query/src_backend_nodes_value.c +28 -19
- data/ext/pg_query/src_backend_parser_gram.c +33890 -31262
- data/ext/pg_query/src_backend_parser_parser.c +26 -7
- data/ext/pg_query/src_backend_parser_scan.c +644 -441
- data/ext/pg_query/src_backend_parser_scansup.c +4 -28
- data/ext/pg_query/src_backend_postmaster_postmaster.c +77 -106
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +13 -4
- data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +5 -4
- data/ext/pg_query/src_backend_tcop_postgres.c +73 -24
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +140 -0
- data/ext/pg_query/src_backend_utils_adt_datum.c +13 -1
- data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_format_type.c +6 -2
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +109 -15
- data/ext/pg_query/src_backend_utils_error_assert.c +16 -14
- data/ext/pg_query/src_backend_utils_error_elog.c +172 -99
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +12 -17
- data/ext/pg_query/src_backend_utils_hash_dynahash.c +40 -10
- data/ext/pg_query/src_backend_utils_init_globals.c +5 -5
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +55 -66
- data/ext/pg_query/src_backend_utils_misc_guc.c +207 -45
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +7 -5
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +123 -35
- data/ext/pg_query/src_common_encnames.c +1 -1
- data/ext/pg_query/src_common_hashfn.c +3 -3
- data/ext/pg_query/src_common_keywords.c +15 -2
- data/ext/pg_query/src_common_kwlist_d.h +517 -494
- data/ext/pg_query/src_common_kwlookup.c +1 -1
- data/ext/pg_query/src_common_pg_prng.c +152 -0
- data/ext/pg_query/src_common_psprintf.c +1 -1
- data/ext/pg_query/src_common_string.c +7 -1
- data/ext/pg_query/src_common_stringinfo.c +1 -1
- data/ext/pg_query/src_common_wchar.c +712 -109
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +49 -22
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +1 -18
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1235 -1261
- 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 +10 -10
- data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +2 -2
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +54 -56
- data/ext/pg_query/src_port_pg_bitutils.c +41 -52
- data/ext/pg_query/src_port_pgsleep.c +1 -1
- data/ext/pg_query/src_port_pgstrcasecmp.c +1 -1
- data/ext/pg_query/src_port_qsort.c +12 -224
- data/ext/pg_query/src_port_snprintf.c +46 -20
- data/ext/pg_query/src_port_strerror.c +9 -19
- data/ext/pg_query/src_port_strnlen.c +1 -1
- data/lib/pg_query/deparse.rb +7 -1
- data/lib/pg_query/filter_columns.rb +6 -4
- data/lib/pg_query/fingerprint.rb +18 -3
- data/lib/pg_query/node.rb +2 -2
- data/lib/pg_query/param_refs.rb +1 -1
- data/lib/pg_query/parse.rb +87 -51
- data/lib/pg_query/pg_query_pb.rb +1109 -942
- data/lib/pg_query/treewalker.rb +6 -0
- data/lib/pg_query/truncate.rb +54 -8
- data/lib/pg_query/version.rb +1 -1
- metadata +29 -18
- data/ext/pg_query/include/access/xloginsert.h +0 -64
- data/ext/pg_query/include/bootstrap/bootstrap.h +0 -62
- data/ext/pg_query/include/parser/parse_clause.h +0 -54
- data/ext/pg_query/include/parser/parse_collate.h +0 -27
- data/ext/pg_query/include/parser/parse_target.h +0 -46
- data/ext/pg_query/src_backend_libpq_pqcomm.c +0 -651
- data/ext/pg_query/src_backend_parser_parse_expr.c +0 -313
- data/ext/pg_query/src_port_erand48.c +0 -127
- data/ext/pg_query/src_port_random.c +0 -31
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* POSTGRES heap tuple definitions.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2022, 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-2022, 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
|
|
@@ -191,7 +191,7 @@ struct HeapTupleHeaderData
|
|
|
191
191
|
#define HEAP_HASEXTERNAL 0x0004 /* has external stored attribute(s) */
|
|
192
192
|
#define HEAP_HASOID_OLD 0x0008 /* has an object-id field */
|
|
193
193
|
#define HEAP_XMAX_KEYSHR_LOCK 0x0010 /* xmax is a key-shared locker */
|
|
194
|
-
#define HEAP_COMBOCID 0x0020 /* t_cid is a combo
|
|
194
|
+
#define HEAP_COMBOCID 0x0020 /* t_cid is a combo CID */
|
|
195
195
|
#define HEAP_XMAX_EXCL_LOCK 0x0040 /* xmax is exclusive locker */
|
|
196
196
|
#define HEAP_XMAX_LOCK_ONLY 0x0080 /* xmax, if valid, is only a locker */
|
|
197
197
|
|
|
@@ -443,11 +443,10 @@ do { \
|
|
|
443
443
|
)
|
|
444
444
|
|
|
445
445
|
#define HeapTupleHeaderIndicatesMovedPartitions(tup) \
|
|
446
|
-
(
|
|
447
|
-
ItemPointerGetBlockNumberNoCheck(&(tup)->t_ctid) == MovedPartitionsBlockNumber)
|
|
446
|
+
ItemPointerIndicatesMovedPartitions(&(tup)->t_ctid)
|
|
448
447
|
|
|
449
448
|
#define HeapTupleHeaderSetMovedPartitions(tup) \
|
|
450
|
-
|
|
449
|
+
ItemPointerSetMovedPartitions(&(tup)->t_ctid)
|
|
451
450
|
|
|
452
451
|
#define HeapTupleHeaderGetDatumLength(tup) \
|
|
453
452
|
VARSIZE(tup)
|
|
@@ -691,88 +690,6 @@ struct MinimalTupleData
|
|
|
691
690
|
#define HeapTupleClearHeapOnly(tuple) \
|
|
692
691
|
HeapTupleHeaderClearHeapOnly((tuple)->t_data)
|
|
693
692
|
|
|
694
|
-
|
|
695
|
-
/* ----------------
|
|
696
|
-
* fastgetattr
|
|
697
|
-
*
|
|
698
|
-
* Fetch a user attribute's value as a Datum (might be either a
|
|
699
|
-
* value, or a pointer into the data area of the tuple).
|
|
700
|
-
*
|
|
701
|
-
* This must not be used when a system attribute might be requested.
|
|
702
|
-
* Furthermore, the passed attnum MUST be valid. Use heap_getattr()
|
|
703
|
-
* instead, if in doubt.
|
|
704
|
-
*
|
|
705
|
-
* This gets called many times, so we macro the cacheable and NULL
|
|
706
|
-
* lookups, and call nocachegetattr() for the rest.
|
|
707
|
-
* ----------------
|
|
708
|
-
*/
|
|
709
|
-
|
|
710
|
-
#if !defined(DISABLE_COMPLEX_MACRO)
|
|
711
|
-
|
|
712
|
-
#define fastgetattr(tup, attnum, tupleDesc, isnull) \
|
|
713
|
-
( \
|
|
714
|
-
AssertMacro((attnum) > 0), \
|
|
715
|
-
(*(isnull) = false), \
|
|
716
|
-
HeapTupleNoNulls(tup) ? \
|
|
717
|
-
( \
|
|
718
|
-
TupleDescAttr((tupleDesc), (attnum)-1)->attcacheoff >= 0 ? \
|
|
719
|
-
( \
|
|
720
|
-
fetchatt(TupleDescAttr((tupleDesc), (attnum)-1), \
|
|
721
|
-
(char *) (tup)->t_data + (tup)->t_data->t_hoff + \
|
|
722
|
-
TupleDescAttr((tupleDesc), (attnum)-1)->attcacheoff)\
|
|
723
|
-
) \
|
|
724
|
-
: \
|
|
725
|
-
nocachegetattr((tup), (attnum), (tupleDesc)) \
|
|
726
|
-
) \
|
|
727
|
-
: \
|
|
728
|
-
( \
|
|
729
|
-
att_isnull((attnum)-1, (tup)->t_data->t_bits) ? \
|
|
730
|
-
( \
|
|
731
|
-
(*(isnull) = true), \
|
|
732
|
-
(Datum)NULL \
|
|
733
|
-
) \
|
|
734
|
-
: \
|
|
735
|
-
( \
|
|
736
|
-
nocachegetattr((tup), (attnum), (tupleDesc)) \
|
|
737
|
-
) \
|
|
738
|
-
) \
|
|
739
|
-
)
|
|
740
|
-
#else /* defined(DISABLE_COMPLEX_MACRO) */
|
|
741
|
-
|
|
742
|
-
extern Datum fastgetattr(HeapTuple tup, int attnum, TupleDesc tupleDesc,
|
|
743
|
-
bool *isnull);
|
|
744
|
-
#endif /* defined(DISABLE_COMPLEX_MACRO) */
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
/* ----------------
|
|
748
|
-
* heap_getattr
|
|
749
|
-
*
|
|
750
|
-
* Extract an attribute of a heap tuple and return it as a Datum.
|
|
751
|
-
* This works for either system or user attributes. The given attnum
|
|
752
|
-
* is properly range-checked.
|
|
753
|
-
*
|
|
754
|
-
* If the field in question has a NULL value, we return a zero Datum
|
|
755
|
-
* and set *isnull == true. Otherwise, we set *isnull == false.
|
|
756
|
-
*
|
|
757
|
-
* <tup> is the pointer to the heap tuple. <attnum> is the attribute
|
|
758
|
-
* number of the column (field) caller wants. <tupleDesc> is a
|
|
759
|
-
* pointer to the structure describing the row and all its fields.
|
|
760
|
-
* ----------------
|
|
761
|
-
*/
|
|
762
|
-
#define heap_getattr(tup, attnum, tupleDesc, isnull) \
|
|
763
|
-
( \
|
|
764
|
-
((attnum) > 0) ? \
|
|
765
|
-
( \
|
|
766
|
-
((attnum) > (int) HeapTupleHeaderGetNatts((tup)->t_data)) ? \
|
|
767
|
-
getmissingattr((tupleDesc), (attnum), (isnull)) \
|
|
768
|
-
: \
|
|
769
|
-
fastgetattr((tup), (attnum), (tupleDesc), (isnull)) \
|
|
770
|
-
) \
|
|
771
|
-
: \
|
|
772
|
-
heap_getsysattr((tup), (attnum), (tupleDesc), (isnull)) \
|
|
773
|
-
)
|
|
774
|
-
|
|
775
|
-
|
|
776
693
|
/* prototypes for functions in common/heaptuple.c */
|
|
777
694
|
extern Size heap_compute_data_size(TupleDesc tupleDesc,
|
|
778
695
|
Datum *values, bool *isnull);
|
|
@@ -816,4 +733,75 @@ extern size_t varsize_any(void *p);
|
|
|
816
733
|
extern HeapTuple heap_expand_tuple(HeapTuple sourceTuple, TupleDesc tupleDesc);
|
|
817
734
|
extern MinimalTuple minimal_expand_tuple(HeapTuple sourceTuple, TupleDesc tupleDesc);
|
|
818
735
|
|
|
736
|
+
#ifndef FRONTEND
|
|
737
|
+
/*
|
|
738
|
+
* fastgetattr
|
|
739
|
+
* Fetch a user attribute's value as a Datum (might be either a
|
|
740
|
+
* value, or a pointer into the data area of the tuple).
|
|
741
|
+
*
|
|
742
|
+
* This must not be used when a system attribute might be requested.
|
|
743
|
+
* Furthermore, the passed attnum MUST be valid. Use heap_getattr()
|
|
744
|
+
* instead, if in doubt.
|
|
745
|
+
*
|
|
746
|
+
* This gets called many times, so we macro the cacheable and NULL
|
|
747
|
+
* lookups, and call nocachegetattr() for the rest.
|
|
748
|
+
*/
|
|
749
|
+
static inline Datum
|
|
750
|
+
fastgetattr(HeapTuple tup, int attnum, TupleDesc tupleDesc, bool *isnull)
|
|
751
|
+
{
|
|
752
|
+
Assert(attnum > 0);
|
|
753
|
+
|
|
754
|
+
*isnull = false;
|
|
755
|
+
if (HeapTupleNoNulls(tup))
|
|
756
|
+
{
|
|
757
|
+
Form_pg_attribute att;
|
|
758
|
+
|
|
759
|
+
att = TupleDescAttr(tupleDesc, attnum - 1);
|
|
760
|
+
if (att->attcacheoff >= 0)
|
|
761
|
+
return fetchatt(att, (char *) tup->t_data + tup->t_data->t_hoff +
|
|
762
|
+
att->attcacheoff);
|
|
763
|
+
else
|
|
764
|
+
return nocachegetattr(tup, attnum, tupleDesc);
|
|
765
|
+
}
|
|
766
|
+
else
|
|
767
|
+
{
|
|
768
|
+
if (att_isnull(attnum - 1, tup->t_data->t_bits))
|
|
769
|
+
{
|
|
770
|
+
*isnull = true;
|
|
771
|
+
return (Datum) NULL;
|
|
772
|
+
}
|
|
773
|
+
else
|
|
774
|
+
return nocachegetattr(tup, attnum, tupleDesc);
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
|
|
778
|
+
/*
|
|
779
|
+
* heap_getattr
|
|
780
|
+
* Extract an attribute of a heap tuple and return it as a Datum.
|
|
781
|
+
* This works for either system or user attributes. The given attnum
|
|
782
|
+
* is properly range-checked.
|
|
783
|
+
*
|
|
784
|
+
* If the field in question has a NULL value, we return a zero Datum
|
|
785
|
+
* and set *isnull == true. Otherwise, we set *isnull == false.
|
|
786
|
+
*
|
|
787
|
+
* <tup> is the pointer to the heap tuple. <attnum> is the attribute
|
|
788
|
+
* number of the column (field) caller wants. <tupleDesc> is a
|
|
789
|
+
* pointer to the structure describing the row and all its fields.
|
|
790
|
+
*
|
|
791
|
+
*/
|
|
792
|
+
static inline Datum
|
|
793
|
+
heap_getattr(HeapTuple tup, int attnum, TupleDesc tupleDesc, bool *isnull)
|
|
794
|
+
{
|
|
795
|
+
if (attnum > 0)
|
|
796
|
+
{
|
|
797
|
+
if (attnum > (int) HeapTupleHeaderGetNatts(tup->t_data))
|
|
798
|
+
return getmissingattr(tupleDesc, attnum, isnull);
|
|
799
|
+
else
|
|
800
|
+
return fastgetattr(tup, attnum, tupleDesc, isnull);
|
|
801
|
+
}
|
|
802
|
+
else
|
|
803
|
+
return heap_getsysattr(tup, attnum, tupleDesc, isnull);
|
|
804
|
+
}
|
|
805
|
+
#endif /* FRONTEND */
|
|
806
|
+
|
|
819
807
|
#endif /* HTUP_DETAILS_H */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* POSTGRES index tuple definitions.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2022, 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
|
|
@@ -150,10 +150,16 @@ typedef IndexAttributeBitMapData * IndexAttributeBitMap;
|
|
|
150
150
|
/* routines in indextuple.c */
|
|
151
151
|
extern IndexTuple index_form_tuple(TupleDesc tupleDescriptor,
|
|
152
152
|
Datum *values, bool *isnull);
|
|
153
|
+
extern IndexTuple index_form_tuple_context(TupleDesc tupleDescriptor,
|
|
154
|
+
Datum *values, bool *isnull,
|
|
155
|
+
MemoryContext context);
|
|
153
156
|
extern Datum nocache_index_getattr(IndexTuple tup, int attnum,
|
|
154
157
|
TupleDesc tupleDesc);
|
|
155
158
|
extern void index_deform_tuple(IndexTuple tup, TupleDesc tupleDescriptor,
|
|
156
159
|
Datum *values, bool *isnull);
|
|
160
|
+
extern void index_deform_tuple_internal(TupleDesc tupleDescriptor,
|
|
161
|
+
Datum *values, bool *isnull,
|
|
162
|
+
char *tp, bits8 *bp, int hasnulls);
|
|
157
163
|
extern IndexTuple CopyIndexTuple(IndexTuple source);
|
|
158
164
|
extern IndexTuple index_truncate_tuple(TupleDesc sourceDescriptor,
|
|
159
165
|
IndexTuple source, int leavenatts);
|
|
@@ -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-2022, 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
|
|
@@ -54,7 +54,7 @@ typedef struct ParallelWorkerContext
|
|
|
54
54
|
shm_toc *toc;
|
|
55
55
|
} ParallelWorkerContext;
|
|
56
56
|
|
|
57
|
-
extern volatile bool ParallelMessagePending;
|
|
57
|
+
extern PGDLLIMPORT volatile bool ParallelMessagePending;
|
|
58
58
|
extern PGDLLIMPORT int ParallelWorkerNumber;
|
|
59
59
|
extern PGDLLIMPORT bool InitializingParallelWorker;
|
|
60
60
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2022, 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-2022, 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-2022, 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
|
|
@@ -36,6 +36,10 @@ typedef struct TableScanDescData
|
|
|
36
36
|
int rs_nkeys; /* number of scan keys */
|
|
37
37
|
struct ScanKeyData *rs_key; /* array of scan key descriptors */
|
|
38
38
|
|
|
39
|
+
/* Range of ItemPointers for table_scan_getnextslot_tidrange() to scan. */
|
|
40
|
+
ItemPointerData rs_mintid;
|
|
41
|
+
ItemPointerData rs_maxtid;
|
|
42
|
+
|
|
39
43
|
/*
|
|
40
44
|
* Information about type and behaviour of the scan, a bitmask of members
|
|
41
45
|
* of the ScanOptions enum (see tableam.h).
|
|
@@ -44,7 +48,6 @@ typedef struct TableScanDescData
|
|
|
44
48
|
|
|
45
49
|
struct ParallelTableScanDescData *rs_parallel; /* parallel scan
|
|
46
50
|
* information */
|
|
47
|
-
|
|
48
51
|
} TableScanDescData;
|
|
49
52
|
typedef struct TableScanDescData *TableScanDesc;
|
|
50
53
|
|
|
@@ -81,6 +84,18 @@ typedef struct ParallelBlockTableScanDescData
|
|
|
81
84
|
} ParallelBlockTableScanDescData;
|
|
82
85
|
typedef struct ParallelBlockTableScanDescData *ParallelBlockTableScanDesc;
|
|
83
86
|
|
|
87
|
+
/*
|
|
88
|
+
* Per backend state for parallel table scan, for block-oriented storage.
|
|
89
|
+
*/
|
|
90
|
+
typedef struct ParallelBlockTableScanWorkerData
|
|
91
|
+
{
|
|
92
|
+
uint64 phsw_nallocated; /* Current # of blocks into the scan */
|
|
93
|
+
uint32 phsw_chunk_remaining; /* # blocks left in this chunk */
|
|
94
|
+
uint32 phsw_chunk_size; /* The number of blocks to allocate in
|
|
95
|
+
* each I/O chunk for the scan */
|
|
96
|
+
} ParallelBlockTableScanWorkerData;
|
|
97
|
+
typedef struct ParallelBlockTableScanWorkerData *ParallelBlockTableScanWorker;
|
|
98
|
+
|
|
84
99
|
/*
|
|
85
100
|
* Base class for fetches from a table via an index. This is the base-class
|
|
86
101
|
* for such scans, which needs to be embedded in the respective struct for
|
|
@@ -19,17 +19,44 @@ typedef uint8 RmgrId;
|
|
|
19
19
|
* Note: RM_MAX_ID must fit in RmgrId; widening that type will affect the XLOG
|
|
20
20
|
* file format.
|
|
21
21
|
*/
|
|
22
|
-
#define PG_RMGR(symname,name,redo,desc,identify,startup,cleanup,mask) \
|
|
22
|
+
#define PG_RMGR(symname,name,redo,desc,identify,startup,cleanup,mask,decode) \
|
|
23
23
|
symname,
|
|
24
24
|
|
|
25
25
|
typedef enum RmgrIds
|
|
26
26
|
{
|
|
27
27
|
#include "access/rmgrlist.h"
|
|
28
28
|
RM_NEXT_ID
|
|
29
|
-
}
|
|
29
|
+
} RmgrIds;
|
|
30
30
|
|
|
31
31
|
#undef PG_RMGR
|
|
32
32
|
|
|
33
|
-
#define RM_MAX_ID
|
|
33
|
+
#define RM_MAX_ID UINT8_MAX
|
|
34
|
+
#define RM_MAX_BUILTIN_ID (RM_NEXT_ID - 1)
|
|
35
|
+
#define RM_MIN_CUSTOM_ID 128
|
|
36
|
+
#define RM_MAX_CUSTOM_ID UINT8_MAX
|
|
37
|
+
#define RM_N_IDS (UINT8_MAX + 1)
|
|
38
|
+
#define RM_N_BUILTIN_IDS (RM_MAX_BUILTIN_ID + 1)
|
|
39
|
+
#define RM_N_CUSTOM_IDS (RM_MAX_CUSTOM_ID - RM_MIN_CUSTOM_ID + 1)
|
|
40
|
+
|
|
41
|
+
static inline bool
|
|
42
|
+
RmgrIdIsBuiltin(int rmid)
|
|
43
|
+
{
|
|
44
|
+
return rmid <= RM_MAX_BUILTIN_ID;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
static inline bool
|
|
48
|
+
RmgrIdIsCustom(int rmid)
|
|
49
|
+
{
|
|
50
|
+
return rmid >= RM_MIN_CUSTOM_ID && rmid <= RM_MAX_CUSTOM_ID;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
#define RmgrIdIsValid(rmid) (RmgrIdIsBuiltin((rmid)) || RmgrIdIsCustom((rmid)))
|
|
54
|
+
|
|
55
|
+
/*
|
|
56
|
+
* RmgrId to use for extensions that require an RmgrId, but are still in
|
|
57
|
+
* development and have not reserved their own unique RmgrId yet. See:
|
|
58
|
+
* https://wiki.postgresql.org/wiki/CustomWALResourceManagers
|
|
59
|
+
*/
|
|
60
|
+
#define RM_EXPERIMENTAL_ID 128
|
|
34
61
|
|
|
35
62
|
#endif /* RMGR_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-2022, 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
|
|
@@ -25,25 +25,25 @@
|
|
|
25
25
|
*/
|
|
26
26
|
|
|
27
27
|
/* symbol name, textual name, redo, desc, identify, startup, cleanup */
|
|
28
|
-
PG_RMGR(RM_XLOG_ID, "XLOG", xlog_redo, xlog_desc, xlog_identify, NULL, NULL, NULL)
|
|
29
|
-
PG_RMGR(RM_XACT_ID, "Transaction", xact_redo, xact_desc, xact_identify, NULL, NULL, NULL)
|
|
30
|
-
PG_RMGR(RM_SMGR_ID, "Storage", smgr_redo, smgr_desc, smgr_identify, NULL, NULL, NULL)
|
|
31
|
-
PG_RMGR(RM_CLOG_ID, "CLOG", clog_redo, clog_desc, clog_identify, NULL, NULL, NULL)
|
|
32
|
-
PG_RMGR(RM_DBASE_ID, "Database", dbase_redo, dbase_desc, dbase_identify, NULL, NULL, NULL)
|
|
33
|
-
PG_RMGR(RM_TBLSPC_ID, "Tablespace", tblspc_redo, tblspc_desc, tblspc_identify, NULL, NULL, NULL)
|
|
34
|
-
PG_RMGR(RM_MULTIXACT_ID, "MultiXact", multixact_redo, multixact_desc, multixact_identify, NULL, NULL, NULL)
|
|
35
|
-
PG_RMGR(RM_RELMAP_ID, "RelMap", relmap_redo, relmap_desc, relmap_identify, NULL, NULL, NULL)
|
|
36
|
-
PG_RMGR(RM_STANDBY_ID, "Standby", standby_redo, standby_desc, standby_identify, NULL, NULL, NULL)
|
|
37
|
-
PG_RMGR(RM_HEAP2_ID, "Heap2", heap2_redo, heap2_desc, heap2_identify, NULL, NULL, heap_mask)
|
|
38
|
-
PG_RMGR(RM_HEAP_ID, "Heap", heap_redo, heap_desc, heap_identify, NULL, NULL, heap_mask)
|
|
39
|
-
PG_RMGR(RM_BTREE_ID, "Btree", btree_redo, btree_desc, btree_identify, btree_xlog_startup, btree_xlog_cleanup, btree_mask)
|
|
40
|
-
PG_RMGR(RM_HASH_ID, "Hash", hash_redo, hash_desc, hash_identify, NULL, NULL, hash_mask)
|
|
41
|
-
PG_RMGR(RM_GIN_ID, "Gin", gin_redo, gin_desc, gin_identify, gin_xlog_startup, gin_xlog_cleanup, gin_mask)
|
|
42
|
-
PG_RMGR(RM_GIST_ID, "Gist", gist_redo, gist_desc, gist_identify, gist_xlog_startup, gist_xlog_cleanup, gist_mask)
|
|
43
|
-
PG_RMGR(RM_SEQ_ID, "Sequence", seq_redo, seq_desc, seq_identify, NULL, NULL, seq_mask)
|
|
44
|
-
PG_RMGR(RM_SPGIST_ID, "SPGist", spg_redo, spg_desc, spg_identify, spg_xlog_startup, spg_xlog_cleanup, spg_mask)
|
|
45
|
-
PG_RMGR(RM_BRIN_ID, "BRIN", brin_redo, brin_desc, brin_identify, NULL, NULL, brin_mask)
|
|
46
|
-
PG_RMGR(RM_COMMIT_TS_ID, "CommitTs", commit_ts_redo, commit_ts_desc, commit_ts_identify, NULL, NULL, NULL)
|
|
47
|
-
PG_RMGR(RM_REPLORIGIN_ID, "ReplicationOrigin", replorigin_redo, replorigin_desc, replorigin_identify, NULL, NULL, NULL)
|
|
48
|
-
PG_RMGR(RM_GENERIC_ID, "Generic", generic_redo, generic_desc, generic_identify, NULL, NULL, generic_mask)
|
|
49
|
-
PG_RMGR(RM_LOGICALMSG_ID, "LogicalMessage", logicalmsg_redo, logicalmsg_desc, logicalmsg_identify, NULL, NULL, NULL)
|
|
28
|
+
PG_RMGR(RM_XLOG_ID, "XLOG", xlog_redo, xlog_desc, xlog_identify, NULL, NULL, NULL, xlog_decode)
|
|
29
|
+
PG_RMGR(RM_XACT_ID, "Transaction", xact_redo, xact_desc, xact_identify, NULL, NULL, NULL, xact_decode)
|
|
30
|
+
PG_RMGR(RM_SMGR_ID, "Storage", smgr_redo, smgr_desc, smgr_identify, NULL, NULL, NULL, NULL)
|
|
31
|
+
PG_RMGR(RM_CLOG_ID, "CLOG", clog_redo, clog_desc, clog_identify, NULL, NULL, NULL, NULL)
|
|
32
|
+
PG_RMGR(RM_DBASE_ID, "Database", dbase_redo, dbase_desc, dbase_identify, NULL, NULL, NULL, NULL)
|
|
33
|
+
PG_RMGR(RM_TBLSPC_ID, "Tablespace", tblspc_redo, tblspc_desc, tblspc_identify, NULL, NULL, NULL, NULL)
|
|
34
|
+
PG_RMGR(RM_MULTIXACT_ID, "MultiXact", multixact_redo, multixact_desc, multixact_identify, NULL, NULL, NULL, NULL)
|
|
35
|
+
PG_RMGR(RM_RELMAP_ID, "RelMap", relmap_redo, relmap_desc, relmap_identify, NULL, NULL, NULL, NULL)
|
|
36
|
+
PG_RMGR(RM_STANDBY_ID, "Standby", standby_redo, standby_desc, standby_identify, NULL, NULL, NULL, standby_decode)
|
|
37
|
+
PG_RMGR(RM_HEAP2_ID, "Heap2", heap2_redo, heap2_desc, heap2_identify, NULL, NULL, heap_mask, heap2_decode)
|
|
38
|
+
PG_RMGR(RM_HEAP_ID, "Heap", heap_redo, heap_desc, heap_identify, NULL, NULL, heap_mask, heap_decode)
|
|
39
|
+
PG_RMGR(RM_BTREE_ID, "Btree", btree_redo, btree_desc, btree_identify, btree_xlog_startup, btree_xlog_cleanup, btree_mask, NULL)
|
|
40
|
+
PG_RMGR(RM_HASH_ID, "Hash", hash_redo, hash_desc, hash_identify, NULL, NULL, hash_mask, NULL)
|
|
41
|
+
PG_RMGR(RM_GIN_ID, "Gin", gin_redo, gin_desc, gin_identify, gin_xlog_startup, gin_xlog_cleanup, gin_mask, NULL)
|
|
42
|
+
PG_RMGR(RM_GIST_ID, "Gist", gist_redo, gist_desc, gist_identify, gist_xlog_startup, gist_xlog_cleanup, gist_mask, NULL)
|
|
43
|
+
PG_RMGR(RM_SEQ_ID, "Sequence", seq_redo, seq_desc, seq_identify, NULL, NULL, seq_mask, NULL)
|
|
44
|
+
PG_RMGR(RM_SPGIST_ID, "SPGist", spg_redo, spg_desc, spg_identify, spg_xlog_startup, spg_xlog_cleanup, spg_mask, NULL)
|
|
45
|
+
PG_RMGR(RM_BRIN_ID, "BRIN", brin_redo, brin_desc, brin_identify, NULL, NULL, brin_mask, NULL)
|
|
46
|
+
PG_RMGR(RM_COMMIT_TS_ID, "CommitTs", commit_ts_redo, commit_ts_desc, commit_ts_identify, NULL, NULL, NULL, NULL)
|
|
47
|
+
PG_RMGR(RM_REPLORIGIN_ID, "ReplicationOrigin", replorigin_redo, replorigin_desc, replorigin_identify, NULL, NULL, NULL, NULL)
|
|
48
|
+
PG_RMGR(RM_GENERIC_ID, "Generic", generic_redo, generic_desc, generic_identify, NULL, NULL, generic_mask, NULL)
|
|
49
|
+
PG_RMGR(RM_LOGICALMSG_ID, "LogicalMessage", logicalmsg_redo, logicalmsg_desc, logicalmsg_identify, NULL, NULL, NULL, logicalmsg_decode)
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* POSTGRES scan direction definitions.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2022, 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-2022, 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
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* POSTGRES strategy number definitions.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/access/stratnum.h
|
|
@@ -76,8 +76,10 @@ typedef uint16 StrategyNumber;
|
|
|
76
76
|
#define RTSuperStrategyNumber 26 /* for inet << */
|
|
77
77
|
#define RTSuperEqualStrategyNumber 27 /* for inet >>= */
|
|
78
78
|
#define RTPrefixStrategyNumber 28 /* for text ^@ */
|
|
79
|
+
#define RTOldBelowStrategyNumber 29 /* for old spelling of <<| */
|
|
80
|
+
#define RTOldAboveStrategyNumber 30 /* for old spelling of |>> */
|
|
79
81
|
|
|
80
|
-
#define RTMaxStrategyNumber
|
|
82
|
+
#define RTMaxStrategyNumber 30
|
|
81
83
|
|
|
82
84
|
|
|
83
85
|
#endif /* STRATNUM_H */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* POSTGRES system attribute definitions.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/access/sysattr.h
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Generic routines for table related code.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/access/table.h
|
|
@@ -22,6 +22,7 @@ extern Relation table_open(Oid relationId, LOCKMODE lockmode);
|
|
|
22
22
|
extern Relation table_openrv(const RangeVar *relation, LOCKMODE lockmode);
|
|
23
23
|
extern Relation table_openrv_extended(const RangeVar *relation,
|
|
24
24
|
LOCKMODE lockmode, bool missing_ok);
|
|
25
|
+
extern Relation try_table_open(Oid relationId, LOCKMODE lockmode);
|
|
25
26
|
extern void table_close(Relation relation, LOCKMODE lockmode);
|
|
26
27
|
|
|
27
28
|
#endif /* TABLE_H */
|