pg_query 2.1.0 → 4.2.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
|