pg_query 2.2.1 → 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 +21 -1
- data/README.md +29 -33
- 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 +18 -8
- data/lib/pg_query/pg_query_pb.rb +1108 -942
- data/lib/pg_query/truncate.rb +1 -1
- data/lib/pg_query/version.rb +1 -1
- metadata +28 -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/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
|
* POSTGRES LIBPQ buffer structure definitions.
|
5
5
|
*
|
6
6
|
*
|
7
|
-
* Portions Copyright (c) 1996-
|
7
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
9
9
|
*
|
10
10
|
* src/include/libpq/libpq.h
|
@@ -21,6 +21,15 @@
|
|
21
21
|
#include "storage/latch.h"
|
22
22
|
|
23
23
|
|
24
|
+
/*
|
25
|
+
* Callers of pq_getmessage() must supply a maximum expected message size.
|
26
|
+
* By convention, if there's not any specific reason to use another value,
|
27
|
+
* use PQ_SMALL_MESSAGE_LIMIT for messages that shouldn't be too long, and
|
28
|
+
* PQ_LARGE_MESSAGE_LIMIT for messages that can be long.
|
29
|
+
*/
|
30
|
+
#define PQ_SMALL_MESSAGE_LIMIT 10000
|
31
|
+
#define PQ_LARGE_MESSAGE_LIMIT (MaxAllocSize - 1)
|
32
|
+
|
24
33
|
typedef struct
|
25
34
|
{
|
26
35
|
void (*comm_reset) (void);
|
@@ -29,8 +38,6 @@ typedef struct
|
|
29
38
|
bool (*is_send_pending) (void);
|
30
39
|
int (*putmessage) (char msgtype, const char *s, size_t len);
|
31
40
|
void (*putmessage_noblock) (char msgtype, const char *s, size_t len);
|
32
|
-
void (*startcopyout) (void);
|
33
|
-
void (*endcopyout) (bool errorAbort);
|
34
41
|
} PQcommMethods;
|
35
42
|
|
36
43
|
extern const PGDLLIMPORT PQcommMethods *PqCommMethods;
|
@@ -43,8 +50,6 @@ extern const PGDLLIMPORT PQcommMethods *PqCommMethods;
|
|
43
50
|
(PqCommMethods->putmessage(msgtype, s, len))
|
44
51
|
#define pq_putmessage_noblock(msgtype, s, len) \
|
45
52
|
(PqCommMethods->putmessage_noblock(msgtype, s, len))
|
46
|
-
#define pq_startcopyout() (PqCommMethods->startcopyout())
|
47
|
-
#define pq_endcopyout(errorAbort) (PqCommMethods->endcopyout(errorAbort))
|
48
53
|
|
49
54
|
/*
|
50
55
|
* External functions.
|
@@ -53,7 +58,11 @@ extern const PGDLLIMPORT PQcommMethods *PqCommMethods;
|
|
53
58
|
/*
|
54
59
|
* prototypes for functions in pqcomm.c
|
55
60
|
*/
|
56
|
-
extern WaitEventSet *FeBeWaitSet;
|
61
|
+
extern PGDLLIMPORT WaitEventSet *FeBeWaitSet;
|
62
|
+
|
63
|
+
#define FeBeWaitSetSocketPos 0
|
64
|
+
#define FeBeWaitSetLatchPos 1
|
65
|
+
#define FeBeWaitSetNEvents 3
|
57
66
|
|
58
67
|
extern int StreamServerPort(int family, const char *hostName,
|
59
68
|
unsigned short portNumber, const char *unixSocketDir,
|
@@ -64,7 +73,6 @@ extern void TouchSocketFiles(void);
|
|
64
73
|
extern void RemoveSocketFiles(void);
|
65
74
|
extern void pq_init(void);
|
66
75
|
extern int pq_getbytes(char *s, size_t len);
|
67
|
-
extern int pq_getstring(StringInfo s);
|
68
76
|
extern void pq_startmsgread(void);
|
69
77
|
extern void pq_endmsgread(void);
|
70
78
|
extern bool pq_is_reading_msg(void);
|
@@ -73,21 +81,23 @@ extern int pq_getbyte(void);
|
|
73
81
|
extern int pq_peekbyte(void);
|
74
82
|
extern int pq_getbyte_if_available(unsigned char *c);
|
75
83
|
extern bool pq_buffer_has_data(void);
|
76
|
-
extern int
|
84
|
+
extern int pq_putmessage_v2(char msgtype, const char *s, size_t len);
|
85
|
+
extern bool pq_check_connection(void);
|
77
86
|
|
78
87
|
/*
|
79
88
|
* prototypes for functions in be-secure.c
|
80
89
|
*/
|
81
|
-
extern char *ssl_library;
|
82
|
-
extern char *ssl_cert_file;
|
83
|
-
extern char *ssl_key_file;
|
84
|
-
extern char *ssl_ca_file;
|
85
|
-
extern char *ssl_crl_file;
|
86
|
-
extern char *
|
90
|
+
extern PGDLLIMPORT char *ssl_library;
|
91
|
+
extern PGDLLIMPORT char *ssl_cert_file;
|
92
|
+
extern PGDLLIMPORT char *ssl_key_file;
|
93
|
+
extern PGDLLIMPORT char *ssl_ca_file;
|
94
|
+
extern PGDLLIMPORT char *ssl_crl_file;
|
95
|
+
extern PGDLLIMPORT char *ssl_crl_dir;
|
96
|
+
extern PGDLLIMPORT char *ssl_dh_params_file;
|
87
97
|
extern PGDLLIMPORT char *ssl_passphrase_command;
|
88
98
|
extern PGDLLIMPORT bool ssl_passphrase_command_supports_reload;
|
89
99
|
#ifdef USE_SSL
|
90
|
-
extern bool ssl_loaded_verify_locations;
|
100
|
+
extern PGDLLIMPORT bool ssl_loaded_verify_locations;
|
91
101
|
#endif
|
92
102
|
|
93
103
|
extern int secure_initialize(bool isServerStart);
|
@@ -108,11 +118,11 @@ extern ssize_t secure_open_gssapi(Port *port);
|
|
108
118
|
#endif
|
109
119
|
|
110
120
|
/* GUCs */
|
111
|
-
extern char *SSLCipherSuites;
|
112
|
-
extern char *SSLECDHCurve;
|
113
|
-
extern bool SSLPreferServerCiphers;
|
114
|
-
extern int
|
115
|
-
extern int
|
121
|
+
extern PGDLLIMPORT char *SSLCipherSuites;
|
122
|
+
extern PGDLLIMPORT char *SSLECDHCurve;
|
123
|
+
extern PGDLLIMPORT bool SSLPreferServerCiphers;
|
124
|
+
extern PGDLLIMPORT int ssl_min_protocol_version;
|
125
|
+
extern PGDLLIMPORT int ssl_max_protocol_version;
|
116
126
|
|
117
127
|
enum ssl_protocol_versions
|
118
128
|
{
|
@@ -6,7 +6,7 @@
|
|
6
6
|
* NOTE: for historical reasons, this does not correspond to pqcomm.c.
|
7
7
|
* pqcomm.c's routines are declared in libpq.h.
|
8
8
|
*
|
9
|
-
* Portions Copyright (c) 1996-
|
9
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
10
10
|
* Portions Copyright (c) 1994, Regents of the University of California
|
11
11
|
*
|
12
12
|
* src/include/libpq/pqcomm.h
|
@@ -62,7 +62,7 @@ struct sockaddr_storage
|
|
62
62
|
typedef struct
|
63
63
|
{
|
64
64
|
struct sockaddr_storage addr;
|
65
|
-
|
65
|
+
socklen_t salen;
|
66
66
|
} SockAddr;
|
67
67
|
|
68
68
|
/* Configure the UNIX socket location for the well known port. */
|
@@ -85,6 +85,15 @@ typedef struct
|
|
85
85
|
*/
|
86
86
|
#define UNIXSOCK_PATH_BUFLEN sizeof(((struct sockaddr_un *) NULL)->sun_path)
|
87
87
|
|
88
|
+
/*
|
89
|
+
* A host that looks either like an absolute path or starts with @ is
|
90
|
+
* interpreted as a Unix-domain socket address.
|
91
|
+
*/
|
92
|
+
static inline bool
|
93
|
+
is_unixsock_path(const char *path)
|
94
|
+
{
|
95
|
+
return is_absolute_path(path) || path[0] == '@';
|
96
|
+
}
|
88
97
|
|
89
98
|
/*
|
90
99
|
* These manipulate the frontend/backend protocol version number.
|
@@ -105,9 +114,12 @@ typedef struct
|
|
105
114
|
#define PG_PROTOCOL_MINOR(v) ((v) & 0x0000ffff)
|
106
115
|
#define PG_PROTOCOL(m,n) (((m) << 16) | (n))
|
107
116
|
|
108
|
-
/*
|
117
|
+
/*
|
118
|
+
* The earliest and latest frontend/backend protocol version supported.
|
119
|
+
* (Only protocol version 3 is currently supported)
|
120
|
+
*/
|
109
121
|
|
110
|
-
#define PG_PROTOCOL_EARLIEST PG_PROTOCOL(
|
122
|
+
#define PG_PROTOCOL_EARLIEST PG_PROTOCOL(3,0)
|
111
123
|
#define PG_PROTOCOL_LATEST PG_PROTOCOL(3,0)
|
112
124
|
|
113
125
|
typedef uint32 ProtocolVersion; /* FE/BE protocol version number */
|
@@ -123,33 +135,7 @@ typedef ProtocolVersion MsgType;
|
|
123
135
|
|
124
136
|
typedef uint32 PacketLen;
|
125
137
|
|
126
|
-
|
127
|
-
/*
|
128
|
-
* Old-style startup packet layout with fixed-width fields. This is used in
|
129
|
-
* protocol 1.0 and 2.0, but not in later versions. Note that the fields
|
130
|
-
* in this layout are '\0' terminated only if there is room.
|
131
|
-
*/
|
132
|
-
|
133
|
-
#define SM_DATABASE 64
|
134
|
-
#define SM_USER 32
|
135
|
-
/* We append database name if db_user_namespace true. */
|
136
|
-
#define SM_DATABASE_USER (SM_DATABASE+SM_USER+1) /* +1 for @ */
|
137
|
-
#define SM_OPTIONS 64
|
138
|
-
#define SM_UNUSED 64
|
139
|
-
#define SM_TTY 64
|
140
|
-
|
141
|
-
typedef struct StartupPacket
|
142
|
-
{
|
143
|
-
ProtocolVersion protoVersion; /* Protocol version */
|
144
|
-
char database[SM_DATABASE]; /* Database name */
|
145
|
-
/* Db_user_namespace appends dbname */
|
146
|
-
char user[SM_USER]; /* User name */
|
147
|
-
char options[SM_OPTIONS]; /* Optional additional args */
|
148
|
-
char unused[SM_UNUSED]; /* Unused */
|
149
|
-
char tty[SM_TTY]; /* Tty for debug output */
|
150
|
-
} StartupPacket;
|
151
|
-
|
152
|
-
extern bool Db_user_namespace;
|
138
|
+
extern PGDLLIMPORT bool Db_user_namespace;
|
153
139
|
|
154
140
|
/*
|
155
141
|
* In protocol 3.0 and later, the startup packet length is not fixed, but
|
@@ -3,7 +3,7 @@
|
|
3
3
|
* pqformat.h
|
4
4
|
* Definitions for formatting and parsing frontend/backend messages
|
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/libpq/pqformat.h
|
@@ -3,7 +3,7 @@
|
|
3
3
|
* pqsignal.h
|
4
4
|
* Backend signal(2) support (see also src/port/pqsignal.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/libpq/pqsignal.h
|
@@ -30,9 +30,9 @@ extern int pqsigsetmask(int mask);
|
|
30
30
|
#define sigdelset(set, signum) (*(set) &= ~(sigmask(signum)))
|
31
31
|
#endif /* WIN32 */
|
32
32
|
|
33
|
-
extern sigset_t UnBlockSig
|
34
|
-
|
35
|
-
|
33
|
+
extern PGDLLIMPORT sigset_t UnBlockSig;
|
34
|
+
extern PGDLLIMPORT sigset_t BlockSig;
|
35
|
+
extern PGDLLIMPORT sigset_t StartupBlockSig;
|
36
36
|
|
37
37
|
extern void pqinitmask(void);
|
38
38
|
|
@@ -3,7 +3,7 @@
|
|
3
3
|
* pg_wchar.h
|
4
4
|
* multibyte-character support
|
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/mb/pg_wchar.h
|
@@ -306,15 +306,33 @@ typedef enum pg_enc
|
|
306
306
|
|
307
307
|
/*
|
308
308
|
* When converting strings between different encodings, we assume that space
|
309
|
-
* for converted result is 4-to-1 growth in the worst case.
|
309
|
+
* for converted result is 4-to-1 growth in the worst case. The rate for
|
310
310
|
* currently supported encoding pairs are within 3 (SJIS JIS X0201 half width
|
311
|
-
*
|
311
|
+
* kana -> UTF8 is the worst case). So "4" should be enough for the moment.
|
312
312
|
*
|
313
313
|
* Note that this is not the same as the maximum character width in any
|
314
314
|
* particular encoding.
|
315
315
|
*/
|
316
316
|
#define MAX_CONVERSION_GROWTH 4
|
317
317
|
|
318
|
+
/*
|
319
|
+
* Maximum byte length of a string that's required in any encoding to convert
|
320
|
+
* at least one character to any other encoding. In other words, if you feed
|
321
|
+
* MAX_CONVERSION_INPUT_LENGTH bytes to any encoding conversion function, it
|
322
|
+
* is guaranteed to be able to convert something without needing more input
|
323
|
+
* (assuming the input is valid).
|
324
|
+
*
|
325
|
+
* Currently, the maximum case is the conversion UTF8 -> SJIS JIS X0201 half
|
326
|
+
* width kana, where a pair of UTF-8 characters is converted into a single
|
327
|
+
* SHIFT_JIS_2004 character (the reverse of the worst case for
|
328
|
+
* MAX_CONVERSION_GROWTH). It needs 6 bytes of input. In theory, a
|
329
|
+
* user-defined conversion function might have more complicated cases, although
|
330
|
+
* for the reverse mapping you would probably also need to bump up
|
331
|
+
* MAX_CONVERSION_GROWTH. But there is no need to be stingy here, so make it
|
332
|
+
* generous.
|
333
|
+
*/
|
334
|
+
#define MAX_CONVERSION_INPUT_LENGTH 16
|
335
|
+
|
318
336
|
/*
|
319
337
|
* Maximum byte length of the string equivalent to any one Unicode code point,
|
320
338
|
* in any backend encoding. The current value assumes that a 4-byte UTF-8
|
@@ -341,7 +359,7 @@ typedef struct pg_enc2name
|
|
341
359
|
#endif
|
342
360
|
} pg_enc2name;
|
343
361
|
|
344
|
-
extern const pg_enc2name pg_enc2name_tbl[];
|
362
|
+
extern PGDLLIMPORT const pg_enc2name pg_enc2name_tbl[];
|
345
363
|
|
346
364
|
/*
|
347
365
|
* Encoding names for gettext
|
@@ -352,7 +370,7 @@ typedef struct pg_enc2gettext
|
|
352
370
|
const char *name;
|
353
371
|
} pg_enc2gettext;
|
354
372
|
|
355
|
-
extern const pg_enc2gettext pg_enc2gettext_tbl[];
|
373
|
+
extern PGDLLIMPORT const pg_enc2gettext pg_enc2gettext_tbl[];
|
356
374
|
|
357
375
|
/*
|
358
376
|
* pg_wchar stuff
|
@@ -371,7 +389,9 @@ typedef int (*mbdisplaylen_converter) (const unsigned char *mbstr);
|
|
371
389
|
|
372
390
|
typedef bool (*mbcharacter_incrementer) (unsigned char *mbstr, int len);
|
373
391
|
|
374
|
-
typedef int (*
|
392
|
+
typedef int (*mbchar_verifier) (const unsigned char *mbstr, int len);
|
393
|
+
|
394
|
+
typedef int (*mbstr_verifier) (const unsigned char *mbstr, int len);
|
375
395
|
|
376
396
|
typedef struct
|
377
397
|
{
|
@@ -381,11 +401,12 @@ typedef struct
|
|
381
401
|
* to a multibyte */
|
382
402
|
mblen_converter mblen; /* get byte length of a char */
|
383
403
|
mbdisplaylen_converter dsplen; /* get display width of a char */
|
384
|
-
|
404
|
+
mbchar_verifier mbverifychar; /* verify multibyte character */
|
405
|
+
mbstr_verifier mbverifystr; /* verify multibyte string */
|
385
406
|
int maxmblen; /* max bytes for a char in this encoding */
|
386
407
|
} pg_wchar_tbl;
|
387
408
|
|
388
|
-
extern const pg_wchar_tbl pg_wchar_table[];
|
409
|
+
extern PGDLLIMPORT const pg_wchar_tbl pg_wchar_table[];
|
389
410
|
|
390
411
|
/*
|
391
412
|
* Data structures for conversions between UTF-8 and other encodings
|
@@ -555,7 +576,8 @@ extern int pg_valid_server_encoding_id(int encoding);
|
|
555
576
|
extern int pg_encoding_mblen(int encoding, const char *mbstr);
|
556
577
|
extern int pg_encoding_mblen_bounded(int encoding, const char *mbstr);
|
557
578
|
extern int pg_encoding_dsplen(int encoding, const char *mbstr);
|
558
|
-
extern int
|
579
|
+
extern int pg_encoding_verifymbchar(int encoding, const char *mbstr, int len);
|
580
|
+
extern int pg_encoding_verifymbstr(int encoding, const char *mbstr, int len);
|
559
581
|
extern int pg_encoding_max_length(int encoding);
|
560
582
|
extern int pg_valid_client_encoding(const char *name);
|
561
583
|
extern int pg_valid_server_encoding(const char *name);
|
@@ -613,6 +635,12 @@ extern int pg_bind_textdomain_codeset(const char *domainname);
|
|
613
635
|
extern unsigned char *pg_do_encoding_conversion(unsigned char *src, int len,
|
614
636
|
int src_encoding,
|
615
637
|
int dest_encoding);
|
638
|
+
extern int pg_do_encoding_conversion_buf(Oid proc,
|
639
|
+
int src_encoding,
|
640
|
+
int dest_encoding,
|
641
|
+
unsigned char *src, int srclen,
|
642
|
+
unsigned char *dst, int dstlen,
|
643
|
+
bool noError);
|
616
644
|
|
617
645
|
extern char *pg_client_to_server(const char *s, int len);
|
618
646
|
extern char *pg_server_to_client(const char *s, int len);
|
@@ -624,18 +652,18 @@ extern void pg_unicode_to_server(pg_wchar c, unsigned char *s);
|
|
624
652
|
extern unsigned short BIG5toCNS(unsigned short big5, unsigned char *lc);
|
625
653
|
extern unsigned short CNStoBIG5(unsigned short cns, unsigned char lc);
|
626
654
|
|
627
|
-
extern
|
655
|
+
extern int UtfToLocal(const unsigned char *utf, int len,
|
628
656
|
unsigned char *iso,
|
629
657
|
const pg_mb_radix_tree *map,
|
630
658
|
const pg_utf_to_local_combined *cmap, int cmapsize,
|
631
659
|
utf_local_conversion_func conv_func,
|
632
|
-
int encoding);
|
633
|
-
extern
|
660
|
+
int encoding, bool noError);
|
661
|
+
extern int LocalToUtf(const unsigned char *iso, int len,
|
634
662
|
unsigned char *utf,
|
635
663
|
const pg_mb_radix_tree *map,
|
636
664
|
const pg_local_to_utf_combined *cmap, int cmapsize,
|
637
665
|
utf_local_conversion_func conv_func,
|
638
|
-
int encoding);
|
666
|
+
int encoding, bool noError);
|
639
667
|
|
640
668
|
extern bool pg_verifymbstr(const char *mbstr, int len, bool noError);
|
641
669
|
extern bool pg_verify_mbstr(int encoding, const char *mbstr, int len,
|
@@ -653,21 +681,75 @@ extern void report_invalid_encoding(int encoding, const char *mbstr, int len) pg
|
|
653
681
|
extern void report_untranslatable_char(int src_encoding, int dest_encoding,
|
654
682
|
const char *mbstr, int len) pg_attribute_noreturn();
|
655
683
|
|
656
|
-
extern
|
657
|
-
int src_encoding, int dest_encoding,
|
658
|
-
|
659
|
-
|
660
|
-
|
661
|
-
|
662
|
-
|
684
|
+
extern int local2local(const unsigned char *l, unsigned char *p, int len,
|
685
|
+
int src_encoding, int dest_encoding,
|
686
|
+
const unsigned char *tab, bool noError);
|
687
|
+
extern int latin2mic(const unsigned char *l, unsigned char *p, int len,
|
688
|
+
int lc, int encoding, bool noError);
|
689
|
+
extern int mic2latin(const unsigned char *mic, unsigned char *p, int len,
|
690
|
+
int lc, int encoding, bool noError);
|
691
|
+
extern int latin2mic_with_table(const unsigned char *l, unsigned char *p,
|
663
692
|
int len, int lc, int encoding,
|
664
|
-
const unsigned char *tab);
|
665
|
-
extern
|
693
|
+
const unsigned char *tab, bool noError);
|
694
|
+
extern int mic2latin_with_table(const unsigned char *mic, unsigned char *p,
|
666
695
|
int len, int lc, int encoding,
|
667
|
-
const unsigned char *tab);
|
696
|
+
const unsigned char *tab, bool noError);
|
668
697
|
|
669
698
|
#ifdef WIN32
|
670
699
|
extern WCHAR *pgwin32_message_to_UTF16(const char *str, int len, int *utf16len);
|
671
700
|
#endif
|
672
701
|
|
702
|
+
|
703
|
+
/*
|
704
|
+
* Verify a chunk of bytes for valid ASCII.
|
705
|
+
*
|
706
|
+
* Returns false if the input contains any zero bytes or bytes with the
|
707
|
+
* high-bit set. Input len must be a multiple of 8.
|
708
|
+
*/
|
709
|
+
static inline bool
|
710
|
+
is_valid_ascii(const unsigned char *s, int len)
|
711
|
+
{
|
712
|
+
uint64 chunk,
|
713
|
+
highbit_cum = UINT64CONST(0),
|
714
|
+
zero_cum = UINT64CONST(0x8080808080808080);
|
715
|
+
|
716
|
+
Assert(len % sizeof(chunk) == 0);
|
717
|
+
|
718
|
+
while (len > 0)
|
719
|
+
{
|
720
|
+
memcpy(&chunk, s, sizeof(chunk));
|
721
|
+
|
722
|
+
/*
|
723
|
+
* Capture any zero bytes in this chunk.
|
724
|
+
*
|
725
|
+
* First, add 0x7f to each byte. This sets the high bit in each byte,
|
726
|
+
* unless it was a zero. If any resulting high bits are zero, the
|
727
|
+
* corresponding high bits in the zero accumulator will be cleared.
|
728
|
+
*
|
729
|
+
* If none of the bytes in the chunk had the high bit set, the max
|
730
|
+
* value each byte can have after the addition is 0x7f + 0x7f = 0xfe,
|
731
|
+
* and we don't need to worry about carrying over to the next byte. If
|
732
|
+
* any input bytes did have the high bit set, it doesn't matter
|
733
|
+
* because we check for those separately.
|
734
|
+
*/
|
735
|
+
zero_cum &= (chunk + UINT64CONST(0x7f7f7f7f7f7f7f7f));
|
736
|
+
|
737
|
+
/* Capture any set bits in this chunk. */
|
738
|
+
highbit_cum |= chunk;
|
739
|
+
|
740
|
+
s += sizeof(chunk);
|
741
|
+
len -= sizeof(chunk);
|
742
|
+
}
|
743
|
+
|
744
|
+
/* Check if any high bits in the high bit accumulator got set. */
|
745
|
+
if (highbit_cum & UINT64CONST(0x8080808080808080))
|
746
|
+
return false;
|
747
|
+
|
748
|
+
/* Check if any high bits in the zero accumulator got cleared. */
|
749
|
+
if (zero_cum != UINT64CONST(0x8080808080808080))
|
750
|
+
return false;
|
751
|
+
|
752
|
+
return true;
|
753
|
+
}
|
754
|
+
|
673
755
|
#endif /* PG_WCHAR_H */
|
@@ -3,7 +3,7 @@
|
|
3
3
|
* stringinfo_mb.h
|
4
4
|
* multibyte support for StringInfo
|
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/mb/stringinfo_mb.h
|
@@ -10,7 +10,7 @@
|
|
10
10
|
* Over time, this has also become the preferred place for widely known
|
11
11
|
* resource-limitation stuff, such as work_mem and check_stack_depth().
|
12
12
|
*
|
13
|
-
* Portions Copyright (c) 1996-
|
13
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
14
14
|
* Portions Copyright (c) 1994, Regents of the University of California
|
15
15
|
*
|
16
16
|
* src/include/miscadmin.h
|
@@ -91,8 +91,12 @@ extern PGDLLIMPORT __thread volatile sig_atomic_t InterruptPending;
|
|
91
91
|
extern PGDLLIMPORT volatile sig_atomic_t QueryCancelPending;
|
92
92
|
extern PGDLLIMPORT volatile sig_atomic_t ProcDiePending;
|
93
93
|
extern PGDLLIMPORT volatile sig_atomic_t IdleInTransactionSessionTimeoutPending;
|
94
|
+
extern PGDLLIMPORT volatile sig_atomic_t IdleSessionTimeoutPending;
|
94
95
|
extern PGDLLIMPORT volatile sig_atomic_t ProcSignalBarrierPending;
|
96
|
+
extern PGDLLIMPORT volatile sig_atomic_t LogMemoryContextPending;
|
97
|
+
extern PGDLLIMPORT volatile sig_atomic_t IdleStatsUpdateTimeoutPending;
|
95
98
|
|
99
|
+
extern PGDLLIMPORT volatile sig_atomic_t CheckClientConnectionPending;
|
96
100
|
extern PGDLLIMPORT volatile sig_atomic_t ClientConnectionLost;
|
97
101
|
|
98
102
|
/* these are marked volatile because they are examined by signal handlers: */
|
@@ -158,7 +162,7 @@ do { \
|
|
158
162
|
* from utils/init/globals.c
|
159
163
|
*/
|
160
164
|
extern PGDLLIMPORT pid_t PostmasterPid;
|
161
|
-
extern PGDLLIMPORT
|
165
|
+
extern PGDLLIMPORT bool IsPostmasterEnvironment;
|
162
166
|
extern PGDLLIMPORT bool IsUnderPostmaster;
|
163
167
|
extern PGDLLIMPORT bool IsBackgroundWorker;
|
164
168
|
extern PGDLLIMPORT bool IsBinaryUpgrade;
|
@@ -179,15 +183,15 @@ extern PGDLLIMPORT pg_time_t MyStartTime;
|
|
179
183
|
extern PGDLLIMPORT TimestampTz MyStartTimestamp;
|
180
184
|
extern PGDLLIMPORT struct Port *MyProcPort;
|
181
185
|
extern PGDLLIMPORT struct Latch *MyLatch;
|
182
|
-
extern int32 MyCancelKey;
|
183
|
-
extern int
|
186
|
+
extern PGDLLIMPORT int32 MyCancelKey;
|
187
|
+
extern PGDLLIMPORT int MyPMChildSlot;
|
184
188
|
|
185
|
-
extern char OutputFileName[];
|
189
|
+
extern PGDLLIMPORT char OutputFileName[];
|
186
190
|
extern PGDLLIMPORT char my_exec_path[];
|
187
|
-
extern char pkglib_path[];
|
191
|
+
extern PGDLLIMPORT char pkglib_path[];
|
188
192
|
|
189
193
|
#ifdef EXEC_BACKEND
|
190
|
-
extern char postgres_exec_path[];
|
194
|
+
extern PGDLLIMPORT char postgres_exec_path[];
|
191
195
|
#endif
|
192
196
|
|
193
197
|
/*
|
@@ -252,27 +256,25 @@ extern PGDLLIMPORT int IntervalStyle;
|
|
252
256
|
|
253
257
|
#define MAXTZLEN 10 /* max TZ name len, not counting tr. null */
|
254
258
|
|
255
|
-
extern bool enableFsync;
|
259
|
+
extern PGDLLIMPORT bool enableFsync;
|
256
260
|
extern PGDLLIMPORT bool allowSystemTableMods;
|
257
261
|
extern PGDLLIMPORT int work_mem;
|
258
262
|
extern PGDLLIMPORT double hash_mem_multiplier;
|
259
263
|
extern PGDLLIMPORT int maintenance_work_mem;
|
260
264
|
extern PGDLLIMPORT int max_parallel_maintenance_workers;
|
261
265
|
|
262
|
-
extern int
|
263
|
-
extern int
|
264
|
-
extern int
|
265
|
-
extern int
|
266
|
-
extern double VacuumCostDelay;
|
266
|
+
extern PGDLLIMPORT int VacuumCostPageHit;
|
267
|
+
extern PGDLLIMPORT int VacuumCostPageMiss;
|
268
|
+
extern PGDLLIMPORT int VacuumCostPageDirty;
|
269
|
+
extern PGDLLIMPORT int VacuumCostLimit;
|
270
|
+
extern PGDLLIMPORT double VacuumCostDelay;
|
267
271
|
|
268
|
-
extern int64 VacuumPageHit;
|
269
|
-
extern int64 VacuumPageMiss;
|
270
|
-
extern int64 VacuumPageDirty;
|
272
|
+
extern PGDLLIMPORT int64 VacuumPageHit;
|
273
|
+
extern PGDLLIMPORT int64 VacuumPageMiss;
|
274
|
+
extern PGDLLIMPORT int64 VacuumPageDirty;
|
271
275
|
|
272
|
-
extern int
|
273
|
-
extern bool VacuumCostActive;
|
274
|
-
|
275
|
-
extern double vacuum_cleanup_index_scale_factor;
|
276
|
+
extern PGDLLIMPORT int VacuumCostBalance;
|
277
|
+
extern PGDLLIMPORT bool VacuumCostActive;
|
276
278
|
|
277
279
|
|
278
280
|
/* in tcop/postgres.c */
|
@@ -298,7 +300,7 @@ extern void PreventCommandIfParallelMode(const char *cmdname);
|
|
298
300
|
extern void PreventCommandDuringRecovery(const char *cmdname);
|
299
301
|
|
300
302
|
/* in utils/misc/guc.c */
|
301
|
-
extern int
|
303
|
+
extern PGDLLIMPORT int trace_recovery_messages;
|
302
304
|
extern int trace_recovery(int trace_level);
|
303
305
|
|
304
306
|
/*****************************************************************************
|
@@ -311,7 +313,7 @@ extern int trace_recovery(int trace_level);
|
|
311
313
|
#define SECURITY_RESTRICTED_OPERATION 0x0002
|
312
314
|
#define SECURITY_NOFORCE_RLS 0x0004
|
313
315
|
|
314
|
-
extern char *DatabasePath;
|
316
|
+
extern PGDLLIMPORT char *DatabasePath;
|
315
317
|
|
316
318
|
/* now in utils/init/miscinit.c */
|
317
319
|
extern void InitPostmasterChild(void);
|
@@ -333,11 +335,10 @@ typedef enum BackendType
|
|
333
335
|
B_WAL_SENDER,
|
334
336
|
B_WAL_WRITER,
|
335
337
|
B_ARCHIVER,
|
336
|
-
B_STATS_COLLECTOR,
|
337
338
|
B_LOGGER,
|
338
339
|
} BackendType;
|
339
340
|
|
340
|
-
extern BackendType MyBackendType;
|
341
|
+
extern PGDLLIMPORT BackendType MyBackendType;
|
341
342
|
|
342
343
|
extern const char *GetBackendTypeDesc(BackendType backendType);
|
343
344
|
|
@@ -400,7 +401,7 @@ typedef enum ProcessingMode
|
|
400
401
|
NormalProcessing /* normal processing */
|
401
402
|
} ProcessingMode;
|
402
403
|
|
403
|
-
extern ProcessingMode Mode;
|
404
|
+
extern PGDLLIMPORT ProcessingMode Mode;
|
404
405
|
|
405
406
|
#define IsBootstrapProcessingMode() (Mode == BootstrapProcessing)
|
406
407
|
#define IsInitProcessingMode() (Mode == InitProcessing)
|
@@ -420,16 +421,17 @@ extern ProcessingMode Mode;
|
|
420
421
|
/*
|
421
422
|
* Auxiliary-process type identifiers. These used to be in bootstrap.h
|
422
423
|
* but it seems saner to have them here, with the ProcessingMode stuff.
|
423
|
-
* The MyAuxProcType global is defined and set in
|
424
|
+
* The MyAuxProcType global is defined and set in auxprocess.c.
|
425
|
+
*
|
426
|
+
* Make sure to list in the glossary any items you add here.
|
424
427
|
*/
|
425
428
|
|
426
429
|
typedef enum
|
427
430
|
{
|
428
431
|
NotAnAuxProcess = -1,
|
429
|
-
|
430
|
-
BootstrapProcess,
|
431
|
-
StartupProcess,
|
432
|
+
StartupProcess = 0,
|
432
433
|
BgWriterProcess,
|
434
|
+
ArchiverProcess,
|
433
435
|
CheckpointerProcess,
|
434
436
|
WalWriterProcess,
|
435
437
|
WalReceiverProcess,
|
@@ -437,11 +439,11 @@ typedef enum
|
|
437
439
|
NUM_AUXPROCTYPES /* Must be last! */
|
438
440
|
} AuxProcType;
|
439
441
|
|
440
|
-
extern AuxProcType MyAuxProcType;
|
442
|
+
extern PGDLLIMPORT AuxProcType MyAuxProcType;
|
441
443
|
|
442
|
-
#define AmBootstrapProcess() (MyAuxProcType == BootstrapProcess)
|
443
444
|
#define AmStartupProcess() (MyAuxProcType == StartupProcess)
|
444
445
|
#define AmBackgroundWriterProcess() (MyAuxProcType == BgWriterProcess)
|
446
|
+
#define AmArchiverProcess() (MyAuxProcType == ArchiverProcess)
|
445
447
|
#define AmCheckpointerProcess() (MyAuxProcType == CheckpointerProcess)
|
446
448
|
#define AmWalWriterProcess() (MyAuxProcType == WalWriterProcess)
|
447
449
|
#define AmWalReceiverProcess() (MyAuxProcType == WalReceiverProcess)
|
@@ -455,16 +457,21 @@ extern AuxProcType MyAuxProcType;
|
|
455
457
|
/* in utils/init/postinit.c */
|
456
458
|
extern void pg_split_opts(char **argv, int *argcp, const char *optstr);
|
457
459
|
extern void InitializeMaxBackends(void);
|
458
|
-
extern void InitPostgres(const char *in_dbname, Oid dboid,
|
459
|
-
|
460
|
+
extern void InitPostgres(const char *in_dbname, Oid dboid,
|
461
|
+
const char *username, Oid useroid,
|
462
|
+
bool load_session_libraries,
|
463
|
+
bool override_allow_connections,
|
464
|
+
char *out_dbname);
|
460
465
|
extern void BaseInit(void);
|
461
466
|
|
462
467
|
/* in utils/init/miscinit.c */
|
463
|
-
extern bool IgnoreSystemIndexes;
|
468
|
+
extern PGDLLIMPORT bool IgnoreSystemIndexes;
|
464
469
|
extern PGDLLIMPORT bool process_shared_preload_libraries_in_progress;
|
465
|
-
extern
|
466
|
-
extern
|
467
|
-
extern char *
|
470
|
+
extern PGDLLIMPORT bool process_shared_preload_libraries_done;
|
471
|
+
extern PGDLLIMPORT bool process_shmem_requests_in_progress;
|
472
|
+
extern PGDLLIMPORT char *session_preload_libraries_string;
|
473
|
+
extern PGDLLIMPORT char *shared_preload_libraries_string;
|
474
|
+
extern PGDLLIMPORT char *local_preload_libraries_string;
|
468
475
|
|
469
476
|
extern void CreateDataDirLockFile(bool amPostmaster);
|
470
477
|
extern void CreateSocketLockFile(const char *socketfile, bool amPostmaster,
|
@@ -475,15 +482,14 @@ extern bool RecheckDataDirLockFile(void);
|
|
475
482
|
extern void ValidatePgVersion(const char *path);
|
476
483
|
extern void process_shared_preload_libraries(void);
|
477
484
|
extern void process_session_preload_libraries(void);
|
485
|
+
extern void process_shmem_requests(void);
|
478
486
|
extern void pg_bindtextdomain(const char *domain);
|
479
487
|
extern bool has_rolreplication(Oid roleid);
|
480
488
|
|
481
|
-
|
482
|
-
extern
|
483
|
-
extern void CancelBackup(void);
|
489
|
+
typedef void (*shmem_request_hook_type) (void);
|
490
|
+
extern PGDLLIMPORT shmem_request_hook_type shmem_request_hook;
|
484
491
|
|
485
492
|
/* in executor/nodeHash.c */
|
486
493
|
extern size_t get_hash_memory_limit(void);
|
487
|
-
extern int get_hash_mem(void);
|
488
494
|
|
489
495
|
#endif /* MISCADMIN_H */
|