pg_query 2.2.1 → 4.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +5 -0
- data/Rakefile +2 -2
- data/ext/pg_query/include/access/amapi.h +45 -1
- data/ext/pg_query/include/access/attmap.h +1 -1
- data/ext/pg_query/include/access/attnum.h +2 -2
- data/ext/pg_query/include/access/clog.h +4 -2
- data/ext/pg_query/include/access/commit_ts.h +6 -9
- data/ext/pg_query/include/access/detoast.h +1 -11
- data/ext/pg_query/include/access/genam.h +15 -12
- data/ext/pg_query/include/access/gin.h +2 -2
- data/ext/pg_query/include/access/htup.h +1 -1
- data/ext/pg_query/include/access/htup_details.h +75 -87
- data/ext/pg_query/include/access/itup.h +7 -1
- data/ext/pg_query/include/access/parallel.h +2 -2
- data/ext/pg_query/include/access/printtup.h +1 -1
- data/ext/pg_query/include/access/relation.h +1 -1
- data/ext/pg_query/include/access/relscan.h +17 -2
- data/ext/pg_query/include/access/rmgr.h +30 -3
- data/ext/pg_query/include/access/rmgrlist.h +23 -23
- data/ext/pg_query/include/access/sdir.h +1 -1
- data/ext/pg_query/include/access/skey.h +1 -1
- data/ext/pg_query/include/access/stratnum.h +4 -2
- data/ext/pg_query/include/access/sysattr.h +1 -1
- data/ext/pg_query/include/access/table.h +2 -1
- data/ext/pg_query/include/access/tableam.h +272 -20
- data/ext/pg_query/include/access/toast_compression.h +73 -0
- data/ext/pg_query/include/access/transam.h +123 -13
- data/ext/pg_query/include/access/tupconvert.h +1 -1
- data/ext/pg_query/include/access/tupdesc.h +1 -1
- data/ext/pg_query/include/access/tupmacs.h +3 -3
- data/ext/pg_query/include/access/twophase.h +3 -1
- data/ext/pg_query/include/access/xact.h +73 -19
- data/ext/pg_query/include/access/xlog.h +60 -155
- data/ext/pg_query/include/access/xlog_internal.h +40 -13
- data/ext/pg_query/include/access/xlogdefs.h +8 -16
- data/ext/pg_query/include/access/xlogprefetcher.h +55 -0
- data/ext/pg_query/include/access/xlogreader.h +145 -39
- data/ext/pg_query/include/access/xlogrecord.h +18 -9
- data/ext/pg_query/include/access/xlogrecovery.h +157 -0
- data/ext/pg_query/include/c.h +101 -44
- data/ext/pg_query/include/catalog/catalog.h +3 -1
- data/ext/pg_query/include/catalog/catversion.h +2 -2
- data/ext/pg_query/include/catalog/dependency.h +8 -16
- data/ext/pg_query/include/catalog/genbki.h +83 -5
- data/ext/pg_query/include/catalog/index.h +18 -3
- data/ext/pg_query/include/catalog/indexing.h +12 -324
- data/ext/pg_query/include/catalog/namespace.h +4 -2
- data/ext/pg_query/include/catalog/objectaccess.h +70 -2
- data/ext/pg_query/include/catalog/objectaddress.h +11 -6
- data/ext/pg_query/include/catalog/pg_aggregate.h +14 -10
- data/ext/pg_query/include/catalog/pg_aggregate_d.h +2 -1
- data/ext/pg_query/include/catalog/pg_am.h +4 -1
- data/ext/pg_query/include/catalog/pg_am_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_attribute.h +27 -10
- data/ext/pg_query/include/catalog/pg_attribute_d.h +21 -18
- data/ext/pg_query/include/catalog/pg_authid.h +7 -2
- data/ext/pg_query/include/catalog/pg_authid_d.h +17 -9
- data/ext/pg_query/include/catalog/pg_class.h +44 -14
- data/ext/pg_query/include/catalog/pg_class_d.h +30 -1
- data/ext/pg_query/include/catalog/pg_collation.h +33 -8
- data/ext/pg_query/include/catalog/pg_collation_d.h +20 -3
- data/ext/pg_query/include/catalog/pg_constraint.h +38 -12
- data/ext/pg_query/include/catalog/pg_constraint_d.h +10 -4
- data/ext/pg_query/include/catalog/pg_control.h +3 -5
- data/ext/pg_query/include/catalog/pg_conversion.h +7 -4
- data/ext/pg_query/include/catalog/pg_conversion_d.h +4 -1
- data/ext/pg_query/include/catalog/pg_depend.h +11 -7
- data/ext/pg_query/include/catalog/pg_depend_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_event_trigger.h +9 -3
- data/ext/pg_query/include/catalog/pg_event_trigger_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_index.h +17 -7
- data/ext/pg_query/include/catalog/pg_index_d.h +20 -17
- data/ext/pg_query/include/catalog/pg_language.h +10 -5
- data/ext/pg_query/include/catalog/pg_language_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_namespace.h +7 -2
- data/ext/pg_query/include/catalog/pg_namespace_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_opclass.h +8 -5
- data/ext/pg_query/include/catalog/pg_opclass_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_operator.h +18 -15
- data/ext/pg_query/include/catalog/pg_operator_d.h +37 -1
- data/ext/pg_query/include/catalog/pg_opfamily.h +6 -3
- data/ext/pg_query/include/catalog/pg_opfamily_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_parameter_acl.h +60 -0
- data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +34 -0
- data/ext/pg_query/include/catalog/pg_partitioned_table.h +20 -9
- data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +2 -1
- data/ext/pg_query/include/catalog/pg_proc.h +20 -11
- data/ext/pg_query/include/catalog/pg_proc_d.h +10 -8
- data/ext/pg_query/include/catalog/pg_publication.h +50 -7
- data/ext/pg_query/include/catalog/pg_publication_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_replication_origin.h +6 -1
- data/ext/pg_query/include/catalog/pg_replication_origin_d.h +5 -1
- data/ext/pg_query/include/catalog/pg_statistic.h +19 -12
- data/ext/pg_query/include/catalog/pg_statistic_d.h +2 -1
- data/ext/pg_query/include/catalog/pg_statistic_ext.h +19 -5
- data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +7 -2
- data/ext/pg_query/include/catalog/pg_transform.h +8 -5
- data/ext/pg_query/include/catalog/pg_transform_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_trigger.h +24 -8
- data/ext/pg_query/include/catalog/pg_trigger_d.h +4 -1
- data/ext/pg_query/include/catalog/pg_ts_config.h +6 -3
- data/ext/pg_query/include/catalog/pg_ts_config_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_ts_dict.h +8 -3
- data/ext/pg_query/include/catalog/pg_ts_dict_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_ts_parser.h +6 -3
- data/ext/pg_query/include/catalog/pg_ts_parser_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_ts_template.h +6 -3
- data/ext/pg_query/include/catalog/pg_ts_template_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_type.h +55 -24
- data/ext/pg_query/include/catalog/pg_type_d.h +70 -31
- data/ext/pg_query/include/catalog/storage.h +5 -3
- data/ext/pg_query/include/commands/async.h +3 -4
- data/ext/pg_query/include/commands/dbcommands.h +2 -1
- data/ext/pg_query/include/commands/defrem.h +11 -24
- data/ext/pg_query/include/commands/event_trigger.h +2 -2
- data/ext/pg_query/include/commands/explain.h +1 -1
- data/ext/pg_query/include/commands/prepare.h +1 -1
- data/ext/pg_query/include/commands/tablespace.h +2 -2
- data/ext/pg_query/include/commands/trigger.h +18 -16
- data/ext/pg_query/include/commands/user.h +2 -2
- data/ext/pg_query/include/commands/vacuum.h +88 -41
- data/ext/pg_query/include/commands/variable.h +1 -1
- data/ext/pg_query/include/common/file_perm.h +4 -4
- data/ext/pg_query/include/common/hashfn.h +1 -1
- data/ext/pg_query/include/common/ip.h +1 -7
- data/ext/pg_query/include/common/keywords.h +2 -6
- data/ext/pg_query/include/common/kwlookup.h +1 -1
- data/ext/pg_query/include/common/pg_prng.h +60 -0
- data/ext/pg_query/include/common/relpath.h +2 -2
- data/ext/pg_query/include/common/string.h +24 -1
- data/ext/pg_query/include/common/unicode_combining_table.h +114 -2
- data/ext/pg_query/include/common/unicode_east_asian_fw_table.h +125 -0
- data/ext/pg_query/include/datatype/timestamp.h +40 -1
- data/ext/pg_query/include/executor/execdesc.h +1 -1
- data/ext/pg_query/include/executor/executor.h +65 -22
- data/ext/pg_query/include/executor/functions.h +17 -3
- data/ext/pg_query/include/executor/instrument.h +33 -16
- data/ext/pg_query/include/executor/spi.h +41 -3
- data/ext/pg_query/include/executor/tablefunc.h +1 -1
- data/ext/pg_query/include/executor/tuptable.h +1 -1
- data/ext/pg_query/include/fmgr.h +13 -7
- data/ext/pg_query/include/funcapi.h +16 -4
- data/ext/pg_query/include/getaddrinfo.h +1 -1
- data/ext/pg_query/include/jit/jit.h +11 -11
- data/ext/pg_query/include/kwlist_d.h +517 -494
- data/ext/pg_query/include/lib/dshash.h +112 -0
- data/ext/pg_query/include/lib/ilist.h +20 -1
- data/ext/pg_query/include/lib/pairingheap.h +1 -1
- data/ext/pg_query/include/lib/simplehash.h +140 -15
- data/ext/pg_query/include/lib/sort_template.h +432 -0
- data/ext/pg_query/include/lib/stringinfo.h +1 -1
- data/ext/pg_query/include/libpq/auth.h +6 -4
- data/ext/pg_query/include/libpq/crypt.h +5 -4
- data/ext/pg_query/include/libpq/hba.h +43 -4
- data/ext/pg_query/include/libpq/libpq-be.h +23 -6
- data/ext/pg_query/include/libpq/libpq.h +30 -20
- data/ext/pg_query/include/libpq/pqcomm.h +17 -31
- data/ext/pg_query/include/libpq/pqformat.h +1 -1
- data/ext/pg_query/include/libpq/pqsignal.h +4 -4
- data/ext/pg_query/include/mb/pg_wchar.h +105 -23
- data/ext/pg_query/include/mb/stringinfo_mb.h +1 -1
- data/ext/pg_query/include/miscadmin.h +47 -41
- data/ext/pg_query/include/nodes/bitmapset.h +1 -1
- data/ext/pg_query/include/nodes/execnodes.h +270 -78
- data/ext/pg_query/include/nodes/extensible.h +4 -2
- data/ext/pg_query/include/nodes/lockoptions.h +1 -1
- data/ext/pg_query/include/nodes/makefuncs.h +7 -6
- data/ext/pg_query/include/nodes/memnodes.h +5 -3
- data/ext/pg_query/include/nodes/nodeFuncs.h +1 -1
- data/ext/pg_query/include/nodes/nodes.h +30 -11
- data/ext/pg_query/include/nodes/params.h +1 -1
- data/ext/pg_query/include/nodes/parsenodes.h +322 -90
- data/ext/pg_query/include/nodes/pathnodes.h +243 -66
- data/ext/pg_query/include/nodes/pg_list.h +75 -69
- data/ext/pg_query/include/nodes/plannodes.h +111 -28
- data/ext/pg_query/include/nodes/primnodes.h +99 -47
- data/ext/pg_query/include/nodes/print.h +1 -1
- data/ext/pg_query/include/nodes/tidbitmap.h +1 -1
- data/ext/pg_query/include/nodes/value.h +58 -39
- data/ext/pg_query/include/optimizer/cost.h +9 -2
- data/ext/pg_query/include/optimizer/geqo.h +9 -7
- data/ext/pg_query/include/optimizer/geqo_gene.h +1 -1
- data/ext/pg_query/include/optimizer/optimizer.h +25 -17
- data/ext/pg_query/include/optimizer/paths.h +6 -6
- data/ext/pg_query/include/optimizer/planmain.h +15 -14
- data/ext/pg_query/include/parser/analyze.h +19 -5
- data/ext/pg_query/include/parser/gram.h +947 -913
- data/ext/pg_query/include/parser/gramparse.h +1 -1
- data/ext/pg_query/include/parser/kwlist.h +463 -453
- data/ext/pg_query/include/parser/parse_agg.h +2 -7
- data/ext/pg_query/include/parser/parse_coerce.h +3 -1
- data/ext/pg_query/include/parser/parse_expr.h +2 -3
- data/ext/pg_query/include/parser/parse_func.h +2 -1
- data/ext/pg_query/include/parser/parse_node.h +21 -9
- data/ext/pg_query/include/parser/parse_oper.h +1 -3
- data/ext/pg_query/include/parser/parse_relation.h +5 -4
- data/ext/pg_query/include/parser/parse_type.h +1 -1
- data/ext/pg_query/include/parser/parser.h +31 -4
- data/ext/pg_query/include/parser/parsetree.h +1 -1
- data/ext/pg_query/include/parser/scanner.h +1 -1
- data/ext/pg_query/include/parser/scansup.h +2 -5
- data/ext/pg_query/include/partitioning/partdefs.h +1 -1
- data/ext/pg_query/include/pg_config.h +83 -41
- data/ext/pg_query/include/pg_config_manual.h +74 -21
- data/ext/pg_query/include/pg_getopt.h +6 -6
- data/ext/pg_query/include/pg_query.h +5 -4
- data/ext/pg_query/include/pg_query_enum_defs.c +358 -241
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +44 -7
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +939 -113
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +43 -13
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +151 -26
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +11 -2
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +173 -30
- data/ext/pg_query/include/pg_trace.h +1 -1
- data/ext/pg_query/include/pgstat.h +449 -1238
- data/ext/pg_query/include/pgtime.h +14 -4
- data/ext/pg_query/include/pl_gram.h +126 -128
- data/ext/pg_query/include/pl_reserved_kwlist.h +1 -1
- data/ext/pg_query/include/pl_reserved_kwlist_d.h +10 -10
- data/ext/pg_query/include/pl_unreserved_kwlist.h +2 -3
- data/ext/pg_query/include/pl_unreserved_kwlist_d.h +54 -56
- data/ext/pg_query/include/plerrcodes.h +9 -1
- data/ext/pg_query/include/plpgsql.h +52 -54
- data/ext/pg_query/include/port/atomics/arch-arm.h +7 -1
- data/ext/pg_query/include/port/atomics/arch-ppc.h +1 -1
- data/ext/pg_query/include/port/atomics/arch-x86.h +1 -1
- data/ext/pg_query/include/port/atomics/fallback.h +1 -1
- data/ext/pg_query/include/port/atomics/generic-gcc.h +3 -3
- data/ext/pg_query/include/port/atomics/generic.h +1 -1
- data/ext/pg_query/include/port/atomics.h +1 -1
- data/ext/pg_query/include/port/pg_bitutils.h +40 -10
- data/ext/pg_query/include/port/pg_bswap.h +1 -1
- data/ext/pg_query/include/port/pg_crc32c.h +1 -1
- data/ext/pg_query/include/port.h +71 -46
- data/ext/pg_query/include/portability/instr_time.h +1 -1
- data/ext/pg_query/include/postgres.h +60 -16
- data/ext/pg_query/include/postmaster/autovacuum.h +17 -17
- data/ext/pg_query/include/postmaster/auxprocess.h +20 -0
- data/ext/pg_query/include/postmaster/bgworker.h +2 -1
- data/ext/pg_query/include/postmaster/bgworker_internals.h +2 -2
- data/ext/pg_query/include/postmaster/bgwriter.h +5 -5
- data/ext/pg_query/include/postmaster/fork_process.h +1 -1
- data/ext/pg_query/include/postmaster/interrupt.h +1 -1
- data/ext/pg_query/include/postmaster/pgarch.h +42 -8
- data/ext/pg_query/include/postmaster/postmaster.h +18 -17
- data/ext/pg_query/include/postmaster/startup.h +39 -0
- data/ext/pg_query/include/postmaster/syslogger.h +15 -10
- data/ext/pg_query/include/postmaster/walwriter.h +3 -3
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +1419 -914
- data/ext/pg_query/include/protobuf/pg_query.pb.h +43678 -32769
- data/ext/pg_query/include/regex/regex.h +18 -16
- data/ext/pg_query/include/replication/logicallauncher.h +3 -5
- data/ext/pg_query/include/replication/logicalproto.h +161 -17
- data/ext/pg_query/include/replication/logicalworker.h +1 -1
- data/ext/pg_query/include/replication/origin.h +7 -7
- data/ext/pg_query/include/replication/reorderbuffer.h +259 -42
- data/ext/pg_query/include/replication/slot.h +22 -11
- data/ext/pg_query/include/replication/syncrep.h +5 -5
- data/ext/pg_query/include/replication/walreceiver.h +145 -13
- data/ext/pg_query/include/replication/walsender.h +8 -8
- data/ext/pg_query/include/rewrite/prs2lock.h +1 -1
- data/ext/pg_query/include/rewrite/rewriteHandler.h +1 -3
- data/ext/pg_query/include/rewrite/rewriteManip.h +1 -1
- data/ext/pg_query/include/rewrite/rewriteSupport.h +1 -1
- data/ext/pg_query/include/storage/backendid.h +3 -3
- data/ext/pg_query/include/storage/block.h +4 -10
- data/ext/pg_query/include/storage/buf.h +1 -1
- data/ext/pg_query/include/storage/bufmgr.h +19 -14
- data/ext/pg_query/include/storage/bufpage.h +6 -8
- data/ext/pg_query/include/storage/condition_variable.h +13 -2
- data/ext/pg_query/include/storage/dsm.h +4 -1
- data/ext/pg_query/include/storage/dsm_impl.h +3 -2
- data/ext/pg_query/include/storage/fd.h +33 -3
- data/ext/pg_query/include/storage/fileset.h +40 -0
- data/ext/pg_query/include/storage/ipc.h +4 -1
- data/ext/pg_query/include/storage/item.h +1 -1
- data/ext/pg_query/include/storage/itemid.h +1 -1
- data/ext/pg_query/include/storage/itemptr.h +3 -1
- data/ext/pg_query/include/storage/large_object.h +2 -2
- data/ext/pg_query/include/storage/latch.h +9 -13
- data/ext/pg_query/include/storage/lmgr.h +2 -1
- data/ext/pg_query/include/storage/lock.h +11 -8
- data/ext/pg_query/include/storage/lockdefs.h +2 -2
- data/ext/pg_query/include/storage/lwlock.h +5 -32
- data/ext/pg_query/include/storage/lwlocknames.h +0 -1
- data/ext/pg_query/include/storage/off.h +1 -1
- data/ext/pg_query/include/storage/pg_sema.h +1 -1
- data/ext/pg_query/include/storage/pg_shmem.h +9 -7
- data/ext/pg_query/include/storage/pmsignal.h +15 -4
- data/ext/pg_query/include/storage/predicate.h +4 -4
- data/ext/pg_query/include/storage/proc.h +173 -59
- data/ext/pg_query/include/storage/procarray.h +98 -0
- data/ext/pg_query/include/storage/proclist_types.h +1 -1
- data/ext/pg_query/include/storage/procsignal.h +3 -7
- data/ext/pg_query/include/storage/relfilenode.h +1 -1
- data/ext/pg_query/include/storage/s_lock.h +60 -21
- data/ext/pg_query/include/storage/sharedfileset.h +3 -11
- data/ext/pg_query/include/storage/shm_mq.h +5 -4
- data/ext/pg_query/include/storage/shm_toc.h +1 -1
- data/ext/pg_query/include/storage/shmem.h +1 -1
- data/ext/pg_query/include/storage/sinval.h +3 -3
- data/ext/pg_query/include/storage/sinvaladt.h +1 -1
- data/ext/pg_query/include/storage/smgr.h +10 -8
- data/ext/pg_query/include/storage/spin.h +2 -2
- data/ext/pg_query/include/storage/standby.h +13 -6
- data/ext/pg_query/include/storage/standbydefs.h +2 -2
- data/ext/pg_query/include/storage/sync.h +7 -3
- data/ext/pg_query/include/tcop/cmdtag.h +1 -1
- data/ext/pg_query/include/tcop/cmdtaglist.h +3 -2
- data/ext/pg_query/include/tcop/deparse_utility.h +1 -1
- data/ext/pg_query/include/tcop/dest.h +1 -1
- data/ext/pg_query/include/tcop/fastpath.h +1 -2
- data/ext/pg_query/include/tcop/pquery.h +1 -1
- data/ext/pg_query/include/tcop/tcopprot.h +19 -11
- data/ext/pg_query/include/tcop/utility.h +7 -3
- data/ext/pg_query/include/tsearch/ts_cache.h +2 -2
- data/ext/pg_query/include/utils/acl.h +24 -3
- data/ext/pg_query/include/utils/aclchk_internal.h +1 -1
- data/ext/pg_query/include/utils/array.h +7 -2
- data/ext/pg_query/include/utils/backend_progress.h +44 -0
- data/ext/pg_query/include/utils/backend_status.h +321 -0
- data/ext/pg_query/include/utils/builtins.h +10 -11
- data/ext/pg_query/include/utils/bytea.h +3 -2
- data/ext/pg_query/include/utils/catcache.h +1 -1
- data/ext/pg_query/include/utils/date.h +1 -1
- data/ext/pg_query/include/utils/datetime.h +8 -7
- data/ext/pg_query/include/utils/datum.h +9 -1
- data/ext/pg_query/include/utils/dsa.h +1 -1
- data/ext/pg_query/include/utils/dynahash.h +4 -3
- data/ext/pg_query/include/utils/elog.h +52 -21
- data/ext/pg_query/include/utils/errcodes.h +2 -0
- data/ext/pg_query/include/utils/expandeddatum.h +1 -1
- data/ext/pg_query/include/utils/expandedrecord.h +1 -1
- data/ext/pg_query/include/utils/float.h +7 -7
- data/ext/pg_query/include/utils/fmgroids.h +1300 -696
- data/ext/pg_query/include/utils/fmgrprotos.h +199 -16
- data/ext/pg_query/include/utils/fmgrtab.h +6 -5
- data/ext/pg_query/include/utils/guc.h +69 -43
- data/ext/pg_query/include/utils/guc_tables.h +23 -19
- data/ext/pg_query/include/utils/hsearch.h +15 -11
- data/ext/pg_query/include/utils/inval.h +4 -1
- data/ext/pg_query/include/utils/lsyscache.h +11 -1
- data/ext/pg_query/include/utils/memdebug.h +1 -1
- data/ext/pg_query/include/utils/memutils.h +8 -3
- data/ext/pg_query/include/utils/numeric.h +19 -5
- data/ext/pg_query/include/utils/palloc.h +25 -3
- data/ext/pg_query/include/utils/partcache.h +1 -1
- data/ext/pg_query/include/utils/pg_locale.h +17 -9
- data/ext/pg_query/include/utils/pg_lsn.h +1 -1
- data/ext/pg_query/include/utils/pgstat_internal.h +784 -0
- data/ext/pg_query/include/utils/pidfile.h +1 -1
- data/ext/pg_query/include/utils/plancache.h +6 -5
- data/ext/pg_query/include/utils/portal.h +10 -12
- data/ext/pg_query/include/utils/ps_status.h +1 -1
- data/ext/pg_query/include/utils/queryenvironment.h +1 -1
- data/ext/pg_query/include/utils/queryjumble.h +88 -0
- data/ext/pg_query/include/utils/regproc.h +14 -3
- data/ext/pg_query/include/utils/rel.h +71 -19
- data/ext/pg_query/include/utils/relcache.h +8 -5
- data/ext/pg_query/include/utils/reltrigger.h +1 -1
- data/ext/pg_query/include/utils/resowner.h +1 -1
- data/ext/pg_query/include/utils/rls.h +2 -2
- data/ext/pg_query/include/utils/ruleutils.h +4 -1
- data/ext/pg_query/include/utils/sharedtuplestore.h +1 -1
- data/ext/pg_query/include/utils/snapmgr.h +34 -14
- data/ext/pg_query/include/utils/snapshot.h +14 -1
- data/ext/pg_query/include/utils/sortsupport.h +117 -2
- data/ext/pg_query/include/utils/syscache.h +6 -1
- data/ext/pg_query/include/utils/timeout.h +11 -4
- data/ext/pg_query/include/utils/timestamp.h +6 -5
- data/ext/pg_query/include/utils/tuplesort.h +25 -11
- data/ext/pg_query/include/utils/tuplestore.h +2 -2
- data/ext/pg_query/include/utils/typcache.h +24 -17
- data/ext/pg_query/include/utils/tzparser.h +1 -1
- data/ext/pg_query/include/utils/varlena.h +5 -3
- data/ext/pg_query/include/utils/wait_event.h +289 -0
- data/ext/pg_query/include/utils/xml.h +4 -4
- data/ext/pg_query/pg_query.pb-c.c +4302 -2304
- data/ext/pg_query/pg_query_deparse.c +986 -301
- data/ext/pg_query/pg_query_fingerprint.c +30 -10
- data/ext/pg_query/pg_query_json_plpgsql.c +0 -25
- data/ext/pg_query/pg_query_normalize.c +1 -1
- data/ext/pg_query/pg_query_outfuncs_json.c +54 -16
- data/ext/pg_query/pg_query_outfuncs_protobuf.c +70 -10
- data/ext/pg_query/pg_query_parse.c +1 -1
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +42 -8
- data/ext/pg_query/pg_query_scan.c +2 -1
- data/ext/pg_query/pg_query_split.c +3 -2
- data/ext/pg_query/src_backend_catalog_namespace.c +20 -9
- data/ext/pg_query/src_backend_catalog_pg_proc.c +4 -1
- data/ext/pg_query/src_backend_commands_define.c +11 -1
- data/ext/pg_query/src_backend_nodes_bitmapset.c +3 -1
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +401 -76
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +290 -46
- data/ext/pg_query/src_backend_nodes_extensible.c +1 -1
- data/ext/pg_query/src_backend_nodes_list.c +74 -11
- data/ext/pg_query/src_backend_nodes_makefuncs.c +5 -4
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +55 -12
- data/ext/pg_query/src_backend_nodes_value.c +28 -19
- data/ext/pg_query/src_backend_parser_gram.c +33874 -31261
- data/ext/pg_query/src_backend_parser_parser.c +26 -7
- data/ext/pg_query/src_backend_parser_scan.c +172 -209
- data/ext/pg_query/src_backend_parser_scansup.c +4 -28
- data/ext/pg_query/src_backend_postmaster_postmaster.c +77 -106
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +13 -4
- data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +5 -4
- data/ext/pg_query/src_backend_tcop_postgres.c +62 -23
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +140 -0
- data/ext/pg_query/src_backend_utils_adt_datum.c +13 -1
- data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_format_type.c +6 -2
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +71 -5
- data/ext/pg_query/src_backend_utils_error_assert.c +16 -14
- data/ext/pg_query/src_backend_utils_error_elog.c +172 -99
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +12 -17
- data/ext/pg_query/src_backend_utils_hash_dynahash.c +40 -10
- data/ext/pg_query/src_backend_utils_init_globals.c +5 -5
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +55 -66
- data/ext/pg_query/src_backend_utils_misc_guc.c +206 -45
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +7 -5
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +123 -35
- data/ext/pg_query/src_common_encnames.c +1 -1
- data/ext/pg_query/src_common_hashfn.c +3 -3
- data/ext/pg_query/src_common_keywords.c +15 -2
- data/ext/pg_query/src_common_kwlist_d.h +517 -494
- data/ext/pg_query/src_common_kwlookup.c +1 -1
- data/ext/pg_query/src_common_pg_prng.c +152 -0
- data/ext/pg_query/src_common_psprintf.c +1 -1
- data/ext/pg_query/src_common_string.c +7 -1
- data/ext/pg_query/src_common_stringinfo.c +1 -1
- data/ext/pg_query/src_common_wchar.c +701 -109
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +45 -20
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +1 -18
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1233 -1259
- data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +10 -10
- data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +2 -2
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +54 -56
- data/ext/pg_query/src_port_pg_bitutils.c +41 -31
- data/ext/pg_query/src_port_pgsleep.c +1 -1
- data/ext/pg_query/src_port_pgstrcasecmp.c +1 -1
- data/ext/pg_query/src_port_qsort.c +12 -224
- data/ext/pg_query/src_port_snprintf.c +37 -13
- data/ext/pg_query/src_port_strerror.c +9 -19
- data/ext/pg_query/src_port_strnlen.c +1 -1
- data/lib/pg_query/filter_columns.rb +1 -1
- data/lib/pg_query/fingerprint.rb +5 -1
- data/lib/pg_query/node.rb +2 -2
- data/lib/pg_query/param_refs.rb +1 -1
- data/lib/pg_query/parse.rb +8 -7
- data/lib/pg_query/pg_query_pb.rb +1108 -942
- data/lib/pg_query/truncate.rb +1 -1
- data/lib/pg_query/version.rb +1 -1
- metadata +23 -13
- data/ext/pg_query/include/access/xloginsert.h +0 -64
- data/ext/pg_query/include/bootstrap/bootstrap.h +0 -62
- data/ext/pg_query/include/parser/parse_clause.h +0 -54
- data/ext/pg_query/include/parser/parse_collate.h +0 -27
- data/ext/pg_query/include/parser/parse_target.h +0 -46
- data/ext/pg_query/pg_query_ruby_freebsd.sym +0 -2
- data/ext/pg_query/src_backend_libpq_pqcomm.c +0 -659
- data/ext/pg_query/src_backend_parser_parse_expr.c +0 -313
- data/ext/pg_query/src_port_erand48.c +0 -127
- data/ext/pg_query/src_port_random.c +0 -31
@@ -18,7 +18,7 @@
|
|
18
18
|
* and GetExtensibleNodeMethods to get information about a previously
|
19
19
|
* registered type of extensible node.
|
20
20
|
*
|
21
|
-
* Portions Copyright (c) 1996-
|
21
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
22
22
|
* Portions Copyright (c) 1994, Regents of the University of California
|
23
23
|
*
|
24
24
|
* IDENTIFICATION
|
@@ -1,11 +1,11 @@
|
|
1
1
|
/*--------------------------------------------------------------------
|
2
2
|
* Symbols referenced in this file:
|
3
|
-
* -
|
3
|
+
* - list_make1_impl
|
4
4
|
* - new_list
|
5
|
+
* - check_list_invariants
|
6
|
+
* - lappend
|
5
7
|
* - new_tail_cell
|
6
8
|
* - enlarge_list
|
7
|
-
* - check_list_invariants
|
8
|
-
* - list_make1_impl
|
9
9
|
* - list_make2_impl
|
10
10
|
* - list_concat
|
11
11
|
* - list_copy
|
@@ -31,7 +31,7 @@
|
|
31
31
|
* See comments in pg_list.h.
|
32
32
|
*
|
33
33
|
*
|
34
|
-
* Portions Copyright (c) 1996-
|
34
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
35
35
|
* Portions Copyright (c) 1994, Regents of the University of California
|
36
36
|
*
|
37
37
|
*
|
@@ -302,6 +302,8 @@ list_make4_impl(NodeTag t, ListCell datum1, ListCell datum2,
|
|
302
302
|
return list;
|
303
303
|
}
|
304
304
|
|
305
|
+
|
306
|
+
|
305
307
|
/*
|
306
308
|
* Make room for a new head cell in the given (non-NIL) list.
|
307
309
|
*
|
@@ -352,7 +354,7 @@ lappend(List *list, void *datum)
|
|
352
354
|
else
|
353
355
|
new_tail_cell(list);
|
354
356
|
|
355
|
-
|
357
|
+
llast(list) = datum;
|
356
358
|
check_list_invariants(list);
|
357
359
|
return list;
|
358
360
|
}
|
@@ -379,6 +381,9 @@ lappend(List *list, void *datum)
|
|
379
381
|
/*
|
380
382
|
* Insert the given datum at position 'pos' (measured from 0) in the list.
|
381
383
|
* 'pos' must be valid, ie, 0 <= pos <= list's length.
|
384
|
+
*
|
385
|
+
* Note that this takes time proportional to the distance to the end of the
|
386
|
+
* list, since the following entries must be moved.
|
382
387
|
*/
|
383
388
|
|
384
389
|
|
@@ -393,6 +398,9 @@ lappend(List *list, void *datum)
|
|
393
398
|
* value, rather than continuing to use the pointer passed as the
|
394
399
|
* second argument.
|
395
400
|
*
|
401
|
+
* Note that this takes time proportional to the length of the list,
|
402
|
+
* since the existing entries must be moved.
|
403
|
+
*
|
396
404
|
* Caution: before Postgres 8.0, the original List was unmodified and
|
397
405
|
* could be considered to retain its separate identity. This is no longer
|
398
406
|
* the case.
|
@@ -407,7 +415,7 @@ lcons(void *datum, List *list)
|
|
407
415
|
else
|
408
416
|
new_head_cell(list);
|
409
417
|
|
410
|
-
|
418
|
+
linitial(list) = datum;
|
411
419
|
check_list_invariants(list);
|
412
420
|
return list;
|
413
421
|
}
|
@@ -432,6 +440,10 @@ lcons(void *datum, List *list)
|
|
432
440
|
* Callers should be sure to use the return value as the new pointer to the
|
433
441
|
* concatenated list: the 'list1' input pointer may or may not be the same
|
434
442
|
* as the returned pointer.
|
443
|
+
*
|
444
|
+
* Note that this takes at least time proportional to the length of list2.
|
445
|
+
* It'd typically be the case that we have to enlarge list1's storage,
|
446
|
+
* probably adding time proportional to the length of list1.
|
435
447
|
*/
|
436
448
|
List *
|
437
449
|
list_concat(List *list1, const List *list2)
|
@@ -508,6 +520,8 @@ list_truncate(List *list, int new_size)
|
|
508
520
|
* Return true iff 'datum' is a member of the list. Equality is
|
509
521
|
* determined via equal(), so callers should ensure that they pass a
|
510
522
|
* Node as 'datum'.
|
523
|
+
*
|
524
|
+
* This does a simple linear search --- avoid using it on long lists.
|
511
525
|
*/
|
512
526
|
|
513
527
|
|
@@ -531,6 +545,9 @@ list_truncate(List *list, int new_size)
|
|
531
545
|
* Delete the n'th cell (counting from 0) in list.
|
532
546
|
*
|
533
547
|
* The List is pfree'd if this was the last member.
|
548
|
+
*
|
549
|
+
* Note that this takes time proportional to the distance to the end of the
|
550
|
+
* list, since the following entries must be moved.
|
534
551
|
*/
|
535
552
|
List *
|
536
553
|
list_delete_nth_cell(List *list, int n)
|
@@ -602,6 +619,9 @@ list_delete_nth_cell(List *list, int n)
|
|
602
619
|
*
|
603
620
|
* The List is pfree'd if this was the last member. However, we do not
|
604
621
|
* touch any data the cell might've been pointing to.
|
622
|
+
*
|
623
|
+
* Note that this takes time proportional to the distance to the end of the
|
624
|
+
* list, since the following entries must be moved.
|
605
625
|
*/
|
606
626
|
List *
|
607
627
|
list_delete_cell(List *list, ListCell *cell)
|
@@ -612,6 +632,8 @@ list_delete_cell(List *list, ListCell *cell)
|
|
612
632
|
/*
|
613
633
|
* Delete the first cell in list that matches datum, if any.
|
614
634
|
* Equality is determined via equal().
|
635
|
+
*
|
636
|
+
* This does a simple linear search --- avoid using it on long lists.
|
615
637
|
*/
|
616
638
|
|
617
639
|
|
@@ -631,14 +653,18 @@ list_delete_cell(List *list, ListCell *cell)
|
|
631
653
|
* where the intent is to alter the list rather than just traverse it.
|
632
654
|
* Beware that the list is modified, whereas the Lisp-y coding leaves
|
633
655
|
* the original list head intact in case there's another pointer to it.
|
656
|
+
*
|
657
|
+
* Note that this takes time proportional to the length of the list,
|
658
|
+
* since the remaining entries must be moved. Consider reversing the
|
659
|
+
* list order so that you can use list_delete_last() instead. However,
|
660
|
+
* if that causes you to replace lappend() with lcons(), you haven't
|
661
|
+
* improved matters. (In short, you can make an efficient stack from
|
662
|
+
* a List, but not an efficient FIFO queue.)
|
634
663
|
*/
|
635
664
|
|
636
665
|
|
637
666
|
/*
|
638
667
|
* Delete the last element of the list.
|
639
|
-
*
|
640
|
-
* This is the opposite of list_delete_first(), but is noticeably cheaper
|
641
|
-
* with a long list, since no data need be moved.
|
642
668
|
*/
|
643
669
|
|
644
670
|
|
@@ -646,6 +672,9 @@ list_delete_cell(List *list, ListCell *cell)
|
|
646
672
|
* Delete the first N cells of the list.
|
647
673
|
*
|
648
674
|
* The List is pfree'd if the request causes all cells to be deleted.
|
675
|
+
*
|
676
|
+
* Note that this takes time proportional to the distance to the end of the
|
677
|
+
* list, since the following entries must be moved.
|
649
678
|
*/
|
650
679
|
#ifndef DEBUG_LIST_MEMORY_USAGE
|
651
680
|
#else
|
@@ -671,8 +700,10 @@ list_delete_cell(List *list, ListCell *cell)
|
|
671
700
|
* you probably want to use list_concat_unique() instead to avoid wasting
|
672
701
|
* the storage of the old x list.
|
673
702
|
*
|
674
|
-
*
|
675
|
-
*
|
703
|
+
* Note that this takes time proportional to the product of the list
|
704
|
+
* lengths, so beware of using it on long lists. (We could probably
|
705
|
+
* improve that, but really you should be using some other data structure
|
706
|
+
* if this'd be a performance bottleneck.)
|
676
707
|
*/
|
677
708
|
|
678
709
|
|
@@ -704,6 +735,11 @@ list_delete_cell(List *list, ListCell *cell)
|
|
704
735
|
* This variant works on lists of pointers, and determines list
|
705
736
|
* membership via equal(). Note that the list1 member will be pointed
|
706
737
|
* to in the result.
|
738
|
+
*
|
739
|
+
* Note that this takes time proportional to the product of the list
|
740
|
+
* lengths, so beware of using it on long lists. (We could probably
|
741
|
+
* improve that, but really you should be using some other data structure
|
742
|
+
* if this'd be a performance bottleneck.)
|
707
743
|
*/
|
708
744
|
|
709
745
|
|
@@ -720,6 +756,11 @@ list_delete_cell(List *list, ListCell *cell)
|
|
720
756
|
*
|
721
757
|
* This variant works on lists of pointers, and determines list
|
722
758
|
* membership via equal()
|
759
|
+
*
|
760
|
+
* Note that this takes time proportional to the product of the list
|
761
|
+
* lengths, so beware of using it on long lists. (We could probably
|
762
|
+
* improve that, but really you should be using some other data structure
|
763
|
+
* if this'd be a performance bottleneck.)
|
723
764
|
*/
|
724
765
|
|
725
766
|
|
@@ -744,6 +785,8 @@ list_delete_cell(List *list, ListCell *cell)
|
|
744
785
|
*
|
745
786
|
* Whether an element is already a member of the list is determined
|
746
787
|
* via equal().
|
788
|
+
*
|
789
|
+
* This does a simple linear search --- avoid using it on long lists.
|
747
790
|
*/
|
748
791
|
|
749
792
|
|
@@ -773,6 +816,11 @@ list_delete_cell(List *list, ListCell *cell)
|
|
773
816
|
* modified in-place rather than being copied. However, callers of this
|
774
817
|
* function may have strict ordering expectations -- i.e. that the relative
|
775
818
|
* order of those list2 elements that are not duplicates is preserved.
|
819
|
+
*
|
820
|
+
* Note that this takes time proportional to the product of the list
|
821
|
+
* lengths, so beware of using it on long lists. (We could probably
|
822
|
+
* improve that, but really you should be using some other data structure
|
823
|
+
* if this'd be a performance bottleneck.)
|
776
824
|
*/
|
777
825
|
|
778
826
|
|
@@ -797,6 +845,8 @@ list_delete_cell(List *list, ListCell *cell)
|
|
797
845
|
*
|
798
846
|
* It is caller's responsibility to have sorted the list to bring duplicates
|
799
847
|
* together, perhaps via list_sort(list, list_oid_cmp).
|
848
|
+
*
|
849
|
+
* Note that this takes time proportional to the length of the list.
|
800
850
|
*/
|
801
851
|
|
802
852
|
|
@@ -864,6 +914,12 @@ list_copy(const List *oldlist)
|
|
864
914
|
return newlist;
|
865
915
|
}
|
866
916
|
|
917
|
+
/*
|
918
|
+
* Return a shallow copy of the specified list containing only the first 'len'
|
919
|
+
* elements. If oldlist is shorter than 'len' then we copy the entire list.
|
920
|
+
*/
|
921
|
+
|
922
|
+
|
867
923
|
/*
|
868
924
|
* Return a shallow copy of the specified list, without the first N elements.
|
869
925
|
*/
|
@@ -925,6 +981,13 @@ list_copy_deep(const List *oldlist)
|
|
925
981
|
*
|
926
982
|
* Like qsort(), this provides no guarantees about sort stability
|
927
983
|
* for equal keys.
|
984
|
+
*
|
985
|
+
* This is based on qsort(), so it likewise has O(N log N) runtime.
|
986
|
+
*/
|
987
|
+
|
988
|
+
|
989
|
+
/*
|
990
|
+
* list_sort comparator for sorting a list into ascending int order.
|
928
991
|
*/
|
929
992
|
|
930
993
|
|
@@ -3,6 +3,7 @@
|
|
3
3
|
* - makeDefElem
|
4
4
|
* - makeTypeNameFromNameList
|
5
5
|
* - makeDefElemExtended
|
6
|
+
* - makeRangeVar
|
6
7
|
* - makeVacuumRelation
|
7
8
|
* - makeAlias
|
8
9
|
* - makeSimpleA_Expr
|
@@ -10,7 +11,6 @@
|
|
10
11
|
* - makeTypeName
|
11
12
|
* - makeFuncCall
|
12
13
|
* - makeA_Expr
|
13
|
-
* - makeRangeVar
|
14
14
|
* - makeBoolExpr
|
15
15
|
*--------------------------------------------------------------------
|
16
16
|
*/
|
@@ -21,7 +21,7 @@
|
|
21
21
|
* creator functions for various nodes. The functions here are for the
|
22
22
|
* most frequently created nodes.
|
23
23
|
*
|
24
|
-
* Portions Copyright (c) 1996-
|
24
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
25
25
|
* Portions Copyright (c) 1994, Regents of the University of California
|
26
26
|
*
|
27
27
|
*
|
@@ -309,7 +309,7 @@ makeDefElemExtended(char *nameSpace, char *name, Node *arg,
|
|
309
309
|
* supply. Any non-default parameters have to be inserted by the caller.
|
310
310
|
*/
|
311
311
|
FuncCall *
|
312
|
-
makeFuncCall(List *name, List *args, int location)
|
312
|
+
makeFuncCall(List *name, List *args, CoercionForm funcformat, int location)
|
313
313
|
{
|
314
314
|
FuncCall *n = makeNode(FuncCall);
|
315
315
|
|
@@ -317,11 +317,12 @@ makeFuncCall(List *name, List *args, int location)
|
|
317
317
|
n->args = args;
|
318
318
|
n->agg_order = NIL;
|
319
319
|
n->agg_filter = NULL;
|
320
|
+
n->over = NULL;
|
320
321
|
n->agg_within_group = false;
|
321
322
|
n->agg_star = false;
|
322
323
|
n->agg_distinct = false;
|
323
324
|
n->func_variadic = false;
|
324
|
-
n->
|
325
|
+
n->funcformat = funcformat;
|
325
326
|
n->location = location;
|
326
327
|
return n;
|
327
328
|
}
|
@@ -11,7 +11,7 @@
|
|
11
11
|
* nodeFuncs.c
|
12
12
|
* Various general-purpose manipulations of Node trees
|
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
|
*
|
@@ -523,6 +523,12 @@ exprLocation(const Node *expr)
|
|
523
523
|
case T_OnConflictClause:
|
524
524
|
loc = ((const OnConflictClause *) expr)->location;
|
525
525
|
break;
|
526
|
+
case T_CTESearchClause:
|
527
|
+
loc = ((const CTESearchClause *) expr)->location;
|
528
|
+
break;
|
529
|
+
case T_CTECycleClause:
|
530
|
+
loc = ((const CTECycleClause *) expr)->location;
|
531
|
+
break;
|
526
532
|
case T_CommonTableExpr:
|
527
533
|
loc = ((const CommonTableExpr *) expr)->location;
|
528
534
|
break;
|
@@ -812,10 +818,6 @@ leftmostLoc(int loc1, int loc2)
|
|
812
818
|
#define FLATCOPY(newnode, node, nodetype) \
|
813
819
|
( (newnode) = (nodetype *) palloc(sizeof(nodetype)), \
|
814
820
|
memcpy((newnode), (node), sizeof(nodetype)) )
|
815
|
-
#define CHECKFLATCOPY(newnode, node, nodetype) \
|
816
|
-
( AssertMacro(IsA((node), nodetype)), \
|
817
|
-
(newnode) = (nodetype *) palloc(sizeof(nodetype)), \
|
818
|
-
memcpy((newnode), (node), sizeof(nodetype)) )
|
819
821
|
#define MUTATE(newfield, oldfield, fieldtype) \
|
820
822
|
( (newfield) = (fieldtype) mutator((Node *) (oldfield), context) )
|
821
823
|
|
@@ -835,9 +837,9 @@ leftmostLoc(int loc1, int loc2)
|
|
835
837
|
* which is the bitwise OR of flag values to suppress mutating of
|
836
838
|
* indicated items. (More flag bits may be added as needed.)
|
837
839
|
*
|
838
|
-
* Normally the Query node itself is copied, but some callers want
|
839
|
-
* modified in-place; they must pass QTW_DONT_COPY_QUERY in flags.
|
840
|
-
* modified substructure is safely copied in any case.
|
840
|
+
* Normally the top-level Query node itself is copied, but some callers want
|
841
|
+
* it to be modified in-place; they must pass QTW_DONT_COPY_QUERY in flags.
|
842
|
+
* All modified substructure is safely copied in any case.
|
841
843
|
*/
|
842
844
|
|
843
845
|
|
@@ -880,9 +882,9 @@ leftmostLoc(int loc1, int loc2)
|
|
880
882
|
* boundaries: we descend to everything that's possibly interesting.
|
881
883
|
*
|
882
884
|
* Currently, the node type coverage here extends only to DML statements
|
883
|
-
* (SELECT/INSERT/UPDATE/DELETE) and nodes that can appear in them,
|
884
|
-
* this is used mainly during analysis of CTEs, and only DML
|
885
|
-
* appear in CTEs.
|
885
|
+
* (SELECT/INSERT/UPDATE/DELETE/MERGE) and nodes that can appear in them,
|
886
|
+
* because this is used mainly during analysis of CTEs, and only DML
|
887
|
+
* statements can appear in CTEs.
|
886
888
|
*/
|
887
889
|
bool
|
888
890
|
raw_expression_tree_walker(Node *node,
|
@@ -908,9 +910,9 @@ raw_expression_tree_walker(Node *node,
|
|
908
910
|
case T_SQLValueFunction:
|
909
911
|
case T_Integer:
|
910
912
|
case T_Float:
|
913
|
+
case T_Boolean:
|
911
914
|
case T_String:
|
912
915
|
case T_BitString:
|
913
|
-
case T_Null:
|
914
916
|
case T_ParamRef:
|
915
917
|
case T_A_Const:
|
916
918
|
case T_A_Star:
|
@@ -1062,6 +1064,34 @@ raw_expression_tree_walker(Node *node,
|
|
1062
1064
|
return true;
|
1063
1065
|
}
|
1064
1066
|
break;
|
1067
|
+
case T_MergeStmt:
|
1068
|
+
{
|
1069
|
+
MergeStmt *stmt = (MergeStmt *) node;
|
1070
|
+
|
1071
|
+
if (walker(stmt->relation, context))
|
1072
|
+
return true;
|
1073
|
+
if (walker(stmt->sourceRelation, context))
|
1074
|
+
return true;
|
1075
|
+
if (walker(stmt->joinCondition, context))
|
1076
|
+
return true;
|
1077
|
+
if (walker(stmt->mergeWhenClauses, context))
|
1078
|
+
return true;
|
1079
|
+
if (walker(stmt->withClause, context))
|
1080
|
+
return true;
|
1081
|
+
}
|
1082
|
+
break;
|
1083
|
+
case T_MergeWhenClause:
|
1084
|
+
{
|
1085
|
+
MergeWhenClause *mergeWhenClause = (MergeWhenClause *) node;
|
1086
|
+
|
1087
|
+
if (walker(mergeWhenClause->condition, context))
|
1088
|
+
return true;
|
1089
|
+
if (walker(mergeWhenClause->targetList, context))
|
1090
|
+
return true;
|
1091
|
+
if (walker(mergeWhenClause->values, context))
|
1092
|
+
return true;
|
1093
|
+
}
|
1094
|
+
break;
|
1065
1095
|
case T_SelectStmt:
|
1066
1096
|
{
|
1067
1097
|
SelectStmt *stmt = (SelectStmt *) node;
|
@@ -1100,6 +1130,16 @@ raw_expression_tree_walker(Node *node,
|
|
1100
1130
|
return true;
|
1101
1131
|
}
|
1102
1132
|
break;
|
1133
|
+
case T_PLAssignStmt:
|
1134
|
+
{
|
1135
|
+
PLAssignStmt *stmt = (PLAssignStmt *) node;
|
1136
|
+
|
1137
|
+
if (walker(stmt->indirection, context))
|
1138
|
+
return true;
|
1139
|
+
if (walker(stmt->val, context))
|
1140
|
+
return true;
|
1141
|
+
}
|
1142
|
+
break;
|
1103
1143
|
case T_A_Expr:
|
1104
1144
|
{
|
1105
1145
|
A_Expr *expr = (A_Expr *) node;
|
@@ -1279,6 +1319,8 @@ raw_expression_tree_walker(Node *node,
|
|
1279
1319
|
|
1280
1320
|
if (walker(coldef->typeName, context))
|
1281
1321
|
return true;
|
1322
|
+
if (walker(coldef->compression, context))
|
1323
|
+
return true;
|
1282
1324
|
if (walker(coldef->raw_default, context))
|
1283
1325
|
return true;
|
1284
1326
|
if (walker(coldef->collClause, context))
|
@@ -1334,6 +1376,7 @@ raw_expression_tree_walker(Node *node,
|
|
1334
1376
|
}
|
1335
1377
|
break;
|
1336
1378
|
case T_CommonTableExpr:
|
1379
|
+
/* search_clause and cycle_clause are not interesting here */
|
1337
1380
|
return walker(((CommonTableExpr *) node)->ctequery, context);
|
1338
1381
|
default:
|
1339
1382
|
elog(ERROR, "unrecognized node type: %d",
|
@@ -1,6 +1,7 @@
|
|
1
1
|
/*--------------------------------------------------------------------
|
2
2
|
* Symbols referenced in this file:
|
3
3
|
* - makeString
|
4
|
+
* - makeBoolean
|
4
5
|
* - makeInteger
|
5
6
|
* - makeFloat
|
6
7
|
* - makeBitString
|
@@ -10,10 +11,10 @@
|
|
10
11
|
/*-------------------------------------------------------------------------
|
11
12
|
*
|
12
13
|
* value.c
|
13
|
-
* implementation of
|
14
|
+
* implementation of value nodes
|
14
15
|
*
|
15
16
|
*
|
16
|
-
* Copyright (c) 2003-
|
17
|
+
* Copyright (c) 2003-2022, PostgreSQL Global Development Group
|
17
18
|
*
|
18
19
|
*
|
19
20
|
* IDENTIFICATION
|
@@ -23,18 +24,17 @@
|
|
23
24
|
*/
|
24
25
|
#include "postgres.h"
|
25
26
|
|
26
|
-
#include "nodes/
|
27
|
+
#include "nodes/value.h"
|
27
28
|
|
28
29
|
/*
|
29
30
|
* makeInteger
|
30
31
|
*/
|
31
|
-
|
32
|
+
Integer *
|
32
33
|
makeInteger(int i)
|
33
34
|
{
|
34
|
-
|
35
|
+
Integer *v = makeNode(Integer);
|
35
36
|
|
36
|
-
v->
|
37
|
-
v->val.ival = i;
|
37
|
+
v->ival = i;
|
38
38
|
return v;
|
39
39
|
}
|
40
40
|
|
@@ -43,13 +43,24 @@ makeInteger(int i)
|
|
43
43
|
*
|
44
44
|
* Caller is responsible for passing a palloc'd string.
|
45
45
|
*/
|
46
|
-
|
46
|
+
Float *
|
47
47
|
makeFloat(char *numericStr)
|
48
48
|
{
|
49
|
-
|
49
|
+
Float *v = makeNode(Float);
|
50
50
|
|
51
|
-
v->
|
52
|
-
v
|
51
|
+
v->fval = numericStr;
|
52
|
+
return v;
|
53
|
+
}
|
54
|
+
|
55
|
+
/*
|
56
|
+
* makeBoolean
|
57
|
+
*/
|
58
|
+
Boolean *
|
59
|
+
makeBoolean(bool val)
|
60
|
+
{
|
61
|
+
Boolean *v = makeNode(Boolean);
|
62
|
+
|
63
|
+
v->boolval = val;
|
53
64
|
return v;
|
54
65
|
}
|
55
66
|
|
@@ -58,13 +69,12 @@ makeFloat(char *numericStr)
|
|
58
69
|
*
|
59
70
|
* Caller is responsible for passing a palloc'd string.
|
60
71
|
*/
|
61
|
-
|
72
|
+
String *
|
62
73
|
makeString(char *str)
|
63
74
|
{
|
64
|
-
|
75
|
+
String *v = makeNode(String);
|
65
76
|
|
66
|
-
v->
|
67
|
-
v->val.str = str;
|
77
|
+
v->sval = str;
|
68
78
|
return v;
|
69
79
|
}
|
70
80
|
|
@@ -73,12 +83,11 @@ makeString(char *str)
|
|
73
83
|
*
|
74
84
|
* Caller is responsible for passing a palloc'd string.
|
75
85
|
*/
|
76
|
-
|
86
|
+
BitString *
|
77
87
|
makeBitString(char *str)
|
78
88
|
{
|
79
|
-
|
89
|
+
BitString *v = makeNode(BitString);
|
80
90
|
|
81
|
-
v->
|
82
|
-
v->val.str = str;
|
91
|
+
v->bsval = str;
|
83
92
|
return v;
|
84
93
|
}
|