pg_query 2.2.1 → 4.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/Rakefile +2 -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 +3 -1
- data/ext/pg_query/include/access/xact.h +73 -19
- data/ext/pg_query/include/access/xlog.h +60 -155
- data/ext/pg_query/include/access/xlog_internal.h +40 -13
- 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 +145 -39
- 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 +8 -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 +44 -14
- data/ext/pg_query/include/catalog/pg_class_d.h +30 -1
- 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 +3 -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 +18 -15
- 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 -7
- 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 +55 -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 +3 -4
- 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 +2 -2
- data/ext/pg_query/include/commands/trigger.h +18 -16
- 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 +140 -15
- 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 +30 -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 +105 -23
- data/ext/pg_query/include/mb/stringinfo_mb.h +1 -1
- data/ext/pg_query/include/miscadmin.h +47 -41
- data/ext/pg_query/include/nodes/bitmapset.h +1 -1
- data/ext/pg_query/include/nodes/execnodes.h +270 -78
- 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 +322 -90
- data/ext/pg_query/include/nodes/pathnodes.h +243 -66
- data/ext/pg_query/include/nodes/pg_list.h +75 -69
- data/ext/pg_query/include/nodes/plannodes.h +111 -28
- 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 -17
- 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 +3 -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 +83 -41
- 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 +939 -113
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +43 -13
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +151 -26
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +11 -2
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +173 -30
- data/ext/pg_query/include/pg_trace.h +1 -1
- data/ext/pg_query/include/pgstat.h +449 -1238
- 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 +40 -10
- 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 +71 -46
- 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 +1419 -914
- 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 +259 -42
- data/ext/pg_query/include/replication/slot.h +22 -11
- 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 +11 -8
- data/ext/pg_query/include/storage/lockdefs.h +2 -2
- data/ext/pg_query/include/storage/lwlock.h +5 -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 +173 -59
- 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 +60 -21
- 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 +1 -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 +10 -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 +4 -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 +10 -12
- 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 -19
- data/ext/pg_query/include/utils/relcache.h +8 -5
- 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 +34 -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 +4302 -2304
- data/ext/pg_query/pg_query_deparse.c +986 -301
- data/ext/pg_query/pg_query_fingerprint.c +30 -10
- data/ext/pg_query/pg_query_json_plpgsql.c +0 -25
- data/ext/pg_query/pg_query_normalize.c +1 -1
- data/ext/pg_query/pg_query_outfuncs_json.c +54 -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_readfuncs_protobuf.c +42 -8
- 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 +20 -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 +401 -76
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +290 -46
- data/ext/pg_query/src_backend_nodes_extensible.c +1 -1
- data/ext/pg_query/src_backend_nodes_list.c +74 -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 +33874 -31261
- data/ext/pg_query/src_backend_parser_parser.c +26 -7
- data/ext/pg_query/src_backend_parser_scan.c +172 -209
- 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 +62 -23
- 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 +71 -5
- 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 +206 -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 +701 -109
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +45 -20
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +1 -18
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1233 -1259
- 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 -31
- 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 +37 -13
- data/ext/pg_query/src_port_strerror.c +9 -19
- data/ext/pg_query/src_port_strnlen.c +1 -1
- data/lib/pg_query/filter_columns.rb +1 -1
- data/lib/pg_query/fingerprint.rb +5 -1
- data/lib/pg_query/node.rb +2 -2
- data/lib/pg_query/param_refs.rb +1 -1
- data/lib/pg_query/parse.rb +8 -7
- data/lib/pg_query/pg_query_pb.rb +1108 -942
- data/lib/pg_query/truncate.rb +1 -1
- data/lib/pg_query/version.rb +1 -1
- metadata +23 -13
- 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/pg_query_ruby_freebsd.sym +0 -2
- data/ext/pg_query/src_backend_libpq_pqcomm.c +0 -659
- 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
@@ -3,7 +3,7 @@
|
|
3
3
|
* pidfile.h
|
4
4
|
* Declarations describing the data directory lock file (postmaster.pid)
|
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/utils/pidfile.h
|
@@ -5,7 +5,7 @@
|
|
5
5
|
*
|
6
6
|
* See plancache.c for comments.
|
7
7
|
*
|
8
|
-
* Portions Copyright (c) 1996-
|
8
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
9
9
|
* Portions Copyright (c) 1994, Regents of the University of California
|
10
10
|
*
|
11
11
|
* src/include/utils/plancache.h
|
@@ -35,7 +35,7 @@ typedef enum
|
|
35
35
|
} PlanCacheMode;
|
36
36
|
|
37
37
|
/* GUC parameter */
|
38
|
-
extern int
|
38
|
+
extern PGDLLIMPORT int plan_cache_mode;
|
39
39
|
|
40
40
|
#define CACHEDPLANSOURCE_MAGIC 195726186
|
41
41
|
#define CACHEDPLAN_MAGIC 953717834
|
@@ -130,7 +130,8 @@ typedef struct CachedPlanSource
|
|
130
130
|
/* State kept to help decide whether to use custom or generic plans: */
|
131
131
|
double generic_cost; /* cost of generic plan, or -1 if not known */
|
132
132
|
double total_custom_cost; /* total cost of custom plans so far */
|
133
|
-
|
133
|
+
int64 num_custom_plans; /* # of custom plans included in total */
|
134
|
+
int64 num_generic_plans; /* # of generic plans */
|
134
135
|
} CachedPlanSource;
|
135
136
|
|
136
137
|
/*
|
@@ -218,9 +219,9 @@ extern List *CachedPlanGetTargetList(CachedPlanSource *plansource,
|
|
218
219
|
|
219
220
|
extern CachedPlan *GetCachedPlan(CachedPlanSource *plansource,
|
220
221
|
ParamListInfo boundParams,
|
221
|
-
|
222
|
+
ResourceOwner owner,
|
222
223
|
QueryEnvironment *queryEnv);
|
223
|
-
extern void ReleaseCachedPlan(CachedPlan *plan,
|
224
|
+
extern void ReleaseCachedPlan(CachedPlan *plan, ResourceOwner owner);
|
224
225
|
|
225
226
|
extern bool CachedPlanAllowsSimpleValidityCheck(CachedPlanSource *plansource,
|
226
227
|
CachedPlan *plan,
|
@@ -36,7 +36,7 @@
|
|
36
36
|
* to look like NO SCROLL cursors.
|
37
37
|
*
|
38
38
|
*
|
39
|
-
* Portions Copyright (c) 1996-
|
39
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
40
40
|
* Portions Copyright (c) 1994, Regents of the University of California
|
41
41
|
*
|
42
42
|
* src/include/utils/portal.h
|
@@ -130,6 +130,7 @@ typedef struct PortalData
|
|
130
130
|
*/
|
131
131
|
SubTransactionId createSubid; /* the creating subxact */
|
132
132
|
SubTransactionId activeSubid; /* the last subxact with activity */
|
133
|
+
int createLevel; /* creating subxact's nesting level */
|
133
134
|
|
134
135
|
/* The query or queries the portal will execute */
|
135
136
|
const char *sourceText; /* text of query (as of 8.4, never NULL) */
|
@@ -160,6 +161,14 @@ typedef struct PortalData
|
|
160
161
|
/* and these are the format codes to use for the columns: */
|
161
162
|
int16 *formats; /* a format code for each column */
|
162
163
|
|
164
|
+
/*
|
165
|
+
* Outermost ActiveSnapshot for execution of the portal's queries. For
|
166
|
+
* all but a few utility commands, we require such a snapshot to exist.
|
167
|
+
* This ensures that TOAST references in query results can be detoasted,
|
168
|
+
* and helps to reduce thrashing of the process's exposed xmin.
|
169
|
+
*/
|
170
|
+
Snapshot portalSnapshot; /* active snapshot, or NULL if none */
|
171
|
+
|
163
172
|
/*
|
164
173
|
* Where we store tuples for a held cursor or a PORTAL_ONE_RETURNING or
|
165
174
|
* PORTAL_UTIL_SELECT query. (A cursor held past the end of its
|
@@ -194,17 +203,6 @@ typedef struct PortalData
|
|
194
203
|
/* Presentation data, primarily used by the pg_cursors system view */
|
195
204
|
TimestampTz creation_time; /* time at which this portal was defined */
|
196
205
|
bool visible; /* include this portal in pg_cursors? */
|
197
|
-
|
198
|
-
/* Stuff added at the end to avoid ABI break in stable branches: */
|
199
|
-
|
200
|
-
/*
|
201
|
-
* Outermost ActiveSnapshot for execution of the portal's queries. For
|
202
|
-
* all but a few utility commands, we require such a snapshot to exist.
|
203
|
-
* This ensures that TOAST references in query results can be detoasted,
|
204
|
-
* and helps to reduce thrashing of the process's exposed xmin.
|
205
|
-
*/
|
206
|
-
Snapshot portalSnapshot; /* active snapshot, or NULL if none */
|
207
|
-
int createLevel; /* creating subxact's nesting level */
|
208
206
|
} PortalData;
|
209
207
|
|
210
208
|
/*
|
@@ -4,7 +4,7 @@
|
|
4
4
|
* Access to functions to mutate the query environment and retrieve the
|
5
5
|
* actual data related to entries (if any).
|
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/utils/queryenvironment.h
|
@@ -0,0 +1,88 @@
|
|
1
|
+
/*-------------------------------------------------------------------------
|
2
|
+
*
|
3
|
+
* queryjumble.h
|
4
|
+
* Query normalization and fingerprinting.
|
5
|
+
*
|
6
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
7
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
8
|
+
*
|
9
|
+
* IDENTIFICATION
|
10
|
+
* src/include/utils/queryjumble.h
|
11
|
+
*
|
12
|
+
*-------------------------------------------------------------------------
|
13
|
+
*/
|
14
|
+
#ifndef QUERYJUBLE_H
|
15
|
+
#define QUERYJUBLE_H
|
16
|
+
|
17
|
+
#include "nodes/parsenodes.h"
|
18
|
+
|
19
|
+
#define JUMBLE_SIZE 1024 /* query serialization buffer size */
|
20
|
+
|
21
|
+
/*
|
22
|
+
* Struct for tracking locations/lengths of constants during normalization
|
23
|
+
*/
|
24
|
+
typedef struct LocationLen
|
25
|
+
{
|
26
|
+
int location; /* start offset in query text */
|
27
|
+
int length; /* length in bytes, or -1 to ignore */
|
28
|
+
} LocationLen;
|
29
|
+
|
30
|
+
/*
|
31
|
+
* Working state for computing a query jumble and producing a normalized
|
32
|
+
* query string
|
33
|
+
*/
|
34
|
+
typedef struct JumbleState
|
35
|
+
{
|
36
|
+
/* Jumble of current query tree */
|
37
|
+
unsigned char *jumble;
|
38
|
+
|
39
|
+
/* Number of bytes used in jumble[] */
|
40
|
+
Size jumble_len;
|
41
|
+
|
42
|
+
/* Array of locations of constants that should be removed */
|
43
|
+
LocationLen *clocations;
|
44
|
+
|
45
|
+
/* Allocated length of clocations array */
|
46
|
+
int clocations_buf_size;
|
47
|
+
|
48
|
+
/* Current number of valid entries in clocations array */
|
49
|
+
int clocations_count;
|
50
|
+
|
51
|
+
/* highest Param id we've seen, in order to start normalization correctly */
|
52
|
+
int highest_extern_param_id;
|
53
|
+
} JumbleState;
|
54
|
+
|
55
|
+
/* Values for the compute_query_id GUC */
|
56
|
+
enum ComputeQueryIdType
|
57
|
+
{
|
58
|
+
COMPUTE_QUERY_ID_OFF,
|
59
|
+
COMPUTE_QUERY_ID_ON,
|
60
|
+
COMPUTE_QUERY_ID_AUTO,
|
61
|
+
COMPUTE_QUERY_ID_REGRESS
|
62
|
+
};
|
63
|
+
|
64
|
+
/* GUC parameters */
|
65
|
+
extern PGDLLIMPORT int compute_query_id;
|
66
|
+
|
67
|
+
|
68
|
+
extern const char *CleanQuerytext(const char *query, int *location, int *len);
|
69
|
+
extern JumbleState *JumbleQuery(Query *query, const char *querytext);
|
70
|
+
extern void EnableQueryId(void);
|
71
|
+
|
72
|
+
extern PGDLLIMPORT bool query_id_enabled;
|
73
|
+
|
74
|
+
/*
|
75
|
+
* Returns whether query identifier computation has been enabled, either
|
76
|
+
* directly in the GUC or by a module when the setting is 'auto'.
|
77
|
+
*/
|
78
|
+
static inline bool
|
79
|
+
IsQueryIdEnabled(void)
|
80
|
+
{
|
81
|
+
if (compute_query_id == COMPUTE_QUERY_ID_OFF)
|
82
|
+
return false;
|
83
|
+
if (compute_query_id == COMPUTE_QUERY_ID_ON)
|
84
|
+
return true;
|
85
|
+
return query_id_enabled;
|
86
|
+
}
|
87
|
+
|
88
|
+
#endif /* QUERYJUMBLE_H */
|
@@ -3,7 +3,7 @@
|
|
3
3
|
* regproc.h
|
4
4
|
* Functions for the built-in types regproc, regclass, regtype, etc.
|
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/utils/regproc.h
|
@@ -15,14 +15,25 @@
|
|
15
15
|
|
16
16
|
#include "nodes/pg_list.h"
|
17
17
|
|
18
|
+
/* Control flags for format_procedure_extended */
|
19
|
+
#define FORMAT_PROC_INVALID_AS_NULL 0x01 /* NULL if undefined */
|
20
|
+
#define FORMAT_PROC_FORCE_QUALIFY 0x02 /* force qualification */
|
21
|
+
extern char *format_procedure_extended(Oid procedure_oid, bits16 flags);
|
22
|
+
|
23
|
+
/* Control flags for format_operator_extended */
|
24
|
+
#define FORMAT_OPERATOR_INVALID_AS_NULL 0x01 /* NULL if undefined */
|
25
|
+
#define FORMAT_OPERATOR_FORCE_QUALIFY 0x02 /* force qualification */
|
26
|
+
extern char *format_operator_extended(Oid operator_oid, bits16 flags);
|
27
|
+
|
18
28
|
extern List *stringToQualifiedNameList(const char *string);
|
19
29
|
extern char *format_procedure(Oid procedure_oid);
|
20
30
|
extern char *format_procedure_qualified(Oid procedure_oid);
|
21
31
|
extern void format_procedure_parts(Oid operator_oid, List **objnames,
|
22
|
-
List **objargs);
|
32
|
+
List **objargs, bool missing_ok);
|
33
|
+
|
23
34
|
extern char *format_operator(Oid operator_oid);
|
24
35
|
extern char *format_operator_qualified(Oid operator_oid);
|
25
36
|
extern void format_operator_parts(Oid operator_oid, List **objnames,
|
26
|
-
List **objargs);
|
37
|
+
List **objargs, bool missing_ok);
|
27
38
|
|
28
39
|
#endif
|
@@ -4,7 +4,7 @@
|
|
4
4
|
* POSTGRES relation descriptor (a/k/a relcache entry) 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/utils/rel.h
|
@@ -24,6 +24,7 @@
|
|
24
24
|
#include "rewrite/prs2lock.h"
|
25
25
|
#include "storage/block.h"
|
26
26
|
#include "storage/relfilenode.h"
|
27
|
+
#include "storage/smgr.h"
|
27
28
|
#include "utils/relcache.h"
|
28
29
|
#include "utils/reltrigger.h"
|
29
30
|
|
@@ -53,8 +54,7 @@ typedef LockInfoData *LockInfo;
|
|
53
54
|
typedef struct RelationData
|
54
55
|
{
|
55
56
|
RelFileNode rd_node; /* relation physical identifier */
|
56
|
-
/*
|
57
|
-
struct SMgrRelationData *rd_smgr; /* cached file handle, or NULL */
|
57
|
+
SMgrRelation rd_smgr; /* cached file handle, or NULL */
|
58
58
|
int rd_refcnt; /* reference count */
|
59
59
|
BackendId rd_backend; /* owning backend id, if temporary relation */
|
60
60
|
bool rd_islocaltemp; /* rel is a temp rel of this session */
|
@@ -128,6 +128,19 @@ typedef struct RelationData
|
|
128
128
|
PartitionDesc rd_partdesc; /* partition descriptor, or NULL */
|
129
129
|
MemoryContext rd_pdcxt; /* private context for rd_partdesc, if any */
|
130
130
|
|
131
|
+
/* Same as above, for partdescs that omit detached partitions */
|
132
|
+
PartitionDesc rd_partdesc_nodetached; /* partdesc w/o detached parts */
|
133
|
+
MemoryContext rd_pddcxt; /* for rd_partdesc_nodetached, if any */
|
134
|
+
|
135
|
+
/*
|
136
|
+
* pg_inherits.xmin of the partition that was excluded in
|
137
|
+
* rd_partdesc_nodetached. This informs a future user of that partdesc:
|
138
|
+
* if this value is not in progress for the active snapshot, then the
|
139
|
+
* partdesc can be used, otherwise they have to build a new one. (This
|
140
|
+
* matches what find_inheritance_children_extended would do).
|
141
|
+
*/
|
142
|
+
TransactionId rd_partdesc_nodetached_xmin;
|
143
|
+
|
131
144
|
/* data managed by RelationGetPartitionQual: */
|
132
145
|
List *rd_partcheck; /* partition CHECK quals */
|
133
146
|
bool rd_partcheckvalid; /* true if list has been computed */
|
@@ -147,7 +160,7 @@ typedef struct RelationData
|
|
147
160
|
Bitmapset *rd_pkattr; /* cols included in primary key */
|
148
161
|
Bitmapset *rd_idattr; /* included in replica identity index */
|
149
162
|
|
150
|
-
|
163
|
+
PublicationDesc *rd_pubdesc; /* publication descriptor, or NULL */
|
151
164
|
|
152
165
|
/*
|
153
166
|
* rd_options is set whenever rd_rel is loaded into the relcache entry.
|
@@ -232,6 +245,7 @@ typedef struct RelationData
|
|
232
245
|
*/
|
233
246
|
Oid rd_toastoid; /* Real TOAST table's OID, or InvalidOid */
|
234
247
|
|
248
|
+
bool pgstat_enabled; /* should relation stats be counted */
|
235
249
|
/* use "struct" here to avoid needing to include pgstat.h: */
|
236
250
|
struct PgStat_TableStatus *pgstat_info; /* statistics collection area */
|
237
251
|
} RelationData;
|
@@ -294,6 +308,14 @@ typedef struct AutoVacOpts
|
|
294
308
|
float8 analyze_scale_factor;
|
295
309
|
} AutoVacOpts;
|
296
310
|
|
311
|
+
/* StdRdOptions->vacuum_index_cleanup values */
|
312
|
+
typedef enum StdRdOptIndexCleanup
|
313
|
+
{
|
314
|
+
STDRD_OPTION_VACUUM_INDEX_CLEANUP_AUTO = 0,
|
315
|
+
STDRD_OPTION_VACUUM_INDEX_CLEANUP_OFF,
|
316
|
+
STDRD_OPTION_VACUUM_INDEX_CLEANUP_ON
|
317
|
+
} StdRdOptIndexCleanup;
|
318
|
+
|
297
319
|
typedef struct StdRdOptions
|
298
320
|
{
|
299
321
|
int32 vl_len_; /* varlena header (do not touch directly!) */
|
@@ -302,7 +324,7 @@ typedef struct StdRdOptions
|
|
302
324
|
AutoVacOpts autovacuum; /* autovacuum-related options */
|
303
325
|
bool user_catalog_table; /* use as an additional catalog relation */
|
304
326
|
int parallel_workers; /* max number of parallel workers */
|
305
|
-
|
327
|
+
StdRdOptIndexCleanup vacuum_index_cleanup; /* controls index vacuuming */
|
306
328
|
bool vacuum_truncate; /* enables vacuum to truncate a relation */
|
307
329
|
} StdRdOptions;
|
308
330
|
|
@@ -375,6 +397,7 @@ typedef struct ViewOptions
|
|
375
397
|
{
|
376
398
|
int32 vl_len_; /* varlena header (do not touch directly!) */
|
377
399
|
bool security_barrier;
|
400
|
+
bool security_invoker;
|
378
401
|
ViewOptCheckOption check_option;
|
379
402
|
} ViewOptions;
|
380
403
|
|
@@ -388,6 +411,16 @@ typedef struct ViewOptions
|
|
388
411
|
(relation)->rd_options ? \
|
389
412
|
((ViewOptions *) (relation)->rd_options)->security_barrier : false)
|
390
413
|
|
414
|
+
/*
|
415
|
+
* RelationHasSecurityInvoker
|
416
|
+
* Returns true if the relation has the security_invoker property set.
|
417
|
+
* Note multiple eval of argument!
|
418
|
+
*/
|
419
|
+
#define RelationHasSecurityInvoker(relation) \
|
420
|
+
(AssertMacro(relation->rd_rel->relkind == RELKIND_VIEW), \
|
421
|
+
(relation)->rd_options ? \
|
422
|
+
((ViewOptions *) (relation)->rd_options)->security_invoker : false)
|
423
|
+
|
391
424
|
/*
|
392
425
|
* RelationHasCheckOption
|
393
426
|
* Returns true if the relation is a view defined with either the local
|
@@ -506,14 +539,25 @@ typedef struct ViewOptions
|
|
506
539
|
((relation)->rd_rel->relfilenode == InvalidOid))
|
507
540
|
|
508
541
|
/*
|
509
|
-
*
|
510
|
-
*
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
542
|
+
* RelationGetSmgr
|
543
|
+
* Returns smgr file handle for a relation, opening it if needed.
|
544
|
+
*
|
545
|
+
* Very little code is authorized to touch rel->rd_smgr directly. Instead
|
546
|
+
* use this function to fetch its value.
|
547
|
+
*
|
548
|
+
* Note: since a relcache flush can cause the file handle to be closed again,
|
549
|
+
* it's unwise to hold onto the pointer returned by this function for any
|
550
|
+
* long period. Recommended practice is to just re-execute RelationGetSmgr
|
551
|
+
* each time you need to access the SMgrRelation. It's quite cheap in
|
552
|
+
* comparison to whatever an smgr function is going to do.
|
553
|
+
*/
|
554
|
+
static inline SMgrRelation
|
555
|
+
RelationGetSmgr(Relation rel)
|
556
|
+
{
|
557
|
+
if (unlikely(rel->rd_smgr == NULL))
|
558
|
+
smgrsetowner(&(rel->rd_smgr), smgropen(rel->rd_node, rel->rd_backend));
|
559
|
+
return rel->rd_smgr;
|
560
|
+
}
|
517
561
|
|
518
562
|
/*
|
519
563
|
* RelationCloseSmgr
|
@@ -535,7 +579,8 @@ typedef struct ViewOptions
|
|
535
579
|
* Fetch relation's current insertion target block.
|
536
580
|
*
|
537
581
|
* Returns InvalidBlockNumber if there is no current target block. Note
|
538
|
-
* that the target block status is discarded on any smgr-level invalidation
|
582
|
+
* that the target block status is discarded on any smgr-level invalidation,
|
583
|
+
* so there's no need to re-open the smgr handle if it's not currently open.
|
539
584
|
*/
|
540
585
|
#define RelationGetTargetBlock(relation) \
|
541
586
|
( (relation)->rd_smgr != NULL ? (relation)->rd_smgr->smgr_targblock : InvalidBlockNumber )
|
@@ -546,10 +591,16 @@ typedef struct ViewOptions
|
|
546
591
|
*/
|
547
592
|
#define RelationSetTargetBlock(relation, targblock) \
|
548
593
|
do { \
|
549
|
-
|
550
|
-
(relation)->rd_smgr->smgr_targblock = (targblock); \
|
594
|
+
RelationGetSmgr(relation)->smgr_targblock = (targblock); \
|
551
595
|
} while (0)
|
552
596
|
|
597
|
+
/*
|
598
|
+
* RelationIsPermanent
|
599
|
+
* True if relation is permanent.
|
600
|
+
*/
|
601
|
+
#define RelationIsPermanent(relation) \
|
602
|
+
((relation)->rd_rel->relpersistence == RELPERSISTENCE_PERMANENT)
|
603
|
+
|
553
604
|
/*
|
554
605
|
* RelationNeedsWAL
|
555
606
|
* True if relation needs WAL.
|
@@ -559,8 +610,7 @@ typedef struct ViewOptions
|
|
559
610
|
* RelFileNode" in src/backend/access/transam/README.
|
560
611
|
*/
|
561
612
|
#define RelationNeedsWAL(relation) \
|
562
|
-
((relation)
|
563
|
-
(XLogIsNeeded() || \
|
613
|
+
(RelationIsPermanent(relation) && (XLogIsNeeded() || \
|
564
614
|
(relation->rd_createSubid == InvalidSubTransactionId && \
|
565
615
|
relation->rd_firstRelfilenodeSubid == InvalidSubTransactionId)))
|
566
616
|
|
@@ -626,7 +676,8 @@ typedef struct ViewOptions
|
|
626
676
|
* WAL stream.
|
627
677
|
*
|
628
678
|
* We don't log information for unlogged tables (since they don't WAL log
|
629
|
-
* anyway)
|
679
|
+
* anyway), for foreign tables (since they don't WAL log, either),
|
680
|
+
* and for system tables (their content is hard to make sense of, and
|
630
681
|
* it would complicate decoding slightly for little gain). Note that we *do*
|
631
682
|
* log information for user defined catalog tables since they presumably are
|
632
683
|
* interesting to the user...
|
@@ -634,6 +685,7 @@ typedef struct ViewOptions
|
|
634
685
|
#define RelationIsLogicallyLogged(relation) \
|
635
686
|
(XLogLogicalInfoActive() && \
|
636
687
|
RelationNeedsWAL(relation) && \
|
688
|
+
(relation)->rd_rel->relkind != RELKIND_FOREIGN_TABLE && \
|
637
689
|
!IsCatalogRelation(relation))
|
638
690
|
|
639
691
|
/* routines in utils/cache/relcache.c */
|
@@ -4,7 +4,7 @@
|
|
4
4
|
* Relation descriptor cache 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/utils/relcache.h
|
@@ -64,6 +64,8 @@ typedef enum IndexAttrBitmapKind
|
|
64
64
|
extern Bitmapset *RelationGetIndexAttrBitmap(Relation relation,
|
65
65
|
IndexAttrBitmapKind attrKind);
|
66
66
|
|
67
|
+
extern Bitmapset *RelationGetIdentityKeyBitmap(Relation relation);
|
68
|
+
|
67
69
|
extern void RelationGetExclusionInfo(Relation indexRelation,
|
68
70
|
Oid **operators,
|
69
71
|
Oid **procs,
|
@@ -72,8 +74,9 @@ extern void RelationGetExclusionInfo(Relation indexRelation,
|
|
72
74
|
extern void RelationInitIndexAccessInfo(Relation relation);
|
73
75
|
|
74
76
|
/* caller must include pg_publication.h */
|
75
|
-
struct
|
76
|
-
extern
|
77
|
+
struct PublicationDesc;
|
78
|
+
extern void RelationBuildPublicationDesc(Relation relation,
|
79
|
+
struct PublicationDesc *pubdesc);
|
77
80
|
|
78
81
|
extern void RelationInitTableAccessMethod(Relation relation);
|
79
82
|
|
@@ -142,9 +145,9 @@ extern void RelationCacheInitFilePostInvalidate(void);
|
|
142
145
|
extern void RelationCacheInitFileRemove(void);
|
143
146
|
|
144
147
|
/* should be used only by relcache.c and catcache.c */
|
145
|
-
extern bool criticalRelcachesBuilt;
|
148
|
+
extern PGDLLIMPORT bool criticalRelcachesBuilt;
|
146
149
|
|
147
150
|
/* should be used only by relcache.c and postinit.c */
|
148
|
-
extern bool criticalSharedRelcachesBuilt;
|
151
|
+
extern PGDLLIMPORT bool criticalSharedRelcachesBuilt;
|
149
152
|
|
150
153
|
#endif /* RELCACHE_H */
|
@@ -4,7 +4,7 @@
|
|
4
4
|
* POSTGRES relation trigger 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/utils/reltrigger.h
|
@@ -9,7 +9,7 @@
|
|
9
9
|
* See utils/resowner/README for more info.
|
10
10
|
*
|
11
11
|
*
|
12
|
-
* Portions Copyright (c) 1996-
|
12
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
13
13
|
* Portions Copyright (c) 1994, Regents of the University of California
|
14
14
|
*
|
15
15
|
* src/include/utils/resowner.h
|
@@ -4,7 +4,7 @@
|
|
4
4
|
* Header file for Row Level Security (RLS) utility commands to be used
|
5
5
|
* with the rowsecurity feature.
|
6
6
|
*
|
7
|
-
* Copyright (c) 2007-
|
7
|
+
* Copyright (c) 2007-2022, PostgreSQL Global Development Group
|
8
8
|
*
|
9
9
|
* src/include/utils/rls.h
|
10
10
|
*
|
@@ -14,7 +14,7 @@
|
|
14
14
|
#define RLS_H
|
15
15
|
|
16
16
|
/* GUC variable */
|
17
|
-
extern bool row_security;
|
17
|
+
extern PGDLLIMPORT bool row_security;
|
18
18
|
|
19
19
|
/*
|
20
20
|
* Used by callers of check_enable_rls.
|
@@ -3,7 +3,7 @@
|
|
3
3
|
* ruleutils.h
|
4
4
|
* Declarations for ruleutils.c
|
5
5
|
*
|
6
|
-
* Portions Copyright (c) 1996-
|
6
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
8
8
|
*
|
9
9
|
* src/include/utils/ruleutils.h
|
@@ -23,6 +23,7 @@ struct PlannedStmt;
|
|
23
23
|
|
24
24
|
extern char *pg_get_indexdef_string(Oid indexrelid);
|
25
25
|
extern char *pg_get_indexdef_columns(Oid indexrelid, bool pretty);
|
26
|
+
extern char *pg_get_querydef(Query *query, bool pretty);
|
26
27
|
|
27
28
|
extern char *pg_get_partkeydef_columns(Oid relid, bool pretty);
|
28
29
|
extern char *pg_get_partconstrdef_string(Oid partitionId, char *aliasname);
|
@@ -41,4 +42,6 @@ extern char *generate_collation_name(Oid collid);
|
|
41
42
|
extern char *generate_opclass_name(Oid opclass);
|
42
43
|
extern char *get_range_partbound_string(List *bound_datums);
|
43
44
|
|
45
|
+
extern char *pg_get_statisticsobjdef_string(Oid statextid);
|
46
|
+
|
44
47
|
#endif /* RULEUTILS_H */
|
@@ -3,7 +3,7 @@
|
|
3
3
|
* sharedtuplestore.h
|
4
4
|
* Simple mechanism for sharing tuples between backends.
|
5
5
|
*
|
6
|
-
* Portions Copyright (c) 1996-
|
6
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
8
8
|
*
|
9
9
|
* src/include/utils/sharedtuplestore.h
|
@@ -3,7 +3,7 @@
|
|
3
3
|
* snapmgr.h
|
4
4
|
* POSTGRES snapshot manager
|
5
5
|
*
|
6
|
-
* Portions Copyright (c) 1996-
|
6
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
8
8
|
*
|
9
9
|
* src/include/utils/snapmgr.h
|
@@ -37,8 +37,7 @@
|
|
37
37
|
*/
|
38
38
|
#define RelationAllowsEarlyPruning(rel) \
|
39
39
|
( \
|
40
|
-
(rel)
|
41
|
-
&& !IsCatalogRelation(rel) \
|
40
|
+
RelationIsPermanent(rel) && !IsCatalogRelation(rel) \
|
42
41
|
&& !RelationIsAccessibleInLogicalDecoding(rel) \
|
43
42
|
)
|
44
43
|
|
@@ -52,13 +51,12 @@ extern Size SnapMgrShmemSize(void);
|
|
52
51
|
extern void SnapMgrInit(void);
|
53
52
|
extern TimestampTz GetSnapshotCurrentTimestamp(void);
|
54
53
|
extern TimestampTz GetOldSnapshotThresholdTimestamp(void);
|
54
|
+
extern void SnapshotTooOldMagicForTest(void);
|
55
55
|
|
56
|
-
extern bool FirstSnapshotSet;
|
56
|
+
extern PGDLLIMPORT bool FirstSnapshotSet;
|
57
57
|
|
58
58
|
extern PGDLLIMPORT TransactionId TransactionXmin;
|
59
59
|
extern PGDLLIMPORT TransactionId RecentXmin;
|
60
|
-
extern PGDLLIMPORT TransactionId RecentGlobalXmin;
|
61
|
-
extern PGDLLIMPORT TransactionId RecentGlobalDataXmin;
|
62
60
|
|
63
61
|
/* Variables representing various special snapshot semantics */
|
64
62
|
extern PGDLLIMPORT SnapshotData SnapshotSelfData;
|
@@ -78,11 +76,12 @@ extern PGDLLIMPORT SnapshotData CatalogSnapshotData;
|
|
78
76
|
|
79
77
|
/*
|
80
78
|
* Similarly, some initialization is required for a NonVacuumable snapshot.
|
81
|
-
* The caller must supply the
|
79
|
+
* The caller must supply the visibility cutoff state to use (c.f.
|
80
|
+
* GlobalVisTestFor()).
|
82
81
|
*/
|
83
|
-
#define InitNonVacuumableSnapshot(snapshotdata,
|
82
|
+
#define InitNonVacuumableSnapshot(snapshotdata, vistestp) \
|
84
83
|
((snapshotdata).snapshot_type = SNAPSHOT_NON_VACUUMABLE, \
|
85
|
-
(snapshotdata).
|
84
|
+
(snapshotdata).vistest = (vistestp))
|
86
85
|
|
87
86
|
/*
|
88
87
|
* Similarly, some initialization is required for SnapshotToast. We need
|
@@ -98,6 +97,11 @@ extern PGDLLIMPORT SnapshotData CatalogSnapshotData;
|
|
98
97
|
((snapshot)->snapshot_type == SNAPSHOT_MVCC || \
|
99
98
|
(snapshot)->snapshot_type == SNAPSHOT_HISTORIC_MVCC)
|
100
99
|
|
100
|
+
static inline bool
|
101
|
+
OldSnapshotThresholdActive(void)
|
102
|
+
{
|
103
|
+
return old_snapshot_threshold >= 0;
|
104
|
+
}
|
101
105
|
|
102
106
|
extern Snapshot GetTransactionSnapshot(void);
|
103
107
|
extern Snapshot GetLatestSnapshot(void);
|
@@ -122,8 +126,6 @@ extern void UnregisterSnapshot(Snapshot snapshot);
|
|
122
126
|
extern Snapshot RegisterSnapshotOnOwner(Snapshot snapshot, ResourceOwner owner);
|
123
127
|
extern void UnregisterSnapshotFromOwner(Snapshot snapshot, ResourceOwner owner);
|
124
128
|
|
125
|
-
extern FullTransactionId GetFullRecentGlobalXmin(void);
|
126
|
-
|
127
129
|
extern void AtSubCommit_Snapshot(int level);
|
128
130
|
extern void AtSubAbort_Snapshot(int level);
|
129
131
|
extern void AtEOXact_Snapshot(bool isCommit, bool resetXmin);
|
@@ -131,14 +133,32 @@ extern void AtEOXact_Snapshot(bool isCommit, bool resetXmin);
|
|
131
133
|
extern void ImportSnapshot(const char *idstr);
|
132
134
|
extern bool XactHasExportedSnapshots(void);
|
133
135
|
extern void DeleteAllExportedSnapshotFiles(void);
|
136
|
+
extern void WaitForOlderSnapshots(TransactionId limitXmin, bool progress);
|
134
137
|
extern bool ThereAreNoPriorRegisteredSnapshots(void);
|
135
|
-
extern
|
136
|
-
|
138
|
+
extern bool HaveRegisteredOrActiveSnapshot(void);
|
139
|
+
extern bool TransactionIdLimitedForOldSnapshots(TransactionId recentXmin,
|
140
|
+
Relation relation,
|
141
|
+
TransactionId *limit_xid,
|
142
|
+
TimestampTz *limit_ts);
|
143
|
+
extern void SetOldSnapshotThresholdTimestamp(TimestampTz ts, TransactionId xlimit);
|
137
144
|
extern void MaintainOldSnapshotTimeMapping(TimestampTz whenTaken,
|
138
145
|
TransactionId xmin);
|
139
146
|
|
140
147
|
extern char *ExportSnapshot(Snapshot snapshot);
|
141
148
|
|
149
|
+
/*
|
150
|
+
* These live in procarray.c because they're intimately linked to the
|
151
|
+
* procarray contents, but thematically they better fit into snapmgr.h.
|
152
|
+
*/
|
153
|
+
typedef struct GlobalVisState GlobalVisState;
|
154
|
+
extern GlobalVisState *GlobalVisTestFor(Relation rel);
|
155
|
+
extern bool GlobalVisTestIsRemovableXid(GlobalVisState *state, TransactionId xid);
|
156
|
+
extern bool GlobalVisTestIsRemovableFullXid(GlobalVisState *state, FullTransactionId fxid);
|
157
|
+
extern FullTransactionId GlobalVisTestNonRemovableFullHorizon(GlobalVisState *state);
|
158
|
+
extern TransactionId GlobalVisTestNonRemovableHorizon(GlobalVisState *state);
|
159
|
+
extern bool GlobalVisCheckRemovableXid(Relation rel, TransactionId xid);
|
160
|
+
extern bool GlobalVisCheckRemovableFullXid(Relation rel, FullTransactionId fxid);
|
161
|
+
|
142
162
|
/*
|
143
163
|
* Utility functions for implementing visibility routines in table AMs.
|
144
164
|
*/
|
@@ -154,6 +174,6 @@ extern bool HistoricSnapshotActive(void);
|
|
154
174
|
extern Size EstimateSnapshotSpace(Snapshot snapshot);
|
155
175
|
extern void SerializeSnapshot(Snapshot snapshot, char *start_address);
|
156
176
|
extern Snapshot RestoreSnapshot(char *start_address);
|
157
|
-
extern void RestoreTransactionSnapshot(Snapshot snapshot, void *
|
177
|
+
extern void RestoreTransactionSnapshot(Snapshot snapshot, void *source_pgproc);
|
158
178
|
|
159
179
|
#endif /* SNAPMGR_H */
|