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
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* trigger.h
|
|
4
4
|
* Declarations for trigger handling.
|
|
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/commands/trigger.h
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
#ifndef TRIGGER_H
|
|
14
14
|
#define TRIGGER_H
|
|
15
15
|
|
|
16
|
+
#include "access/tableam.h"
|
|
16
17
|
#include "catalog/objectaddress.h"
|
|
17
18
|
#include "nodes/execnodes.h"
|
|
18
19
|
#include "nodes/parsenodes.h"
|
|
@@ -44,9 +45,9 @@ typedef struct TriggerData
|
|
|
44
45
|
|
|
45
46
|
/*
|
|
46
47
|
* The state for capturing old and new tuples into transition tables for a
|
|
47
|
-
* single ModifyTable node (or other operation source, e.g.
|
|
48
|
+
* single ModifyTable node (or other operation source, e.g. copyfrom.c).
|
|
48
49
|
*
|
|
49
|
-
* This is per-caller to avoid conflicts in setting
|
|
50
|
+
* This is per-caller to avoid conflicts in setting
|
|
50
51
|
* tcs_original_insert_tuple. Note, however, that the pointed-to
|
|
51
52
|
* private data may be shared across multiple callers.
|
|
52
53
|
*/
|
|
@@ -65,20 +66,12 @@ typedef struct TransitionCaptureState
|
|
|
65
66
|
bool tcs_update_new_table;
|
|
66
67
|
bool tcs_insert_new_table;
|
|
67
68
|
|
|
68
|
-
/*
|
|
69
|
-
* For UPDATE and DELETE, AfterTriggerSaveEvent may need to convert the
|
|
70
|
-
* new and old tuples from a child table's format to the format of the
|
|
71
|
-
* relation named in a query so that it is compatible with the transition
|
|
72
|
-
* tuplestores. The caller must store the conversion map here if so.
|
|
73
|
-
*/
|
|
74
|
-
TupleConversionMap *tcs_map;
|
|
75
|
-
|
|
76
69
|
/*
|
|
77
70
|
* For INSERT and COPY, it would be wasteful to convert tuples from child
|
|
78
71
|
* format to parent format after they have already been converted in the
|
|
79
72
|
* opposite direction during routing. In that case we bypass conversion
|
|
80
|
-
* and allow the inserting code (
|
|
81
|
-
* a slot containing the original tuple directly.
|
|
73
|
+
* and allow the inserting code (copyfrom.c and nodeModifyTable.c) to
|
|
74
|
+
* provide a slot containing the original tuple directly.
|
|
82
75
|
*/
|
|
83
76
|
TupleTableSlot *tcs_original_insert_tuple;
|
|
84
77
|
|
|
@@ -162,12 +155,24 @@ extern ObjectAddress CreateTrigger(CreateTrigStmt *stmt, const char *queryString
|
|
|
162
155
|
Oid relOid, Oid refRelOid, Oid constraintOid, Oid indexOid,
|
|
163
156
|
Oid funcoid, Oid parentTriggerOid, Node *whenClause,
|
|
164
157
|
bool isInternal, bool in_partition);
|
|
165
|
-
|
|
158
|
+
extern ObjectAddress CreateTriggerFiringOn(CreateTrigStmt *stmt, const char *queryString,
|
|
159
|
+
Oid relOid, Oid refRelOid, Oid constraintOid,
|
|
160
|
+
Oid indexOid, Oid funcoid, Oid parentTriggerOid,
|
|
161
|
+
Node *whenClause, bool isInternal, bool in_partition,
|
|
162
|
+
char trigger_fires_when);
|
|
163
|
+
|
|
164
|
+
extern void TriggerSetParentTrigger(Relation trigRel,
|
|
165
|
+
Oid childTrigId,
|
|
166
|
+
Oid parentTrigId,
|
|
167
|
+
Oid childTableId);
|
|
166
168
|
extern void RemoveTriggerById(Oid trigOid);
|
|
167
169
|
extern Oid get_trigger_oid(Oid relid, const char *name, bool missing_ok);
|
|
168
170
|
|
|
169
171
|
extern ObjectAddress renametrig(RenameStmt *stmt);
|
|
170
172
|
|
|
173
|
+
extern void EnableDisableTriggerNew(Relation rel, const char *tgname,
|
|
174
|
+
char fires_when, bool skip_system, bool recurse,
|
|
175
|
+
LOCKMODE lockmode);
|
|
171
176
|
extern void EnableDisableTrigger(Relation rel, const char *tgname,
|
|
172
177
|
char fires_when, bool skip_system, LOCKMODE lockmode);
|
|
173
178
|
|
|
@@ -213,7 +218,8 @@ extern void ExecARDeleteTriggers(EState *estate,
|
|
|
213
218
|
ResultRelInfo *relinfo,
|
|
214
219
|
ItemPointer tupleid,
|
|
215
220
|
HeapTuple fdw_trigtuple,
|
|
216
|
-
TransitionCaptureState *transition_capture
|
|
221
|
+
TransitionCaptureState *transition_capture,
|
|
222
|
+
bool is_crosspart_update);
|
|
217
223
|
extern bool ExecIRDeleteTriggers(EState *estate,
|
|
218
224
|
ResultRelInfo *relinfo,
|
|
219
225
|
HeapTuple trigtuple);
|
|
@@ -227,14 +233,18 @@ extern bool ExecBRUpdateTriggers(EState *estate,
|
|
|
227
233
|
ResultRelInfo *relinfo,
|
|
228
234
|
ItemPointer tupleid,
|
|
229
235
|
HeapTuple fdw_trigtuple,
|
|
230
|
-
TupleTableSlot *slot
|
|
236
|
+
TupleTableSlot *slot,
|
|
237
|
+
TM_FailureData *tmfdp);
|
|
231
238
|
extern void ExecARUpdateTriggers(EState *estate,
|
|
232
239
|
ResultRelInfo *relinfo,
|
|
240
|
+
ResultRelInfo *src_partinfo,
|
|
241
|
+
ResultRelInfo *dst_partinfo,
|
|
233
242
|
ItemPointer tupleid,
|
|
234
243
|
HeapTuple fdw_trigtuple,
|
|
235
244
|
TupleTableSlot *slot,
|
|
236
245
|
List *recheckIndexes,
|
|
237
|
-
TransitionCaptureState *transition_capture
|
|
246
|
+
TransitionCaptureState *transition_capture,
|
|
247
|
+
bool is_crosspart_update);
|
|
238
248
|
extern bool ExecIRUpdateTriggers(EState *estate,
|
|
239
249
|
ResultRelInfo *relinfo,
|
|
240
250
|
HeapTuple trigtuple,
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
#include "parser/parse_node.h"
|
|
18
18
|
|
|
19
19
|
/* GUC. Is actually of type PasswordType. */
|
|
20
|
-
extern int
|
|
20
|
+
extern PGDLLIMPORT int Password_encryption;
|
|
21
21
|
|
|
22
22
|
/* Hook to check passwords in CreateRole() and AlterRole() */
|
|
23
23
|
typedef void (*check_password_hook_type) (const char *username, const char *shadow_pass, PasswordType password_type, Datum validuntil_time, bool validuntil_null);
|
|
@@ -25,7 +25,7 @@ typedef void (*check_password_hook_type) (const char *username, const char *shad
|
|
|
25
25
|
extern PGDLLIMPORT check_password_hook_type check_password_hook;
|
|
26
26
|
|
|
27
27
|
extern Oid CreateRole(ParseState *pstate, CreateRoleStmt *stmt);
|
|
28
|
-
extern Oid AlterRole(AlterRoleStmt *stmt);
|
|
28
|
+
extern Oid AlterRole(ParseState *pstate, AlterRoleStmt *stmt);
|
|
29
29
|
extern Oid AlterRoleSet(AlterRoleSetStmt *stmt);
|
|
30
30
|
extern void DropRole(DropRoleStmt *stmt);
|
|
31
31
|
extern void GrantRole(GrantRoleStmt *stmt);
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* header file for postgres vacuum cleaner and statistics analyzer
|
|
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/commands/vacuum.h
|
|
@@ -15,6 +15,8 @@
|
|
|
15
15
|
#define VACUUM_H
|
|
16
16
|
|
|
17
17
|
#include "access/htup.h"
|
|
18
|
+
#include "access/genam.h"
|
|
19
|
+
#include "access/parallel.h"
|
|
18
20
|
#include "catalog/pg_class.h"
|
|
19
21
|
#include "catalog/pg_statistic.h"
|
|
20
22
|
#include "catalog/pg_type.h"
|
|
@@ -40,7 +42,7 @@
|
|
|
40
42
|
|
|
41
43
|
/*
|
|
42
44
|
* bulkdelete can be performed in parallel. This option can be used by
|
|
43
|
-
*
|
|
45
|
+
* index AMs that need to scan indexes to delete tuples.
|
|
44
46
|
*/
|
|
45
47
|
#define VACUUM_OPTION_PARALLEL_BULKDEL (1 << 0)
|
|
46
48
|
|
|
@@ -62,6 +64,9 @@
|
|
|
62
64
|
/* value for checking vacuum flags */
|
|
63
65
|
#define VACUUM_OPTION_MAX_VALID_VALUE ((1 << 3) - 1)
|
|
64
66
|
|
|
67
|
+
/* Abstract type for parallel vacuum state */
|
|
68
|
+
typedef struct ParallelVacuumState ParallelVacuumState;
|
|
69
|
+
|
|
65
70
|
/*----------
|
|
66
71
|
* ANALYZE builds one of these structs for each attribute (column) that is
|
|
67
72
|
* to be analyzed. The struct and subsidiary data are in anl_context,
|
|
@@ -174,30 +179,31 @@ typedef struct VacAttrStats
|
|
|
174
179
|
int rowstride;
|
|
175
180
|
} VacAttrStats;
|
|
176
181
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
VACOPT_DISABLE_PAGE_SKIPPING = 1 << 7 /* don't skip any pages */
|
|
187
|
-
} VacuumOption;
|
|
182
|
+
/* flag bits for VacuumParams->options */
|
|
183
|
+
#define VACOPT_VACUUM 0x01 /* do VACUUM */
|
|
184
|
+
#define VACOPT_ANALYZE 0x02 /* do ANALYZE */
|
|
185
|
+
#define VACOPT_VERBOSE 0x04 /* output INFO instrumentation messages */
|
|
186
|
+
#define VACOPT_FREEZE 0x08 /* FREEZE option */
|
|
187
|
+
#define VACOPT_FULL 0x10 /* FULL (non-concurrent) vacuum */
|
|
188
|
+
#define VACOPT_SKIP_LOCKED 0x20 /* skip if cannot get lock */
|
|
189
|
+
#define VACOPT_PROCESS_TOAST 0x40 /* process the TOAST table, if any */
|
|
190
|
+
#define VACOPT_DISABLE_PAGE_SKIPPING 0x80 /* don't skip any pages */
|
|
188
191
|
|
|
189
192
|
/*
|
|
190
|
-
*
|
|
193
|
+
* Values used by index_cleanup and truncate params.
|
|
191
194
|
*
|
|
192
|
-
*
|
|
193
|
-
*
|
|
195
|
+
* VACOPTVALUE_UNSPECIFIED is used as an initial placeholder when VACUUM
|
|
196
|
+
* command has no explicit value. When that happens the final usable value
|
|
197
|
+
* comes from the corresponding reloption (though the reloption default is
|
|
198
|
+
* usually used).
|
|
194
199
|
*/
|
|
195
|
-
typedef enum
|
|
200
|
+
typedef enum VacOptValue
|
|
196
201
|
{
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
202
|
+
VACOPTVALUE_UNSPECIFIED = 0,
|
|
203
|
+
VACOPTVALUE_AUTO,
|
|
204
|
+
VACOPTVALUE_DISABLED,
|
|
205
|
+
VACOPTVALUE_ENABLED,
|
|
206
|
+
} VacOptValue;
|
|
201
207
|
|
|
202
208
|
/*
|
|
203
209
|
* Parameters customizing behavior of VACUUM and ANALYZE.
|
|
@@ -207,7 +213,7 @@ typedef enum VacOptTernaryValue
|
|
|
207
213
|
*/
|
|
208
214
|
typedef struct VacuumParams
|
|
209
215
|
{
|
|
210
|
-
|
|
216
|
+
bits32 options; /* bitmask of VACOPT_* */
|
|
211
217
|
int freeze_min_age; /* min freeze age, -1 to use default */
|
|
212
218
|
int freeze_table_age; /* age at which to scan whole table */
|
|
213
219
|
int multixact_freeze_min_age; /* min multixact freeze age, -1 to
|
|
@@ -216,12 +222,10 @@ typedef struct VacuumParams
|
|
|
216
222
|
* whole table */
|
|
217
223
|
bool is_wraparound; /* force a for-wraparound vacuum */
|
|
218
224
|
int log_min_duration; /* minimum execution threshold in ms at
|
|
219
|
-
* which
|
|
220
|
-
*
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
VacOptTernaryValue truncate; /* Truncate empty pages at the end,
|
|
224
|
-
* default value depends on reloptions */
|
|
225
|
+
* which autovacuum is logged, -1 to use
|
|
226
|
+
* default */
|
|
227
|
+
VacOptValue index_cleanup; /* Do index vacuum and cleanup */
|
|
228
|
+
VacOptValue truncate; /* Truncate empty pages at the end */
|
|
225
229
|
|
|
226
230
|
/*
|
|
227
231
|
* The number of parallel vacuum workers. 0 by default which means choose
|
|
@@ -231,17 +235,34 @@ typedef struct VacuumParams
|
|
|
231
235
|
int nworkers;
|
|
232
236
|
} VacuumParams;
|
|
233
237
|
|
|
238
|
+
/*
|
|
239
|
+
* VacDeadItems stores TIDs whose index tuples are deleted by index vacuuming.
|
|
240
|
+
*/
|
|
241
|
+
typedef struct VacDeadItems
|
|
242
|
+
{
|
|
243
|
+
int max_items; /* # slots allocated in array */
|
|
244
|
+
int num_items; /* current # of entries */
|
|
245
|
+
|
|
246
|
+
/* Sorted array of TIDs to delete from indexes */
|
|
247
|
+
ItemPointerData items[FLEXIBLE_ARRAY_MEMBER];
|
|
248
|
+
} VacDeadItems;
|
|
249
|
+
|
|
250
|
+
#define MAXDEADITEMS(avail_mem) \
|
|
251
|
+
(((avail_mem) - offsetof(VacDeadItems, items)) / sizeof(ItemPointerData))
|
|
252
|
+
|
|
234
253
|
/* GUC parameters */
|
|
235
254
|
extern PGDLLIMPORT int default_statistics_target; /* PGDLLIMPORT for PostGIS */
|
|
236
|
-
extern int
|
|
237
|
-
extern int
|
|
238
|
-
extern int
|
|
239
|
-
extern int
|
|
255
|
+
extern PGDLLIMPORT int vacuum_freeze_min_age;
|
|
256
|
+
extern PGDLLIMPORT int vacuum_freeze_table_age;
|
|
257
|
+
extern PGDLLIMPORT int vacuum_multixact_freeze_min_age;
|
|
258
|
+
extern PGDLLIMPORT int vacuum_multixact_freeze_table_age;
|
|
259
|
+
extern PGDLLIMPORT int vacuum_failsafe_age;
|
|
260
|
+
extern PGDLLIMPORT int vacuum_multixact_failsafe_age;
|
|
240
261
|
|
|
241
262
|
/* Variables for cost-based parallel vacuum */
|
|
242
|
-
extern pg_atomic_uint32 *VacuumSharedCostBalance;
|
|
243
|
-
extern pg_atomic_uint32 *VacuumActiveNWorkers;
|
|
244
|
-
extern int
|
|
263
|
+
extern PGDLLIMPORT pg_atomic_uint32 *VacuumSharedCostBalance;
|
|
264
|
+
extern PGDLLIMPORT pg_atomic_uint32 *VacuumActiveNWorkers;
|
|
265
|
+
extern PGDLLIMPORT int VacuumCostBalanceLocal;
|
|
245
266
|
|
|
246
267
|
|
|
247
268
|
/* in commands/vacuum.c */
|
|
@@ -262,22 +283,48 @@ extern void vac_update_relstats(Relation relation,
|
|
|
262
283
|
bool hasindex,
|
|
263
284
|
TransactionId frozenxid,
|
|
264
285
|
MultiXactId minmulti,
|
|
286
|
+
bool *frozenxid_updated,
|
|
287
|
+
bool *minmulti_updated,
|
|
265
288
|
bool in_outer_xact);
|
|
266
|
-
extern
|
|
289
|
+
extern bool vacuum_set_xid_limits(Relation rel,
|
|
267
290
|
int freeze_min_age, int freeze_table_age,
|
|
268
291
|
int multixact_freeze_min_age,
|
|
269
292
|
int multixact_freeze_table_age,
|
|
270
293
|
TransactionId *oldestXmin,
|
|
294
|
+
MultiXactId *oldestMxact,
|
|
271
295
|
TransactionId *freezeLimit,
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
296
|
+
MultiXactId *multiXactCutoff);
|
|
297
|
+
extern bool vacuum_xid_failsafe_check(TransactionId relfrozenxid,
|
|
298
|
+
MultiXactId relminmxid);
|
|
275
299
|
extern void vac_update_datfrozenxid(void);
|
|
276
300
|
extern void vacuum_delay_point(void);
|
|
277
301
|
extern bool vacuum_is_relation_owner(Oid relid, Form_pg_class reltuple,
|
|
278
|
-
|
|
302
|
+
bits32 options);
|
|
279
303
|
extern Relation vacuum_open_relation(Oid relid, RangeVar *relation,
|
|
280
|
-
|
|
304
|
+
bits32 options, bool verbose,
|
|
305
|
+
LOCKMODE lmode);
|
|
306
|
+
extern IndexBulkDeleteResult *vac_bulkdel_one_index(IndexVacuumInfo *ivinfo,
|
|
307
|
+
IndexBulkDeleteResult *istat,
|
|
308
|
+
VacDeadItems *dead_items);
|
|
309
|
+
extern IndexBulkDeleteResult *vac_cleanup_one_index(IndexVacuumInfo *ivinfo,
|
|
310
|
+
IndexBulkDeleteResult *istat);
|
|
311
|
+
extern Size vac_max_items_to_alloc_size(int max_items);
|
|
312
|
+
|
|
313
|
+
/* in commands/vacuumparallel.c */
|
|
314
|
+
extern ParallelVacuumState *parallel_vacuum_init(Relation rel, Relation *indrels,
|
|
315
|
+
int nindexes, int nrequested_workers,
|
|
316
|
+
int max_items, int elevel,
|
|
317
|
+
BufferAccessStrategy bstrategy);
|
|
318
|
+
extern void parallel_vacuum_end(ParallelVacuumState *pvs, IndexBulkDeleteResult **istats);
|
|
319
|
+
extern VacDeadItems *parallel_vacuum_get_dead_items(ParallelVacuumState *pvs);
|
|
320
|
+
extern void parallel_vacuum_bulkdel_all_indexes(ParallelVacuumState *pvs,
|
|
321
|
+
long num_table_tuples,
|
|
322
|
+
int num_index_scans);
|
|
323
|
+
extern void parallel_vacuum_cleanup_all_indexes(ParallelVacuumState *pvs,
|
|
324
|
+
long num_table_tuples,
|
|
325
|
+
int num_index_scans,
|
|
326
|
+
bool estimated_count);
|
|
327
|
+
extern void parallel_vacuum_main(dsm_segment *seg, shm_toc *toc);
|
|
281
328
|
|
|
282
329
|
/* in commands/analyze.c */
|
|
283
330
|
extern void analyze_rel(Oid relid, RangeVar *relation,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* variable.h
|
|
3
3
|
* Routines for handling specialized SET variables.
|
|
4
4
|
*
|
|
5
|
-
* Portions Copyright (c) 1996-
|
|
5
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
6
6
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
7
7
|
*
|
|
8
8
|
* src/include/commands/variable.h
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* File and directory permission definitions
|
|
4
4
|
*
|
|
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/common/file_perm.h
|
|
@@ -41,11 +41,11 @@
|
|
|
41
41
|
#define PG_FILE_MODE_GROUP (S_IRUSR | S_IWUSR | S_IRGRP)
|
|
42
42
|
|
|
43
43
|
/* Modes for creating directories and files in the data directory */
|
|
44
|
-
extern int
|
|
45
|
-
extern int
|
|
44
|
+
extern PGDLLIMPORT int pg_dir_create_mode;
|
|
45
|
+
extern PGDLLIMPORT int pg_file_create_mode;
|
|
46
46
|
|
|
47
47
|
/* Mode mask to pass to umask() */
|
|
48
|
-
extern int
|
|
48
|
+
extern PGDLLIMPORT int pg_mode_mask;
|
|
49
49
|
|
|
50
50
|
/* Set permissions and mask based on the provided mode */
|
|
51
51
|
extern void SetDataDirectoryCreatePerm(int dataDirMode);
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* These definitions are used by both frontend and backend code.
|
|
7
7
|
*
|
|
8
|
-
* Copyright (c) 2003-
|
|
8
|
+
* Copyright (c) 2003-2022, PostgreSQL Global Development Group
|
|
9
9
|
*
|
|
10
10
|
* src/include/common/ip.h
|
|
11
11
|
*
|
|
@@ -18,12 +18,6 @@
|
|
|
18
18
|
#include "libpq/pqcomm.h" /* pgrminclude ignore */
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
#ifdef HAVE_UNIX_SOCKETS
|
|
22
|
-
#define IS_AF_UNIX(fam) ((fam) == AF_UNIX)
|
|
23
|
-
#else
|
|
24
|
-
#define IS_AF_UNIX(fam) (0)
|
|
25
|
-
#endif
|
|
26
|
-
|
|
27
21
|
extern int pg_getaddrinfo_all(const char *hostname, const char *servname,
|
|
28
22
|
const struct addrinfo *hintp,
|
|
29
23
|
struct addrinfo **result);
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* PostgreSQL's list of SQL keywords
|
|
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/common/keywords.h
|
|
@@ -22,12 +22,8 @@
|
|
|
22
22
|
#define TYPE_FUNC_NAME_KEYWORD 2
|
|
23
23
|
#define RESERVED_KEYWORD 3
|
|
24
24
|
|
|
25
|
-
#ifndef FRONTEND
|
|
26
25
|
extern PGDLLIMPORT const ScanKeywordList ScanKeywords;
|
|
27
26
|
extern PGDLLIMPORT const uint8 ScanKeywordCategories[];
|
|
28
|
-
|
|
29
|
-
extern const ScanKeywordList ScanKeywords;
|
|
30
|
-
extern const uint8 ScanKeywordCategories[];
|
|
31
|
-
#endif
|
|
27
|
+
extern PGDLLIMPORT const bool ScanKeywordBareLabel[];
|
|
32
28
|
|
|
33
29
|
#endif /* KEYWORDS_H */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Key word lookup for PostgreSQL
|
|
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/common/kwlookup.h
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* Pseudo-Random Number Generator
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) 2021-2022, PostgreSQL Global Development Group
|
|
6
|
+
*
|
|
7
|
+
* src/include/common/pg_prng.h
|
|
8
|
+
*
|
|
9
|
+
*-------------------------------------------------------------------------
|
|
10
|
+
*/
|
|
11
|
+
#ifndef PG_PRNG_H
|
|
12
|
+
#define PG_PRNG_H
|
|
13
|
+
|
|
14
|
+
/*
|
|
15
|
+
* State vector for PRNG generation. Callers should treat this as an
|
|
16
|
+
* opaque typedef, but we expose its definition to allow it to be
|
|
17
|
+
* embedded in other structs.
|
|
18
|
+
*/
|
|
19
|
+
typedef struct pg_prng_state
|
|
20
|
+
{
|
|
21
|
+
uint64 s0,
|
|
22
|
+
s1;
|
|
23
|
+
} pg_prng_state;
|
|
24
|
+
|
|
25
|
+
/*
|
|
26
|
+
* Callers not needing local PRNG series may use this global state vector,
|
|
27
|
+
* after initializing it with one of the pg_prng_...seed functions.
|
|
28
|
+
*/
|
|
29
|
+
extern PGDLLIMPORT __thread pg_prng_state pg_global_prng_state;
|
|
30
|
+
|
|
31
|
+
extern void pg_prng_seed(pg_prng_state *state, uint64 seed);
|
|
32
|
+
extern void pg_prng_fseed(pg_prng_state *state, double fseed);
|
|
33
|
+
extern bool pg_prng_seed_check(pg_prng_state *state);
|
|
34
|
+
|
|
35
|
+
/*
|
|
36
|
+
* Initialize the PRNG state from the pg_strong_random source,
|
|
37
|
+
* taking care that we don't produce all-zeroes. If this returns false,
|
|
38
|
+
* caller should initialize the PRNG state from some other random seed,
|
|
39
|
+
* using pg_prng_[f]seed.
|
|
40
|
+
*
|
|
41
|
+
* We implement this as a macro, so that the pg_strong_random() call is
|
|
42
|
+
* in the caller. If it were in pg_prng.c, programs using pg_prng.c
|
|
43
|
+
* but not needing strong seeding would nonetheless be forced to pull in
|
|
44
|
+
* pg_strong_random.c and thence OpenSSL.
|
|
45
|
+
*/
|
|
46
|
+
#define pg_prng_strong_seed(state) \
|
|
47
|
+
(pg_strong_random((void *) (state), sizeof(pg_prng_state)) ? \
|
|
48
|
+
pg_prng_seed_check(state) : false)
|
|
49
|
+
|
|
50
|
+
extern uint64 pg_prng_uint64(pg_prng_state *state);
|
|
51
|
+
extern uint64 pg_prng_uint64_range(pg_prng_state *state, uint64 rmin, uint64 rmax);
|
|
52
|
+
extern int64 pg_prng_int64(pg_prng_state *state);
|
|
53
|
+
extern int64 pg_prng_int64p(pg_prng_state *state);
|
|
54
|
+
extern uint32 pg_prng_uint32(pg_prng_state *state);
|
|
55
|
+
extern int32 pg_prng_int32(pg_prng_state *state);
|
|
56
|
+
extern int32 pg_prng_int32p(pg_prng_state *state);
|
|
57
|
+
extern double pg_prng_double(pg_prng_state *state);
|
|
58
|
+
extern bool pg_prng_bool(pg_prng_state *state);
|
|
59
|
+
|
|
60
|
+
#endif /* PG_PRNG_H */
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* relpath.h
|
|
4
4
|
* Declarations for GetRelationPath() and friends
|
|
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/common/relpath.h
|
|
@@ -56,7 +56,7 @@ typedef enum ForkNumber
|
|
|
56
56
|
|
|
57
57
|
#define FORKNAMECHARS 4 /* max chars for a fork name */
|
|
58
58
|
|
|
59
|
-
extern const char *const forkNames[];
|
|
59
|
+
extern PGDLLIMPORT const char *const forkNames[];
|
|
60
60
|
|
|
61
61
|
extern ForkNumber forkname_to_number(const char *forkName);
|
|
62
62
|
extern int forkname_chars(const char *str, ForkNumber *fork);
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* string.h
|
|
3
3
|
* string handling helpers
|
|
4
4
|
*
|
|
5
|
-
* Portions Copyright (c) 1996-
|
|
5
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
6
6
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
7
7
|
*
|
|
8
8
|
* src/include/common/string.h
|
|
@@ -10,10 +10,33 @@
|
|
|
10
10
|
#ifndef COMMON_STRING_H
|
|
11
11
|
#define COMMON_STRING_H
|
|
12
12
|
|
|
13
|
+
struct StringInfoData; /* avoid including stringinfo.h here */
|
|
14
|
+
|
|
15
|
+
typedef struct PromptInterruptContext
|
|
16
|
+
{
|
|
17
|
+
/* To avoid including <setjmp.h> here, jmpbuf is declared "void *" */
|
|
18
|
+
void *jmpbuf; /* existing longjmp buffer */
|
|
19
|
+
volatile bool *enabled; /* flag that enables longjmp-on-interrupt */
|
|
20
|
+
bool canceled; /* indicates whether cancellation occurred */
|
|
21
|
+
} PromptInterruptContext;
|
|
22
|
+
|
|
23
|
+
/* functions in src/common/string.c */
|
|
13
24
|
extern bool pg_str_endswith(const char *str, const char *end);
|
|
14
25
|
extern int strtoint(const char *pg_restrict str, char **pg_restrict endptr,
|
|
15
26
|
int base);
|
|
16
27
|
extern void pg_clean_ascii(char *str);
|
|
17
28
|
extern int pg_strip_crlf(char *str);
|
|
29
|
+
extern bool pg_is_ascii(const char *str);
|
|
30
|
+
|
|
31
|
+
/* functions in src/common/pg_get_line.c */
|
|
32
|
+
extern char *pg_get_line(FILE *stream, PromptInterruptContext *prompt_ctx);
|
|
33
|
+
extern bool pg_get_line_buf(FILE *stream, struct StringInfoData *buf);
|
|
34
|
+
extern bool pg_get_line_append(FILE *stream, struct StringInfoData *buf,
|
|
35
|
+
PromptInterruptContext *prompt_ctx);
|
|
36
|
+
|
|
37
|
+
/* functions in src/common/sprompt.c */
|
|
38
|
+
extern char *simple_prompt(const char *prompt, bool echo);
|
|
39
|
+
extern char *simple_prompt_extended(const char *prompt, bool echo,
|
|
40
|
+
PromptInterruptContext *prompt_ctx);
|
|
18
41
|
|
|
19
42
|
#endif /* COMMON_STRING_H */
|