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
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* See src/backend/utils/misc/README for more information.
|
|
17
17
|
*
|
|
18
18
|
*
|
|
19
|
-
* Copyright (c) 2000-
|
|
19
|
+
* Copyright (c) 2000-2022, PostgreSQL Global Development Group
|
|
20
20
|
* Written by Peter Eisentraut <peter_e@gmx.net>.
|
|
21
21
|
*
|
|
22
22
|
* IDENTIFICATION
|
|
@@ -30,25 +30,37 @@
|
|
|
30
30
|
#include <float.h>
|
|
31
31
|
#include <math.h>
|
|
32
32
|
#include <limits.h>
|
|
33
|
-
#
|
|
33
|
+
#ifdef HAVE_POLL_H
|
|
34
|
+
#include <poll.h>
|
|
35
|
+
#endif
|
|
36
|
+
#ifndef WIN32
|
|
37
|
+
#include <sys/mman.h>
|
|
38
|
+
#endif
|
|
34
39
|
#include <sys/stat.h>
|
|
35
40
|
#ifdef HAVE_SYSLOG
|
|
36
41
|
#include <syslog.h>
|
|
37
42
|
#endif
|
|
43
|
+
#include <unistd.h>
|
|
38
44
|
|
|
39
45
|
#include "access/commit_ts.h"
|
|
40
46
|
#include "access/gin.h"
|
|
41
47
|
#include "access/rmgr.h"
|
|
42
48
|
#include "access/tableam.h"
|
|
49
|
+
#include "access/toast_compression.h"
|
|
43
50
|
#include "access/transam.h"
|
|
44
51
|
#include "access/twophase.h"
|
|
45
52
|
#include "access/xact.h"
|
|
46
53
|
#include "access/xlog_internal.h"
|
|
54
|
+
#include "access/xlogprefetcher.h"
|
|
55
|
+
#include "access/xlogrecovery.h"
|
|
47
56
|
#include "catalog/namespace.h"
|
|
57
|
+
#include "catalog/objectaccess.h"
|
|
48
58
|
#include "catalog/pg_authid.h"
|
|
59
|
+
#include "catalog/pg_parameter_acl.h"
|
|
49
60
|
#include "catalog/storage.h"
|
|
50
61
|
#include "commands/async.h"
|
|
51
62
|
#include "commands/prepare.h"
|
|
63
|
+
#include "commands/tablespace.h"
|
|
52
64
|
#include "commands/trigger.h"
|
|
53
65
|
#include "commands/user.h"
|
|
54
66
|
#include "commands/vacuum.h"
|
|
@@ -74,6 +86,7 @@
|
|
|
74
86
|
#include "postmaster/bgworker_internals.h"
|
|
75
87
|
#include "postmaster/bgwriter.h"
|
|
76
88
|
#include "postmaster/postmaster.h"
|
|
89
|
+
#include "postmaster/startup.h"
|
|
77
90
|
#include "postmaster/syslogger.h"
|
|
78
91
|
#include "postmaster/walwriter.h"
|
|
79
92
|
#include "replication/logicallauncher.h"
|
|
@@ -93,6 +106,7 @@
|
|
|
93
106
|
#include "tcop/tcopprot.h"
|
|
94
107
|
#include "tsearch/ts_cache.h"
|
|
95
108
|
#include "utils/acl.h"
|
|
109
|
+
#include "utils/backend_status.h"
|
|
96
110
|
#include "utils/builtins.h"
|
|
97
111
|
#include "utils/bytea.h"
|
|
98
112
|
#include "utils/float.h"
|
|
@@ -103,9 +117,11 @@
|
|
|
103
117
|
#include "utils/plancache.h"
|
|
104
118
|
#include "utils/portal.h"
|
|
105
119
|
#include "utils/ps_status.h"
|
|
120
|
+
#include "utils/queryjumble.h"
|
|
106
121
|
#include "utils/rls.h"
|
|
107
122
|
#include "utils/snapmgr.h"
|
|
108
123
|
#include "utils/tzparser.h"
|
|
124
|
+
#include "utils/inval.h"
|
|
109
125
|
#include "utils/varlena.h"
|
|
110
126
|
#include "utils/xml.h"
|
|
111
127
|
|
|
@@ -147,6 +163,8 @@ extern bool optimize_bounded_sort;
|
|
|
147
163
|
|
|
148
164
|
|
|
149
165
|
|
|
166
|
+
|
|
167
|
+
|
|
150
168
|
/* global variables for check hook support */
|
|
151
169
|
|
|
152
170
|
|
|
@@ -208,13 +226,16 @@ static bool check_max_wal_senders(int *newval, void **extra, GucSource source);
|
|
|
208
226
|
static bool check_autovacuum_work_mem(int *newval, void **extra, GucSource source);
|
|
209
227
|
static bool check_effective_io_concurrency(int *newval, void **extra, GucSource source);
|
|
210
228
|
static bool check_maintenance_io_concurrency(int *newval, void **extra, GucSource source);
|
|
211
|
-
static
|
|
229
|
+
static bool check_huge_page_size(int *newval, void **extra, GucSource source);
|
|
230
|
+
static bool check_client_connection_check_interval(int *newval, void **extra, GucSource source);
|
|
231
|
+
static void assign_maintenance_io_concurrency(int newval, void *extra);
|
|
212
232
|
static bool check_application_name(char **newval, void **extra, GucSource source);
|
|
213
233
|
static void assign_application_name(const char *newval, void *extra);
|
|
214
234
|
static bool check_cluster_name(char **newval, void **extra, GucSource source);
|
|
215
235
|
static const char *show_unix_socket_permissions(void);
|
|
216
236
|
static const char *show_log_file_mode(void);
|
|
217
237
|
static const char *show_data_directory_mode(void);
|
|
238
|
+
static const char *show_in_hot_standby(void);
|
|
218
239
|
static bool check_backtrace_functions(char **newval, void **extra, GucSource source);
|
|
219
240
|
static void assign_backtrace_functions(const char *newval, void *extra);
|
|
220
241
|
static bool check_recovery_target_timeline(char **newval, void **extra, GucSource source);
|
|
@@ -236,6 +257,11 @@ static bool check_default_with_oids(bool *newval, void **extra, GucSource source
|
|
|
236
257
|
static ConfigVariable *ProcessConfigFileInternal(GucContext context,
|
|
237
258
|
bool applySettings, int elevel);
|
|
238
259
|
|
|
260
|
+
/*
|
|
261
|
+
* Track whether there were any deferred checks for custom resource managers
|
|
262
|
+
* specified in wal_consistency_checking.
|
|
263
|
+
*/
|
|
264
|
+
|
|
239
265
|
|
|
240
266
|
/*
|
|
241
267
|
* Options for enum values defined in this module.
|
|
@@ -290,6 +316,11 @@ StaticAssertDecl(lengthof(track_function_options) == (TRACK_FUNC_ALL + 2),
|
|
|
290
316
|
|
|
291
317
|
|
|
292
318
|
|
|
319
|
+
StaticAssertDecl(lengthof(stats_fetch_consistency) == (PGSTAT_FETCH_CONSISTENCY_SNAPSHOT + 2),
|
|
320
|
+
"array length mismatch");
|
|
321
|
+
|
|
322
|
+
|
|
323
|
+
|
|
293
324
|
StaticAssertDecl(lengthof(xmlbinary_options) == (XMLBINARY_HEX + 2),
|
|
294
325
|
"array length mismatch");
|
|
295
326
|
|
|
@@ -304,6 +335,12 @@ StaticAssertDecl(lengthof(xmloption_options) == (XMLOPTION_CONTENT + 2),
|
|
|
304
335
|
*/
|
|
305
336
|
|
|
306
337
|
|
|
338
|
+
/*
|
|
339
|
+
* Although only "on", "off", and "auto" are documented, we accept
|
|
340
|
+
* all the likely variants of "on" and "off".
|
|
341
|
+
*/
|
|
342
|
+
|
|
343
|
+
|
|
307
344
|
/*
|
|
308
345
|
* Although only "on", "off", and "partition" are documented, we
|
|
309
346
|
* accept all the likely variants of "on" and "off".
|
|
@@ -326,11 +363,8 @@ StaticAssertDecl(lengthof(xmloption_options) == (XMLOPTION_CONTENT + 2),
|
|
|
326
363
|
|
|
327
364
|
|
|
328
365
|
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
* variants of "on", too. "off" used to store passwords in plaintext,
|
|
332
|
-
* but we don't support that anymore.
|
|
333
|
-
*/
|
|
366
|
+
|
|
367
|
+
|
|
334
368
|
|
|
335
369
|
|
|
336
370
|
|
|
@@ -338,6 +372,9 @@ StaticAssertDecl(lengthof(xmloption_options) == (XMLOPTION_CONTENT + 2),
|
|
|
338
372
|
StaticAssertDecl(lengthof(ssl_protocol_versions_info) == (PG_TLS1_3_VERSION + 2),
|
|
339
373
|
"array length mismatch");
|
|
340
374
|
|
|
375
|
+
#ifdef HAVE_SYNCFS
|
|
376
|
+
#endif
|
|
377
|
+
|
|
341
378
|
#ifndef WIN32
|
|
342
379
|
#endif
|
|
343
380
|
#ifndef EXEC_BACKEND
|
|
@@ -345,6 +382,14 @@ StaticAssertDecl(lengthof(ssl_protocol_versions_info) == (PG_TLS1_3_VERSION + 2)
|
|
|
345
382
|
#ifdef WIN32
|
|
346
383
|
#endif
|
|
347
384
|
|
|
385
|
+
#ifdef USE_LZ4
|
|
386
|
+
#endif
|
|
387
|
+
|
|
388
|
+
#ifdef USE_LZ4
|
|
389
|
+
#endif
|
|
390
|
+
#ifdef USE_ZSTD
|
|
391
|
+
#endif
|
|
392
|
+
|
|
348
393
|
/*
|
|
349
394
|
* Options for enum values stored in other modules
|
|
350
395
|
*/
|
|
@@ -433,6 +478,7 @@ __thread char *backtrace_symbol_list;
|
|
|
433
478
|
*/
|
|
434
479
|
|
|
435
480
|
|
|
481
|
+
|
|
436
482
|
/*
|
|
437
483
|
* These variables are all dummies that don't do anything, except in some
|
|
438
484
|
* cases provide the value for SHOW to display. The real state is elsewhere
|
|
@@ -464,6 +510,9 @@ __thread char *backtrace_symbol_list;
|
|
|
464
510
|
|
|
465
511
|
|
|
466
512
|
|
|
513
|
+
|
|
514
|
+
|
|
515
|
+
|
|
467
516
|
|
|
468
517
|
|
|
469
518
|
|
|
@@ -609,6 +658,12 @@ typedef struct
|
|
|
609
658
|
#ifdef USE_PREFETCH
|
|
610
659
|
#else
|
|
611
660
|
#endif
|
|
661
|
+
#ifdef DISCARD_CACHES_ENABLED
|
|
662
|
+
#if defined(CLOBBER_CACHE_RECURSIVELY)
|
|
663
|
+
#else
|
|
664
|
+
#endif
|
|
665
|
+
#else /* not DISCARD_CACHES_ENABLED */
|
|
666
|
+
#endif /* not DISCARD_CACHES_ENABLED */
|
|
612
667
|
|
|
613
668
|
|
|
614
669
|
|
|
@@ -660,6 +715,8 @@ typedef struct
|
|
|
660
715
|
|
|
661
716
|
/* true to enable GUC_REPORT */
|
|
662
717
|
|
|
718
|
+
/* true if any GUC_REPORT reports are needed */
|
|
719
|
+
|
|
663
720
|
/* 1 when in main transaction */
|
|
664
721
|
|
|
665
722
|
|
|
@@ -673,7 +730,8 @@ static void reapply_stacked_values(struct config_generic *variable,
|
|
|
673
730
|
struct config_string *pHolder,
|
|
674
731
|
GucStack *stack,
|
|
675
732
|
const char *curvalue,
|
|
676
|
-
GucContext curscontext, GucSource cursource
|
|
733
|
+
GucContext curscontext, GucSource cursource,
|
|
734
|
+
Oid cursrole);
|
|
677
735
|
static void ShowGUCConfigOption(const char *name, DestReceiver *dest);
|
|
678
736
|
static void ShowAllGUCConfig(DestReceiver *dest);
|
|
679
737
|
static char *_ShowOption(struct config_generic *record, bool use_units);
|
|
@@ -753,15 +811,34 @@ static void replace_auto_config_value(ConfigVariable **head_p, ConfigVariable **
|
|
|
753
811
|
*/
|
|
754
812
|
|
|
755
813
|
|
|
814
|
+
/*
|
|
815
|
+
* Decide whether a proposed custom variable name is allowed.
|
|
816
|
+
*
|
|
817
|
+
* It must be two or more identifiers separated by dots, where the rules
|
|
818
|
+
* for what is an identifier agree with scan.l. (If you change this rule,
|
|
819
|
+
* adjust the errdetail in find_option().)
|
|
820
|
+
*/
|
|
821
|
+
|
|
822
|
+
|
|
756
823
|
/*
|
|
757
824
|
* Create and add a placeholder variable for a custom variable name.
|
|
758
825
|
*/
|
|
759
826
|
|
|
760
827
|
|
|
761
828
|
/*
|
|
762
|
-
* Look up option
|
|
763
|
-
*
|
|
764
|
-
*
|
|
829
|
+
* Look up option "name". If it exists, return a pointer to its record.
|
|
830
|
+
* Otherwise, if create_placeholders is true and name is a valid-looking
|
|
831
|
+
* custom variable name, we'll create and return a placeholder record.
|
|
832
|
+
* Otherwise, if skip_errors is true, then we silently return NULL for
|
|
833
|
+
* an unrecognized or invalid name. Otherwise, the error is reported at
|
|
834
|
+
* error level elevel (and we return NULL if that's less than ERROR).
|
|
835
|
+
*
|
|
836
|
+
* Note: internal errors, primarily out-of-memory, draw an elevel-level
|
|
837
|
+
* report and NULL return regardless of skip_errors. Hence, callers must
|
|
838
|
+
* handle a NULL return whenever elevel < ERROR, but they should not need
|
|
839
|
+
* to emit any additional error message. (In practice, internal errors
|
|
840
|
+
* can only happen when create_placeholders is true, so callers passing
|
|
841
|
+
* false need not think terribly hard about this.)
|
|
765
842
|
*/
|
|
766
843
|
|
|
767
844
|
|
|
@@ -777,6 +854,26 @@ static void replace_auto_config_value(ConfigVariable **head_p, ConfigVariable **
|
|
|
777
854
|
|
|
778
855
|
|
|
779
856
|
|
|
857
|
+
/*
|
|
858
|
+
* Convert a GUC name to the form that should be used in pg_parameter_acl.
|
|
859
|
+
*
|
|
860
|
+
* We need to canonicalize entries since, for example, case should not be
|
|
861
|
+
* significant. In addition, we apply the map_old_guc_names[] mapping so that
|
|
862
|
+
* any obsolete names will be converted when stored in a new PG version.
|
|
863
|
+
* Note however that this function does not verify legality of the name.
|
|
864
|
+
*
|
|
865
|
+
* The result is a palloc'd string.
|
|
866
|
+
*/
|
|
867
|
+
|
|
868
|
+
|
|
869
|
+
/*
|
|
870
|
+
* Check whether we should allow creation of a pg_parameter_acl entry
|
|
871
|
+
* for the given name. (This can be applied either before or after
|
|
872
|
+
* canonicalizing it.)
|
|
873
|
+
*/
|
|
874
|
+
|
|
875
|
+
|
|
876
|
+
|
|
780
877
|
/*
|
|
781
878
|
* Initialize GUC options during program startup.
|
|
782
879
|
*
|
|
@@ -785,6 +882,14 @@ static void replace_auto_config_value(ConfigVariable **head_p, ConfigVariable **
|
|
|
785
882
|
*/
|
|
786
883
|
|
|
787
884
|
|
|
885
|
+
/*
|
|
886
|
+
* If any custom resource managers were specified in the
|
|
887
|
+
* wal_consistency_checking GUC, processing was deferred. Now that
|
|
888
|
+
* shared_preload_libraries have been loaded, process wal_consistency_checking
|
|
889
|
+
* again.
|
|
890
|
+
*/
|
|
891
|
+
|
|
892
|
+
|
|
788
893
|
/*
|
|
789
894
|
* Assign any GUC values that can come from the server's environment.
|
|
790
895
|
*
|
|
@@ -862,8 +967,26 @@ static void replace_auto_config_value(ConfigVariable **head_p, ConfigVariable **
|
|
|
862
967
|
*/
|
|
863
968
|
|
|
864
969
|
|
|
970
|
+
/*
|
|
971
|
+
* ReportChangedGUCOptions: report recently-changed GUC_REPORT variables
|
|
972
|
+
*
|
|
973
|
+
* This is called just before we wait for a new client query.
|
|
974
|
+
*
|
|
975
|
+
* By handling things this way, we ensure that a ParameterStatus message
|
|
976
|
+
* is sent at most once per variable per query, even if the variable
|
|
977
|
+
* changed multiple times within the query. That's quite possible when
|
|
978
|
+
* using features such as function SET clauses. Function SET clauses
|
|
979
|
+
* also tend to cause values to change intraquery but eventually revert
|
|
980
|
+
* to their prevailing values; ReportGUCOption is responsible for avoiding
|
|
981
|
+
* redundant reports in such cases.
|
|
982
|
+
*/
|
|
983
|
+
|
|
984
|
+
|
|
865
985
|
/*
|
|
866
986
|
* ReportGUCOption: if appropriate, transmit option value to frontend
|
|
987
|
+
*
|
|
988
|
+
* We need not transmit the value if it's the same as what we last
|
|
989
|
+
* transmitted. However, clear the NEEDS_REPORT flag in any case.
|
|
867
990
|
*/
|
|
868
991
|
|
|
869
992
|
|
|
@@ -980,7 +1103,7 @@ static void replace_auto_config_value(ConfigVariable **head_p, ConfigVariable **
|
|
|
980
1103
|
|
|
981
1104
|
|
|
982
1105
|
/*
|
|
983
|
-
*
|
|
1106
|
+
* set_config_option: sets option `name' to given value.
|
|
984
1107
|
*
|
|
985
1108
|
* The value should be a string, which will be parsed and converted to
|
|
986
1109
|
* the appropriate data type. The context and source parameters indicate
|
|
@@ -1000,6 +1123,10 @@ static void replace_auto_config_value(ConfigVariable **head_p, ConfigVariable **
|
|
|
1000
1123
|
* its standard choice of ereport level. However some callers need to be
|
|
1001
1124
|
* able to override that choice; they should pass the ereport level to use.
|
|
1002
1125
|
*
|
|
1126
|
+
* is_reload should be true only when called from read_nondefault_variables()
|
|
1127
|
+
* or RestoreGUCState(), where we are trying to load some other process's
|
|
1128
|
+
* GUC settings into a new process.
|
|
1129
|
+
*
|
|
1003
1130
|
* Return value:
|
|
1004
1131
|
* +1: the value is valid and was successfully applied.
|
|
1005
1132
|
* 0: the name or value is invalid (but see below).
|
|
@@ -1014,6 +1141,23 @@ static void replace_auto_config_value(ConfigVariable **head_p, ConfigVariable **
|
|
|
1014
1141
|
*
|
|
1015
1142
|
* See also SetConfigOption for an external interface.
|
|
1016
1143
|
*/
|
|
1144
|
+
|
|
1145
|
+
|
|
1146
|
+
/*
|
|
1147
|
+
* set_config_option_ext: sets option `name' to given value.
|
|
1148
|
+
*
|
|
1149
|
+
* This API adds the ability to explicitly specify which role OID
|
|
1150
|
+
* is considered to be setting the value. Most external callers can use
|
|
1151
|
+
* set_config_option() and let it determine that based on the GucSource,
|
|
1152
|
+
* but there are a few that are supplying a value that was determined
|
|
1153
|
+
* in some special way and need to override the decision. Also, when
|
|
1154
|
+
* restoring a previously-assigned value, it's important to supply the
|
|
1155
|
+
* same role OID that set the value originally; so all guc.c callers
|
|
1156
|
+
* that are doing that type of thing need to call this directly.
|
|
1157
|
+
*
|
|
1158
|
+
* Generally, srole should be GetUserId() when the source is a SQL operation,
|
|
1159
|
+
* or BOOTSTRAP_SUPERUSERID if the source is a config file or similar.
|
|
1160
|
+
*/
|
|
1017
1161
|
#define newval (newval_union.boolval)
|
|
1018
1162
|
#undef newval
|
|
1019
1163
|
#define newval (newval_union.intval)
|
|
@@ -1168,6 +1312,9 @@ static void replace_auto_config_value(ConfigVariable **head_p, ConfigVariable **
|
|
|
1168
1312
|
*/
|
|
1169
1313
|
|
|
1170
1314
|
|
|
1315
|
+
/*
|
|
1316
|
+
* Functions for extensions to call to define their custom GUC variables.
|
|
1317
|
+
*/
|
|
1171
1318
|
|
|
1172
1319
|
|
|
1173
1320
|
|
|
@@ -1178,6 +1325,14 @@ static void replace_auto_config_value(ConfigVariable **head_p, ConfigVariable **
|
|
|
1178
1325
|
|
|
1179
1326
|
|
|
1180
1327
|
|
|
1328
|
+
/*
|
|
1329
|
+
* Mark the given GUC prefix as "reserved".
|
|
1330
|
+
*
|
|
1331
|
+
* This deletes any existing placeholders matching the prefix,
|
|
1332
|
+
* and then prevents new ones from being created.
|
|
1333
|
+
* Extensions should call this after they've defined all of their custom
|
|
1334
|
+
* GUCs, to help catch misspelled config-file entries.
|
|
1335
|
+
*/
|
|
1181
1336
|
|
|
1182
1337
|
|
|
1183
1338
|
|
|
@@ -1214,6 +1369,13 @@ static void replace_auto_config_value(ConfigVariable **head_p, ConfigVariable **
|
|
|
1214
1369
|
*/
|
|
1215
1370
|
|
|
1216
1371
|
|
|
1372
|
+
/*
|
|
1373
|
+
* Return some of the flags associated to the specified GUC in the shape of
|
|
1374
|
+
* a text array, and NULL if it does not exist. An empty array is returned
|
|
1375
|
+
* if the GUC exists without any meaningful flags to show.
|
|
1376
|
+
*/
|
|
1377
|
+
#define MAX_GUC_FLAGS 5
|
|
1378
|
+
|
|
1217
1379
|
/*
|
|
1218
1380
|
* Return GUC variable value by variable number; optionally return canonical
|
|
1219
1381
|
* form of name. Return value is palloc'd.
|
|
@@ -1277,6 +1439,7 @@ static void replace_auto_config_value(ConfigVariable **head_p, ConfigVariable **
|
|
|
1277
1439
|
* variable sourceline, integer
|
|
1278
1440
|
* variable source, integer
|
|
1279
1441
|
* variable scontext, integer
|
|
1442
|
+
* variable srole, OID
|
|
1280
1443
|
*/
|
|
1281
1444
|
static void
|
|
1282
1445
|
write_one_nondefault_variable(FILE *fp, struct config_generic *gconf)
|
|
@@ -1343,6 +1506,7 @@ write_one_nondefault_variable(FILE *fp, struct config_generic *gconf)
|
|
|
1343
1506
|
fwrite(&gconf->sourceline, 1, sizeof(gconf->sourceline), fp);
|
|
1344
1507
|
fwrite(&gconf->source, 1, sizeof(gconf->source), fp);
|
|
1345
1508
|
fwrite(&gconf->scontext, 1, sizeof(gconf->scontext), fp);
|
|
1509
|
+
fwrite(&gconf->srole, 1, sizeof(gconf->srole), fp);
|
|
1346
1510
|
}
|
|
1347
1511
|
|
|
1348
1512
|
void
|
|
@@ -1438,12 +1602,7 @@ read_nondefault_variables(void)
|
|
|
1438
1602
|
int varsourceline;
|
|
1439
1603
|
GucSource varsource;
|
|
1440
1604
|
GucContext varscontext;
|
|
1441
|
-
|
|
1442
|
-
/*
|
|
1443
|
-
* Assert that PGC_BACKEND/PGC_SU_BACKEND case in set_config_option() will
|
|
1444
|
-
* do the right thing.
|
|
1445
|
-
*/
|
|
1446
|
-
Assert(IsInitProcessingMode());
|
|
1605
|
+
Oid varsrole;
|
|
1447
1606
|
|
|
1448
1607
|
/*
|
|
1449
1608
|
* Open file
|
|
@@ -1467,7 +1626,7 @@ read_nondefault_variables(void)
|
|
|
1467
1626
|
if ((varname = read_string_with_null(fp)) == NULL)
|
|
1468
1627
|
break;
|
|
1469
1628
|
|
|
1470
|
-
if ((record = find_option(varname, true, FATAL)) == NULL)
|
|
1629
|
+
if ((record = find_option(varname, true, false, FATAL)) == NULL)
|
|
1471
1630
|
elog(FATAL, "failed to locate variable \"%s\" in exec config params file", varname);
|
|
1472
1631
|
|
|
1473
1632
|
if ((varvalue = read_string_with_null(fp)) == NULL)
|
|
@@ -1480,10 +1639,12 @@ read_nondefault_variables(void)
|
|
|
1480
1639
|
elog(FATAL, "invalid format of exec config params file");
|
|
1481
1640
|
if (fread(&varscontext, 1, sizeof(varscontext), fp) != sizeof(varscontext))
|
|
1482
1641
|
elog(FATAL, "invalid format of exec config params file");
|
|
1642
|
+
if (fread(&varsrole, 1, sizeof(varsrole), fp) != sizeof(varsrole))
|
|
1643
|
+
elog(FATAL, "invalid format of exec config params file");
|
|
1483
1644
|
|
|
1484
|
-
(void)
|
|
1485
|
-
|
|
1486
|
-
|
|
1645
|
+
(void) set_config_option_ext(varname, varvalue,
|
|
1646
|
+
varscontext, varsource, varsrole,
|
|
1647
|
+
GUC_ACTION_SET, true, 0, true);
|
|
1487
1648
|
if (varsourcefile[0])
|
|
1488
1649
|
set_config_sourcefile(varname, varsourcefile, varsourceline);
|
|
1489
1650
|
|
|
@@ -1498,26 +1659,13 @@ read_nondefault_variables(void)
|
|
|
1498
1659
|
|
|
1499
1660
|
/*
|
|
1500
1661
|
* can_skip_gucvar:
|
|
1501
|
-
*
|
|
1502
|
-
*
|
|
1503
|
-
* value before processing serialized values.
|
|
1504
|
-
*
|
|
1505
|
-
* A PGC_S_DEFAULT setting on the serialize side will typically match new
|
|
1506
|
-
* postmaster children, but that can be false when got_SIGHUP == true and the
|
|
1507
|
-
* pending configuration change modifies this setting. Nonetheless, we omit
|
|
1508
|
-
* PGC_S_DEFAULT settings from serialization and make up for that by restoring
|
|
1509
|
-
* defaults before applying serialized values.
|
|
1510
|
-
*
|
|
1511
|
-
* PGC_POSTMASTER variables always have the same value in every child of a
|
|
1512
|
-
* particular postmaster. Most PGC_INTERNAL variables are compile-time
|
|
1513
|
-
* constants; a few, like server_encoding and lc_ctype, are handled specially
|
|
1514
|
-
* outside the serialize/restore procedure. Therefore, SerializeGUCState()
|
|
1515
|
-
* never sends these, and RestoreGUCState() never changes them.
|
|
1662
|
+
* Decide whether SerializeGUCState can skip sending this GUC variable,
|
|
1663
|
+
* or whether RestoreGUCState can skip resetting this GUC to default.
|
|
1516
1664
|
*
|
|
1517
|
-
*
|
|
1518
|
-
*
|
|
1519
|
-
*
|
|
1520
|
-
*
|
|
1665
|
+
* It is somewhat magical and fragile that the same test works for both cases.
|
|
1666
|
+
* Realize in particular that we are very likely selecting different sets of
|
|
1667
|
+
* GUCs on the leader and worker sides! Be sure you've understood the
|
|
1668
|
+
* comments here and in RestoreGUCState thoroughly before changing this.
|
|
1521
1669
|
*/
|
|
1522
1670
|
|
|
1523
1671
|
|
|
@@ -1577,8 +1725,14 @@ read_nondefault_variables(void)
|
|
|
1577
1725
|
|
|
1578
1726
|
/*
|
|
1579
1727
|
* RestoreGUCState:
|
|
1580
|
-
* Reads the GUC state at the specified address and
|
|
1581
|
-
*
|
|
1728
|
+
* Reads the GUC state at the specified address and sets this process's
|
|
1729
|
+
* GUCs to match.
|
|
1730
|
+
*
|
|
1731
|
+
* Note that this provides the worker with only a very shallow view of the
|
|
1732
|
+
* leader's GUC state: we'll know about the currently active values, but not
|
|
1733
|
+
* about stacked or reset values. That's fine since the worker is just
|
|
1734
|
+
* executing one part of a query, within which the active values won't change
|
|
1735
|
+
* and the stacked values are invisible.
|
|
1582
1736
|
*/
|
|
1583
1737
|
|
|
1584
1738
|
|
|
@@ -1619,7 +1773,7 @@ read_nondefault_variables(void)
|
|
|
1619
1773
|
/*
|
|
1620
1774
|
* Given a GUC array, delete all settings from it that our permission
|
|
1621
1775
|
* level allows: if superuser, delete them all; if regular user, only
|
|
1622
|
-
* those that are PGC_USERSET
|
|
1776
|
+
* those that are PGC_USERSET or we have permission to set
|
|
1623
1777
|
*/
|
|
1624
1778
|
|
|
1625
1779
|
|
|
@@ -1753,6 +1907,14 @@ read_nondefault_variables(void)
|
|
|
1753
1907
|
#ifndef USE_PREFETCH
|
|
1754
1908
|
#endif /* USE_PREFETCH */
|
|
1755
1909
|
|
|
1910
|
+
#if !(defined(MAP_HUGE_MASK) && defined(MAP_HUGE_SHIFT))
|
|
1911
|
+
#endif
|
|
1912
|
+
|
|
1913
|
+
|
|
1914
|
+
|
|
1915
|
+
#ifdef USE_PREFETCH
|
|
1916
|
+
#endif
|
|
1917
|
+
|
|
1756
1918
|
|
|
1757
1919
|
|
|
1758
1920
|
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
* type.
|
|
27
27
|
*
|
|
28
28
|
*
|
|
29
|
-
* Portions Copyright (c) 1996-
|
|
29
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
30
30
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
31
31
|
*
|
|
32
32
|
* IDENTIFICATION
|
|
@@ -292,7 +292,8 @@ static Size AllocSetGetChunkSpace(MemoryContext context, void *pointer);
|
|
|
292
292
|
static bool AllocSetIsEmpty(MemoryContext context);
|
|
293
293
|
static void AllocSetStats(MemoryContext context,
|
|
294
294
|
MemoryStatsPrintFunc printfunc, void *passthru,
|
|
295
|
-
MemoryContextCounters *totals
|
|
295
|
+
MemoryContextCounters *totals,
|
|
296
|
+
bool print_to_stderr);
|
|
296
297
|
|
|
297
298
|
#ifdef MEMORY_CONTEXT_CHECKING
|
|
298
299
|
static void AllocSetCheck(MemoryContext context);
|
|
@@ -1356,11 +1357,12 @@ AllocSetIsEmpty(MemoryContext context)
|
|
|
1356
1357
|
* printfunc: if not NULL, pass a human-readable stats string to this.
|
|
1357
1358
|
* passthru: pass this pointer through to printfunc.
|
|
1358
1359
|
* totals: if not NULL, add stats about this context into *totals.
|
|
1360
|
+
* print_to_stderr: print stats to stderr if true, elog otherwise.
|
|
1359
1361
|
*/
|
|
1360
1362
|
static void
|
|
1361
1363
|
AllocSetStats(MemoryContext context,
|
|
1362
1364
|
MemoryStatsPrintFunc printfunc, void *passthru,
|
|
1363
|
-
MemoryContextCounters *totals)
|
|
1365
|
+
MemoryContextCounters *totals, bool print_to_stderr)
|
|
1364
1366
|
{
|
|
1365
1367
|
AllocSet set = (AllocSet) context;
|
|
1366
1368
|
Size nblocks = 0;
|
|
@@ -1396,10 +1398,10 @@ AllocSetStats(MemoryContext context,
|
|
|
1396
1398
|
char stats_string[200];
|
|
1397
1399
|
|
|
1398
1400
|
snprintf(stats_string, sizeof(stats_string),
|
|
1399
|
-
"%zu total in %
|
|
1401
|
+
"%zu total in %zu blocks; %zu free (%zu chunks); %zu used",
|
|
1400
1402
|
totalspace, nblocks, freespace, freechunks,
|
|
1401
1403
|
totalspace - freespace);
|
|
1402
|
-
printfunc(context, passthru, stats_string);
|
|
1404
|
+
printfunc(context, passthru, stats_string, print_to_stderr);
|
|
1403
1405
|
}
|
|
1404
1406
|
|
|
1405
1407
|
if (totals)
|