pg_query 2.1.0 → 4.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +104 -0
- data/README.md +59 -31
- data/Rakefile +2 -2
- data/ext/pg_query/extconf.rb +8 -2
- data/ext/pg_query/include/access/amapi.h +45 -1
- data/ext/pg_query/include/access/attmap.h +1 -1
- data/ext/pg_query/include/access/attnum.h +2 -2
- data/ext/pg_query/include/access/clog.h +4 -2
- data/ext/pg_query/include/access/commit_ts.h +6 -9
- data/ext/pg_query/include/access/detoast.h +1 -11
- data/ext/pg_query/include/access/genam.h +15 -12
- data/ext/pg_query/include/access/gin.h +2 -2
- data/ext/pg_query/include/access/htup.h +1 -1
- data/ext/pg_query/include/access/htup_details.h +75 -87
- data/ext/pg_query/include/access/itup.h +7 -1
- data/ext/pg_query/include/access/parallel.h +2 -2
- data/ext/pg_query/include/access/printtup.h +1 -1
- data/ext/pg_query/include/access/relation.h +1 -1
- data/ext/pg_query/include/access/relscan.h +17 -2
- data/ext/pg_query/include/access/rmgr.h +30 -3
- data/ext/pg_query/include/access/rmgrlist.h +23 -23
- data/ext/pg_query/include/access/sdir.h +1 -1
- data/ext/pg_query/include/access/skey.h +1 -1
- data/ext/pg_query/include/access/stratnum.h +4 -2
- data/ext/pg_query/include/access/sysattr.h +1 -1
- data/ext/pg_query/include/access/table.h +2 -1
- data/ext/pg_query/include/access/tableam.h +272 -20
- data/ext/pg_query/include/access/toast_compression.h +73 -0
- data/ext/pg_query/include/access/transam.h +123 -13
- data/ext/pg_query/include/access/tupconvert.h +1 -1
- data/ext/pg_query/include/access/tupdesc.h +1 -1
- data/ext/pg_query/include/access/tupmacs.h +3 -3
- data/ext/pg_query/include/access/twophase.h +5 -1
- data/ext/pg_query/include/access/xact.h +79 -19
- data/ext/pg_query/include/access/xlog.h +60 -155
- data/ext/pg_query/include/access/xlog_internal.h +50 -14
- data/ext/pg_query/include/access/xlogdefs.h +8 -16
- data/ext/pg_query/include/access/xlogprefetcher.h +55 -0
- data/ext/pg_query/include/access/xlogreader.h +148 -32
- data/ext/pg_query/include/access/xlogrecord.h +18 -9
- data/ext/pg_query/include/access/xlogrecovery.h +157 -0
- data/ext/pg_query/include/c.h +101 -44
- data/ext/pg_query/include/catalog/catalog.h +3 -1
- data/ext/pg_query/include/catalog/catversion.h +2 -2
- data/ext/pg_query/include/catalog/dependency.h +10 -16
- data/ext/pg_query/include/catalog/genbki.h +83 -5
- data/ext/pg_query/include/catalog/index.h +18 -3
- data/ext/pg_query/include/catalog/indexing.h +12 -324
- data/ext/pg_query/include/catalog/namespace.h +4 -2
- data/ext/pg_query/include/catalog/objectaccess.h +70 -2
- data/ext/pg_query/include/catalog/objectaddress.h +11 -6
- data/ext/pg_query/include/catalog/pg_aggregate.h +14 -10
- data/ext/pg_query/include/catalog/pg_aggregate_d.h +2 -1
- data/ext/pg_query/include/catalog/pg_am.h +4 -1
- data/ext/pg_query/include/catalog/pg_am_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_attribute.h +27 -10
- data/ext/pg_query/include/catalog/pg_attribute_d.h +21 -18
- data/ext/pg_query/include/catalog/pg_authid.h +7 -2
- data/ext/pg_query/include/catalog/pg_authid_d.h +17 -9
- data/ext/pg_query/include/catalog/pg_class.h +45 -15
- data/ext/pg_query/include/catalog/pg_class_d.h +31 -2
- data/ext/pg_query/include/catalog/pg_collation.h +33 -8
- data/ext/pg_query/include/catalog/pg_collation_d.h +20 -3
- data/ext/pg_query/include/catalog/pg_constraint.h +38 -12
- data/ext/pg_query/include/catalog/pg_constraint_d.h +10 -4
- data/ext/pg_query/include/catalog/pg_control.h +5 -5
- data/ext/pg_query/include/catalog/pg_conversion.h +7 -4
- data/ext/pg_query/include/catalog/pg_conversion_d.h +4 -1
- data/ext/pg_query/include/catalog/pg_depend.h +11 -7
- data/ext/pg_query/include/catalog/pg_depend_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_event_trigger.h +9 -3
- data/ext/pg_query/include/catalog/pg_event_trigger_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_index.h +17 -7
- data/ext/pg_query/include/catalog/pg_index_d.h +20 -17
- data/ext/pg_query/include/catalog/pg_language.h +10 -5
- data/ext/pg_query/include/catalog/pg_language_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_namespace.h +7 -2
- data/ext/pg_query/include/catalog/pg_namespace_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_opclass.h +8 -5
- data/ext/pg_query/include/catalog/pg_opclass_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_operator.h +21 -16
- data/ext/pg_query/include/catalog/pg_operator_d.h +37 -1
- data/ext/pg_query/include/catalog/pg_opfamily.h +6 -3
- data/ext/pg_query/include/catalog/pg_opfamily_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_parameter_acl.h +60 -0
- data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +34 -0
- data/ext/pg_query/include/catalog/pg_partitioned_table.h +20 -9
- data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +2 -1
- data/ext/pg_query/include/catalog/pg_proc.h +20 -11
- data/ext/pg_query/include/catalog/pg_proc_d.h +10 -8
- data/ext/pg_query/include/catalog/pg_publication.h +50 -4
- data/ext/pg_query/include/catalog/pg_publication_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_replication_origin.h +6 -1
- data/ext/pg_query/include/catalog/pg_replication_origin_d.h +5 -1
- data/ext/pg_query/include/catalog/pg_statistic.h +19 -12
- data/ext/pg_query/include/catalog/pg_statistic_d.h +2 -1
- data/ext/pg_query/include/catalog/pg_statistic_ext.h +19 -5
- data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +7 -2
- data/ext/pg_query/include/catalog/pg_transform.h +8 -5
- data/ext/pg_query/include/catalog/pg_transform_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_trigger.h +24 -8
- data/ext/pg_query/include/catalog/pg_trigger_d.h +4 -1
- data/ext/pg_query/include/catalog/pg_ts_config.h +6 -3
- data/ext/pg_query/include/catalog/pg_ts_config_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_ts_dict.h +8 -3
- data/ext/pg_query/include/catalog/pg_ts_dict_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_ts_parser.h +6 -3
- data/ext/pg_query/include/catalog/pg_ts_parser_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_ts_template.h +6 -3
- data/ext/pg_query/include/catalog/pg_ts_template_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_type.h +56 -24
- data/ext/pg_query/include/catalog/pg_type_d.h +70 -31
- data/ext/pg_query/include/catalog/storage.h +5 -3
- data/ext/pg_query/include/commands/async.h +4 -5
- data/ext/pg_query/include/commands/dbcommands.h +2 -1
- data/ext/pg_query/include/commands/defrem.h +11 -24
- data/ext/pg_query/include/commands/event_trigger.h +2 -2
- data/ext/pg_query/include/commands/explain.h +1 -1
- data/ext/pg_query/include/commands/prepare.h +1 -1
- data/ext/pg_query/include/commands/tablespace.h +3 -1
- data/ext/pg_query/include/commands/trigger.h +27 -17
- data/ext/pg_query/include/commands/user.h +2 -2
- data/ext/pg_query/include/commands/vacuum.h +88 -41
- data/ext/pg_query/include/commands/variable.h +1 -1
- data/ext/pg_query/include/common/file_perm.h +4 -4
- data/ext/pg_query/include/common/hashfn.h +1 -1
- data/ext/pg_query/include/common/ip.h +1 -7
- data/ext/pg_query/include/common/keywords.h +2 -6
- data/ext/pg_query/include/common/kwlookup.h +1 -1
- data/ext/pg_query/include/common/pg_prng.h +60 -0
- data/ext/pg_query/include/common/relpath.h +2 -2
- data/ext/pg_query/include/common/string.h +24 -1
- data/ext/pg_query/include/common/unicode_combining_table.h +114 -2
- data/ext/pg_query/include/common/unicode_east_asian_fw_table.h +125 -0
- data/ext/pg_query/include/datatype/timestamp.h +40 -1
- data/ext/pg_query/include/executor/execdesc.h +1 -1
- data/ext/pg_query/include/executor/executor.h +65 -22
- data/ext/pg_query/include/executor/functions.h +17 -3
- data/ext/pg_query/include/executor/instrument.h +33 -16
- data/ext/pg_query/include/executor/spi.h +41 -3
- data/ext/pg_query/include/executor/tablefunc.h +1 -1
- data/ext/pg_query/include/executor/tuptable.h +1 -1
- data/ext/pg_query/include/fmgr.h +13 -7
- data/ext/pg_query/include/funcapi.h +16 -4
- data/ext/pg_query/include/getaddrinfo.h +1 -1
- data/ext/pg_query/include/jit/jit.h +11 -11
- data/ext/pg_query/include/kwlist_d.h +517 -494
- data/ext/pg_query/include/lib/dshash.h +112 -0
- data/ext/pg_query/include/lib/ilist.h +20 -1
- data/ext/pg_query/include/lib/pairingheap.h +1 -1
- data/ext/pg_query/include/lib/simplehash.h +150 -25
- data/ext/pg_query/include/lib/sort_template.h +432 -0
- data/ext/pg_query/include/lib/stringinfo.h +1 -1
- data/ext/pg_query/include/libpq/auth.h +6 -4
- data/ext/pg_query/include/libpq/crypt.h +5 -4
- data/ext/pg_query/include/libpq/hba.h +43 -4
- data/ext/pg_query/include/libpq/libpq-be.h +23 -6
- data/ext/pg_query/include/libpq/libpq.h +31 -20
- data/ext/pg_query/include/libpq/pqcomm.h +17 -31
- data/ext/pg_query/include/libpq/pqformat.h +1 -1
- data/ext/pg_query/include/libpq/pqsignal.h +4 -4
- data/ext/pg_query/include/mb/pg_wchar.h +106 -23
- data/ext/pg_query/include/mb/stringinfo_mb.h +1 -1
- data/ext/pg_query/include/miscadmin.h +71 -52
- data/ext/pg_query/include/nodes/bitmapset.h +1 -1
- data/ext/pg_query/include/nodes/execnodes.h +272 -80
- data/ext/pg_query/include/nodes/extensible.h +4 -2
- data/ext/pg_query/include/nodes/lockoptions.h +1 -1
- data/ext/pg_query/include/nodes/makefuncs.h +7 -6
- data/ext/pg_query/include/nodes/memnodes.h +5 -3
- data/ext/pg_query/include/nodes/nodeFuncs.h +1 -1
- data/ext/pg_query/include/nodes/nodes.h +30 -11
- data/ext/pg_query/include/nodes/params.h +1 -1
- data/ext/pg_query/include/nodes/parsenodes.h +327 -94
- data/ext/pg_query/include/nodes/pathnodes.h +245 -67
- data/ext/pg_query/include/nodes/pg_list.h +75 -68
- data/ext/pg_query/include/nodes/plannodes.h +128 -30
- data/ext/pg_query/include/nodes/primnodes.h +99 -47
- data/ext/pg_query/include/nodes/print.h +1 -1
- data/ext/pg_query/include/nodes/tidbitmap.h +1 -1
- data/ext/pg_query/include/nodes/value.h +58 -39
- data/ext/pg_query/include/optimizer/cost.h +9 -2
- data/ext/pg_query/include/optimizer/geqo.h +9 -7
- data/ext/pg_query/include/optimizer/geqo_gene.h +1 -1
- data/ext/pg_query/include/optimizer/optimizer.h +25 -22
- data/ext/pg_query/include/optimizer/paths.h +6 -6
- data/ext/pg_query/include/optimizer/planmain.h +15 -14
- data/ext/pg_query/include/parser/analyze.h +19 -5
- data/ext/pg_query/include/parser/gram.h +947 -913
- data/ext/pg_query/include/parser/gramparse.h +1 -1
- data/ext/pg_query/include/parser/kwlist.h +463 -453
- data/ext/pg_query/include/parser/parse_agg.h +2 -7
- data/ext/pg_query/include/parser/parse_coerce.h +4 -1
- data/ext/pg_query/include/parser/parse_expr.h +2 -3
- data/ext/pg_query/include/parser/parse_func.h +2 -1
- data/ext/pg_query/include/parser/parse_node.h +21 -9
- data/ext/pg_query/include/parser/parse_oper.h +1 -3
- data/ext/pg_query/include/parser/parse_relation.h +5 -4
- data/ext/pg_query/include/parser/parse_type.h +1 -1
- data/ext/pg_query/include/parser/parser.h +31 -4
- data/ext/pg_query/include/parser/parsetree.h +1 -1
- data/ext/pg_query/include/parser/scanner.h +1 -1
- data/ext/pg_query/include/parser/scansup.h +2 -5
- data/ext/pg_query/include/partitioning/partdefs.h +1 -1
- data/ext/pg_query/include/pg_config.h +94 -46
- data/ext/pg_query/include/pg_config_manual.h +74 -21
- data/ext/pg_query/include/pg_getopt.h +6 -6
- data/ext/pg_query/include/pg_query.h +5 -4
- data/ext/pg_query/include/pg_query_enum_defs.c +358 -241
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +44 -7
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +1220 -422
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +43 -13
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +152 -26
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +11 -2
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +174 -30
- data/ext/pg_query/include/pg_trace.h +1 -1
- data/ext/pg_query/include/pgstat.h +449 -1237
- data/ext/pg_query/include/pgtime.h +14 -4
- data/ext/pg_query/include/pl_gram.h +126 -128
- data/ext/pg_query/include/pl_reserved_kwlist.h +1 -1
- data/ext/pg_query/include/pl_reserved_kwlist_d.h +10 -10
- data/ext/pg_query/include/pl_unreserved_kwlist.h +2 -3
- data/ext/pg_query/include/pl_unreserved_kwlist_d.h +54 -56
- data/ext/pg_query/include/plerrcodes.h +9 -1
- data/ext/pg_query/include/plpgsql.h +52 -54
- data/ext/pg_query/include/port/atomics/arch-arm.h +7 -1
- data/ext/pg_query/include/port/atomics/arch-ppc.h +1 -1
- data/ext/pg_query/include/port/atomics/arch-x86.h +1 -1
- data/ext/pg_query/include/port/atomics/fallback.h +1 -1
- data/ext/pg_query/include/port/atomics/generic-gcc.h +3 -3
- data/ext/pg_query/include/port/atomics/generic.h +1 -1
- data/ext/pg_query/include/port/atomics.h +1 -1
- data/ext/pg_query/include/port/pg_bitutils.h +88 -12
- data/ext/pg_query/include/port/pg_bswap.h +1 -1
- data/ext/pg_query/include/port/pg_crc32c.h +1 -1
- data/ext/pg_query/include/port.h +72 -43
- data/ext/pg_query/include/portability/instr_time.h +1 -1
- data/ext/pg_query/include/postgres.h +60 -16
- data/ext/pg_query/include/postmaster/autovacuum.h +17 -17
- data/ext/pg_query/include/postmaster/auxprocess.h +20 -0
- data/ext/pg_query/include/postmaster/bgworker.h +2 -1
- data/ext/pg_query/include/postmaster/bgworker_internals.h +2 -2
- data/ext/pg_query/include/postmaster/bgwriter.h +5 -5
- data/ext/pg_query/include/postmaster/fork_process.h +1 -1
- data/ext/pg_query/include/postmaster/interrupt.h +1 -1
- data/ext/pg_query/include/postmaster/pgarch.h +42 -8
- data/ext/pg_query/include/postmaster/postmaster.h +18 -17
- data/ext/pg_query/include/postmaster/startup.h +39 -0
- data/ext/pg_query/include/postmaster/syslogger.h +15 -10
- data/ext/pg_query/include/postmaster/walwriter.h +3 -3
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +1422 -916
- data/ext/pg_query/include/protobuf/pg_query.pb.h +43678 -32769
- data/ext/pg_query/include/regex/regex.h +18 -16
- data/ext/pg_query/include/replication/logicallauncher.h +3 -5
- data/ext/pg_query/include/replication/logicalproto.h +161 -17
- data/ext/pg_query/include/replication/logicalworker.h +1 -1
- data/ext/pg_query/include/replication/origin.h +7 -7
- data/ext/pg_query/include/replication/reorderbuffer.h +262 -44
- data/ext/pg_query/include/replication/slot.h +23 -12
- data/ext/pg_query/include/replication/syncrep.h +5 -5
- data/ext/pg_query/include/replication/walreceiver.h +145 -13
- data/ext/pg_query/include/replication/walsender.h +8 -8
- data/ext/pg_query/include/rewrite/prs2lock.h +1 -1
- data/ext/pg_query/include/rewrite/rewriteHandler.h +1 -3
- data/ext/pg_query/include/rewrite/rewriteManip.h +1 -1
- data/ext/pg_query/include/rewrite/rewriteSupport.h +1 -1
- data/ext/pg_query/include/storage/backendid.h +3 -3
- data/ext/pg_query/include/storage/block.h +4 -10
- data/ext/pg_query/include/storage/buf.h +1 -1
- data/ext/pg_query/include/storage/bufmgr.h +19 -14
- data/ext/pg_query/include/storage/bufpage.h +6 -8
- data/ext/pg_query/include/storage/condition_variable.h +13 -2
- data/ext/pg_query/include/storage/dsm.h +4 -1
- data/ext/pg_query/include/storage/dsm_impl.h +3 -2
- data/ext/pg_query/include/storage/fd.h +33 -3
- data/ext/pg_query/include/storage/fileset.h +40 -0
- data/ext/pg_query/include/storage/ipc.h +4 -1
- data/ext/pg_query/include/storage/item.h +1 -1
- data/ext/pg_query/include/storage/itemid.h +1 -1
- data/ext/pg_query/include/storage/itemptr.h +3 -1
- data/ext/pg_query/include/storage/large_object.h +2 -2
- data/ext/pg_query/include/storage/latch.h +9 -13
- data/ext/pg_query/include/storage/lmgr.h +2 -1
- data/ext/pg_query/include/storage/lock.h +17 -13
- data/ext/pg_query/include/storage/lockdefs.h +2 -2
- data/ext/pg_query/include/storage/lwlock.h +6 -32
- data/ext/pg_query/include/storage/lwlocknames.h +0 -1
- data/ext/pg_query/include/storage/off.h +1 -1
- data/ext/pg_query/include/storage/pg_sema.h +1 -1
- data/ext/pg_query/include/storage/pg_shmem.h +9 -7
- data/ext/pg_query/include/storage/pmsignal.h +15 -4
- data/ext/pg_query/include/storage/predicate.h +4 -4
- data/ext/pg_query/include/storage/proc.h +183 -55
- data/ext/pg_query/include/storage/procarray.h +98 -0
- data/ext/pg_query/include/storage/proclist_types.h +1 -1
- data/ext/pg_query/include/storage/procsignal.h +3 -7
- data/ext/pg_query/include/storage/relfilenode.h +1 -1
- data/ext/pg_query/include/storage/s_lock.h +67 -4
- data/ext/pg_query/include/storage/sharedfileset.h +3 -11
- data/ext/pg_query/include/storage/shm_mq.h +5 -4
- data/ext/pg_query/include/storage/shm_toc.h +1 -1
- data/ext/pg_query/include/storage/shmem.h +1 -1
- data/ext/pg_query/include/storage/sinval.h +3 -3
- data/ext/pg_query/include/storage/sinvaladt.h +1 -1
- data/ext/pg_query/include/storage/smgr.h +10 -8
- data/ext/pg_query/include/storage/spin.h +2 -2
- data/ext/pg_query/include/storage/standby.h +13 -6
- data/ext/pg_query/include/storage/standbydefs.h +2 -2
- data/ext/pg_query/include/storage/sync.h +7 -3
- data/ext/pg_query/include/tcop/cmdtag.h +1 -1
- data/ext/pg_query/include/tcop/cmdtaglist.h +3 -2
- data/ext/pg_query/include/tcop/deparse_utility.h +1 -1
- data/ext/pg_query/include/tcop/dest.h +1 -1
- data/ext/pg_query/include/tcop/fastpath.h +1 -2
- data/ext/pg_query/include/tcop/pquery.h +7 -1
- data/ext/pg_query/include/tcop/tcopprot.h +19 -11
- data/ext/pg_query/include/tcop/utility.h +7 -3
- data/ext/pg_query/include/tsearch/ts_cache.h +2 -2
- data/ext/pg_query/include/utils/acl.h +24 -3
- data/ext/pg_query/include/utils/aclchk_internal.h +1 -1
- data/ext/pg_query/include/utils/array.h +7 -2
- data/ext/pg_query/include/utils/backend_progress.h +44 -0
- data/ext/pg_query/include/utils/backend_status.h +321 -0
- data/ext/pg_query/include/utils/builtins.h +11 -11
- data/ext/pg_query/include/utils/bytea.h +3 -2
- data/ext/pg_query/include/utils/catcache.h +1 -1
- data/ext/pg_query/include/utils/date.h +1 -1
- data/ext/pg_query/include/utils/datetime.h +8 -7
- data/ext/pg_query/include/utils/datum.h +9 -1
- data/ext/pg_query/include/utils/dsa.h +1 -1
- data/ext/pg_query/include/utils/dynahash.h +4 -3
- data/ext/pg_query/include/utils/elog.h +52 -21
- data/ext/pg_query/include/utils/errcodes.h +2 -0
- data/ext/pg_query/include/utils/expandeddatum.h +1 -1
- data/ext/pg_query/include/utils/expandedrecord.h +1 -1
- data/ext/pg_query/include/utils/float.h +7 -7
- data/ext/pg_query/include/utils/fmgroids.h +1300 -696
- data/ext/pg_query/include/utils/fmgrprotos.h +199 -16
- data/ext/pg_query/include/utils/fmgrtab.h +6 -5
- data/ext/pg_query/include/utils/guc.h +69 -43
- data/ext/pg_query/include/utils/guc_tables.h +23 -19
- data/ext/pg_query/include/utils/hsearch.h +15 -11
- data/ext/pg_query/include/utils/inval.h +5 -1
- data/ext/pg_query/include/utils/lsyscache.h +11 -1
- data/ext/pg_query/include/utils/memdebug.h +1 -1
- data/ext/pg_query/include/utils/memutils.h +8 -3
- data/ext/pg_query/include/utils/numeric.h +19 -5
- data/ext/pg_query/include/utils/palloc.h +25 -3
- data/ext/pg_query/include/utils/partcache.h +1 -1
- data/ext/pg_query/include/utils/pg_locale.h +17 -9
- data/ext/pg_query/include/utils/pg_lsn.h +1 -1
- data/ext/pg_query/include/utils/pgstat_internal.h +784 -0
- data/ext/pg_query/include/utils/pidfile.h +1 -1
- data/ext/pg_query/include/utils/plancache.h +6 -5
- data/ext/pg_query/include/utils/portal.h +12 -1
- data/ext/pg_query/include/utils/ps_status.h +1 -1
- data/ext/pg_query/include/utils/queryenvironment.h +1 -1
- data/ext/pg_query/include/utils/queryjumble.h +88 -0
- data/ext/pg_query/include/utils/regproc.h +14 -3
- data/ext/pg_query/include/utils/rel.h +71 -20
- data/ext/pg_query/include/utils/relcache.h +9 -7
- data/ext/pg_query/include/utils/reltrigger.h +1 -1
- data/ext/pg_query/include/utils/resowner.h +1 -1
- data/ext/pg_query/include/utils/rls.h +2 -2
- data/ext/pg_query/include/utils/ruleutils.h +4 -1
- data/ext/pg_query/include/utils/sharedtuplestore.h +1 -1
- data/ext/pg_query/include/utils/snapmgr.h +35 -14
- data/ext/pg_query/include/utils/snapshot.h +14 -1
- data/ext/pg_query/include/utils/sortsupport.h +117 -2
- data/ext/pg_query/include/utils/syscache.h +6 -1
- data/ext/pg_query/include/utils/timeout.h +11 -4
- data/ext/pg_query/include/utils/timestamp.h +6 -5
- data/ext/pg_query/include/utils/tuplesort.h +25 -11
- data/ext/pg_query/include/utils/tuplestore.h +2 -2
- data/ext/pg_query/include/utils/typcache.h +24 -17
- data/ext/pg_query/include/utils/tzparser.h +1 -1
- data/ext/pg_query/include/utils/varlena.h +5 -3
- data/ext/pg_query/include/utils/wait_event.h +289 -0
- data/ext/pg_query/include/utils/xml.h +4 -4
- data/ext/pg_query/pg_query.pb-c.c +4318 -2307
- data/ext/pg_query/pg_query_deparse.c +1114 -381
- data/ext/pg_query/pg_query_fingerprint.c +46 -10
- data/ext/pg_query/pg_query_fingerprint.h +3 -1
- data/ext/pg_query/pg_query_json_plpgsql.c +55 -12
- data/ext/pg_query/pg_query_normalize.c +163 -20
- data/ext/pg_query/pg_query_outfuncs.h +1 -0
- data/ext/pg_query/pg_query_outfuncs_json.c +65 -16
- data/ext/pg_query/pg_query_outfuncs_protobuf.c +70 -10
- data/ext/pg_query/pg_query_parse.c +1 -1
- data/ext/pg_query/pg_query_parse_plpgsql.c +79 -16
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +42 -8
- data/ext/pg_query/pg_query_ruby.c +1 -1
- data/ext/pg_query/pg_query_scan.c +2 -1
- data/ext/pg_query/pg_query_split.c +3 -2
- data/ext/pg_query/src_backend_catalog_namespace.c +21 -9
- data/ext/pg_query/src_backend_catalog_pg_proc.c +4 -1
- data/ext/pg_query/src_backend_commands_define.c +11 -1
- data/ext/pg_query/src_backend_nodes_bitmapset.c +3 -1
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +424 -109
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +291 -46
- data/ext/pg_query/src_backend_nodes_extensible.c +1 -1
- data/ext/pg_query/src_backend_nodes_list.c +86 -11
- data/ext/pg_query/src_backend_nodes_makefuncs.c +5 -4
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +55 -12
- data/ext/pg_query/src_backend_nodes_value.c +28 -19
- data/ext/pg_query/src_backend_parser_gram.c +33890 -31262
- data/ext/pg_query/src_backend_parser_parser.c +26 -7
- data/ext/pg_query/src_backend_parser_scan.c +644 -441
- data/ext/pg_query/src_backend_parser_scansup.c +4 -28
- data/ext/pg_query/src_backend_postmaster_postmaster.c +77 -106
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +13 -4
- data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +5 -4
- data/ext/pg_query/src_backend_tcop_postgres.c +73 -24
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +140 -0
- data/ext/pg_query/src_backend_utils_adt_datum.c +13 -1
- data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_format_type.c +6 -2
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +109 -15
- data/ext/pg_query/src_backend_utils_error_assert.c +16 -14
- data/ext/pg_query/src_backend_utils_error_elog.c +172 -99
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +12 -17
- data/ext/pg_query/src_backend_utils_hash_dynahash.c +40 -10
- data/ext/pg_query/src_backend_utils_init_globals.c +5 -5
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +55 -66
- data/ext/pg_query/src_backend_utils_misc_guc.c +207 -45
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +7 -5
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +123 -35
- data/ext/pg_query/src_common_encnames.c +1 -1
- data/ext/pg_query/src_common_hashfn.c +3 -3
- data/ext/pg_query/src_common_keywords.c +15 -2
- data/ext/pg_query/src_common_kwlist_d.h +517 -494
- data/ext/pg_query/src_common_kwlookup.c +1 -1
- data/ext/pg_query/src_common_pg_prng.c +152 -0
- data/ext/pg_query/src_common_psprintf.c +1 -1
- data/ext/pg_query/src_common_string.c +7 -1
- data/ext/pg_query/src_common_stringinfo.c +1 -1
- data/ext/pg_query/src_common_wchar.c +712 -109
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +49 -22
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +1 -18
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1235 -1261
- data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +10 -10
- data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +2 -2
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +54 -56
- data/ext/pg_query/src_port_pg_bitutils.c +41 -52
- data/ext/pg_query/src_port_pgsleep.c +1 -1
- data/ext/pg_query/src_port_pgstrcasecmp.c +1 -1
- data/ext/pg_query/src_port_qsort.c +12 -224
- data/ext/pg_query/src_port_snprintf.c +46 -20
- data/ext/pg_query/src_port_strerror.c +9 -19
- data/ext/pg_query/src_port_strnlen.c +1 -1
- data/lib/pg_query/deparse.rb +7 -1
- data/lib/pg_query/filter_columns.rb +6 -4
- data/lib/pg_query/fingerprint.rb +18 -3
- data/lib/pg_query/node.rb +2 -2
- data/lib/pg_query/param_refs.rb +1 -1
- data/lib/pg_query/parse.rb +87 -51
- data/lib/pg_query/pg_query_pb.rb +1109 -942
- data/lib/pg_query/treewalker.rb +6 -0
- data/lib/pg_query/truncate.rb +54 -8
- data/lib/pg_query/version.rb +1 -1
- metadata +29 -18
- data/ext/pg_query/include/access/xloginsert.h +0 -64
- data/ext/pg_query/include/bootstrap/bootstrap.h +0 -62
- data/ext/pg_query/include/parser/parse_clause.h +0 -54
- data/ext/pg_query/include/parser/parse_collate.h +0 -27
- data/ext/pg_query/include/parser/parse_target.h +0 -46
- data/ext/pg_query/src_backend_libpq_pqcomm.c +0 -651
- data/ext/pg_query/src_backend_parser_parse_expr.c +0 -313
- data/ext/pg_query/src_port_erand48.c +0 -127
- data/ext/pg_query/src_port_random.c +0 -31
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/*--------------------------------------------------------------------
|
|
2
2
|
* Symbols referenced in this file:
|
|
3
|
-
* - whereToSendOutput
|
|
4
3
|
* - debug_query_string
|
|
4
|
+
* - whereToSendOutput
|
|
5
5
|
* - ProcessInterrupts
|
|
6
6
|
* - check_stack_depth
|
|
7
7
|
* - stack_is_too_deep
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* postgres.c
|
|
17
17
|
* POSTGRES C Backend Interface
|
|
18
18
|
*
|
|
19
|
-
* Portions Copyright (c) 1996-
|
|
19
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
20
20
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
21
21
|
*
|
|
22
22
|
*
|
|
@@ -55,7 +55,7 @@
|
|
|
55
55
|
#include "catalog/pg_type.h"
|
|
56
56
|
#include "commands/async.h"
|
|
57
57
|
#include "commands/prepare.h"
|
|
58
|
-
#include "
|
|
58
|
+
#include "common/pg_prng.h"
|
|
59
59
|
#include "jit/jit.h"
|
|
60
60
|
#include "libpq/libpq.h"
|
|
61
61
|
#include "libpq/pqformat.h"
|
|
@@ -80,6 +80,7 @@
|
|
|
80
80
|
#include "rewrite/rewriteHandler.h"
|
|
81
81
|
#include "storage/bufmgr.h"
|
|
82
82
|
#include "storage/ipc.h"
|
|
83
|
+
#include "storage/pmsignal.h"
|
|
83
84
|
#include "storage/proc.h"
|
|
84
85
|
#include "storage/procsignal.h"
|
|
85
86
|
#include "storage/sinval.h"
|
|
@@ -117,7 +118,21 @@ __thread int max_stack_depth = 100;
|
|
|
117
118
|
/* wait N seconds to allow attach from a debugger */
|
|
118
119
|
|
|
119
120
|
|
|
121
|
+
/* Time between checks that the client is still connected. */
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
/* ----------------
|
|
125
|
+
* private typedefs etc
|
|
126
|
+
* ----------------
|
|
127
|
+
*/
|
|
120
128
|
|
|
129
|
+
/* type of argument for bind_param_error_callback */
|
|
130
|
+
typedef struct BindParamCbData
|
|
131
|
+
{
|
|
132
|
+
const char *portalName;
|
|
133
|
+
int paramno; /* zero-based param number, or -1 initially */
|
|
134
|
+
const char *paramval; /* textual input string, if available */
|
|
135
|
+
} BindParamCbData;
|
|
121
136
|
|
|
122
137
|
/* ----------------
|
|
123
138
|
* private variables
|
|
@@ -130,18 +145,16 @@ static __thread long max_stack_depth_bytes = 100 * 1024L;
|
|
|
130
145
|
|
|
131
146
|
/*
|
|
132
147
|
* Stack base pointer -- initialized by PostmasterMain and inherited by
|
|
133
|
-
* subprocesses
|
|
134
|
-
* it directly. Newer versions use set_stack_base(), but we want to stay
|
|
135
|
-
* binary-compatible for the time being.
|
|
148
|
+
* subprocesses (but see also InitPostmasterChild).
|
|
136
149
|
*/
|
|
137
|
-
__thread char
|
|
150
|
+
static __thread char *stack_base_ptr = NULL;
|
|
138
151
|
|
|
139
152
|
|
|
140
153
|
/*
|
|
141
154
|
* On IA64 we also have to remember the register stack base.
|
|
142
155
|
*/
|
|
143
156
|
#if defined(__ia64__) || defined(__ia64)
|
|
144
|
-
char
|
|
157
|
+
static char *register_stack_base_ptr = NULL;
|
|
145
158
|
#endif
|
|
146
159
|
|
|
147
160
|
/*
|
|
@@ -194,12 +207,12 @@ static int interactive_getc(void);
|
|
|
194
207
|
static int SocketBackend(StringInfo inBuf);
|
|
195
208
|
static int ReadCommand(StringInfo inBuf);
|
|
196
209
|
static void forbidden_in_wal_sender(char firstchar);
|
|
197
|
-
static List *pg_rewrite_query(Query *query);
|
|
198
210
|
static bool check_log_statement(List *stmt_list);
|
|
199
211
|
static int errdetail_execute(List *raw_parsetree_list);
|
|
200
212
|
static int errdetail_params(ParamListInfo params);
|
|
201
213
|
static int errdetail_abort(void);
|
|
202
214
|
static int errdetail_recovery_conflict(void);
|
|
215
|
+
static void bind_param_error_callback(void *arg);
|
|
203
216
|
static void start_xact_command(void);
|
|
204
217
|
static void finish_xact_command(void);
|
|
205
218
|
static bool IsTransactionExitStmt(Node *parsetree);
|
|
@@ -305,9 +318,17 @@ static void disable_statement_timeout(void);
|
|
|
305
318
|
|
|
306
319
|
|
|
307
320
|
/*
|
|
308
|
-
* Do parse analysis and rewriting. This is the same as
|
|
309
|
-
* except that
|
|
310
|
-
*
|
|
321
|
+
* Do parse analysis and rewriting. This is the same as
|
|
322
|
+
* pg_analyze_and_rewrite_fixedparams except that it's okay to deduce
|
|
323
|
+
* information about $n symbol datatypes from context.
|
|
324
|
+
*/
|
|
325
|
+
|
|
326
|
+
|
|
327
|
+
/*
|
|
328
|
+
* Do parse analysis and rewriting. This is the same as
|
|
329
|
+
* pg_analyze_and_rewrite_fixedparams except that, instead of a fixed list of
|
|
330
|
+
* parameter datatypes, a parser callback is supplied that can do
|
|
331
|
+
* external-parameter resolution and possibly other things.
|
|
311
332
|
*/
|
|
312
333
|
|
|
313
334
|
|
|
@@ -434,6 +455,13 @@ static void disable_statement_timeout(void);
|
|
|
434
455
|
*/
|
|
435
456
|
|
|
436
457
|
|
|
458
|
+
/*
|
|
459
|
+
* bind_param_error_callback
|
|
460
|
+
*
|
|
461
|
+
* Error context callback used while parsing parameters in a Bind message
|
|
462
|
+
*/
|
|
463
|
+
|
|
464
|
+
|
|
437
465
|
/*
|
|
438
466
|
* exec_describe_statement_message
|
|
439
467
|
*
|
|
@@ -486,8 +514,8 @@ static void disable_statement_timeout(void);
|
|
|
486
514
|
/*
|
|
487
515
|
* quickdie() occurs when signaled SIGQUIT by the postmaster.
|
|
488
516
|
*
|
|
489
|
-
*
|
|
490
|
-
* so we need to stop what we're doing and exit.
|
|
517
|
+
* Either some backend has bought the farm, or we've been told to shut down
|
|
518
|
+
* "immediately"; so we need to stop what we're doing and exit.
|
|
491
519
|
*/
|
|
492
520
|
|
|
493
521
|
|
|
@@ -520,6 +548,12 @@ static void disable_statement_timeout(void);
|
|
|
520
548
|
* If an interrupt condition is pending, and it's safe to service it,
|
|
521
549
|
* then clear the flag and accept the interrupt. Called only when
|
|
522
550
|
* InterruptPending is true.
|
|
551
|
+
*
|
|
552
|
+
* Note: if INTERRUPTS_CAN_BE_PROCESSED() is true, then ProcessInterrupts
|
|
553
|
+
* is guaranteed to clear the InterruptPending flag before returning.
|
|
554
|
+
* (This is not the same as guaranteeing that it's still clear when we
|
|
555
|
+
* return; another interrupt could have arrived. But we promise that
|
|
556
|
+
* any pre-existing one will have been serviced.)
|
|
523
557
|
*/
|
|
524
558
|
void ProcessInterrupts(void) {}
|
|
525
559
|
|
|
@@ -568,9 +602,14 @@ ia64_get_bsp(void)
|
|
|
568
602
|
*
|
|
569
603
|
* Returns the old reference point, if any.
|
|
570
604
|
*/
|
|
605
|
+
#ifndef HAVE__BUILTIN_FRAME_ADDRESS
|
|
606
|
+
#endif
|
|
571
607
|
#if defined(__ia64__) || defined(__ia64)
|
|
572
608
|
#else
|
|
573
609
|
#endif
|
|
610
|
+
#ifdef HAVE__BUILTIN_FRAME_ADDRESS
|
|
611
|
+
#else
|
|
612
|
+
#endif
|
|
574
613
|
#if defined(__ia64__) || defined(__ia64)
|
|
575
614
|
#endif
|
|
576
615
|
|
|
@@ -684,7 +723,7 @@ stack_is_too_deep(void)
|
|
|
684
723
|
|
|
685
724
|
/* ----------------------------------------------------------------
|
|
686
725
|
* process_postgres_switches
|
|
687
|
-
* Parse command line arguments for
|
|
726
|
+
* Parse command line arguments for backends
|
|
688
727
|
*
|
|
689
728
|
* This is called twice, once for the "secure" options coming from the
|
|
690
729
|
* postmaster or command line, and once for the "insecure" options coming
|
|
@@ -707,20 +746,30 @@ stack_is_too_deep(void)
|
|
|
707
746
|
#endif
|
|
708
747
|
|
|
709
748
|
|
|
749
|
+
/*
|
|
750
|
+
* PostgresSingleUserMain
|
|
751
|
+
* Entry point for single user mode. argc/argv are the command line
|
|
752
|
+
* arguments to be used.
|
|
753
|
+
*
|
|
754
|
+
* Performs single user specific setup then calls PostgresMain() to actually
|
|
755
|
+
* process queries. Single user mode specific setup should go here, rather
|
|
756
|
+
* than PostgresMain() or InitPostgres() when reasonably possible.
|
|
757
|
+
*/
|
|
758
|
+
|
|
759
|
+
|
|
760
|
+
|
|
710
761
|
/* ----------------------------------------------------------------
|
|
711
762
|
* PostgresMain
|
|
712
|
-
* postgres main loop -- all backends, interactive or otherwise
|
|
763
|
+
* postgres main loop -- all backends, interactive or otherwise loop here
|
|
764
|
+
*
|
|
765
|
+
* dbname is the name of the database to connect to, username is the
|
|
766
|
+
* PostgreSQL user name to be used for the session.
|
|
713
767
|
*
|
|
714
|
-
*
|
|
715
|
-
*
|
|
716
|
-
* dbname is the name of the database to connect to, or NULL if the database
|
|
717
|
-
* name should be extracted from the command line arguments or defaulted.
|
|
718
|
-
* username is the PostgreSQL user name to be used for the session.
|
|
768
|
+
* NB: Single user mode specific setup should go to PostgresSingleUserMain()
|
|
769
|
+
* if reasonably possible.
|
|
719
770
|
* ----------------------------------------------------------------
|
|
720
771
|
*/
|
|
721
|
-
|
|
722
|
-
#else
|
|
723
|
-
#endif
|
|
772
|
+
|
|
724
773
|
|
|
725
774
|
/*
|
|
726
775
|
* Throw an error if we're a WAL sender process.
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/*--------------------------------------------------------------------
|
|
2
|
+
* Symbols referenced in this file:
|
|
3
|
+
* - pgStatSessionEndCause
|
|
4
|
+
*--------------------------------------------------------------------
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/* -------------------------------------------------------------------------
|
|
8
|
+
*
|
|
9
|
+
* pgstat_database.c
|
|
10
|
+
* Implementation of database statistics.
|
|
11
|
+
*
|
|
12
|
+
* This file contains the implementation of database statistics. It is kept
|
|
13
|
+
* separate from pgstat.c to enforce the line between the statistics access /
|
|
14
|
+
* storage implementation and the details about individual types of
|
|
15
|
+
* statistics.
|
|
16
|
+
*
|
|
17
|
+
* Copyright (c) 2001-2022, PostgreSQL Global Development Group
|
|
18
|
+
*
|
|
19
|
+
* IDENTIFICATION
|
|
20
|
+
* src/backend/utils/activity/pgstat_database.c
|
|
21
|
+
* -------------------------------------------------------------------------
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
#include "postgres.h"
|
|
25
|
+
|
|
26
|
+
#include "utils/pgstat_internal.h"
|
|
27
|
+
#include "utils/timestamp.h"
|
|
28
|
+
#include "storage/procsignal.h"
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
static bool pgstat_should_report_connstat(void);
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
__thread SessionEndType pgStatSessionEndCause = DISCONNECT_NORMAL;
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
/*
|
|
48
|
+
* Remove entry for the database being dropped.
|
|
49
|
+
*/
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
/*
|
|
53
|
+
* Called from autovacuum.c to report startup of an autovacuum process.
|
|
54
|
+
* We are called before InitPostgres is done, so can't rely on MyDatabaseId;
|
|
55
|
+
* the db OID must be passed in, instead.
|
|
56
|
+
*/
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
/*
|
|
60
|
+
* Report a Hot Standby recovery conflict.
|
|
61
|
+
*/
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
/*
|
|
65
|
+
* Report a detected deadlock.
|
|
66
|
+
*/
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
/*
|
|
70
|
+
* Report one or more checksum failures.
|
|
71
|
+
*/
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
/*
|
|
75
|
+
* Report one checksum failure in the current database.
|
|
76
|
+
*/
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
/*
|
|
80
|
+
* Report creation of temporary file.
|
|
81
|
+
*/
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
/*
|
|
85
|
+
* Notify stats system of a new connection.
|
|
86
|
+
*/
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
/*
|
|
90
|
+
* Notify the stats system of a disconnect.
|
|
91
|
+
*/
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
/*
|
|
95
|
+
* Support function for the SQL-callable pgstat* functions. Returns
|
|
96
|
+
* the collected statistics for one database or NULL. NULL doesn't mean
|
|
97
|
+
* that the database doesn't exist, just that there are no statistics, so the
|
|
98
|
+
* caller is better off to report ZERO instead.
|
|
99
|
+
*/
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
/*
|
|
105
|
+
* Subroutine for pgstat_report_stat(): Handle xact commit/rollback and I/O
|
|
106
|
+
* timings.
|
|
107
|
+
*/
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
/*
|
|
111
|
+
* We report session statistics only for normal backend processes. Parallel
|
|
112
|
+
* workers run in parallel, so they don't contribute to session times, even
|
|
113
|
+
* though they use CPU time. Walsender processes could be considered here,
|
|
114
|
+
* but they have different session characteristics from normal backends (for
|
|
115
|
+
* example, they are always "active"), so they would skew session statistics.
|
|
116
|
+
*/
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
/*
|
|
120
|
+
* Find or create a local PgStat_StatDBEntry entry for dboid.
|
|
121
|
+
*/
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
/*
|
|
125
|
+
* Reset the database's reset timestamp, without resetting the contents of the
|
|
126
|
+
* database stats.
|
|
127
|
+
*/
|
|
128
|
+
|
|
129
|
+
|
|
130
|
+
/*
|
|
131
|
+
* Flush out pending stats for the entry
|
|
132
|
+
*
|
|
133
|
+
* If nowait is true, this function returns false if lock could not
|
|
134
|
+
* immediately acquired, otherwise true is returned.
|
|
135
|
+
*/
|
|
136
|
+
#define PGSTAT_ACCUM_DBCOUNT(item) \
|
|
137
|
+
(sharedent)->stats.item += (pendingent)->item
|
|
138
|
+
#undef PGSTAT_ACCUM_DBCOUNT
|
|
139
|
+
|
|
140
|
+
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* datum.c
|
|
12
12
|
* POSTGRES Datum (abstract data type) manipulation routines.
|
|
13
13
|
*
|
|
14
|
-
* Portions Copyright (c) 1996-
|
|
14
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
15
15
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
16
16
|
*
|
|
17
17
|
*
|
|
@@ -51,6 +51,7 @@
|
|
|
51
51
|
#include "postgres.h"
|
|
52
52
|
|
|
53
53
|
#include "access/detoast.h"
|
|
54
|
+
#include "common/hashfn.h"
|
|
54
55
|
#include "fmgr.h"
|
|
55
56
|
#include "utils/builtins.h"
|
|
56
57
|
#include "utils/datum.h"
|
|
@@ -262,6 +263,17 @@ datumIsEqual(Datum value1, Datum value2, bool typByVal, int typLen)
|
|
|
262
263
|
*/
|
|
263
264
|
|
|
264
265
|
|
|
266
|
+
/*-------------------------------------------------------------------------
|
|
267
|
+
* datum_image_hash
|
|
268
|
+
*
|
|
269
|
+
* Generate a hash value based on the binary representation of 'value'. Most
|
|
270
|
+
* use cases will want to use the hash function specific to the Datum's type,
|
|
271
|
+
* however, some corner cases require generating a hash value based on the
|
|
272
|
+
* actual bits rather than the logical value.
|
|
273
|
+
*-------------------------------------------------------------------------
|
|
274
|
+
*/
|
|
275
|
+
|
|
276
|
+
|
|
265
277
|
/*-------------------------------------------------------------------------
|
|
266
278
|
* btequalimage
|
|
267
279
|
*
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* expandeddatum.c
|
|
12
12
|
* Support functions for "expanded" value representations.
|
|
13
13
|
*
|
|
14
|
-
* Portions Copyright (c) 1996-
|
|
14
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
15
15
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
16
16
|
*
|
|
17
17
|
*
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* Display type names "nicely".
|
|
11
11
|
*
|
|
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
|
* IDENTIFICATION
|
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
#include "catalog/pg_type.h"
|
|
29
29
|
#include "mb/pg_wchar.h"
|
|
30
30
|
#include "utils/builtins.h"
|
|
31
|
+
#include "utils/fmgroids.h"
|
|
31
32
|
#include "utils/lsyscache.h"
|
|
32
33
|
#include "utils/numeric.h"
|
|
33
34
|
#include "utils/syscache.h"
|
|
@@ -77,13 +78,16 @@ static char *printTypmod(const char *typname, int32 typmod, Oid typmodout);
|
|
|
77
78
|
* - FORMAT_TYPE_ALLOW_INVALID
|
|
78
79
|
* if the type OID is invalid or unknown, return ??? or such instead
|
|
79
80
|
* of failing
|
|
81
|
+
* - FORMAT_TYPE_INVALID_AS_NULL
|
|
82
|
+
* if the type OID is invalid or unknown, return NULL instead of ???
|
|
83
|
+
* or such
|
|
80
84
|
* - FORMAT_TYPE_FORCE_QUALIFY
|
|
81
85
|
* always schema-qualify type names, regardless of search_path
|
|
82
86
|
*
|
|
83
87
|
* Note that TYPEMOD_GIVEN is not interchangeable with "typemod == -1";
|
|
84
88
|
* see the comments above for format_type().
|
|
85
89
|
*
|
|
86
|
-
* Returns a palloc'd string.
|
|
90
|
+
* Returns a palloc'd string, or NULL.
|
|
87
91
|
*/
|
|
88
92
|
|
|
89
93
|
|