pg_query 2.2.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 +25 -0
- data/README.md +59 -31
- data/Rakefile +2 -2
- data/ext/pg_query/include/access/amapi.h +45 -1
- data/ext/pg_query/include/access/attmap.h +1 -1
- data/ext/pg_query/include/access/attnum.h +2 -2
- data/ext/pg_query/include/access/clog.h +4 -2
- data/ext/pg_query/include/access/commit_ts.h +6 -9
- data/ext/pg_query/include/access/detoast.h +1 -11
- data/ext/pg_query/include/access/genam.h +15 -12
- data/ext/pg_query/include/access/gin.h +2 -2
- data/ext/pg_query/include/access/htup.h +1 -1
- data/ext/pg_query/include/access/htup_details.h +75 -87
- data/ext/pg_query/include/access/itup.h +7 -1
- data/ext/pg_query/include/access/parallel.h +2 -2
- data/ext/pg_query/include/access/printtup.h +1 -1
- data/ext/pg_query/include/access/relation.h +1 -1
- data/ext/pg_query/include/access/relscan.h +17 -2
- data/ext/pg_query/include/access/rmgr.h +30 -3
- data/ext/pg_query/include/access/rmgrlist.h +23 -23
- data/ext/pg_query/include/access/sdir.h +1 -1
- data/ext/pg_query/include/access/skey.h +1 -1
- data/ext/pg_query/include/access/stratnum.h +4 -2
- data/ext/pg_query/include/access/sysattr.h +1 -1
- data/ext/pg_query/include/access/table.h +2 -1
- data/ext/pg_query/include/access/tableam.h +272 -20
- data/ext/pg_query/include/access/toast_compression.h +73 -0
- data/ext/pg_query/include/access/transam.h +123 -13
- data/ext/pg_query/include/access/tupconvert.h +1 -1
- data/ext/pg_query/include/access/tupdesc.h +1 -1
- data/ext/pg_query/include/access/tupmacs.h +3 -3
- data/ext/pg_query/include/access/twophase.h +3 -1
- data/ext/pg_query/include/access/xact.h +73 -19
- data/ext/pg_query/include/access/xlog.h +60 -155
- data/ext/pg_query/include/access/xlog_internal.h +40 -13
- data/ext/pg_query/include/access/xlogdefs.h +8 -16
- data/ext/pg_query/include/access/xlogprefetcher.h +55 -0
- data/ext/pg_query/include/access/xlogreader.h +145 -39
- data/ext/pg_query/include/access/xlogrecord.h +18 -9
- data/ext/pg_query/include/access/xlogrecovery.h +157 -0
- data/ext/pg_query/include/c.h +101 -44
- data/ext/pg_query/include/catalog/catalog.h +3 -1
- data/ext/pg_query/include/catalog/catversion.h +2 -2
- data/ext/pg_query/include/catalog/dependency.h +8 -16
- data/ext/pg_query/include/catalog/genbki.h +83 -5
- data/ext/pg_query/include/catalog/index.h +18 -3
- data/ext/pg_query/include/catalog/indexing.h +12 -324
- data/ext/pg_query/include/catalog/namespace.h +4 -2
- data/ext/pg_query/include/catalog/objectaccess.h +70 -2
- data/ext/pg_query/include/catalog/objectaddress.h +11 -6
- data/ext/pg_query/include/catalog/pg_aggregate.h +14 -10
- data/ext/pg_query/include/catalog/pg_aggregate_d.h +2 -1
- data/ext/pg_query/include/catalog/pg_am.h +4 -1
- data/ext/pg_query/include/catalog/pg_am_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_attribute.h +27 -10
- data/ext/pg_query/include/catalog/pg_attribute_d.h +21 -18
- data/ext/pg_query/include/catalog/pg_authid.h +7 -2
- data/ext/pg_query/include/catalog/pg_authid_d.h +17 -9
- data/ext/pg_query/include/catalog/pg_class.h +44 -14
- data/ext/pg_query/include/catalog/pg_class_d.h +30 -1
- data/ext/pg_query/include/catalog/pg_collation.h +33 -8
- data/ext/pg_query/include/catalog/pg_collation_d.h +20 -3
- data/ext/pg_query/include/catalog/pg_constraint.h +38 -12
- data/ext/pg_query/include/catalog/pg_constraint_d.h +10 -4
- data/ext/pg_query/include/catalog/pg_control.h +3 -5
- data/ext/pg_query/include/catalog/pg_conversion.h +7 -4
- data/ext/pg_query/include/catalog/pg_conversion_d.h +4 -1
- data/ext/pg_query/include/catalog/pg_depend.h +11 -7
- data/ext/pg_query/include/catalog/pg_depend_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_event_trigger.h +9 -3
- data/ext/pg_query/include/catalog/pg_event_trigger_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_index.h +17 -7
- data/ext/pg_query/include/catalog/pg_index_d.h +20 -17
- data/ext/pg_query/include/catalog/pg_language.h +10 -5
- data/ext/pg_query/include/catalog/pg_language_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_namespace.h +7 -2
- data/ext/pg_query/include/catalog/pg_namespace_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_opclass.h +8 -5
- data/ext/pg_query/include/catalog/pg_opclass_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_operator.h +18 -15
- data/ext/pg_query/include/catalog/pg_operator_d.h +37 -1
- data/ext/pg_query/include/catalog/pg_opfamily.h +6 -3
- data/ext/pg_query/include/catalog/pg_opfamily_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_parameter_acl.h +60 -0
- data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +34 -0
- data/ext/pg_query/include/catalog/pg_partitioned_table.h +20 -9
- data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +2 -1
- data/ext/pg_query/include/catalog/pg_proc.h +20 -11
- data/ext/pg_query/include/catalog/pg_proc_d.h +10 -8
- data/ext/pg_query/include/catalog/pg_publication.h +50 -7
- data/ext/pg_query/include/catalog/pg_publication_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_replication_origin.h +6 -1
- data/ext/pg_query/include/catalog/pg_replication_origin_d.h +5 -1
- data/ext/pg_query/include/catalog/pg_statistic.h +19 -12
- data/ext/pg_query/include/catalog/pg_statistic_d.h +2 -1
- data/ext/pg_query/include/catalog/pg_statistic_ext.h +19 -5
- data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +7 -2
- data/ext/pg_query/include/catalog/pg_transform.h +8 -5
- data/ext/pg_query/include/catalog/pg_transform_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_trigger.h +24 -8
- data/ext/pg_query/include/catalog/pg_trigger_d.h +4 -1
- data/ext/pg_query/include/catalog/pg_ts_config.h +6 -3
- data/ext/pg_query/include/catalog/pg_ts_config_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_ts_dict.h +8 -3
- data/ext/pg_query/include/catalog/pg_ts_dict_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_ts_parser.h +6 -3
- data/ext/pg_query/include/catalog/pg_ts_parser_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_ts_template.h +6 -3
- data/ext/pg_query/include/catalog/pg_ts_template_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_type.h +55 -24
- data/ext/pg_query/include/catalog/pg_type_d.h +70 -31
- data/ext/pg_query/include/catalog/storage.h +5 -3
- data/ext/pg_query/include/commands/async.h +3 -4
- data/ext/pg_query/include/commands/dbcommands.h +2 -1
- data/ext/pg_query/include/commands/defrem.h +11 -24
- data/ext/pg_query/include/commands/event_trigger.h +2 -2
- data/ext/pg_query/include/commands/explain.h +1 -1
- data/ext/pg_query/include/commands/prepare.h +1 -1
- data/ext/pg_query/include/commands/tablespace.h +2 -2
- data/ext/pg_query/include/commands/trigger.h +18 -16
- data/ext/pg_query/include/commands/user.h +2 -2
- data/ext/pg_query/include/commands/vacuum.h +88 -41
- data/ext/pg_query/include/commands/variable.h +1 -1
- data/ext/pg_query/include/common/file_perm.h +4 -4
- data/ext/pg_query/include/common/hashfn.h +1 -1
- data/ext/pg_query/include/common/ip.h +1 -7
- data/ext/pg_query/include/common/keywords.h +2 -6
- data/ext/pg_query/include/common/kwlookup.h +1 -1
- data/ext/pg_query/include/common/pg_prng.h +60 -0
- data/ext/pg_query/include/common/relpath.h +2 -2
- data/ext/pg_query/include/common/string.h +24 -1
- data/ext/pg_query/include/common/unicode_combining_table.h +114 -2
- data/ext/pg_query/include/common/unicode_east_asian_fw_table.h +125 -0
- data/ext/pg_query/include/datatype/timestamp.h +40 -1
- data/ext/pg_query/include/executor/execdesc.h +1 -1
- data/ext/pg_query/include/executor/executor.h +65 -22
- data/ext/pg_query/include/executor/functions.h +17 -3
- data/ext/pg_query/include/executor/instrument.h +33 -16
- data/ext/pg_query/include/executor/spi.h +41 -3
- data/ext/pg_query/include/executor/tablefunc.h +1 -1
- data/ext/pg_query/include/executor/tuptable.h +1 -1
- data/ext/pg_query/include/fmgr.h +13 -7
- data/ext/pg_query/include/funcapi.h +16 -4
- data/ext/pg_query/include/getaddrinfo.h +1 -1
- data/ext/pg_query/include/jit/jit.h +11 -11
- data/ext/pg_query/include/kwlist_d.h +517 -494
- data/ext/pg_query/include/lib/dshash.h +112 -0
- data/ext/pg_query/include/lib/ilist.h +20 -1
- data/ext/pg_query/include/lib/pairingheap.h +1 -1
- data/ext/pg_query/include/lib/simplehash.h +140 -15
- data/ext/pg_query/include/lib/sort_template.h +432 -0
- data/ext/pg_query/include/lib/stringinfo.h +1 -1
- data/ext/pg_query/include/libpq/auth.h +6 -4
- data/ext/pg_query/include/libpq/crypt.h +5 -4
- data/ext/pg_query/include/libpq/hba.h +43 -4
- data/ext/pg_query/include/libpq/libpq-be.h +23 -6
- data/ext/pg_query/include/libpq/libpq.h +30 -20
- data/ext/pg_query/include/libpq/pqcomm.h +17 -31
- data/ext/pg_query/include/libpq/pqformat.h +1 -1
- data/ext/pg_query/include/libpq/pqsignal.h +4 -4
- data/ext/pg_query/include/mb/pg_wchar.h +105 -23
- data/ext/pg_query/include/mb/stringinfo_mb.h +1 -1
- data/ext/pg_query/include/miscadmin.h +47 -41
- data/ext/pg_query/include/nodes/bitmapset.h +1 -1
- data/ext/pg_query/include/nodes/execnodes.h +270 -78
- data/ext/pg_query/include/nodes/extensible.h +4 -2
- data/ext/pg_query/include/nodes/lockoptions.h +1 -1
- data/ext/pg_query/include/nodes/makefuncs.h +7 -6
- data/ext/pg_query/include/nodes/memnodes.h +5 -3
- data/ext/pg_query/include/nodes/nodeFuncs.h +1 -1
- data/ext/pg_query/include/nodes/nodes.h +30 -11
- data/ext/pg_query/include/nodes/params.h +1 -1
- data/ext/pg_query/include/nodes/parsenodes.h +322 -90
- data/ext/pg_query/include/nodes/pathnodes.h +243 -66
- data/ext/pg_query/include/nodes/pg_list.h +75 -69
- data/ext/pg_query/include/nodes/plannodes.h +111 -28
- data/ext/pg_query/include/nodes/primnodes.h +99 -47
- data/ext/pg_query/include/nodes/print.h +1 -1
- data/ext/pg_query/include/nodes/tidbitmap.h +1 -1
- data/ext/pg_query/include/nodes/value.h +58 -39
- data/ext/pg_query/include/optimizer/cost.h +9 -2
- data/ext/pg_query/include/optimizer/geqo.h +9 -7
- data/ext/pg_query/include/optimizer/geqo_gene.h +1 -1
- data/ext/pg_query/include/optimizer/optimizer.h +25 -17
- data/ext/pg_query/include/optimizer/paths.h +6 -6
- data/ext/pg_query/include/optimizer/planmain.h +15 -14
- data/ext/pg_query/include/parser/analyze.h +19 -5
- data/ext/pg_query/include/parser/gram.h +947 -913
- data/ext/pg_query/include/parser/gramparse.h +1 -1
- data/ext/pg_query/include/parser/kwlist.h +463 -453
- data/ext/pg_query/include/parser/parse_agg.h +2 -7
- data/ext/pg_query/include/parser/parse_coerce.h +3 -1
- data/ext/pg_query/include/parser/parse_expr.h +2 -3
- data/ext/pg_query/include/parser/parse_func.h +2 -1
- data/ext/pg_query/include/parser/parse_node.h +21 -9
- data/ext/pg_query/include/parser/parse_oper.h +1 -3
- data/ext/pg_query/include/parser/parse_relation.h +5 -4
- data/ext/pg_query/include/parser/parse_type.h +1 -1
- data/ext/pg_query/include/parser/parser.h +31 -4
- data/ext/pg_query/include/parser/parsetree.h +1 -1
- data/ext/pg_query/include/parser/scanner.h +1 -1
- data/ext/pg_query/include/parser/scansup.h +2 -5
- data/ext/pg_query/include/partitioning/partdefs.h +1 -1
- data/ext/pg_query/include/pg_config.h +83 -41
- data/ext/pg_query/include/pg_config_manual.h +74 -21
- data/ext/pg_query/include/pg_getopt.h +6 -6
- data/ext/pg_query/include/pg_query.h +5 -4
- data/ext/pg_query/include/pg_query_enum_defs.c +358 -241
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +44 -7
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +939 -113
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +43 -13
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +151 -26
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +11 -2
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +173 -30
- data/ext/pg_query/include/pg_trace.h +1 -1
- data/ext/pg_query/include/pgstat.h +449 -1238
- data/ext/pg_query/include/pgtime.h +14 -4
- data/ext/pg_query/include/pl_gram.h +126 -128
- data/ext/pg_query/include/pl_reserved_kwlist.h +1 -1
- data/ext/pg_query/include/pl_reserved_kwlist_d.h +10 -10
- data/ext/pg_query/include/pl_unreserved_kwlist.h +2 -3
- data/ext/pg_query/include/pl_unreserved_kwlist_d.h +54 -56
- data/ext/pg_query/include/plerrcodes.h +9 -1
- data/ext/pg_query/include/plpgsql.h +52 -54
- data/ext/pg_query/include/port/atomics/arch-arm.h +7 -1
- data/ext/pg_query/include/port/atomics/arch-ppc.h +1 -1
- data/ext/pg_query/include/port/atomics/arch-x86.h +1 -1
- data/ext/pg_query/include/port/atomics/fallback.h +1 -1
- data/ext/pg_query/include/port/atomics/generic-gcc.h +3 -3
- data/ext/pg_query/include/port/atomics/generic.h +1 -1
- data/ext/pg_query/include/port/atomics.h +1 -1
- data/ext/pg_query/include/port/pg_bitutils.h +40 -10
- data/ext/pg_query/include/port/pg_bswap.h +1 -1
- data/ext/pg_query/include/port/pg_crc32c.h +1 -1
- data/ext/pg_query/include/port.h +71 -46
- data/ext/pg_query/include/portability/instr_time.h +1 -1
- data/ext/pg_query/include/postgres.h +60 -16
- data/ext/pg_query/include/postmaster/autovacuum.h +17 -17
- data/ext/pg_query/include/postmaster/auxprocess.h +20 -0
- data/ext/pg_query/include/postmaster/bgworker.h +2 -1
- data/ext/pg_query/include/postmaster/bgworker_internals.h +2 -2
- data/ext/pg_query/include/postmaster/bgwriter.h +5 -5
- data/ext/pg_query/include/postmaster/fork_process.h +1 -1
- data/ext/pg_query/include/postmaster/interrupt.h +1 -1
- data/ext/pg_query/include/postmaster/pgarch.h +42 -8
- data/ext/pg_query/include/postmaster/postmaster.h +18 -17
- data/ext/pg_query/include/postmaster/startup.h +39 -0
- data/ext/pg_query/include/postmaster/syslogger.h +15 -10
- data/ext/pg_query/include/postmaster/walwriter.h +3 -3
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +1419 -914
- data/ext/pg_query/include/protobuf/pg_query.pb.h +43678 -32769
- data/ext/pg_query/include/regex/regex.h +18 -16
- data/ext/pg_query/include/replication/logicallauncher.h +3 -5
- data/ext/pg_query/include/replication/logicalproto.h +161 -17
- data/ext/pg_query/include/replication/logicalworker.h +1 -1
- data/ext/pg_query/include/replication/origin.h +7 -7
- data/ext/pg_query/include/replication/reorderbuffer.h +259 -42
- data/ext/pg_query/include/replication/slot.h +22 -11
- data/ext/pg_query/include/replication/syncrep.h +5 -5
- data/ext/pg_query/include/replication/walreceiver.h +145 -13
- data/ext/pg_query/include/replication/walsender.h +8 -8
- data/ext/pg_query/include/rewrite/prs2lock.h +1 -1
- data/ext/pg_query/include/rewrite/rewriteHandler.h +1 -3
- data/ext/pg_query/include/rewrite/rewriteManip.h +1 -1
- data/ext/pg_query/include/rewrite/rewriteSupport.h +1 -1
- data/ext/pg_query/include/storage/backendid.h +3 -3
- data/ext/pg_query/include/storage/block.h +4 -10
- data/ext/pg_query/include/storage/buf.h +1 -1
- data/ext/pg_query/include/storage/bufmgr.h +19 -14
- data/ext/pg_query/include/storage/bufpage.h +6 -8
- data/ext/pg_query/include/storage/condition_variable.h +13 -2
- data/ext/pg_query/include/storage/dsm.h +4 -1
- data/ext/pg_query/include/storage/dsm_impl.h +3 -2
- data/ext/pg_query/include/storage/fd.h +33 -3
- data/ext/pg_query/include/storage/fileset.h +40 -0
- data/ext/pg_query/include/storage/ipc.h +4 -1
- data/ext/pg_query/include/storage/item.h +1 -1
- data/ext/pg_query/include/storage/itemid.h +1 -1
- data/ext/pg_query/include/storage/itemptr.h +3 -1
- data/ext/pg_query/include/storage/large_object.h +2 -2
- data/ext/pg_query/include/storage/latch.h +9 -13
- data/ext/pg_query/include/storage/lmgr.h +2 -1
- data/ext/pg_query/include/storage/lock.h +11 -8
- data/ext/pg_query/include/storage/lockdefs.h +2 -2
- data/ext/pg_query/include/storage/lwlock.h +5 -32
- data/ext/pg_query/include/storage/lwlocknames.h +0 -1
- data/ext/pg_query/include/storage/off.h +1 -1
- data/ext/pg_query/include/storage/pg_sema.h +1 -1
- data/ext/pg_query/include/storage/pg_shmem.h +9 -7
- data/ext/pg_query/include/storage/pmsignal.h +15 -4
- data/ext/pg_query/include/storage/predicate.h +4 -4
- data/ext/pg_query/include/storage/proc.h +173 -59
- data/ext/pg_query/include/storage/procarray.h +98 -0
- data/ext/pg_query/include/storage/proclist_types.h +1 -1
- data/ext/pg_query/include/storage/procsignal.h +3 -7
- data/ext/pg_query/include/storage/relfilenode.h +1 -1
- data/ext/pg_query/include/storage/s_lock.h +60 -21
- data/ext/pg_query/include/storage/sharedfileset.h +3 -11
- data/ext/pg_query/include/storage/shm_mq.h +5 -4
- data/ext/pg_query/include/storage/shm_toc.h +1 -1
- data/ext/pg_query/include/storage/shmem.h +1 -1
- data/ext/pg_query/include/storage/sinval.h +3 -3
- data/ext/pg_query/include/storage/sinvaladt.h +1 -1
- data/ext/pg_query/include/storage/smgr.h +10 -8
- data/ext/pg_query/include/storage/spin.h +2 -2
- data/ext/pg_query/include/storage/standby.h +13 -6
- data/ext/pg_query/include/storage/standbydefs.h +2 -2
- data/ext/pg_query/include/storage/sync.h +7 -3
- data/ext/pg_query/include/tcop/cmdtag.h +1 -1
- data/ext/pg_query/include/tcop/cmdtaglist.h +3 -2
- data/ext/pg_query/include/tcop/deparse_utility.h +1 -1
- data/ext/pg_query/include/tcop/dest.h +1 -1
- data/ext/pg_query/include/tcop/fastpath.h +1 -2
- data/ext/pg_query/include/tcop/pquery.h +1 -1
- data/ext/pg_query/include/tcop/tcopprot.h +19 -11
- data/ext/pg_query/include/tcop/utility.h +7 -3
- data/ext/pg_query/include/tsearch/ts_cache.h +2 -2
- data/ext/pg_query/include/utils/acl.h +24 -3
- data/ext/pg_query/include/utils/aclchk_internal.h +1 -1
- data/ext/pg_query/include/utils/array.h +7 -2
- data/ext/pg_query/include/utils/backend_progress.h +44 -0
- data/ext/pg_query/include/utils/backend_status.h +321 -0
- data/ext/pg_query/include/utils/builtins.h +10 -11
- data/ext/pg_query/include/utils/bytea.h +3 -2
- data/ext/pg_query/include/utils/catcache.h +1 -1
- data/ext/pg_query/include/utils/date.h +1 -1
- data/ext/pg_query/include/utils/datetime.h +8 -7
- data/ext/pg_query/include/utils/datum.h +9 -1
- data/ext/pg_query/include/utils/dsa.h +1 -1
- data/ext/pg_query/include/utils/dynahash.h +4 -3
- data/ext/pg_query/include/utils/elog.h +52 -21
- data/ext/pg_query/include/utils/errcodes.h +2 -0
- data/ext/pg_query/include/utils/expandeddatum.h +1 -1
- data/ext/pg_query/include/utils/expandedrecord.h +1 -1
- data/ext/pg_query/include/utils/float.h +7 -7
- data/ext/pg_query/include/utils/fmgroids.h +1300 -696
- data/ext/pg_query/include/utils/fmgrprotos.h +199 -16
- data/ext/pg_query/include/utils/fmgrtab.h +6 -5
- data/ext/pg_query/include/utils/guc.h +69 -43
- data/ext/pg_query/include/utils/guc_tables.h +23 -19
- data/ext/pg_query/include/utils/hsearch.h +15 -11
- data/ext/pg_query/include/utils/inval.h +4 -1
- data/ext/pg_query/include/utils/lsyscache.h +11 -1
- data/ext/pg_query/include/utils/memdebug.h +1 -1
- data/ext/pg_query/include/utils/memutils.h +8 -3
- data/ext/pg_query/include/utils/numeric.h +19 -5
- data/ext/pg_query/include/utils/palloc.h +25 -3
- data/ext/pg_query/include/utils/partcache.h +1 -1
- data/ext/pg_query/include/utils/pg_locale.h +17 -9
- data/ext/pg_query/include/utils/pg_lsn.h +1 -1
- data/ext/pg_query/include/utils/pgstat_internal.h +784 -0
- data/ext/pg_query/include/utils/pidfile.h +1 -1
- data/ext/pg_query/include/utils/plancache.h +6 -5
- data/ext/pg_query/include/utils/portal.h +10 -12
- data/ext/pg_query/include/utils/ps_status.h +1 -1
- data/ext/pg_query/include/utils/queryenvironment.h +1 -1
- data/ext/pg_query/include/utils/queryjumble.h +88 -0
- data/ext/pg_query/include/utils/regproc.h +14 -3
- data/ext/pg_query/include/utils/rel.h +71 -19
- data/ext/pg_query/include/utils/relcache.h +8 -5
- data/ext/pg_query/include/utils/reltrigger.h +1 -1
- data/ext/pg_query/include/utils/resowner.h +1 -1
- data/ext/pg_query/include/utils/rls.h +2 -2
- data/ext/pg_query/include/utils/ruleutils.h +4 -1
- data/ext/pg_query/include/utils/sharedtuplestore.h +1 -1
- data/ext/pg_query/include/utils/snapmgr.h +34 -14
- data/ext/pg_query/include/utils/snapshot.h +14 -1
- data/ext/pg_query/include/utils/sortsupport.h +117 -2
- data/ext/pg_query/include/utils/syscache.h +6 -1
- data/ext/pg_query/include/utils/timeout.h +11 -4
- data/ext/pg_query/include/utils/timestamp.h +6 -5
- data/ext/pg_query/include/utils/tuplesort.h +25 -11
- data/ext/pg_query/include/utils/tuplestore.h +2 -2
- data/ext/pg_query/include/utils/typcache.h +24 -17
- data/ext/pg_query/include/utils/tzparser.h +1 -1
- data/ext/pg_query/include/utils/varlena.h +5 -3
- data/ext/pg_query/include/utils/wait_event.h +289 -0
- data/ext/pg_query/include/utils/xml.h +4 -4
- data/ext/pg_query/pg_query.pb-c.c +4302 -2304
- data/ext/pg_query/pg_query_deparse.c +1106 -373
- data/ext/pg_query/pg_query_fingerprint.c +30 -10
- data/ext/pg_query/pg_query_json_plpgsql.c +0 -25
- data/ext/pg_query/pg_query_normalize.c +1 -1
- data/ext/pg_query/pg_query_outfuncs_json.c +54 -16
- data/ext/pg_query/pg_query_outfuncs_protobuf.c +70 -10
- data/ext/pg_query/pg_query_parse.c +1 -1
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +42 -8
- data/ext/pg_query/pg_query_scan.c +2 -1
- data/ext/pg_query/pg_query_split.c +3 -2
- data/ext/pg_query/src_backend_catalog_namespace.c +20 -9
- data/ext/pg_query/src_backend_catalog_pg_proc.c +4 -1
- data/ext/pg_query/src_backend_commands_define.c +11 -1
- data/ext/pg_query/src_backend_nodes_bitmapset.c +3 -1
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +401 -76
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +290 -46
- data/ext/pg_query/src_backend_nodes_extensible.c +1 -1
- data/ext/pg_query/src_backend_nodes_list.c +74 -11
- data/ext/pg_query/src_backend_nodes_makefuncs.c +5 -4
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +55 -12
- data/ext/pg_query/src_backend_nodes_value.c +28 -19
- data/ext/pg_query/src_backend_parser_gram.c +33874 -31261
- data/ext/pg_query/src_backend_parser_parser.c +26 -7
- data/ext/pg_query/src_backend_parser_scan.c +172 -209
- data/ext/pg_query/src_backend_parser_scansup.c +4 -28
- data/ext/pg_query/src_backend_postmaster_postmaster.c +77 -106
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +13 -4
- data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +5 -4
- data/ext/pg_query/src_backend_tcop_postgres.c +62 -23
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +140 -0
- data/ext/pg_query/src_backend_utils_adt_datum.c +13 -1
- data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_format_type.c +6 -2
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +71 -5
- data/ext/pg_query/src_backend_utils_error_assert.c +16 -14
- data/ext/pg_query/src_backend_utils_error_elog.c +172 -99
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +12 -17
- data/ext/pg_query/src_backend_utils_hash_dynahash.c +40 -10
- data/ext/pg_query/src_backend_utils_init_globals.c +5 -5
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +55 -66
- data/ext/pg_query/src_backend_utils_misc_guc.c +206 -45
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +7 -5
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +123 -35
- data/ext/pg_query/src_common_encnames.c +1 -1
- data/ext/pg_query/src_common_hashfn.c +3 -3
- data/ext/pg_query/src_common_keywords.c +15 -2
- data/ext/pg_query/src_common_kwlist_d.h +517 -494
- data/ext/pg_query/src_common_kwlookup.c +1 -1
- data/ext/pg_query/src_common_pg_prng.c +152 -0
- data/ext/pg_query/src_common_psprintf.c +1 -1
- data/ext/pg_query/src_common_string.c +7 -1
- data/ext/pg_query/src_common_stringinfo.c +1 -1
- data/ext/pg_query/src_common_wchar.c +701 -109
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +45 -20
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +1 -18
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1233 -1259
- data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +10 -10
- data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +2 -2
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +54 -56
- data/ext/pg_query/src_port_pg_bitutils.c +41 -31
- data/ext/pg_query/src_port_pgsleep.c +1 -1
- data/ext/pg_query/src_port_pgstrcasecmp.c +1 -1
- data/ext/pg_query/src_port_qsort.c +12 -224
- data/ext/pg_query/src_port_snprintf.c +37 -13
- data/ext/pg_query/src_port_strerror.c +9 -19
- data/ext/pg_query/src_port_strnlen.c +1 -1
- data/lib/pg_query/filter_columns.rb +1 -1
- data/lib/pg_query/fingerprint.rb +5 -1
- data/lib/pg_query/node.rb +2 -2
- data/lib/pg_query/param_refs.rb +1 -1
- data/lib/pg_query/parse.rb +20 -8
- data/lib/pg_query/pg_query_pb.rb +1108 -942
- data/lib/pg_query/treewalker.rb +6 -0
- data/lib/pg_query/truncate.rb +1 -1
- data/lib/pg_query/version.rb +1 -1
- metadata +27 -17
- data/ext/pg_query/include/access/xloginsert.h +0 -64
- data/ext/pg_query/include/bootstrap/bootstrap.h +0 -62
- data/ext/pg_query/include/parser/parse_clause.h +0 -54
- data/ext/pg_query/include/parser/parse_collate.h +0 -27
- data/ext/pg_query/include/parser/parse_target.h +0 -46
- data/ext/pg_query/pg_query_ruby_freebsd.sym +0 -2
- data/ext/pg_query/src_backend_libpq_pqcomm.c +0 -659
- data/ext/pg_query/src_backend_parser_parse_expr.c +0 -313
- data/ext/pg_query/src_port_erand48.c +0 -127
- data/ext/pg_query/src_port_random.c +0 -31
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* header file for postgres vacuum cleaner and statistics analyzer
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/commands/vacuum.h
|
|
@@ -15,6 +15,8 @@
|
|
|
15
15
|
#define VACUUM_H
|
|
16
16
|
|
|
17
17
|
#include "access/htup.h"
|
|
18
|
+
#include "access/genam.h"
|
|
19
|
+
#include "access/parallel.h"
|
|
18
20
|
#include "catalog/pg_class.h"
|
|
19
21
|
#include "catalog/pg_statistic.h"
|
|
20
22
|
#include "catalog/pg_type.h"
|
|
@@ -40,7 +42,7 @@
|
|
|
40
42
|
|
|
41
43
|
/*
|
|
42
44
|
* bulkdelete can be performed in parallel. This option can be used by
|
|
43
|
-
*
|
|
45
|
+
* index AMs that need to scan indexes to delete tuples.
|
|
44
46
|
*/
|
|
45
47
|
#define VACUUM_OPTION_PARALLEL_BULKDEL (1 << 0)
|
|
46
48
|
|
|
@@ -62,6 +64,9 @@
|
|
|
62
64
|
/* value for checking vacuum flags */
|
|
63
65
|
#define VACUUM_OPTION_MAX_VALID_VALUE ((1 << 3) - 1)
|
|
64
66
|
|
|
67
|
+
/* Abstract type for parallel vacuum state */
|
|
68
|
+
typedef struct ParallelVacuumState ParallelVacuumState;
|
|
69
|
+
|
|
65
70
|
/*----------
|
|
66
71
|
* ANALYZE builds one of these structs for each attribute (column) that is
|
|
67
72
|
* to be analyzed. The struct and subsidiary data are in anl_context,
|
|
@@ -174,30 +179,31 @@ typedef struct VacAttrStats
|
|
|
174
179
|
int rowstride;
|
|
175
180
|
} VacAttrStats;
|
|
176
181
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
VACOPT_DISABLE_PAGE_SKIPPING = 1 << 7 /* don't skip any pages */
|
|
187
|
-
} VacuumOption;
|
|
182
|
+
/* flag bits for VacuumParams->options */
|
|
183
|
+
#define VACOPT_VACUUM 0x01 /* do VACUUM */
|
|
184
|
+
#define VACOPT_ANALYZE 0x02 /* do ANALYZE */
|
|
185
|
+
#define VACOPT_VERBOSE 0x04 /* output INFO instrumentation messages */
|
|
186
|
+
#define VACOPT_FREEZE 0x08 /* FREEZE option */
|
|
187
|
+
#define VACOPT_FULL 0x10 /* FULL (non-concurrent) vacuum */
|
|
188
|
+
#define VACOPT_SKIP_LOCKED 0x20 /* skip if cannot get lock */
|
|
189
|
+
#define VACOPT_PROCESS_TOAST 0x40 /* process the TOAST table, if any */
|
|
190
|
+
#define VACOPT_DISABLE_PAGE_SKIPPING 0x80 /* don't skip any pages */
|
|
188
191
|
|
|
189
192
|
/*
|
|
190
|
-
*
|
|
193
|
+
* Values used by index_cleanup and truncate params.
|
|
191
194
|
*
|
|
192
|
-
*
|
|
193
|
-
*
|
|
195
|
+
* VACOPTVALUE_UNSPECIFIED is used as an initial placeholder when VACUUM
|
|
196
|
+
* command has no explicit value. When that happens the final usable value
|
|
197
|
+
* comes from the corresponding reloption (though the reloption default is
|
|
198
|
+
* usually used).
|
|
194
199
|
*/
|
|
195
|
-
typedef enum
|
|
200
|
+
typedef enum VacOptValue
|
|
196
201
|
{
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
202
|
+
VACOPTVALUE_UNSPECIFIED = 0,
|
|
203
|
+
VACOPTVALUE_AUTO,
|
|
204
|
+
VACOPTVALUE_DISABLED,
|
|
205
|
+
VACOPTVALUE_ENABLED,
|
|
206
|
+
} VacOptValue;
|
|
201
207
|
|
|
202
208
|
/*
|
|
203
209
|
* Parameters customizing behavior of VACUUM and ANALYZE.
|
|
@@ -207,7 +213,7 @@ typedef enum VacOptTernaryValue
|
|
|
207
213
|
*/
|
|
208
214
|
typedef struct VacuumParams
|
|
209
215
|
{
|
|
210
|
-
|
|
216
|
+
bits32 options; /* bitmask of VACOPT_* */
|
|
211
217
|
int freeze_min_age; /* min freeze age, -1 to use default */
|
|
212
218
|
int freeze_table_age; /* age at which to scan whole table */
|
|
213
219
|
int multixact_freeze_min_age; /* min multixact freeze age, -1 to
|
|
@@ -216,12 +222,10 @@ typedef struct VacuumParams
|
|
|
216
222
|
* whole table */
|
|
217
223
|
bool is_wraparound; /* force a for-wraparound vacuum */
|
|
218
224
|
int log_min_duration; /* minimum execution threshold in ms at
|
|
219
|
-
* which
|
|
220
|
-
*
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
VacOptTernaryValue truncate; /* Truncate empty pages at the end,
|
|
224
|
-
* default value depends on reloptions */
|
|
225
|
+
* which autovacuum is logged, -1 to use
|
|
226
|
+
* default */
|
|
227
|
+
VacOptValue index_cleanup; /* Do index vacuum and cleanup */
|
|
228
|
+
VacOptValue truncate; /* Truncate empty pages at the end */
|
|
225
229
|
|
|
226
230
|
/*
|
|
227
231
|
* The number of parallel vacuum workers. 0 by default which means choose
|
|
@@ -231,17 +235,34 @@ typedef struct VacuumParams
|
|
|
231
235
|
int nworkers;
|
|
232
236
|
} VacuumParams;
|
|
233
237
|
|
|
238
|
+
/*
|
|
239
|
+
* VacDeadItems stores TIDs whose index tuples are deleted by index vacuuming.
|
|
240
|
+
*/
|
|
241
|
+
typedef struct VacDeadItems
|
|
242
|
+
{
|
|
243
|
+
int max_items; /* # slots allocated in array */
|
|
244
|
+
int num_items; /* current # of entries */
|
|
245
|
+
|
|
246
|
+
/* Sorted array of TIDs to delete from indexes */
|
|
247
|
+
ItemPointerData items[FLEXIBLE_ARRAY_MEMBER];
|
|
248
|
+
} VacDeadItems;
|
|
249
|
+
|
|
250
|
+
#define MAXDEADITEMS(avail_mem) \
|
|
251
|
+
(((avail_mem) - offsetof(VacDeadItems, items)) / sizeof(ItemPointerData))
|
|
252
|
+
|
|
234
253
|
/* GUC parameters */
|
|
235
254
|
extern PGDLLIMPORT int default_statistics_target; /* PGDLLIMPORT for PostGIS */
|
|
236
|
-
extern int
|
|
237
|
-
extern int
|
|
238
|
-
extern int
|
|
239
|
-
extern int
|
|
255
|
+
extern PGDLLIMPORT int vacuum_freeze_min_age;
|
|
256
|
+
extern PGDLLIMPORT int vacuum_freeze_table_age;
|
|
257
|
+
extern PGDLLIMPORT int vacuum_multixact_freeze_min_age;
|
|
258
|
+
extern PGDLLIMPORT int vacuum_multixact_freeze_table_age;
|
|
259
|
+
extern PGDLLIMPORT int vacuum_failsafe_age;
|
|
260
|
+
extern PGDLLIMPORT int vacuum_multixact_failsafe_age;
|
|
240
261
|
|
|
241
262
|
/* Variables for cost-based parallel vacuum */
|
|
242
|
-
extern pg_atomic_uint32 *VacuumSharedCostBalance;
|
|
243
|
-
extern pg_atomic_uint32 *VacuumActiveNWorkers;
|
|
244
|
-
extern int
|
|
263
|
+
extern PGDLLIMPORT pg_atomic_uint32 *VacuumSharedCostBalance;
|
|
264
|
+
extern PGDLLIMPORT pg_atomic_uint32 *VacuumActiveNWorkers;
|
|
265
|
+
extern PGDLLIMPORT int VacuumCostBalanceLocal;
|
|
245
266
|
|
|
246
267
|
|
|
247
268
|
/* in commands/vacuum.c */
|
|
@@ -262,22 +283,48 @@ extern void vac_update_relstats(Relation relation,
|
|
|
262
283
|
bool hasindex,
|
|
263
284
|
TransactionId frozenxid,
|
|
264
285
|
MultiXactId minmulti,
|
|
286
|
+
bool *frozenxid_updated,
|
|
287
|
+
bool *minmulti_updated,
|
|
265
288
|
bool in_outer_xact);
|
|
266
|
-
extern
|
|
289
|
+
extern bool vacuum_set_xid_limits(Relation rel,
|
|
267
290
|
int freeze_min_age, int freeze_table_age,
|
|
268
291
|
int multixact_freeze_min_age,
|
|
269
292
|
int multixact_freeze_table_age,
|
|
270
293
|
TransactionId *oldestXmin,
|
|
294
|
+
MultiXactId *oldestMxact,
|
|
271
295
|
TransactionId *freezeLimit,
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
296
|
+
MultiXactId *multiXactCutoff);
|
|
297
|
+
extern bool vacuum_xid_failsafe_check(TransactionId relfrozenxid,
|
|
298
|
+
MultiXactId relminmxid);
|
|
275
299
|
extern void vac_update_datfrozenxid(void);
|
|
276
300
|
extern void vacuum_delay_point(void);
|
|
277
301
|
extern bool vacuum_is_relation_owner(Oid relid, Form_pg_class reltuple,
|
|
278
|
-
|
|
302
|
+
bits32 options);
|
|
279
303
|
extern Relation vacuum_open_relation(Oid relid, RangeVar *relation,
|
|
280
|
-
|
|
304
|
+
bits32 options, bool verbose,
|
|
305
|
+
LOCKMODE lmode);
|
|
306
|
+
extern IndexBulkDeleteResult *vac_bulkdel_one_index(IndexVacuumInfo *ivinfo,
|
|
307
|
+
IndexBulkDeleteResult *istat,
|
|
308
|
+
VacDeadItems *dead_items);
|
|
309
|
+
extern IndexBulkDeleteResult *vac_cleanup_one_index(IndexVacuumInfo *ivinfo,
|
|
310
|
+
IndexBulkDeleteResult *istat);
|
|
311
|
+
extern Size vac_max_items_to_alloc_size(int max_items);
|
|
312
|
+
|
|
313
|
+
/* in commands/vacuumparallel.c */
|
|
314
|
+
extern ParallelVacuumState *parallel_vacuum_init(Relation rel, Relation *indrels,
|
|
315
|
+
int nindexes, int nrequested_workers,
|
|
316
|
+
int max_items, int elevel,
|
|
317
|
+
BufferAccessStrategy bstrategy);
|
|
318
|
+
extern void parallel_vacuum_end(ParallelVacuumState *pvs, IndexBulkDeleteResult **istats);
|
|
319
|
+
extern VacDeadItems *parallel_vacuum_get_dead_items(ParallelVacuumState *pvs);
|
|
320
|
+
extern void parallel_vacuum_bulkdel_all_indexes(ParallelVacuumState *pvs,
|
|
321
|
+
long num_table_tuples,
|
|
322
|
+
int num_index_scans);
|
|
323
|
+
extern void parallel_vacuum_cleanup_all_indexes(ParallelVacuumState *pvs,
|
|
324
|
+
long num_table_tuples,
|
|
325
|
+
int num_index_scans,
|
|
326
|
+
bool estimated_count);
|
|
327
|
+
extern void parallel_vacuum_main(dsm_segment *seg, shm_toc *toc);
|
|
281
328
|
|
|
282
329
|
/* in commands/analyze.c */
|
|
283
330
|
extern void analyze_rel(Oid relid, RangeVar *relation,
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* variable.h
|
|
3
3
|
* Routines for handling specialized SET variables.
|
|
4
4
|
*
|
|
5
|
-
* Portions Copyright (c) 1996-
|
|
5
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
6
6
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
7
7
|
*
|
|
8
8
|
* src/include/commands/variable.h
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* File and directory permission definitions
|
|
4
4
|
*
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* src/include/common/file_perm.h
|
|
@@ -41,11 +41,11 @@
|
|
|
41
41
|
#define PG_FILE_MODE_GROUP (S_IRUSR | S_IWUSR | S_IRGRP)
|
|
42
42
|
|
|
43
43
|
/* Modes for creating directories and files in the data directory */
|
|
44
|
-
extern int
|
|
45
|
-
extern int
|
|
44
|
+
extern PGDLLIMPORT int pg_dir_create_mode;
|
|
45
|
+
extern PGDLLIMPORT int pg_file_create_mode;
|
|
46
46
|
|
|
47
47
|
/* Mode mask to pass to umask() */
|
|
48
|
-
extern int
|
|
48
|
+
extern PGDLLIMPORT int pg_mode_mask;
|
|
49
49
|
|
|
50
50
|
/* Set permissions and mask based on the provided mode */
|
|
51
51
|
extern void SetDataDirectoryCreatePerm(int dataDirMode);
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* These definitions are used by both frontend and backend code.
|
|
7
7
|
*
|
|
8
|
-
* Copyright (c) 2003-
|
|
8
|
+
* Copyright (c) 2003-2022, PostgreSQL Global Development Group
|
|
9
9
|
*
|
|
10
10
|
* src/include/common/ip.h
|
|
11
11
|
*
|
|
@@ -18,12 +18,6 @@
|
|
|
18
18
|
#include "libpq/pqcomm.h" /* pgrminclude ignore */
|
|
19
19
|
|
|
20
20
|
|
|
21
|
-
#ifdef HAVE_UNIX_SOCKETS
|
|
22
|
-
#define IS_AF_UNIX(fam) ((fam) == AF_UNIX)
|
|
23
|
-
#else
|
|
24
|
-
#define IS_AF_UNIX(fam) (0)
|
|
25
|
-
#endif
|
|
26
|
-
|
|
27
21
|
extern int pg_getaddrinfo_all(const char *hostname, const char *servname,
|
|
28
22
|
const struct addrinfo *hintp,
|
|
29
23
|
struct addrinfo **result);
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* PostgreSQL's list of SQL keywords
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/common/keywords.h
|
|
@@ -22,12 +22,8 @@
|
|
|
22
22
|
#define TYPE_FUNC_NAME_KEYWORD 2
|
|
23
23
|
#define RESERVED_KEYWORD 3
|
|
24
24
|
|
|
25
|
-
#ifndef FRONTEND
|
|
26
25
|
extern PGDLLIMPORT const ScanKeywordList ScanKeywords;
|
|
27
26
|
extern PGDLLIMPORT const uint8 ScanKeywordCategories[];
|
|
28
|
-
|
|
29
|
-
extern const ScanKeywordList ScanKeywords;
|
|
30
|
-
extern const uint8 ScanKeywordCategories[];
|
|
31
|
-
#endif
|
|
27
|
+
extern PGDLLIMPORT const bool ScanKeywordBareLabel[];
|
|
32
28
|
|
|
33
29
|
#endif /* KEYWORDS_H */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Key word lookup for PostgreSQL
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/common/kwlookup.h
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/*-------------------------------------------------------------------------
|
|
2
|
+
*
|
|
3
|
+
* Pseudo-Random Number Generator
|
|
4
|
+
*
|
|
5
|
+
* Copyright (c) 2021-2022, PostgreSQL Global Development Group
|
|
6
|
+
*
|
|
7
|
+
* src/include/common/pg_prng.h
|
|
8
|
+
*
|
|
9
|
+
*-------------------------------------------------------------------------
|
|
10
|
+
*/
|
|
11
|
+
#ifndef PG_PRNG_H
|
|
12
|
+
#define PG_PRNG_H
|
|
13
|
+
|
|
14
|
+
/*
|
|
15
|
+
* State vector for PRNG generation. Callers should treat this as an
|
|
16
|
+
* opaque typedef, but we expose its definition to allow it to be
|
|
17
|
+
* embedded in other structs.
|
|
18
|
+
*/
|
|
19
|
+
typedef struct pg_prng_state
|
|
20
|
+
{
|
|
21
|
+
uint64 s0,
|
|
22
|
+
s1;
|
|
23
|
+
} pg_prng_state;
|
|
24
|
+
|
|
25
|
+
/*
|
|
26
|
+
* Callers not needing local PRNG series may use this global state vector,
|
|
27
|
+
* after initializing it with one of the pg_prng_...seed functions.
|
|
28
|
+
*/
|
|
29
|
+
extern PGDLLIMPORT __thread pg_prng_state pg_global_prng_state;
|
|
30
|
+
|
|
31
|
+
extern void pg_prng_seed(pg_prng_state *state, uint64 seed);
|
|
32
|
+
extern void pg_prng_fseed(pg_prng_state *state, double fseed);
|
|
33
|
+
extern bool pg_prng_seed_check(pg_prng_state *state);
|
|
34
|
+
|
|
35
|
+
/*
|
|
36
|
+
* Initialize the PRNG state from the pg_strong_random source,
|
|
37
|
+
* taking care that we don't produce all-zeroes. If this returns false,
|
|
38
|
+
* caller should initialize the PRNG state from some other random seed,
|
|
39
|
+
* using pg_prng_[f]seed.
|
|
40
|
+
*
|
|
41
|
+
* We implement this as a macro, so that the pg_strong_random() call is
|
|
42
|
+
* in the caller. If it were in pg_prng.c, programs using pg_prng.c
|
|
43
|
+
* but not needing strong seeding would nonetheless be forced to pull in
|
|
44
|
+
* pg_strong_random.c and thence OpenSSL.
|
|
45
|
+
*/
|
|
46
|
+
#define pg_prng_strong_seed(state) \
|
|
47
|
+
(pg_strong_random((void *) (state), sizeof(pg_prng_state)) ? \
|
|
48
|
+
pg_prng_seed_check(state) : false)
|
|
49
|
+
|
|
50
|
+
extern uint64 pg_prng_uint64(pg_prng_state *state);
|
|
51
|
+
extern uint64 pg_prng_uint64_range(pg_prng_state *state, uint64 rmin, uint64 rmax);
|
|
52
|
+
extern int64 pg_prng_int64(pg_prng_state *state);
|
|
53
|
+
extern int64 pg_prng_int64p(pg_prng_state *state);
|
|
54
|
+
extern uint32 pg_prng_uint32(pg_prng_state *state);
|
|
55
|
+
extern int32 pg_prng_int32(pg_prng_state *state);
|
|
56
|
+
extern int32 pg_prng_int32p(pg_prng_state *state);
|
|
57
|
+
extern double pg_prng_double(pg_prng_state *state);
|
|
58
|
+
extern bool pg_prng_bool(pg_prng_state *state);
|
|
59
|
+
|
|
60
|
+
#endif /* PG_PRNG_H */
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* relpath.h
|
|
4
4
|
* Declarations for GetRelationPath() and friends
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* src/include/common/relpath.h
|
|
@@ -56,7 +56,7 @@ typedef enum ForkNumber
|
|
|
56
56
|
|
|
57
57
|
#define FORKNAMECHARS 4 /* max chars for a fork name */
|
|
58
58
|
|
|
59
|
-
extern const char *const forkNames[];
|
|
59
|
+
extern PGDLLIMPORT const char *const forkNames[];
|
|
60
60
|
|
|
61
61
|
extern ForkNumber forkname_to_number(const char *forkName);
|
|
62
62
|
extern int forkname_chars(const char *str, ForkNumber *fork);
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* string.h
|
|
3
3
|
* string handling helpers
|
|
4
4
|
*
|
|
5
|
-
* Portions Copyright (c) 1996-
|
|
5
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
6
6
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
7
7
|
*
|
|
8
8
|
* src/include/common/string.h
|
|
@@ -10,10 +10,33 @@
|
|
|
10
10
|
#ifndef COMMON_STRING_H
|
|
11
11
|
#define COMMON_STRING_H
|
|
12
12
|
|
|
13
|
+
struct StringInfoData; /* avoid including stringinfo.h here */
|
|
14
|
+
|
|
15
|
+
typedef struct PromptInterruptContext
|
|
16
|
+
{
|
|
17
|
+
/* To avoid including <setjmp.h> here, jmpbuf is declared "void *" */
|
|
18
|
+
void *jmpbuf; /* existing longjmp buffer */
|
|
19
|
+
volatile bool *enabled; /* flag that enables longjmp-on-interrupt */
|
|
20
|
+
bool canceled; /* indicates whether cancellation occurred */
|
|
21
|
+
} PromptInterruptContext;
|
|
22
|
+
|
|
23
|
+
/* functions in src/common/string.c */
|
|
13
24
|
extern bool pg_str_endswith(const char *str, const char *end);
|
|
14
25
|
extern int strtoint(const char *pg_restrict str, char **pg_restrict endptr,
|
|
15
26
|
int base);
|
|
16
27
|
extern void pg_clean_ascii(char *str);
|
|
17
28
|
extern int pg_strip_crlf(char *str);
|
|
29
|
+
extern bool pg_is_ascii(const char *str);
|
|
30
|
+
|
|
31
|
+
/* functions in src/common/pg_get_line.c */
|
|
32
|
+
extern char *pg_get_line(FILE *stream, PromptInterruptContext *prompt_ctx);
|
|
33
|
+
extern bool pg_get_line_buf(FILE *stream, struct StringInfoData *buf);
|
|
34
|
+
extern bool pg_get_line_append(FILE *stream, struct StringInfoData *buf,
|
|
35
|
+
PromptInterruptContext *prompt_ctx);
|
|
36
|
+
|
|
37
|
+
/* functions in src/common/sprompt.c */
|
|
38
|
+
extern char *simple_prompt(const char *prompt, bool echo);
|
|
39
|
+
extern char *simple_prompt_extended(const char *prompt, bool echo,
|
|
40
|
+
PromptInterruptContext *prompt_ctx);
|
|
18
41
|
|
|
19
42
|
#endif /* COMMON_STRING_H */
|
|
@@ -25,7 +25,8 @@ static const struct mbinterval combining[] = {
|
|
|
25
25
|
{0x0825, 0x0827},
|
|
26
26
|
{0x0829, 0x082D},
|
|
27
27
|
{0x0859, 0x085B},
|
|
28
|
-
{
|
|
28
|
+
{0x0898, 0x089F},
|
|
29
|
+
{0x08CA, 0x08E1},
|
|
29
30
|
{0x08E3, 0x0902},
|
|
30
31
|
{0x093A, 0x093A},
|
|
31
32
|
{0x093C, 0x093C},
|
|
@@ -59,6 +60,7 @@ static const struct mbinterval combining[] = {
|
|
|
59
60
|
{0x0BCD, 0x0BCD},
|
|
60
61
|
{0x0C00, 0x0C00},
|
|
61
62
|
{0x0C04, 0x0C04},
|
|
63
|
+
{0x0C3C, 0x0C3C},
|
|
62
64
|
{0x0C3E, 0x0C40},
|
|
63
65
|
{0x0C46, 0x0C56},
|
|
64
66
|
{0x0C62, 0x0C63},
|
|
@@ -104,7 +106,7 @@ static const struct mbinterval combining[] = {
|
|
|
104
106
|
{0x109D, 0x109D},
|
|
105
107
|
{0x135D, 0x135F},
|
|
106
108
|
{0x1712, 0x1714},
|
|
107
|
-
{0x1732,
|
|
109
|
+
{0x1732, 0x1733},
|
|
108
110
|
{0x1752, 0x1753},
|
|
109
111
|
{0x1772, 0x1773},
|
|
110
112
|
{0x17B4, 0x17B5},
|
|
@@ -113,6 +115,7 @@ static const struct mbinterval combining[] = {
|
|
|
113
115
|
{0x17C9, 0x17D3},
|
|
114
116
|
{0x17DD, 0x17DD},
|
|
115
117
|
{0x180B, 0x180D},
|
|
118
|
+
{0x180F, 0x180F},
|
|
116
119
|
{0x1885, 0x1886},
|
|
117
120
|
{0x18A9, 0x18A9},
|
|
118
121
|
{0x1920, 0x1922},
|
|
@@ -193,4 +196,113 @@ static const struct mbinterval combining[] = {
|
|
|
193
196
|
{0xFB1E, 0xFB1E},
|
|
194
197
|
{0xFE00, 0xFE0F},
|
|
195
198
|
{0xFE20, 0xFE2F},
|
|
199
|
+
{0x101FD, 0x101FD},
|
|
200
|
+
{0x102E0, 0x102E0},
|
|
201
|
+
{0x10376, 0x1037A},
|
|
202
|
+
{0x10A01, 0x10A0F},
|
|
203
|
+
{0x10A38, 0x10A3F},
|
|
204
|
+
{0x10AE5, 0x10AE6},
|
|
205
|
+
{0x10D24, 0x10D27},
|
|
206
|
+
{0x10EAB, 0x10EAC},
|
|
207
|
+
{0x10F46, 0x10F50},
|
|
208
|
+
{0x10F82, 0x10F85},
|
|
209
|
+
{0x11001, 0x11001},
|
|
210
|
+
{0x11038, 0x11046},
|
|
211
|
+
{0x11070, 0x11070},
|
|
212
|
+
{0x11073, 0x11074},
|
|
213
|
+
{0x1107F, 0x11081},
|
|
214
|
+
{0x110B3, 0x110B6},
|
|
215
|
+
{0x110B9, 0x110BA},
|
|
216
|
+
{0x110C2, 0x110C2},
|
|
217
|
+
{0x11100, 0x11102},
|
|
218
|
+
{0x11127, 0x1112B},
|
|
219
|
+
{0x1112D, 0x11134},
|
|
220
|
+
{0x11173, 0x11173},
|
|
221
|
+
{0x11180, 0x11181},
|
|
222
|
+
{0x111B6, 0x111BE},
|
|
223
|
+
{0x111C9, 0x111CC},
|
|
224
|
+
{0x111CF, 0x111CF},
|
|
225
|
+
{0x1122F, 0x11231},
|
|
226
|
+
{0x11234, 0x11234},
|
|
227
|
+
{0x11236, 0x11237},
|
|
228
|
+
{0x1123E, 0x1123E},
|
|
229
|
+
{0x112DF, 0x112DF},
|
|
230
|
+
{0x112E3, 0x112EA},
|
|
231
|
+
{0x11300, 0x11301},
|
|
232
|
+
{0x1133B, 0x1133C},
|
|
233
|
+
{0x11340, 0x11340},
|
|
234
|
+
{0x11366, 0x11374},
|
|
235
|
+
{0x11438, 0x1143F},
|
|
236
|
+
{0x11442, 0x11444},
|
|
237
|
+
{0x11446, 0x11446},
|
|
238
|
+
{0x1145E, 0x1145E},
|
|
239
|
+
{0x114B3, 0x114B8},
|
|
240
|
+
{0x114BA, 0x114BA},
|
|
241
|
+
{0x114BF, 0x114C0},
|
|
242
|
+
{0x114C2, 0x114C3},
|
|
243
|
+
{0x115B2, 0x115B5},
|
|
244
|
+
{0x115BC, 0x115BD},
|
|
245
|
+
{0x115BF, 0x115C0},
|
|
246
|
+
{0x115DC, 0x115DD},
|
|
247
|
+
{0x11633, 0x1163A},
|
|
248
|
+
{0x1163D, 0x1163D},
|
|
249
|
+
{0x1163F, 0x11640},
|
|
250
|
+
{0x116AB, 0x116AB},
|
|
251
|
+
{0x116AD, 0x116AD},
|
|
252
|
+
{0x116B0, 0x116B5},
|
|
253
|
+
{0x116B7, 0x116B7},
|
|
254
|
+
{0x1171D, 0x1171F},
|
|
255
|
+
{0x11722, 0x11725},
|
|
256
|
+
{0x11727, 0x1172B},
|
|
257
|
+
{0x1182F, 0x11837},
|
|
258
|
+
{0x11839, 0x1183A},
|
|
259
|
+
{0x1193B, 0x1193C},
|
|
260
|
+
{0x1193E, 0x1193E},
|
|
261
|
+
{0x11943, 0x11943},
|
|
262
|
+
{0x119D4, 0x119DB},
|
|
263
|
+
{0x119E0, 0x119E0},
|
|
264
|
+
{0x11A01, 0x11A0A},
|
|
265
|
+
{0x11A33, 0x11A38},
|
|
266
|
+
{0x11A3B, 0x11A3E},
|
|
267
|
+
{0x11A47, 0x11A47},
|
|
268
|
+
{0x11A51, 0x11A56},
|
|
269
|
+
{0x11A59, 0x11A5B},
|
|
270
|
+
{0x11A8A, 0x11A96},
|
|
271
|
+
{0x11A98, 0x11A99},
|
|
272
|
+
{0x11C30, 0x11C3D},
|
|
273
|
+
{0x11C3F, 0x11C3F},
|
|
274
|
+
{0x11C92, 0x11CA7},
|
|
275
|
+
{0x11CAA, 0x11CB0},
|
|
276
|
+
{0x11CB2, 0x11CB3},
|
|
277
|
+
{0x11CB5, 0x11CB6},
|
|
278
|
+
{0x11D31, 0x11D45},
|
|
279
|
+
{0x11D47, 0x11D47},
|
|
280
|
+
{0x11D90, 0x11D91},
|
|
281
|
+
{0x11D95, 0x11D95},
|
|
282
|
+
{0x11D97, 0x11D97},
|
|
283
|
+
{0x11EF3, 0x11EF4},
|
|
284
|
+
{0x16AF0, 0x16AF4},
|
|
285
|
+
{0x16B30, 0x16B36},
|
|
286
|
+
{0x16F4F, 0x16F4F},
|
|
287
|
+
{0x16F8F, 0x16F92},
|
|
288
|
+
{0x16FE4, 0x16FE4},
|
|
289
|
+
{0x1BC9D, 0x1BC9E},
|
|
290
|
+
{0x1CF00, 0x1CF46},
|
|
291
|
+
{0x1D167, 0x1D169},
|
|
292
|
+
{0x1D17B, 0x1D182},
|
|
293
|
+
{0x1D185, 0x1D18B},
|
|
294
|
+
{0x1D1AA, 0x1D1AD},
|
|
295
|
+
{0x1D242, 0x1D244},
|
|
296
|
+
{0x1DA00, 0x1DA36},
|
|
297
|
+
{0x1DA3B, 0x1DA6C},
|
|
298
|
+
{0x1DA75, 0x1DA75},
|
|
299
|
+
{0x1DA84, 0x1DA84},
|
|
300
|
+
{0x1DA9B, 0x1DAAF},
|
|
301
|
+
{0x1E000, 0x1E02A},
|
|
302
|
+
{0x1E130, 0x1E136},
|
|
303
|
+
{0x1E2AE, 0x1E2AE},
|
|
304
|
+
{0x1E2EC, 0x1E2EF},
|
|
305
|
+
{0x1E8D0, 0x1E8D6},
|
|
306
|
+
{0x1E944, 0x1E94A},
|
|
307
|
+
{0xE0100, 0xE01EF},
|
|
196
308
|
};
|