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
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* Functions to convert stored expressions/querytrees back to
|
|
12
12
|
* source text
|
|
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
|
*
|
|
@@ -31,8 +31,6 @@
|
|
|
31
31
|
#include "access/relation.h"
|
|
32
32
|
#include "access/sysattr.h"
|
|
33
33
|
#include "access/table.h"
|
|
34
|
-
#include "catalog/dependency.h"
|
|
35
|
-
#include "catalog/indexing.h"
|
|
36
34
|
#include "catalog/pg_aggregate.h"
|
|
37
35
|
#include "catalog/pg_am.h"
|
|
38
36
|
#include "catalog/pg_authid.h"
|
|
@@ -62,6 +60,7 @@
|
|
|
62
60
|
#include "parser/parse_func.h"
|
|
63
61
|
#include "parser/parse_node.h"
|
|
64
62
|
#include "parser/parse_oper.h"
|
|
63
|
+
#include "parser/parse_relation.h"
|
|
65
64
|
#include "parser/parser.h"
|
|
66
65
|
#include "parser/parsetree.h"
|
|
67
66
|
#include "rewrite/rewriteHandler.h"
|
|
@@ -99,6 +98,11 @@
|
|
|
99
98
|
#define PRETTYFLAG_INDENT 0x0002
|
|
100
99
|
#define PRETTYFLAG_SCHEMA 0x0004
|
|
101
100
|
|
|
101
|
+
/* Standard conversion of a "bool pretty" option to detailed flags */
|
|
102
|
+
#define GET_PRETTY_FLAGS(pretty) \
|
|
103
|
+
((pretty) ? (PRETTYFLAG_PAREN | PRETTYFLAG_INDENT | PRETTYFLAG_SCHEMA) \
|
|
104
|
+
: PRETTYFLAG_INDENT)
|
|
105
|
+
|
|
102
106
|
/* Default line length for pretty-print wrapping: 0 means wrap always */
|
|
103
107
|
#define WRAP_COLUMN_DEFAULT 0
|
|
104
108
|
|
|
@@ -181,6 +185,10 @@ typedef struct
|
|
|
181
185
|
List *outer_tlist; /* referent for OUTER_VAR Vars */
|
|
182
186
|
List *inner_tlist; /* referent for INNER_VAR Vars */
|
|
183
187
|
List *index_tlist; /* referent for INDEX_VAR Vars */
|
|
188
|
+
/* Special namespace representing a function signature: */
|
|
189
|
+
char *funcname;
|
|
190
|
+
int numargs;
|
|
191
|
+
char **argnames;
|
|
184
192
|
} deparse_namespace;
|
|
185
193
|
|
|
186
194
|
/*
|
|
@@ -346,7 +354,8 @@ static char *pg_get_indexdef_worker(Oid indexrelid, int colno,
|
|
|
346
354
|
bool attrsOnly, bool keysOnly,
|
|
347
355
|
bool showTblSpc, bool inherits,
|
|
348
356
|
int prettyFlags, bool missing_ok);
|
|
349
|
-
static char *pg_get_statisticsobj_worker(Oid statextid, bool
|
|
357
|
+
static char *pg_get_statisticsobj_worker(Oid statextid, bool columns_only,
|
|
358
|
+
bool missing_ok);
|
|
350
359
|
static char *pg_get_partkeydef_worker(Oid relid, int prettyFlags,
|
|
351
360
|
bool attrsOnly, bool missing_ok);
|
|
352
361
|
static char *pg_get_constraintdef_worker(Oid constraintId, bool fullCommand,
|
|
@@ -357,6 +366,7 @@ static int print_function_arguments(StringInfo buf, HeapTuple proctup,
|
|
|
357
366
|
bool print_table_args, bool print_defaults);
|
|
358
367
|
static void print_function_rettype(StringInfo buf, HeapTuple proctup);
|
|
359
368
|
static void print_function_trftypes(StringInfo buf, HeapTuple proctup);
|
|
369
|
+
static void print_function_sqlbody(StringInfo buf, HeapTuple proctup);
|
|
360
370
|
static void set_rtable_names(deparse_namespace *dpns, List *parent_namespaces,
|
|
361
371
|
Bitmapset *rels_used);
|
|
362
372
|
static void set_deparse_for_query(deparse_namespace *dpns, Query *query,
|
|
@@ -379,6 +389,8 @@ static void identify_join_columns(JoinExpr *j, RangeTblEntry *jrte,
|
|
|
379
389
|
deparse_columns *colinfo);
|
|
380
390
|
static char *get_rtable_name(int rtindex, deparse_context *context);
|
|
381
391
|
static void set_deparse_plan(deparse_namespace *dpns, Plan *plan);
|
|
392
|
+
static Plan *find_recursive_union(deparse_namespace *dpns,
|
|
393
|
+
WorkTableScan *wtscan);
|
|
382
394
|
static void push_child_plan(deparse_namespace *dpns, Plan *plan,
|
|
383
395
|
deparse_namespace *save_dpns);
|
|
384
396
|
static void pop_child_plan(deparse_namespace *dpns,
|
|
@@ -392,26 +404,29 @@ static void make_ruledef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc,
|
|
|
392
404
|
static void make_viewdef(StringInfo buf, HeapTuple ruletup, TupleDesc rulettc,
|
|
393
405
|
int prettyFlags, int wrapColumn);
|
|
394
406
|
static void get_query_def(Query *query, StringInfo buf, List *parentnamespace,
|
|
395
|
-
TupleDesc resultDesc,
|
|
407
|
+
TupleDesc resultDesc, bool colNamesVisible,
|
|
396
408
|
int prettyFlags, int wrapColumn, int startIndent);
|
|
397
409
|
static void get_values_def(List *values_lists, deparse_context *context);
|
|
398
410
|
static void get_with_clause(Query *query, deparse_context *context);
|
|
399
411
|
static void get_select_query_def(Query *query, deparse_context *context,
|
|
400
|
-
TupleDesc resultDesc);
|
|
401
|
-
static void get_insert_query_def(Query *query, deparse_context *context
|
|
402
|
-
|
|
412
|
+
TupleDesc resultDesc, bool colNamesVisible);
|
|
413
|
+
static void get_insert_query_def(Query *query, deparse_context *context,
|
|
414
|
+
bool colNamesVisible);
|
|
415
|
+
static void get_update_query_def(Query *query, deparse_context *context,
|
|
416
|
+
bool colNamesVisible);
|
|
403
417
|
static void get_update_query_targetlist_def(Query *query, List *targetList,
|
|
404
418
|
deparse_context *context,
|
|
405
419
|
RangeTblEntry *rte);
|
|
406
|
-
static void get_delete_query_def(Query *query, deparse_context *context
|
|
420
|
+
static void get_delete_query_def(Query *query, deparse_context *context,
|
|
421
|
+
bool colNamesVisible);
|
|
407
422
|
static void get_utility_query_def(Query *query, deparse_context *context);
|
|
408
423
|
static void get_basic_select_query(Query *query, deparse_context *context,
|
|
409
|
-
TupleDesc resultDesc);
|
|
424
|
+
TupleDesc resultDesc, bool colNamesVisible);
|
|
410
425
|
static void get_target_list(List *targetList, deparse_context *context,
|
|
411
|
-
TupleDesc resultDesc);
|
|
426
|
+
TupleDesc resultDesc, bool colNamesVisible);
|
|
412
427
|
static void get_setop_query(Node *setOp, Query *query,
|
|
413
428
|
deparse_context *context,
|
|
414
|
-
TupleDesc resultDesc);
|
|
429
|
+
TupleDesc resultDesc, bool colNamesVisible);
|
|
415
430
|
static Node *get_rule_sortgroupclause(Index ref, List *tlist,
|
|
416
431
|
bool force_colno,
|
|
417
432
|
deparse_context *context);
|
|
@@ -440,6 +455,8 @@ static void get_rule_expr(Node *node, deparse_context *context,
|
|
|
440
455
|
bool showimplicit);
|
|
441
456
|
static void get_rule_expr_toplevel(Node *node, deparse_context *context,
|
|
442
457
|
bool showimplicit);
|
|
458
|
+
static void get_rule_list_toplevel(List *lst, deparse_context *context,
|
|
459
|
+
bool showimplicit);
|
|
443
460
|
static void get_rule_expr_funccall(Node *node, deparse_context *context,
|
|
444
461
|
bool showimplicit);
|
|
445
462
|
static bool looks_like_function(Node *node);
|
|
@@ -451,6 +468,7 @@ static void get_agg_expr(Aggref *aggref, deparse_context *context,
|
|
|
451
468
|
static void get_agg_combine_expr(Node *node, deparse_context *context,
|
|
452
469
|
void *callback_arg);
|
|
453
470
|
static void get_windowfunc_expr(WindowFunc *wfunc, deparse_context *context);
|
|
471
|
+
static bool get_func_sql_syntax(FuncExpr *expr, deparse_context *context);
|
|
454
472
|
static void get_coercion_expr(Node *arg, deparse_context *context,
|
|
455
473
|
Oid resulttype, int32 resulttypmod,
|
|
456
474
|
Node *parentNode);
|
|
@@ -574,17 +592,46 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
|
|
|
574
592
|
*/
|
|
575
593
|
|
|
576
594
|
|
|
595
|
+
/* ----------
|
|
596
|
+
* pg_get_querydef
|
|
597
|
+
*
|
|
598
|
+
* Public entry point to deparse one query parsetree.
|
|
599
|
+
* The pretty flags are determined by GET_PRETTY_FLAGS(pretty).
|
|
600
|
+
*
|
|
601
|
+
* The result is a palloc'd C string.
|
|
602
|
+
* ----------
|
|
603
|
+
*/
|
|
604
|
+
|
|
605
|
+
|
|
577
606
|
/*
|
|
578
607
|
* pg_get_statisticsobjdef
|
|
579
608
|
* Get the definition of an extended statistics object
|
|
580
609
|
*/
|
|
581
610
|
|
|
582
611
|
|
|
612
|
+
/*
|
|
613
|
+
* Internal version for use by ALTER TABLE.
|
|
614
|
+
* Includes a tablespace clause in the result.
|
|
615
|
+
* Returns a palloc'd C string; no pretty-printing.
|
|
616
|
+
*/
|
|
617
|
+
|
|
618
|
+
|
|
619
|
+
/*
|
|
620
|
+
* pg_get_statisticsobjdef_columns
|
|
621
|
+
* Get columns and expressions for an extended statistics object
|
|
622
|
+
*/
|
|
623
|
+
|
|
624
|
+
|
|
583
625
|
/*
|
|
584
626
|
* Internal workhorse to decompile an extended statistics object.
|
|
585
627
|
*/
|
|
586
628
|
|
|
587
629
|
|
|
630
|
+
/*
|
|
631
|
+
* Generate text array of expressions for statistics object.
|
|
632
|
+
*/
|
|
633
|
+
|
|
634
|
+
|
|
588
635
|
/*
|
|
589
636
|
* pg_get_partkeydef
|
|
590
637
|
*
|
|
@@ -657,6 +704,12 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
|
|
|
657
704
|
* the one specified by the second parameter. This is sufficient for
|
|
658
705
|
* partial indexes, column default expressions, etc. We also support
|
|
659
706
|
* Var-free expressions, for which the OID can be InvalidOid.
|
|
707
|
+
*
|
|
708
|
+
* We expect this function to work, or throw a reasonably clean error,
|
|
709
|
+
* for any node tree that can appear in a catalog pg_node_tree column.
|
|
710
|
+
* Query trees, such as those appearing in pg_rewrite.ev_action, are
|
|
711
|
+
* not supported. Nor are expressions in more than one relation, which
|
|
712
|
+
* can appear in places like pg_rewrite.ev_qual.
|
|
660
713
|
* ----------
|
|
661
714
|
*/
|
|
662
715
|
|
|
@@ -750,6 +803,10 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
|
|
|
750
803
|
|
|
751
804
|
|
|
752
805
|
|
|
806
|
+
|
|
807
|
+
|
|
808
|
+
|
|
809
|
+
|
|
753
810
|
/*
|
|
754
811
|
* deparse_expression - General utility for deparsing expressions
|
|
755
812
|
*
|
|
@@ -969,13 +1026,20 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
|
|
|
969
1026
|
* of a given Plan node
|
|
970
1027
|
*
|
|
971
1028
|
* This sets the plan, outer_plan, inner_plan, outer_tlist, inner_tlist,
|
|
972
|
-
* and index_tlist fields. Caller
|
|
1029
|
+
* and index_tlist fields. Caller must already have adjusted the ancestors
|
|
973
1030
|
* list if necessary. Note that the rtable, subplans, and ctes fields do
|
|
974
1031
|
* not need to change when shifting attention to different plan nodes in a
|
|
975
1032
|
* single plan tree.
|
|
976
1033
|
*/
|
|
977
1034
|
|
|
978
1035
|
|
|
1036
|
+
/*
|
|
1037
|
+
* Locate the ancestor plan node that is the RecursiveUnion generating
|
|
1038
|
+
* the WorkTableScan's work table. We can match on wtParam, since that
|
|
1039
|
+
* should be unique within the plan tree.
|
|
1040
|
+
*/
|
|
1041
|
+
|
|
1042
|
+
|
|
979
1043
|
/*
|
|
980
1044
|
* push_child_plan: temporarily transfer deparsing attention to a child plan
|
|
981
1045
|
*
|
|
@@ -1037,8 +1101,18 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
|
|
|
1037
1101
|
/* ----------
|
|
1038
1102
|
* get_query_def - Parse back one query parsetree
|
|
1039
1103
|
*
|
|
1040
|
-
*
|
|
1041
|
-
*
|
|
1104
|
+
* query: parsetree to be displayed
|
|
1105
|
+
* buf: output text is appended to buf
|
|
1106
|
+
* parentnamespace: list (initially empty) of outer-level deparse_namespace's
|
|
1107
|
+
* resultDesc: if not NULL, the output tuple descriptor for the view
|
|
1108
|
+
* represented by a SELECT query. We use the column names from it
|
|
1109
|
+
* to label SELECT output columns, in preference to names in the query
|
|
1110
|
+
* colNamesVisible: true if the surrounding context cares about the output
|
|
1111
|
+
* column names at all (as, for example, an EXISTS() context does not);
|
|
1112
|
+
* when false, we can suppress dummy column labels such as "?column?"
|
|
1113
|
+
* prettyFlags: bitmask of PRETTYFLAG_XXX options
|
|
1114
|
+
* wrapColumn: maximum line length, or -1 to disable wrapping
|
|
1115
|
+
* startIndent: initial indentation amount
|
|
1042
1116
|
* ----------
|
|
1043
1117
|
*/
|
|
1044
1118
|
|
|
@@ -1074,6 +1148,8 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
|
|
|
1074
1148
|
* get_target_list - Parse back a SELECT target list
|
|
1075
1149
|
*
|
|
1076
1150
|
* This is also used for RETURNING lists in INSERT/UPDATE/DELETE.
|
|
1151
|
+
*
|
|
1152
|
+
* resultDesc and colNamesVisible are as for get_query_def()
|
|
1077
1153
|
* ----------
|
|
1078
1154
|
*/
|
|
1079
1155
|
|
|
@@ -1291,6 +1367,16 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
|
|
|
1291
1367
|
*/
|
|
1292
1368
|
|
|
1293
1369
|
|
|
1370
|
+
/*
|
|
1371
|
+
* get_rule_list_toplevel - Parse back a list of toplevel expressions
|
|
1372
|
+
*
|
|
1373
|
+
* Apply get_rule_expr_toplevel() to each element of a List.
|
|
1374
|
+
*
|
|
1375
|
+
* This adds commas between the expressions, but caller is responsible
|
|
1376
|
+
* for printing surrounding decoration.
|
|
1377
|
+
*/
|
|
1378
|
+
|
|
1379
|
+
|
|
1294
1380
|
/*
|
|
1295
1381
|
* get_rule_expr_funccall - Parse back a function-call expression
|
|
1296
1382
|
*
|
|
@@ -1339,6 +1425,14 @@ static void get_reloptions(StringInfo buf, Datum reloptions);
|
|
|
1339
1425
|
*/
|
|
1340
1426
|
|
|
1341
1427
|
|
|
1428
|
+
/*
|
|
1429
|
+
* get_func_sql_syntax - Parse back a SQL-syntax function call
|
|
1430
|
+
*
|
|
1431
|
+
* Returns true if we successfully deparsed, false if we did not
|
|
1432
|
+
* recognize the function.
|
|
1433
|
+
*/
|
|
1434
|
+
|
|
1435
|
+
|
|
1342
1436
|
/* ----------
|
|
1343
1437
|
* get_coercion_expr
|
|
1344
1438
|
*
|
|
@@ -7,18 +7,15 @@
|
|
|
7
7
|
/*-------------------------------------------------------------------------
|
|
8
8
|
*
|
|
9
9
|
* assert.c
|
|
10
|
-
* Assert code.
|
|
10
|
+
* Assert support code.
|
|
11
11
|
*
|
|
12
|
-
* Portions Copyright (c) 1996-
|
|
12
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
13
13
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
14
14
|
*
|
|
15
15
|
*
|
|
16
16
|
* IDENTIFICATION
|
|
17
17
|
* src/backend/utils/error/assert.c
|
|
18
18
|
*
|
|
19
|
-
* NOTE
|
|
20
|
-
* This should eventually work with elog()
|
|
21
|
-
*
|
|
22
19
|
*-------------------------------------------------------------------------
|
|
23
20
|
*/
|
|
24
21
|
#include "postgres.h"
|
|
@@ -30,6 +27,10 @@
|
|
|
30
27
|
|
|
31
28
|
/*
|
|
32
29
|
* ExceptionalCondition - Handles the failure of an Assert()
|
|
30
|
+
*
|
|
31
|
+
* We intentionally do not go through elog() here, on the grounds of
|
|
32
|
+
* wanting to minimize the amount of infrastructure that has to be
|
|
33
|
+
* working to report an assertion failure.
|
|
33
34
|
*/
|
|
34
35
|
void
|
|
35
36
|
ExceptionalCondition(const char *conditionName,
|
|
@@ -37,20 +38,21 @@ ExceptionalCondition(const char *conditionName,
|
|
|
37
38
|
const char *fileName,
|
|
38
39
|
int lineNumber)
|
|
39
40
|
{
|
|
41
|
+
/* Report the failure on stderr (or local equivalent) */
|
|
40
42
|
if (!PointerIsValid(conditionName)
|
|
41
43
|
|| !PointerIsValid(fileName)
|
|
42
44
|
|| !PointerIsValid(errorType))
|
|
43
|
-
write_stderr("TRAP: ExceptionalCondition: bad arguments\n"
|
|
45
|
+
write_stderr("TRAP: ExceptionalCondition: bad arguments in PID %d\n",
|
|
46
|
+
(int) getpid());
|
|
44
47
|
else
|
|
45
|
-
|
|
46
|
-
write_stderr("TRAP: %s(\"%s\", File: \"%s\", Line: %d)\n",
|
|
48
|
+
write_stderr("TRAP: %s(\"%s\", File: \"%s\", Line: %d, PID: %d)\n",
|
|
47
49
|
errorType, conditionName,
|
|
48
|
-
fileName, lineNumber);
|
|
49
|
-
}
|
|
50
|
+
fileName, lineNumber, (int) getpid());
|
|
50
51
|
|
|
51
52
|
/* Usually this shouldn't be needed, but make sure the msg went out */
|
|
52
53
|
fflush(stderr);
|
|
53
54
|
|
|
55
|
+
/* If we have support for it, dump a simple backtrace */
|
|
54
56
|
#ifdef HAVE_BACKTRACE_SYMBOLS
|
|
55
57
|
{
|
|
56
58
|
void *buf[100];
|
|
@@ -61,12 +63,12 @@ ExceptionalCondition(const char *conditionName,
|
|
|
61
63
|
}
|
|
62
64
|
#endif
|
|
63
65
|
|
|
64
|
-
#ifdef SLEEP_ON_ASSERT
|
|
65
|
-
|
|
66
66
|
/*
|
|
67
|
-
*
|
|
68
|
-
*
|
|
67
|
+
* If configured to do so, sleep indefinitely to allow user to attach a
|
|
68
|
+
* debugger. It would be nice to use pg_usleep() here, but that can sleep
|
|
69
|
+
* at most 2G usec or ~33 minutes, which seems too short.
|
|
69
70
|
*/
|
|
71
|
+
#ifdef SLEEP_ON_ASSERT
|
|
70
72
|
sleep(1000000);
|
|
71
73
|
#endif
|
|
72
74
|
|