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
data/ext/pg_query/include/port.h
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* port.h
|
|
4
4
|
* Header for src/port/ compatibility functions.
|
|
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/port.h
|
|
@@ -14,8 +14,6 @@
|
|
|
14
14
|
#define PG_PORT_H
|
|
15
15
|
|
|
16
16
|
#include <ctype.h>
|
|
17
|
-
#include <netdb.h>
|
|
18
|
-
#include <pwd.h>
|
|
19
17
|
|
|
20
18
|
/*
|
|
21
19
|
* Windows has enough specialized port stuff that we push most of it off
|
|
@@ -37,6 +35,11 @@ typedef SOCKET pgsocket;
|
|
|
37
35
|
#define PGINVALID_SOCKET INVALID_SOCKET
|
|
38
36
|
#endif
|
|
39
37
|
|
|
38
|
+
/* if platform lacks socklen_t, we assume this will work */
|
|
39
|
+
#ifndef HAVE_SOCKLEN_T
|
|
40
|
+
typedef unsigned int socklen_t;
|
|
41
|
+
#endif
|
|
42
|
+
|
|
40
43
|
/* non-blocking */
|
|
41
44
|
extern bool pg_set_noblock(pgsocket sock);
|
|
42
45
|
extern bool pg_set_block(pgsocket sock);
|
|
@@ -75,34 +78,62 @@ extern void get_parent_directory(char *path);
|
|
|
75
78
|
extern char **pgfnames(const char *path);
|
|
76
79
|
extern void pgfnames_cleanup(char **filenames);
|
|
77
80
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
*
|
|
81
|
-
* By making this a macro we avoid needing to include path.c in libpq.
|
|
82
|
-
*/
|
|
83
|
-
#ifndef WIN32
|
|
84
|
-
#define IS_DIR_SEP(ch) ((ch) == '/')
|
|
85
|
-
|
|
86
|
-
#define is_absolute_path(filename) \
|
|
81
|
+
#define IS_NONWINDOWS_DIR_SEP(ch) ((ch) == '/')
|
|
82
|
+
#define is_nonwindows_absolute_path(filename) \
|
|
87
83
|
( \
|
|
88
|
-
|
|
84
|
+
IS_NONWINDOWS_DIR_SEP((filename)[0]) \
|
|
89
85
|
)
|
|
90
|
-
#else
|
|
91
|
-
#define IS_DIR_SEP(ch) ((ch) == '/' || (ch) == '\\')
|
|
92
86
|
|
|
87
|
+
#define IS_WINDOWS_DIR_SEP(ch) ((ch) == '/' || (ch) == '\\')
|
|
93
88
|
/* See path_is_relative_and_below_cwd() for how we handle 'E:abc'. */
|
|
94
|
-
#define
|
|
89
|
+
#define is_windows_absolute_path(filename) \
|
|
95
90
|
( \
|
|
96
|
-
|
|
91
|
+
IS_WINDOWS_DIR_SEP((filename)[0]) || \
|
|
97
92
|
(isalpha((unsigned char) ((filename)[0])) && (filename)[1] == ':' && \
|
|
98
|
-
|
|
93
|
+
IS_WINDOWS_DIR_SEP((filename)[2])) \
|
|
99
94
|
)
|
|
95
|
+
|
|
96
|
+
/*
|
|
97
|
+
* is_absolute_path and IS_DIR_SEP
|
|
98
|
+
*
|
|
99
|
+
* By using macros here we avoid needing to include path.c in libpq.
|
|
100
|
+
*/
|
|
101
|
+
#ifndef WIN32
|
|
102
|
+
#define IS_DIR_SEP(ch) IS_NONWINDOWS_DIR_SEP(ch)
|
|
103
|
+
#define is_absolute_path(filename) is_nonwindows_absolute_path(filename)
|
|
104
|
+
#else
|
|
105
|
+
#define IS_DIR_SEP(ch) IS_WINDOWS_DIR_SEP(ch)
|
|
106
|
+
#define is_absolute_path(filename) is_windows_absolute_path(filename)
|
|
100
107
|
#endif
|
|
101
108
|
|
|
109
|
+
/*
|
|
110
|
+
* This macro provides a centralized list of all errnos that identify
|
|
111
|
+
* hard failure of a previously-established network connection.
|
|
112
|
+
* The macro is intended to be used in a switch statement, in the form
|
|
113
|
+
* "case ALL_CONNECTION_FAILURE_ERRNOS:".
|
|
114
|
+
*
|
|
115
|
+
* Note: this groups EPIPE and ECONNRESET, which we take to indicate a
|
|
116
|
+
* probable server crash, with other errors that indicate loss of network
|
|
117
|
+
* connectivity without proving much about the server's state. Places that
|
|
118
|
+
* are actually reporting errors typically single out EPIPE and ECONNRESET,
|
|
119
|
+
* while allowing the network failures to be reported generically.
|
|
120
|
+
*/
|
|
121
|
+
#define ALL_CONNECTION_FAILURE_ERRNOS \
|
|
122
|
+
EPIPE: \
|
|
123
|
+
case ECONNRESET: \
|
|
124
|
+
case ECONNABORTED: \
|
|
125
|
+
case EHOSTDOWN: \
|
|
126
|
+
case EHOSTUNREACH: \
|
|
127
|
+
case ENETDOWN: \
|
|
128
|
+
case ENETRESET: \
|
|
129
|
+
case ENETUNREACH: \
|
|
130
|
+
case ETIMEDOUT
|
|
131
|
+
|
|
102
132
|
/* Portable locale initialization (in exec.c) */
|
|
103
133
|
extern void set_pglocale_pgservice(const char *argv0, const char *app);
|
|
104
134
|
|
|
105
135
|
/* Portable way to find and execute binaries (in exec.c) */
|
|
136
|
+
extern int validate_exec(const char *path);
|
|
106
137
|
extern int find_my_exec(const char *argv0, char *retpath);
|
|
107
138
|
extern int find_other_exec(const char *argv0, const char *target,
|
|
108
139
|
const char *versionstr, char *retpath);
|
|
@@ -111,6 +142,11 @@ extern char *pipe_read_line(char *cmd, char *line, int maxsize);
|
|
|
111
142
|
/* Doesn't belong here, but this is used with find_other_exec(), so... */
|
|
112
143
|
#define PG_BACKEND_VERSIONSTR "postgres (PostgreSQL) " PG_VERSION "\n"
|
|
113
144
|
|
|
145
|
+
#ifdef EXEC_BACKEND
|
|
146
|
+
/* Disable ASLR before exec, for developer builds only (in exec.c) */
|
|
147
|
+
extern int pg_disable_aslr(void);
|
|
148
|
+
#endif
|
|
149
|
+
|
|
114
150
|
|
|
115
151
|
#if defined(WIN32) || defined(__CYGWIN__)
|
|
116
152
|
#define EXE ".exe"
|
|
@@ -213,10 +249,6 @@ extern char *pg_strerror_r(int errnum, char *buf, size_t buflen);
|
|
|
213
249
|
/* Wrap strsignal(), or provide our own version if necessary */
|
|
214
250
|
extern const char *pg_strsignal(int signum);
|
|
215
251
|
|
|
216
|
-
/* Portable prompt handling */
|
|
217
|
-
extern void simple_prompt(const char *prompt, char *destination, size_t destlen,
|
|
218
|
-
bool echo);
|
|
219
|
-
|
|
220
252
|
extern int pclose_check(FILE *stream);
|
|
221
253
|
|
|
222
254
|
/* Global variable holding time zone information. */
|
|
@@ -271,6 +303,7 @@ extern bool rmtree(const char *path, bool rmtopdir);
|
|
|
271
303
|
* passing of other special options.
|
|
272
304
|
*/
|
|
273
305
|
#define O_DIRECT 0x80000000
|
|
306
|
+
extern HANDLE pgwin32_open_handle(const char *, int, bool);
|
|
274
307
|
extern int pgwin32_open(const char *, int,...);
|
|
275
308
|
extern FILE *pgwin32_fopen(const char *, const char *);
|
|
276
309
|
#define open(a,b,c) pgwin32_open(a,b,c)
|
|
@@ -337,11 +370,6 @@ extern int gettimeofday(struct timeval *tp, struct timezone *tzp);
|
|
|
337
370
|
#define pgoff_t off_t
|
|
338
371
|
#endif
|
|
339
372
|
|
|
340
|
-
extern double pg_erand48(unsigned short xseed[3]);
|
|
341
|
-
extern long pg_lrand48(void);
|
|
342
|
-
extern long pg_jrand48(unsigned short xseed[3]);
|
|
343
|
-
extern void pg_srand48(long seed);
|
|
344
|
-
|
|
345
373
|
#ifndef HAVE_FLS
|
|
346
374
|
extern int fls(int mask);
|
|
347
375
|
#endif
|
|
@@ -413,6 +441,8 @@ extern ssize_t pg_pread(int fd, void *buf, size_t nbyte, off_t offset);
|
|
|
413
441
|
extern ssize_t pg_pwrite(int fd, const void *buf, size_t nbyte, off_t offset);
|
|
414
442
|
#endif
|
|
415
443
|
|
|
444
|
+
/* For pg_pwritev() and pg_preadv(), see port/pg_iovec.h. */
|
|
445
|
+
|
|
416
446
|
#if !HAVE_DECL_STRLCAT
|
|
417
447
|
extern size_t strlcat(char *dst, const char *src, size_t siz);
|
|
418
448
|
#endif
|
|
@@ -425,16 +455,12 @@ extern size_t strlcpy(char *dst, const char *src, size_t siz);
|
|
|
425
455
|
extern size_t strnlen(const char *str, size_t maxlen);
|
|
426
456
|
#endif
|
|
427
457
|
|
|
428
|
-
#
|
|
429
|
-
extern
|
|
458
|
+
#ifndef HAVE_SETENV
|
|
459
|
+
extern int setenv(const char *name, const char *value, int overwrite);
|
|
430
460
|
#endif
|
|
431
461
|
|
|
432
462
|
#ifndef HAVE_UNSETENV
|
|
433
|
-
extern
|
|
434
|
-
#endif
|
|
435
|
-
|
|
436
|
-
#ifndef HAVE_SRANDOM
|
|
437
|
-
extern void srandom(unsigned int seed);
|
|
463
|
+
extern int unsetenv(const char *name);
|
|
438
464
|
#endif
|
|
439
465
|
|
|
440
466
|
#ifndef HAVE_DLOPEN
|
|
@@ -460,18 +486,12 @@ extern char *dlerror(void);
|
|
|
460
486
|
#define RTLD_GLOBAL 0
|
|
461
487
|
#endif
|
|
462
488
|
|
|
463
|
-
/* thread.
|
|
489
|
+
/* thread.c */
|
|
464
490
|
#ifndef WIN32
|
|
465
|
-
extern
|
|
466
|
-
|
|
491
|
+
extern bool pg_get_user_name(uid_t user_id, char *buffer, size_t buflen);
|
|
492
|
+
extern bool pg_get_user_home_dir(uid_t user_id, char *buffer, size_t buflen);
|
|
467
493
|
#endif
|
|
468
494
|
|
|
469
|
-
extern int pqGethostbyname(const char *name,
|
|
470
|
-
struct hostent *resultbuf,
|
|
471
|
-
char *buffer, size_t buflen,
|
|
472
|
-
struct hostent **result,
|
|
473
|
-
int *herrno);
|
|
474
|
-
|
|
475
495
|
extern void pg_qsort(void *base, size_t nel, size_t elsize,
|
|
476
496
|
int (*cmp) (const void *, const void *));
|
|
477
497
|
extern int pg_qsort_strcmp(const void *a, const void *b);
|
|
@@ -483,6 +503,14 @@ typedef int (*qsort_arg_comparator) (const void *a, const void *b, void *arg);
|
|
|
483
503
|
extern void qsort_arg(void *base, size_t nel, size_t elsize,
|
|
484
504
|
qsort_arg_comparator cmp, void *arg);
|
|
485
505
|
|
|
506
|
+
extern void qsort_interruptible(void *base, size_t nel, size_t elsize,
|
|
507
|
+
qsort_arg_comparator cmp, void *arg);
|
|
508
|
+
|
|
509
|
+
extern void *bsearch_arg(const void *key, const void *base,
|
|
510
|
+
size_t nmemb, size_t size,
|
|
511
|
+
int (*compar) (const void *, const void *, void *),
|
|
512
|
+
void *arg);
|
|
513
|
+
|
|
486
514
|
/* port/chklocale.c */
|
|
487
515
|
extern int pg_get_encoding_from_locale(const char *ctype, bool write_message);
|
|
488
516
|
|
|
@@ -495,6 +523,7 @@ extern char *pg_inet_net_ntop(int af, const void *src, int bits,
|
|
|
495
523
|
char *dst, size_t size);
|
|
496
524
|
|
|
497
525
|
/* port/pg_strong_random.c */
|
|
526
|
+
extern void pg_strong_random_init(void);
|
|
498
527
|
extern bool pg_strong_random(void *buf, size_t len);
|
|
499
528
|
|
|
500
529
|
/*
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* Client-side code should include postgres_fe.h instead.
|
|
8
8
|
*
|
|
9
9
|
*
|
|
10
|
-
* Portions Copyright (c) 1996-
|
|
10
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
11
11
|
* Portions Copyright (c) 1995, Regents of the University of California
|
|
12
12
|
*
|
|
13
13
|
* src/include/postgres.h
|
|
@@ -55,7 +55,9 @@
|
|
|
55
55
|
/*
|
|
56
56
|
* struct varatt_external is a traditional "TOAST pointer", that is, the
|
|
57
57
|
* information needed to fetch a Datum stored out-of-line in a TOAST table.
|
|
58
|
-
* The data is compressed if and only if
|
|
58
|
+
* The data is compressed if and only if the external size stored in
|
|
59
|
+
* va_extinfo is less than va_rawsize - VARHDRSZ.
|
|
60
|
+
*
|
|
59
61
|
* This struct must not contain any padding, because we sometimes compare
|
|
60
62
|
* these pointers using memcmp.
|
|
61
63
|
*
|
|
@@ -67,11 +69,19 @@
|
|
|
67
69
|
typedef struct varatt_external
|
|
68
70
|
{
|
|
69
71
|
int32 va_rawsize; /* Original data size (includes header) */
|
|
70
|
-
|
|
72
|
+
uint32 va_extinfo; /* External saved size (without header) and
|
|
73
|
+
* compression method */
|
|
71
74
|
Oid va_valueid; /* Unique ID of value within TOAST table */
|
|
72
75
|
Oid va_toastrelid; /* RelID of TOAST table containing it */
|
|
73
76
|
} varatt_external;
|
|
74
77
|
|
|
78
|
+
/*
|
|
79
|
+
* These macros define the "saved size" portion of va_extinfo. Its remaining
|
|
80
|
+
* two high-order bits identify the compression method.
|
|
81
|
+
*/
|
|
82
|
+
#define VARLENA_EXTSIZE_BITS 30
|
|
83
|
+
#define VARLENA_EXTSIZE_MASK ((1U << VARLENA_EXTSIZE_BITS) - 1)
|
|
84
|
+
|
|
75
85
|
/*
|
|
76
86
|
* struct varatt_indirect is a "TOAST pointer" representing an out-of-line
|
|
77
87
|
* Datum that's stored in memory, not in an external toast relation.
|
|
@@ -145,7 +155,8 @@ typedef union
|
|
|
145
155
|
struct /* Compressed-in-line format */
|
|
146
156
|
{
|
|
147
157
|
uint32 va_header;
|
|
148
|
-
uint32
|
|
158
|
+
uint32 va_tcinfo; /* Original data size (excludes header) and
|
|
159
|
+
* compression method; see va_extinfo */
|
|
149
160
|
char va_data[FLEXIBLE_ARRAY_MEMBER]; /* Compressed data */
|
|
150
161
|
} va_compressed;
|
|
151
162
|
} varattrib_4b;
|
|
@@ -231,6 +242,7 @@ typedef struct
|
|
|
231
242
|
#define SET_VARTAG_1B_E(PTR,tag) \
|
|
232
243
|
(((varattrib_1b_e *) (PTR))->va_header = 0x80, \
|
|
233
244
|
((varattrib_1b_e *) (PTR))->va_tag = (tag))
|
|
245
|
+
|
|
234
246
|
#else /* !WORDS_BIGENDIAN */
|
|
235
247
|
|
|
236
248
|
#define VARATT_IS_4B(PTR) \
|
|
@@ -263,9 +275,22 @@ typedef struct
|
|
|
263
275
|
#define SET_VARTAG_1B_E(PTR,tag) \
|
|
264
276
|
(((varattrib_1b_e *) (PTR))->va_header = 0x01, \
|
|
265
277
|
((varattrib_1b_e *) (PTR))->va_tag = (tag))
|
|
278
|
+
|
|
266
279
|
#endif /* WORDS_BIGENDIAN */
|
|
267
280
|
|
|
281
|
+
#define VARDATA_4B(PTR) (((varattrib_4b *) (PTR))->va_4byte.va_data)
|
|
282
|
+
#define VARDATA_4B_C(PTR) (((varattrib_4b *) (PTR))->va_compressed.va_data)
|
|
283
|
+
#define VARDATA_1B(PTR) (((varattrib_1b *) (PTR))->va_data)
|
|
284
|
+
#define VARDATA_1B_E(PTR) (((varattrib_1b_e *) (PTR))->va_data)
|
|
285
|
+
|
|
286
|
+
/*
|
|
287
|
+
* Externally visible TOAST macros begin here.
|
|
288
|
+
*/
|
|
289
|
+
|
|
290
|
+
#define VARHDRSZ_EXTERNAL offsetof(varattrib_1b_e, va_data)
|
|
291
|
+
#define VARHDRSZ_COMPRESSED offsetof(varattrib_4b, va_compressed.va_data)
|
|
268
292
|
#define VARHDRSZ_SHORT offsetof(varattrib_1b, va_data)
|
|
293
|
+
|
|
269
294
|
#define VARATT_SHORT_MAX 0x7F
|
|
270
295
|
#define VARATT_CAN_MAKE_SHORT(PTR) \
|
|
271
296
|
(VARATT_IS_4B_U(PTR) && \
|
|
@@ -273,18 +298,6 @@ typedef struct
|
|
|
273
298
|
#define VARATT_CONVERTED_SHORT_SIZE(PTR) \
|
|
274
299
|
(VARSIZE(PTR) - VARHDRSZ + VARHDRSZ_SHORT)
|
|
275
300
|
|
|
276
|
-
#define VARHDRSZ_EXTERNAL offsetof(varattrib_1b_e, va_data)
|
|
277
|
-
|
|
278
|
-
#define VARDATA_4B(PTR) (((varattrib_4b *) (PTR))->va_4byte.va_data)
|
|
279
|
-
#define VARDATA_4B_C(PTR) (((varattrib_4b *) (PTR))->va_compressed.va_data)
|
|
280
|
-
#define VARDATA_1B(PTR) (((varattrib_1b *) (PTR))->va_data)
|
|
281
|
-
#define VARDATA_1B_E(PTR) (((varattrib_1b_e *) (PTR))->va_data)
|
|
282
|
-
|
|
283
|
-
#define VARRAWSIZE_4B_C(PTR) \
|
|
284
|
-
(((varattrib_4b *) (PTR))->va_compressed.va_rawsize)
|
|
285
|
-
|
|
286
|
-
/* Externally visible macros */
|
|
287
|
-
|
|
288
301
|
/*
|
|
289
302
|
* In consumers oblivious to data alignment, call PG_DETOAST_DATUM_PACKED(),
|
|
290
303
|
* VARDATA_ANY(), VARSIZE_ANY() and VARSIZE_ANY_EXHDR(). Elsewhere, call
|
|
@@ -348,6 +361,37 @@ typedef struct
|
|
|
348
361
|
#define VARDATA_ANY(PTR) \
|
|
349
362
|
(VARATT_IS_1B(PTR) ? VARDATA_1B(PTR) : VARDATA_4B(PTR))
|
|
350
363
|
|
|
364
|
+
/* Decompressed size and compression method of a compressed-in-line Datum */
|
|
365
|
+
#define VARDATA_COMPRESSED_GET_EXTSIZE(PTR) \
|
|
366
|
+
(((varattrib_4b *) (PTR))->va_compressed.va_tcinfo & VARLENA_EXTSIZE_MASK)
|
|
367
|
+
#define VARDATA_COMPRESSED_GET_COMPRESS_METHOD(PTR) \
|
|
368
|
+
(((varattrib_4b *) (PTR))->va_compressed.va_tcinfo >> VARLENA_EXTSIZE_BITS)
|
|
369
|
+
|
|
370
|
+
/* Same for external Datums; but note argument is a struct varatt_external */
|
|
371
|
+
#define VARATT_EXTERNAL_GET_EXTSIZE(toast_pointer) \
|
|
372
|
+
((toast_pointer).va_extinfo & VARLENA_EXTSIZE_MASK)
|
|
373
|
+
#define VARATT_EXTERNAL_GET_COMPRESS_METHOD(toast_pointer) \
|
|
374
|
+
((toast_pointer).va_extinfo >> VARLENA_EXTSIZE_BITS)
|
|
375
|
+
|
|
376
|
+
#define VARATT_EXTERNAL_SET_SIZE_AND_COMPRESS_METHOD(toast_pointer, len, cm) \
|
|
377
|
+
do { \
|
|
378
|
+
Assert((cm) == TOAST_PGLZ_COMPRESSION_ID || \
|
|
379
|
+
(cm) == TOAST_LZ4_COMPRESSION_ID); \
|
|
380
|
+
((toast_pointer).va_extinfo = \
|
|
381
|
+
(len) | ((uint32) (cm) << VARLENA_EXTSIZE_BITS)); \
|
|
382
|
+
} while (0)
|
|
383
|
+
|
|
384
|
+
/*
|
|
385
|
+
* Testing whether an externally-stored value is compressed now requires
|
|
386
|
+
* comparing size stored in va_extinfo (the actual length of the external data)
|
|
387
|
+
* to rawsize (the original uncompressed datum's size). The latter includes
|
|
388
|
+
* VARHDRSZ overhead, the former doesn't. We never use compression unless it
|
|
389
|
+
* actually saves space, so we expect either equality or less-than.
|
|
390
|
+
*/
|
|
391
|
+
#define VARATT_EXTERNAL_IS_COMPRESSED(toast_pointer) \
|
|
392
|
+
(VARATT_EXTERNAL_GET_EXTSIZE(toast_pointer) < \
|
|
393
|
+
(toast_pointer).va_rawsize - VARHDRSZ)
|
|
394
|
+
|
|
351
395
|
|
|
352
396
|
/* ----------------------------------------------------------------
|
|
353
397
|
* Section 2: Datum type + support macros
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* header file for integrated autovacuum daemon
|
|
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/postmaster/autovacuum.h
|
|
@@ -27,25 +27,25 @@ typedef enum
|
|
|
27
27
|
|
|
28
28
|
|
|
29
29
|
/* GUC variables */
|
|
30
|
-
extern bool autovacuum_start_daemon;
|
|
31
|
-
extern int
|
|
32
|
-
extern int
|
|
33
|
-
extern int
|
|
34
|
-
extern int
|
|
35
|
-
extern double autovacuum_vac_scale;
|
|
36
|
-
extern int
|
|
37
|
-
extern double autovacuum_vac_ins_scale;
|
|
38
|
-
extern int
|
|
39
|
-
extern double autovacuum_anl_scale;
|
|
40
|
-
extern int
|
|
41
|
-
extern int
|
|
42
|
-
extern double autovacuum_vac_cost_delay;
|
|
43
|
-
extern int
|
|
30
|
+
extern PGDLLIMPORT bool autovacuum_start_daemon;
|
|
31
|
+
extern PGDLLIMPORT int autovacuum_max_workers;
|
|
32
|
+
extern PGDLLIMPORT int autovacuum_work_mem;
|
|
33
|
+
extern PGDLLIMPORT int autovacuum_naptime;
|
|
34
|
+
extern PGDLLIMPORT int autovacuum_vac_thresh;
|
|
35
|
+
extern PGDLLIMPORT double autovacuum_vac_scale;
|
|
36
|
+
extern PGDLLIMPORT int autovacuum_vac_ins_thresh;
|
|
37
|
+
extern PGDLLIMPORT double autovacuum_vac_ins_scale;
|
|
38
|
+
extern PGDLLIMPORT int autovacuum_anl_thresh;
|
|
39
|
+
extern PGDLLIMPORT double autovacuum_anl_scale;
|
|
40
|
+
extern PGDLLIMPORT int autovacuum_freeze_max_age;
|
|
41
|
+
extern PGDLLIMPORT int autovacuum_multixact_freeze_max_age;
|
|
42
|
+
extern PGDLLIMPORT double autovacuum_vac_cost_delay;
|
|
43
|
+
extern PGDLLIMPORT int autovacuum_vac_cost_limit;
|
|
44
44
|
|
|
45
45
|
/* autovacuum launcher PID, only valid when worker is shutting down */
|
|
46
|
-
extern int
|
|
46
|
+
extern PGDLLIMPORT int AutovacuumLauncherPid;
|
|
47
47
|
|
|
48
|
-
extern int
|
|
48
|
+
extern PGDLLIMPORT int Log_autovacuum_min_duration;
|
|
49
49
|
|
|
50
50
|
/* Status inquiry functions */
|
|
51
51
|
extern bool AutoVacuumingActive(void);
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
* auxprocess.h
|
|
3
|
+
* include file for functions related to auxiliary processes.
|
|
4
|
+
*
|
|
5
|
+
*
|
|
6
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
7
|
+
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
|
+
*
|
|
9
|
+
* IDENTIFICATION
|
|
10
|
+
* src/include/postmaster/auxprocess.h
|
|
11
|
+
*-------------------------------------------------------------------------
|
|
12
|
+
*/
|
|
13
|
+
#ifndef AUXPROCESS_H
|
|
14
|
+
#define AUXPROCESS_H
|
|
15
|
+
|
|
16
|
+
#include "miscadmin.h"
|
|
17
|
+
|
|
18
|
+
extern void AuxiliaryProcessMain(AuxProcType auxtype) pg_attribute_noreturn();
|
|
19
|
+
|
|
20
|
+
#endif /* AUXPROCESS_H */
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
* different) code.
|
|
32
32
|
*
|
|
33
33
|
*
|
|
34
|
-
* Portions Copyright (c) 1996-
|
|
34
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
35
35
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
36
36
|
*
|
|
37
37
|
* IDENTIFICATION
|
|
@@ -48,6 +48,7 @@
|
|
|
48
48
|
|
|
49
49
|
/*
|
|
50
50
|
* Pass this flag to have your worker be able to connect to shared memory.
|
|
51
|
+
* This flag is required.
|
|
51
52
|
*/
|
|
52
53
|
#define BGWORKER_SHMEM_ACCESS 0x0001
|
|
53
54
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* bgworker_internals.h
|
|
3
3
|
* POSTGRES pluggable background workers internals
|
|
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
|
* IDENTIFICATION
|
|
@@ -42,7 +42,7 @@ typedef struct RegisteredBgWorker
|
|
|
42
42
|
slist_node rw_lnode; /* list link */
|
|
43
43
|
} RegisteredBgWorker;
|
|
44
44
|
|
|
45
|
-
extern slist_head BackgroundWorkerList;
|
|
45
|
+
extern PGDLLIMPORT slist_head BackgroundWorkerList;
|
|
46
46
|
|
|
47
47
|
extern Size BackgroundWorkerShmemSize(void);
|
|
48
48
|
extern void BackgroundWorkerShmemInit(void);
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* The bgwriter process used to handle checkpointing duties too. Now
|
|
7
7
|
* there is a separate process, but we did not bother to split this header.
|
|
8
8
|
*
|
|
9
|
-
* Portions Copyright (c) 1996-
|
|
9
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
10
10
|
*
|
|
11
11
|
* src/include/postmaster/bgwriter.h
|
|
12
12
|
*
|
|
@@ -22,10 +22,10 @@
|
|
|
22
22
|
|
|
23
23
|
|
|
24
24
|
/* GUC options */
|
|
25
|
-
extern int
|
|
26
|
-
extern int
|
|
27
|
-
extern int
|
|
28
|
-
extern double CheckPointCompletionTarget;
|
|
25
|
+
extern PGDLLIMPORT int BgWriterDelay;
|
|
26
|
+
extern PGDLLIMPORT int CheckPointTimeout;
|
|
27
|
+
extern PGDLLIMPORT int CheckPointWarning;
|
|
28
|
+
extern PGDLLIMPORT double CheckPointCompletionTarget;
|
|
29
29
|
|
|
30
30
|
extern void BackgroundWriterMain(void) pg_attribute_noreturn();
|
|
31
31
|
extern void CheckpointerMain(void) pg_attribute_noreturn();
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* have their own implementations, but we provide a few generic things
|
|
8
8
|
* here to facilitate code reuse.
|
|
9
9
|
*
|
|
10
|
-
* Portions Copyright (c) 1996-
|
|
10
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
11
11
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
12
12
|
*
|
|
13
13
|
* IDENTIFICATION
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* pgarch.h
|
|
4
4
|
* Exports from postmaster/pgarch.c.
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* src/include/postmaster/pgarch.h
|
|
@@ -26,14 +26,48 @@
|
|
|
26
26
|
#define MAX_XFN_CHARS 40
|
|
27
27
|
#define VALID_XFN_CHARS "0123456789ABCDEF.history.backup.partial"
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
extern Size PgArchShmemSize(void);
|
|
30
|
+
extern void PgArchShmemInit(void);
|
|
31
|
+
extern bool PgArchCanRestart(void);
|
|
32
|
+
extern void PgArchiverMain(void) pg_attribute_noreturn();
|
|
33
|
+
extern void PgArchWakeup(void);
|
|
34
|
+
extern void PgArchForceDirScan(void);
|
|
35
|
+
|
|
36
|
+
/*
|
|
37
|
+
* The value of the archive_library GUC.
|
|
38
|
+
*/
|
|
39
|
+
extern PGDLLIMPORT char *XLogArchiveLibrary;
|
|
40
|
+
|
|
41
|
+
/*
|
|
42
|
+
* Archive module callbacks
|
|
43
|
+
*
|
|
44
|
+
* These callback functions should be defined by archive libraries and returned
|
|
45
|
+
* via _PG_archive_module_init(). ArchiveFileCB is the only required callback.
|
|
46
|
+
* For more information about the purpose of each callback, refer to the
|
|
47
|
+
* archive modules documentation.
|
|
32
48
|
*/
|
|
33
|
-
|
|
49
|
+
typedef bool (*ArchiveCheckConfiguredCB) (void);
|
|
50
|
+
typedef bool (*ArchiveFileCB) (const char *file, const char *path);
|
|
51
|
+
typedef void (*ArchiveShutdownCB) (void);
|
|
52
|
+
|
|
53
|
+
typedef struct ArchiveModuleCallbacks
|
|
54
|
+
{
|
|
55
|
+
ArchiveCheckConfiguredCB check_configured_cb;
|
|
56
|
+
ArchiveFileCB archive_file_cb;
|
|
57
|
+
ArchiveShutdownCB shutdown_cb;
|
|
58
|
+
} ArchiveModuleCallbacks;
|
|
34
59
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
60
|
+
/*
|
|
61
|
+
* Type of the shared library symbol _PG_archive_module_init that is looked
|
|
62
|
+
* up when loading an archive library.
|
|
63
|
+
*/
|
|
64
|
+
typedef void (*ArchiveModuleInit) (ArchiveModuleCallbacks *cb);
|
|
65
|
+
|
|
66
|
+
/*
|
|
67
|
+
* Since the logic for archiving via a shell command is in the core server
|
|
68
|
+
* and does not need to be loaded via a shared library, it has a special
|
|
69
|
+
* initialization function.
|
|
70
|
+
*/
|
|
71
|
+
extern void shell_archive_init(ArchiveModuleCallbacks *cb);
|
|
38
72
|
|
|
39
73
|
#endif /* _PGARCH_H */
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* postmaster.h
|
|
4
4
|
* Exports from postmaster/postmaster.c.
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* src/include/postmaster/postmaster.h
|
|
@@ -14,26 +14,27 @@
|
|
|
14
14
|
#define _POSTMASTER_H
|
|
15
15
|
|
|
16
16
|
/* GUC options */
|
|
17
|
-
extern bool EnableSSL;
|
|
18
|
-
extern int
|
|
17
|
+
extern PGDLLIMPORT bool EnableSSL;
|
|
18
|
+
extern PGDLLIMPORT int ReservedBackends;
|
|
19
19
|
extern PGDLLIMPORT int PostPortNumber;
|
|
20
|
-
extern int
|
|
21
|
-
extern char *Unix_socket_group;
|
|
22
|
-
extern char *Unix_socket_directories;
|
|
23
|
-
extern char *ListenAddresses;
|
|
24
|
-
extern __thread bool ClientAuthInProgress;
|
|
25
|
-
extern int
|
|
26
|
-
extern int
|
|
27
|
-
extern bool Log_connections;
|
|
28
|
-
extern bool log_hostname;
|
|
29
|
-
extern bool enable_bonjour;
|
|
30
|
-
extern char *bonjour_name;
|
|
31
|
-
extern bool restart_after_crash;
|
|
20
|
+
extern PGDLLIMPORT int Unix_socket_permissions;
|
|
21
|
+
extern PGDLLIMPORT char *Unix_socket_group;
|
|
22
|
+
extern PGDLLIMPORT char *Unix_socket_directories;
|
|
23
|
+
extern PGDLLIMPORT char *ListenAddresses;
|
|
24
|
+
extern PGDLLIMPORT __thread bool ClientAuthInProgress;
|
|
25
|
+
extern PGDLLIMPORT int PreAuthDelay;
|
|
26
|
+
extern PGDLLIMPORT int AuthenticationTimeout;
|
|
27
|
+
extern PGDLLIMPORT bool Log_connections;
|
|
28
|
+
extern PGDLLIMPORT bool log_hostname;
|
|
29
|
+
extern PGDLLIMPORT bool enable_bonjour;
|
|
30
|
+
extern PGDLLIMPORT char *bonjour_name;
|
|
31
|
+
extern PGDLLIMPORT bool restart_after_crash;
|
|
32
|
+
extern PGDLLIMPORT bool remove_temp_files_after_crash;
|
|
32
33
|
|
|
33
34
|
#ifdef WIN32
|
|
34
|
-
extern HANDLE PostmasterHandle;
|
|
35
|
+
extern PGDLLIMPORT HANDLE PostmasterHandle;
|
|
35
36
|
#else
|
|
36
|
-
extern int
|
|
37
|
+
extern PGDLLIMPORT int postmaster_alive_fds[2];
|
|
37
38
|
|
|
38
39
|
/*
|
|
39
40
|
* Constants that represent which of postmaster_alive_fds is held by
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* startup.h
|
|
4
|
+
* Exports from postmaster/startup.c.
|
|
5
|
+
*
|
|
6
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
7
|
+
*
|
|
8
|
+
* src/include/postmaster/startup.h
|
|
9
|
+
*
|
|
10
|
+
*-------------------------------------------------------------------------
|
|
11
|
+
*/
|
|
12
|
+
#ifndef _STARTUP_H
|
|
13
|
+
#define _STARTUP_H
|
|
14
|
+
|
|
15
|
+
/*
|
|
16
|
+
* Log the startup progress message if a timer has expired.
|
|
17
|
+
*/
|
|
18
|
+
#define ereport_startup_progress(msg, ...) \
|
|
19
|
+
do { \
|
|
20
|
+
long secs; \
|
|
21
|
+
int usecs; \
|
|
22
|
+
if (has_startup_progress_timeout_expired(&secs, &usecs)) \
|
|
23
|
+
ereport(LOG, errmsg(msg, secs, (usecs / 10000), __VA_ARGS__ )); \
|
|
24
|
+
} while(0)
|
|
25
|
+
|
|
26
|
+
extern PGDLLIMPORT int log_startup_progress_interval;
|
|
27
|
+
|
|
28
|
+
extern void HandleStartupProcInterrupts(void);
|
|
29
|
+
extern void StartupProcessMain(void) pg_attribute_noreturn();
|
|
30
|
+
extern void PreRestoreCommand(void);
|
|
31
|
+
extern void PostRestoreCommand(void);
|
|
32
|
+
extern bool IsPromoteSignaled(void);
|
|
33
|
+
extern void ResetPromoteSignaled(void);
|
|
34
|
+
|
|
35
|
+
extern void begin_startup_progress_phase(void);
|
|
36
|
+
extern void startup_progress_timeout_handler(void);
|
|
37
|
+
extern bool has_startup_progress_timeout_expired(long *secs, int *usecs);
|
|
38
|
+
|
|
39
|
+
#endif /* _STARTUP_H */
|