pg_query 2.2.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 +25 -0
- data/README.md +59 -31
- data/Rakefile +2 -2
- data/ext/pg_query/include/access/amapi.h +45 -1
- data/ext/pg_query/include/access/attmap.h +1 -1
- data/ext/pg_query/include/access/attnum.h +2 -2
- data/ext/pg_query/include/access/clog.h +4 -2
- data/ext/pg_query/include/access/commit_ts.h +6 -9
- data/ext/pg_query/include/access/detoast.h +1 -11
- data/ext/pg_query/include/access/genam.h +15 -12
- data/ext/pg_query/include/access/gin.h +2 -2
- data/ext/pg_query/include/access/htup.h +1 -1
- data/ext/pg_query/include/access/htup_details.h +75 -87
- data/ext/pg_query/include/access/itup.h +7 -1
- data/ext/pg_query/include/access/parallel.h +2 -2
- data/ext/pg_query/include/access/printtup.h +1 -1
- data/ext/pg_query/include/access/relation.h +1 -1
- data/ext/pg_query/include/access/relscan.h +17 -2
- data/ext/pg_query/include/access/rmgr.h +30 -3
- data/ext/pg_query/include/access/rmgrlist.h +23 -23
- data/ext/pg_query/include/access/sdir.h +1 -1
- data/ext/pg_query/include/access/skey.h +1 -1
- data/ext/pg_query/include/access/stratnum.h +4 -2
- data/ext/pg_query/include/access/sysattr.h +1 -1
- data/ext/pg_query/include/access/table.h +2 -1
- data/ext/pg_query/include/access/tableam.h +272 -20
- data/ext/pg_query/include/access/toast_compression.h +73 -0
- data/ext/pg_query/include/access/transam.h +123 -13
- data/ext/pg_query/include/access/tupconvert.h +1 -1
- data/ext/pg_query/include/access/tupdesc.h +1 -1
- data/ext/pg_query/include/access/tupmacs.h +3 -3
- data/ext/pg_query/include/access/twophase.h +3 -1
- data/ext/pg_query/include/access/xact.h +73 -19
- data/ext/pg_query/include/access/xlog.h +60 -155
- data/ext/pg_query/include/access/xlog_internal.h +40 -13
- data/ext/pg_query/include/access/xlogdefs.h +8 -16
- data/ext/pg_query/include/access/xlogprefetcher.h +55 -0
- data/ext/pg_query/include/access/xlogreader.h +145 -39
- data/ext/pg_query/include/access/xlogrecord.h +18 -9
- data/ext/pg_query/include/access/xlogrecovery.h +157 -0
- data/ext/pg_query/include/c.h +101 -44
- data/ext/pg_query/include/catalog/catalog.h +3 -1
- data/ext/pg_query/include/catalog/catversion.h +2 -2
- data/ext/pg_query/include/catalog/dependency.h +8 -16
- data/ext/pg_query/include/catalog/genbki.h +83 -5
- data/ext/pg_query/include/catalog/index.h +18 -3
- data/ext/pg_query/include/catalog/indexing.h +12 -324
- data/ext/pg_query/include/catalog/namespace.h +4 -2
- data/ext/pg_query/include/catalog/objectaccess.h +70 -2
- data/ext/pg_query/include/catalog/objectaddress.h +11 -6
- data/ext/pg_query/include/catalog/pg_aggregate.h +14 -10
- data/ext/pg_query/include/catalog/pg_aggregate_d.h +2 -1
- data/ext/pg_query/include/catalog/pg_am.h +4 -1
- data/ext/pg_query/include/catalog/pg_am_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_attribute.h +27 -10
- data/ext/pg_query/include/catalog/pg_attribute_d.h +21 -18
- data/ext/pg_query/include/catalog/pg_authid.h +7 -2
- data/ext/pg_query/include/catalog/pg_authid_d.h +17 -9
- data/ext/pg_query/include/catalog/pg_class.h +44 -14
- data/ext/pg_query/include/catalog/pg_class_d.h +30 -1
- data/ext/pg_query/include/catalog/pg_collation.h +33 -8
- data/ext/pg_query/include/catalog/pg_collation_d.h +20 -3
- data/ext/pg_query/include/catalog/pg_constraint.h +38 -12
- data/ext/pg_query/include/catalog/pg_constraint_d.h +10 -4
- data/ext/pg_query/include/catalog/pg_control.h +3 -5
- data/ext/pg_query/include/catalog/pg_conversion.h +7 -4
- data/ext/pg_query/include/catalog/pg_conversion_d.h +4 -1
- data/ext/pg_query/include/catalog/pg_depend.h +11 -7
- data/ext/pg_query/include/catalog/pg_depend_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_event_trigger.h +9 -3
- data/ext/pg_query/include/catalog/pg_event_trigger_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_index.h +17 -7
- data/ext/pg_query/include/catalog/pg_index_d.h +20 -17
- data/ext/pg_query/include/catalog/pg_language.h +10 -5
- data/ext/pg_query/include/catalog/pg_language_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_namespace.h +7 -2
- data/ext/pg_query/include/catalog/pg_namespace_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_opclass.h +8 -5
- data/ext/pg_query/include/catalog/pg_opclass_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_operator.h +18 -15
- data/ext/pg_query/include/catalog/pg_operator_d.h +37 -1
- data/ext/pg_query/include/catalog/pg_opfamily.h +6 -3
- data/ext/pg_query/include/catalog/pg_opfamily_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_parameter_acl.h +60 -0
- data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +34 -0
- data/ext/pg_query/include/catalog/pg_partitioned_table.h +20 -9
- data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +2 -1
- data/ext/pg_query/include/catalog/pg_proc.h +20 -11
- data/ext/pg_query/include/catalog/pg_proc_d.h +10 -8
- data/ext/pg_query/include/catalog/pg_publication.h +50 -7
- data/ext/pg_query/include/catalog/pg_publication_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_replication_origin.h +6 -1
- data/ext/pg_query/include/catalog/pg_replication_origin_d.h +5 -1
- data/ext/pg_query/include/catalog/pg_statistic.h +19 -12
- data/ext/pg_query/include/catalog/pg_statistic_d.h +2 -1
- data/ext/pg_query/include/catalog/pg_statistic_ext.h +19 -5
- data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +7 -2
- data/ext/pg_query/include/catalog/pg_transform.h +8 -5
- data/ext/pg_query/include/catalog/pg_transform_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_trigger.h +24 -8
- data/ext/pg_query/include/catalog/pg_trigger_d.h +4 -1
- data/ext/pg_query/include/catalog/pg_ts_config.h +6 -3
- data/ext/pg_query/include/catalog/pg_ts_config_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_ts_dict.h +8 -3
- data/ext/pg_query/include/catalog/pg_ts_dict_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_ts_parser.h +6 -3
- data/ext/pg_query/include/catalog/pg_ts_parser_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_ts_template.h +6 -3
- data/ext/pg_query/include/catalog/pg_ts_template_d.h +3 -1
- data/ext/pg_query/include/catalog/pg_type.h +55 -24
- data/ext/pg_query/include/catalog/pg_type_d.h +70 -31
- data/ext/pg_query/include/catalog/storage.h +5 -3
- data/ext/pg_query/include/commands/async.h +3 -4
- data/ext/pg_query/include/commands/dbcommands.h +2 -1
- data/ext/pg_query/include/commands/defrem.h +11 -24
- data/ext/pg_query/include/commands/event_trigger.h +2 -2
- data/ext/pg_query/include/commands/explain.h +1 -1
- data/ext/pg_query/include/commands/prepare.h +1 -1
- data/ext/pg_query/include/commands/tablespace.h +2 -2
- data/ext/pg_query/include/commands/trigger.h +18 -16
- data/ext/pg_query/include/commands/user.h +2 -2
- data/ext/pg_query/include/commands/vacuum.h +88 -41
- data/ext/pg_query/include/commands/variable.h +1 -1
- data/ext/pg_query/include/common/file_perm.h +4 -4
- data/ext/pg_query/include/common/hashfn.h +1 -1
- data/ext/pg_query/include/common/ip.h +1 -7
- data/ext/pg_query/include/common/keywords.h +2 -6
- data/ext/pg_query/include/common/kwlookup.h +1 -1
- data/ext/pg_query/include/common/pg_prng.h +60 -0
- data/ext/pg_query/include/common/relpath.h +2 -2
- data/ext/pg_query/include/common/string.h +24 -1
- data/ext/pg_query/include/common/unicode_combining_table.h +114 -2
- data/ext/pg_query/include/common/unicode_east_asian_fw_table.h +125 -0
- data/ext/pg_query/include/datatype/timestamp.h +40 -1
- data/ext/pg_query/include/executor/execdesc.h +1 -1
- data/ext/pg_query/include/executor/executor.h +65 -22
- data/ext/pg_query/include/executor/functions.h +17 -3
- data/ext/pg_query/include/executor/instrument.h +33 -16
- data/ext/pg_query/include/executor/spi.h +41 -3
- data/ext/pg_query/include/executor/tablefunc.h +1 -1
- data/ext/pg_query/include/executor/tuptable.h +1 -1
- data/ext/pg_query/include/fmgr.h +13 -7
- data/ext/pg_query/include/funcapi.h +16 -4
- data/ext/pg_query/include/getaddrinfo.h +1 -1
- data/ext/pg_query/include/jit/jit.h +11 -11
- data/ext/pg_query/include/kwlist_d.h +517 -494
- data/ext/pg_query/include/lib/dshash.h +112 -0
- data/ext/pg_query/include/lib/ilist.h +20 -1
- data/ext/pg_query/include/lib/pairingheap.h +1 -1
- data/ext/pg_query/include/lib/simplehash.h +140 -15
- data/ext/pg_query/include/lib/sort_template.h +432 -0
- data/ext/pg_query/include/lib/stringinfo.h +1 -1
- data/ext/pg_query/include/libpq/auth.h +6 -4
- data/ext/pg_query/include/libpq/crypt.h +5 -4
- data/ext/pg_query/include/libpq/hba.h +43 -4
- data/ext/pg_query/include/libpq/libpq-be.h +23 -6
- data/ext/pg_query/include/libpq/libpq.h +30 -20
- data/ext/pg_query/include/libpq/pqcomm.h +17 -31
- data/ext/pg_query/include/libpq/pqformat.h +1 -1
- data/ext/pg_query/include/libpq/pqsignal.h +4 -4
- data/ext/pg_query/include/mb/pg_wchar.h +105 -23
- data/ext/pg_query/include/mb/stringinfo_mb.h +1 -1
- data/ext/pg_query/include/miscadmin.h +47 -41
- data/ext/pg_query/include/nodes/bitmapset.h +1 -1
- data/ext/pg_query/include/nodes/execnodes.h +270 -78
- data/ext/pg_query/include/nodes/extensible.h +4 -2
- data/ext/pg_query/include/nodes/lockoptions.h +1 -1
- data/ext/pg_query/include/nodes/makefuncs.h +7 -6
- data/ext/pg_query/include/nodes/memnodes.h +5 -3
- data/ext/pg_query/include/nodes/nodeFuncs.h +1 -1
- data/ext/pg_query/include/nodes/nodes.h +30 -11
- data/ext/pg_query/include/nodes/params.h +1 -1
- data/ext/pg_query/include/nodes/parsenodes.h +322 -90
- data/ext/pg_query/include/nodes/pathnodes.h +243 -66
- data/ext/pg_query/include/nodes/pg_list.h +75 -69
- data/ext/pg_query/include/nodes/plannodes.h +111 -28
- data/ext/pg_query/include/nodes/primnodes.h +99 -47
- data/ext/pg_query/include/nodes/print.h +1 -1
- data/ext/pg_query/include/nodes/tidbitmap.h +1 -1
- data/ext/pg_query/include/nodes/value.h +58 -39
- data/ext/pg_query/include/optimizer/cost.h +9 -2
- data/ext/pg_query/include/optimizer/geqo.h +9 -7
- data/ext/pg_query/include/optimizer/geqo_gene.h +1 -1
- data/ext/pg_query/include/optimizer/optimizer.h +25 -17
- data/ext/pg_query/include/optimizer/paths.h +6 -6
- data/ext/pg_query/include/optimizer/planmain.h +15 -14
- data/ext/pg_query/include/parser/analyze.h +19 -5
- data/ext/pg_query/include/parser/gram.h +947 -913
- data/ext/pg_query/include/parser/gramparse.h +1 -1
- data/ext/pg_query/include/parser/kwlist.h +463 -453
- data/ext/pg_query/include/parser/parse_agg.h +2 -7
- data/ext/pg_query/include/parser/parse_coerce.h +3 -1
- data/ext/pg_query/include/parser/parse_expr.h +2 -3
- data/ext/pg_query/include/parser/parse_func.h +2 -1
- data/ext/pg_query/include/parser/parse_node.h +21 -9
- data/ext/pg_query/include/parser/parse_oper.h +1 -3
- data/ext/pg_query/include/parser/parse_relation.h +5 -4
- data/ext/pg_query/include/parser/parse_type.h +1 -1
- data/ext/pg_query/include/parser/parser.h +31 -4
- data/ext/pg_query/include/parser/parsetree.h +1 -1
- data/ext/pg_query/include/parser/scanner.h +1 -1
- data/ext/pg_query/include/parser/scansup.h +2 -5
- data/ext/pg_query/include/partitioning/partdefs.h +1 -1
- data/ext/pg_query/include/pg_config.h +83 -41
- data/ext/pg_query/include/pg_config_manual.h +74 -21
- data/ext/pg_query/include/pg_getopt.h +6 -6
- data/ext/pg_query/include/pg_query.h +5 -4
- data/ext/pg_query/include/pg_query_enum_defs.c +358 -241
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +44 -7
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +939 -113
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +43 -13
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +151 -26
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +11 -2
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +173 -30
- data/ext/pg_query/include/pg_trace.h +1 -1
- data/ext/pg_query/include/pgstat.h +449 -1238
- data/ext/pg_query/include/pgtime.h +14 -4
- data/ext/pg_query/include/pl_gram.h +126 -128
- data/ext/pg_query/include/pl_reserved_kwlist.h +1 -1
- data/ext/pg_query/include/pl_reserved_kwlist_d.h +10 -10
- data/ext/pg_query/include/pl_unreserved_kwlist.h +2 -3
- data/ext/pg_query/include/pl_unreserved_kwlist_d.h +54 -56
- data/ext/pg_query/include/plerrcodes.h +9 -1
- data/ext/pg_query/include/plpgsql.h +52 -54
- data/ext/pg_query/include/port/atomics/arch-arm.h +7 -1
- data/ext/pg_query/include/port/atomics/arch-ppc.h +1 -1
- data/ext/pg_query/include/port/atomics/arch-x86.h +1 -1
- data/ext/pg_query/include/port/atomics/fallback.h +1 -1
- data/ext/pg_query/include/port/atomics/generic-gcc.h +3 -3
- data/ext/pg_query/include/port/atomics/generic.h +1 -1
- data/ext/pg_query/include/port/atomics.h +1 -1
- data/ext/pg_query/include/port/pg_bitutils.h +40 -10
- data/ext/pg_query/include/port/pg_bswap.h +1 -1
- data/ext/pg_query/include/port/pg_crc32c.h +1 -1
- data/ext/pg_query/include/port.h +71 -46
- data/ext/pg_query/include/portability/instr_time.h +1 -1
- data/ext/pg_query/include/postgres.h +60 -16
- data/ext/pg_query/include/postmaster/autovacuum.h +17 -17
- data/ext/pg_query/include/postmaster/auxprocess.h +20 -0
- data/ext/pg_query/include/postmaster/bgworker.h +2 -1
- data/ext/pg_query/include/postmaster/bgworker_internals.h +2 -2
- data/ext/pg_query/include/postmaster/bgwriter.h +5 -5
- data/ext/pg_query/include/postmaster/fork_process.h +1 -1
- data/ext/pg_query/include/postmaster/interrupt.h +1 -1
- data/ext/pg_query/include/postmaster/pgarch.h +42 -8
- data/ext/pg_query/include/postmaster/postmaster.h +18 -17
- data/ext/pg_query/include/postmaster/startup.h +39 -0
- data/ext/pg_query/include/postmaster/syslogger.h +15 -10
- data/ext/pg_query/include/postmaster/walwriter.h +3 -3
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +1419 -914
- data/ext/pg_query/include/protobuf/pg_query.pb.h +43678 -32769
- data/ext/pg_query/include/regex/regex.h +18 -16
- data/ext/pg_query/include/replication/logicallauncher.h +3 -5
- data/ext/pg_query/include/replication/logicalproto.h +161 -17
- data/ext/pg_query/include/replication/logicalworker.h +1 -1
- data/ext/pg_query/include/replication/origin.h +7 -7
- data/ext/pg_query/include/replication/reorderbuffer.h +259 -42
- data/ext/pg_query/include/replication/slot.h +22 -11
- data/ext/pg_query/include/replication/syncrep.h +5 -5
- data/ext/pg_query/include/replication/walreceiver.h +145 -13
- data/ext/pg_query/include/replication/walsender.h +8 -8
- data/ext/pg_query/include/rewrite/prs2lock.h +1 -1
- data/ext/pg_query/include/rewrite/rewriteHandler.h +1 -3
- data/ext/pg_query/include/rewrite/rewriteManip.h +1 -1
- data/ext/pg_query/include/rewrite/rewriteSupport.h +1 -1
- data/ext/pg_query/include/storage/backendid.h +3 -3
- data/ext/pg_query/include/storage/block.h +4 -10
- data/ext/pg_query/include/storage/buf.h +1 -1
- data/ext/pg_query/include/storage/bufmgr.h +19 -14
- data/ext/pg_query/include/storage/bufpage.h +6 -8
- data/ext/pg_query/include/storage/condition_variable.h +13 -2
- data/ext/pg_query/include/storage/dsm.h +4 -1
- data/ext/pg_query/include/storage/dsm_impl.h +3 -2
- data/ext/pg_query/include/storage/fd.h +33 -3
- data/ext/pg_query/include/storage/fileset.h +40 -0
- data/ext/pg_query/include/storage/ipc.h +4 -1
- data/ext/pg_query/include/storage/item.h +1 -1
- data/ext/pg_query/include/storage/itemid.h +1 -1
- data/ext/pg_query/include/storage/itemptr.h +3 -1
- data/ext/pg_query/include/storage/large_object.h +2 -2
- data/ext/pg_query/include/storage/latch.h +9 -13
- data/ext/pg_query/include/storage/lmgr.h +2 -1
- data/ext/pg_query/include/storage/lock.h +11 -8
- data/ext/pg_query/include/storage/lockdefs.h +2 -2
- data/ext/pg_query/include/storage/lwlock.h +5 -32
- data/ext/pg_query/include/storage/lwlocknames.h +0 -1
- data/ext/pg_query/include/storage/off.h +1 -1
- data/ext/pg_query/include/storage/pg_sema.h +1 -1
- data/ext/pg_query/include/storage/pg_shmem.h +9 -7
- data/ext/pg_query/include/storage/pmsignal.h +15 -4
- data/ext/pg_query/include/storage/predicate.h +4 -4
- data/ext/pg_query/include/storage/proc.h +173 -59
- data/ext/pg_query/include/storage/procarray.h +98 -0
- data/ext/pg_query/include/storage/proclist_types.h +1 -1
- data/ext/pg_query/include/storage/procsignal.h +3 -7
- data/ext/pg_query/include/storage/relfilenode.h +1 -1
- data/ext/pg_query/include/storage/s_lock.h +60 -21
- data/ext/pg_query/include/storage/sharedfileset.h +3 -11
- data/ext/pg_query/include/storage/shm_mq.h +5 -4
- data/ext/pg_query/include/storage/shm_toc.h +1 -1
- data/ext/pg_query/include/storage/shmem.h +1 -1
- data/ext/pg_query/include/storage/sinval.h +3 -3
- data/ext/pg_query/include/storage/sinvaladt.h +1 -1
- data/ext/pg_query/include/storage/smgr.h +10 -8
- data/ext/pg_query/include/storage/spin.h +2 -2
- data/ext/pg_query/include/storage/standby.h +13 -6
- data/ext/pg_query/include/storage/standbydefs.h +2 -2
- data/ext/pg_query/include/storage/sync.h +7 -3
- data/ext/pg_query/include/tcop/cmdtag.h +1 -1
- data/ext/pg_query/include/tcop/cmdtaglist.h +3 -2
- data/ext/pg_query/include/tcop/deparse_utility.h +1 -1
- data/ext/pg_query/include/tcop/dest.h +1 -1
- data/ext/pg_query/include/tcop/fastpath.h +1 -2
- data/ext/pg_query/include/tcop/pquery.h +1 -1
- data/ext/pg_query/include/tcop/tcopprot.h +19 -11
- data/ext/pg_query/include/tcop/utility.h +7 -3
- data/ext/pg_query/include/tsearch/ts_cache.h +2 -2
- data/ext/pg_query/include/utils/acl.h +24 -3
- data/ext/pg_query/include/utils/aclchk_internal.h +1 -1
- data/ext/pg_query/include/utils/array.h +7 -2
- data/ext/pg_query/include/utils/backend_progress.h +44 -0
- data/ext/pg_query/include/utils/backend_status.h +321 -0
- data/ext/pg_query/include/utils/builtins.h +10 -11
- data/ext/pg_query/include/utils/bytea.h +3 -2
- data/ext/pg_query/include/utils/catcache.h +1 -1
- data/ext/pg_query/include/utils/date.h +1 -1
- data/ext/pg_query/include/utils/datetime.h +8 -7
- data/ext/pg_query/include/utils/datum.h +9 -1
- data/ext/pg_query/include/utils/dsa.h +1 -1
- data/ext/pg_query/include/utils/dynahash.h +4 -3
- data/ext/pg_query/include/utils/elog.h +52 -21
- data/ext/pg_query/include/utils/errcodes.h +2 -0
- data/ext/pg_query/include/utils/expandeddatum.h +1 -1
- data/ext/pg_query/include/utils/expandedrecord.h +1 -1
- data/ext/pg_query/include/utils/float.h +7 -7
- data/ext/pg_query/include/utils/fmgroids.h +1300 -696
- data/ext/pg_query/include/utils/fmgrprotos.h +199 -16
- data/ext/pg_query/include/utils/fmgrtab.h +6 -5
- data/ext/pg_query/include/utils/guc.h +69 -43
- data/ext/pg_query/include/utils/guc_tables.h +23 -19
- data/ext/pg_query/include/utils/hsearch.h +15 -11
- data/ext/pg_query/include/utils/inval.h +4 -1
- data/ext/pg_query/include/utils/lsyscache.h +11 -1
- data/ext/pg_query/include/utils/memdebug.h +1 -1
- data/ext/pg_query/include/utils/memutils.h +8 -3
- data/ext/pg_query/include/utils/numeric.h +19 -5
- data/ext/pg_query/include/utils/palloc.h +25 -3
- data/ext/pg_query/include/utils/partcache.h +1 -1
- data/ext/pg_query/include/utils/pg_locale.h +17 -9
- data/ext/pg_query/include/utils/pg_lsn.h +1 -1
- data/ext/pg_query/include/utils/pgstat_internal.h +784 -0
- data/ext/pg_query/include/utils/pidfile.h +1 -1
- data/ext/pg_query/include/utils/plancache.h +6 -5
- data/ext/pg_query/include/utils/portal.h +10 -12
- data/ext/pg_query/include/utils/ps_status.h +1 -1
- data/ext/pg_query/include/utils/queryenvironment.h +1 -1
- data/ext/pg_query/include/utils/queryjumble.h +88 -0
- data/ext/pg_query/include/utils/regproc.h +14 -3
- data/ext/pg_query/include/utils/rel.h +71 -19
- data/ext/pg_query/include/utils/relcache.h +8 -5
- data/ext/pg_query/include/utils/reltrigger.h +1 -1
- data/ext/pg_query/include/utils/resowner.h +1 -1
- data/ext/pg_query/include/utils/rls.h +2 -2
- data/ext/pg_query/include/utils/ruleutils.h +4 -1
- data/ext/pg_query/include/utils/sharedtuplestore.h +1 -1
- data/ext/pg_query/include/utils/snapmgr.h +34 -14
- data/ext/pg_query/include/utils/snapshot.h +14 -1
- data/ext/pg_query/include/utils/sortsupport.h +117 -2
- data/ext/pg_query/include/utils/syscache.h +6 -1
- data/ext/pg_query/include/utils/timeout.h +11 -4
- data/ext/pg_query/include/utils/timestamp.h +6 -5
- data/ext/pg_query/include/utils/tuplesort.h +25 -11
- data/ext/pg_query/include/utils/tuplestore.h +2 -2
- data/ext/pg_query/include/utils/typcache.h +24 -17
- data/ext/pg_query/include/utils/tzparser.h +1 -1
- data/ext/pg_query/include/utils/varlena.h +5 -3
- data/ext/pg_query/include/utils/wait_event.h +289 -0
- data/ext/pg_query/include/utils/xml.h +4 -4
- data/ext/pg_query/pg_query.pb-c.c +4302 -2304
- data/ext/pg_query/pg_query_deparse.c +1106 -373
- data/ext/pg_query/pg_query_fingerprint.c +30 -10
- data/ext/pg_query/pg_query_json_plpgsql.c +0 -25
- data/ext/pg_query/pg_query_normalize.c +1 -1
- data/ext/pg_query/pg_query_outfuncs_json.c +54 -16
- data/ext/pg_query/pg_query_outfuncs_protobuf.c +70 -10
- data/ext/pg_query/pg_query_parse.c +1 -1
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +42 -8
- data/ext/pg_query/pg_query_scan.c +2 -1
- data/ext/pg_query/pg_query_split.c +3 -2
- data/ext/pg_query/src_backend_catalog_namespace.c +20 -9
- data/ext/pg_query/src_backend_catalog_pg_proc.c +4 -1
- data/ext/pg_query/src_backend_commands_define.c +11 -1
- data/ext/pg_query/src_backend_nodes_bitmapset.c +3 -1
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +401 -76
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +290 -46
- data/ext/pg_query/src_backend_nodes_extensible.c +1 -1
- data/ext/pg_query/src_backend_nodes_list.c +74 -11
- data/ext/pg_query/src_backend_nodes_makefuncs.c +5 -4
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +55 -12
- data/ext/pg_query/src_backend_nodes_value.c +28 -19
- data/ext/pg_query/src_backend_parser_gram.c +33874 -31261
- data/ext/pg_query/src_backend_parser_parser.c +26 -7
- data/ext/pg_query/src_backend_parser_scan.c +172 -209
- data/ext/pg_query/src_backend_parser_scansup.c +4 -28
- data/ext/pg_query/src_backend_postmaster_postmaster.c +77 -106
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +13 -4
- data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +5 -4
- data/ext/pg_query/src_backend_tcop_postgres.c +62 -23
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +140 -0
- data/ext/pg_query/src_backend_utils_adt_datum.c +13 -1
- data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
- data/ext/pg_query/src_backend_utils_adt_format_type.c +6 -2
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +71 -5
- data/ext/pg_query/src_backend_utils_error_assert.c +16 -14
- data/ext/pg_query/src_backend_utils_error_elog.c +172 -99
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +12 -17
- data/ext/pg_query/src_backend_utils_hash_dynahash.c +40 -10
- data/ext/pg_query/src_backend_utils_init_globals.c +5 -5
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +55 -66
- data/ext/pg_query/src_backend_utils_misc_guc.c +206 -45
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +7 -5
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +123 -35
- data/ext/pg_query/src_common_encnames.c +1 -1
- data/ext/pg_query/src_common_hashfn.c +3 -3
- data/ext/pg_query/src_common_keywords.c +15 -2
- data/ext/pg_query/src_common_kwlist_d.h +517 -494
- data/ext/pg_query/src_common_kwlookup.c +1 -1
- data/ext/pg_query/src_common_pg_prng.c +152 -0
- data/ext/pg_query/src_common_psprintf.c +1 -1
- data/ext/pg_query/src_common_string.c +7 -1
- data/ext/pg_query/src_common_stringinfo.c +1 -1
- data/ext/pg_query/src_common_wchar.c +701 -109
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +45 -20
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +1 -18
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1233 -1259
- data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
- data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +10 -10
- data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +2 -2
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +54 -56
- data/ext/pg_query/src_port_pg_bitutils.c +41 -31
- data/ext/pg_query/src_port_pgsleep.c +1 -1
- data/ext/pg_query/src_port_pgstrcasecmp.c +1 -1
- data/ext/pg_query/src_port_qsort.c +12 -224
- data/ext/pg_query/src_port_snprintf.c +37 -13
- data/ext/pg_query/src_port_strerror.c +9 -19
- data/ext/pg_query/src_port_strnlen.c +1 -1
- data/lib/pg_query/filter_columns.rb +1 -1
- data/lib/pg_query/fingerprint.rb +5 -1
- data/lib/pg_query/node.rb +2 -2
- data/lib/pg_query/param_refs.rb +1 -1
- data/lib/pg_query/parse.rb +20 -8
- data/lib/pg_query/pg_query_pb.rb +1108 -942
- data/lib/pg_query/treewalker.rb +6 -0
- data/lib/pg_query/truncate.rb +1 -1
- data/lib/pg_query/version.rb +1 -1
- metadata +27 -17
- 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
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
* Copyright (c) 1983, 1995, 1996 Eric P. Allman
|
|
31
31
|
* Copyright (c) 1988, 1993
|
|
32
32
|
* The Regents of the University of California. All rights reserved.
|
|
33
|
-
* Portions Copyright (c) 1996-
|
|
33
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
34
34
|
*
|
|
35
35
|
* Redistribution and use in source and binary forms, with or without
|
|
36
36
|
* modification, are permitted provided that the following conditions
|
|
@@ -1026,8 +1026,8 @@ fmtptr(const void *value, PrintfTarget *target)
|
|
|
1026
1026
|
int vallen;
|
|
1027
1027
|
char convert[64];
|
|
1028
1028
|
|
|
1029
|
-
/* we rely on regular C library's
|
|
1030
|
-
vallen =
|
|
1029
|
+
/* we rely on regular C library's snprintf to do the basic conversion */
|
|
1030
|
+
vallen = snprintf(convert, sizeof(convert), "%p", value);
|
|
1031
1031
|
if (vallen < 0)
|
|
1032
1032
|
target->failed = true;
|
|
1033
1033
|
else
|
|
@@ -1039,8 +1039,8 @@ fmtint(long long value, char type, int forcesign, int leftjust,
|
|
|
1039
1039
|
int minlen, int zpad, int precision, int pointflag,
|
|
1040
1040
|
PrintfTarget *target)
|
|
1041
1041
|
{
|
|
1042
|
-
unsigned long long base;
|
|
1043
1042
|
unsigned long long uvalue;
|
|
1043
|
+
int base;
|
|
1044
1044
|
int dosign;
|
|
1045
1045
|
const char *cvt = "0123456789abcdef";
|
|
1046
1046
|
int signvalue = 0;
|
|
@@ -1099,12 +1099,36 @@ fmtint(long long value, char type, int forcesign, int leftjust,
|
|
|
1099
1099
|
vallen = 0;
|
|
1100
1100
|
else
|
|
1101
1101
|
{
|
|
1102
|
-
/*
|
|
1103
|
-
|
|
1102
|
+
/*
|
|
1103
|
+
* Convert integer to string. We special-case each of the possible
|
|
1104
|
+
* base values so as to avoid general-purpose divisions. On most
|
|
1105
|
+
* machines, division by a fixed constant can be done much more
|
|
1106
|
+
* cheaply than a general divide.
|
|
1107
|
+
*/
|
|
1108
|
+
if (base == 10)
|
|
1109
|
+
{
|
|
1110
|
+
do
|
|
1111
|
+
{
|
|
1112
|
+
convert[sizeof(convert) - (++vallen)] = cvt[uvalue % 10];
|
|
1113
|
+
uvalue = uvalue / 10;
|
|
1114
|
+
} while (uvalue);
|
|
1115
|
+
}
|
|
1116
|
+
else if (base == 16)
|
|
1104
1117
|
{
|
|
1105
|
-
|
|
1106
|
-
|
|
1107
|
-
|
|
1118
|
+
do
|
|
1119
|
+
{
|
|
1120
|
+
convert[sizeof(convert) - (++vallen)] = cvt[uvalue % 16];
|
|
1121
|
+
uvalue = uvalue / 16;
|
|
1122
|
+
} while (uvalue);
|
|
1123
|
+
}
|
|
1124
|
+
else /* base == 8 */
|
|
1125
|
+
{
|
|
1126
|
+
do
|
|
1127
|
+
{
|
|
1128
|
+
convert[sizeof(convert) - (++vallen)] = cvt[uvalue % 8];
|
|
1129
|
+
uvalue = uvalue / 8;
|
|
1130
|
+
} while (uvalue);
|
|
1131
|
+
}
|
|
1108
1132
|
}
|
|
1109
1133
|
|
|
1110
1134
|
zeropad = Max(0, precision - vallen);
|
|
@@ -1153,11 +1177,11 @@ fmtfloat(double value, char type, int forcesign, int leftjust,
|
|
|
1153
1177
|
int padlen; /* amount to pad with spaces */
|
|
1154
1178
|
|
|
1155
1179
|
/*
|
|
1156
|
-
* We rely on the regular C library's
|
|
1180
|
+
* We rely on the regular C library's snprintf to do the basic conversion,
|
|
1157
1181
|
* then handle padding considerations here.
|
|
1158
1182
|
*
|
|
1159
1183
|
* The dynamic range of "double" is about 1E+-308 for IEEE math, and not
|
|
1160
|
-
* too wildly more than that with other hardware. In "f" format,
|
|
1184
|
+
* too wildly more than that with other hardware. In "f" format, snprintf
|
|
1161
1185
|
* could therefore generate at most 308 characters to the left of the
|
|
1162
1186
|
* decimal point; while we need to allow the precision to get as high as
|
|
1163
1187
|
* 308+17 to ensure that we don't truncate significant digits from very
|
|
@@ -1209,14 +1233,14 @@ fmtfloat(double value, char type, int forcesign, int leftjust,
|
|
|
1209
1233
|
fmt[2] = '*';
|
|
1210
1234
|
fmt[3] = type;
|
|
1211
1235
|
fmt[4] = '\0';
|
|
1212
|
-
vallen =
|
|
1236
|
+
vallen = snprintf(convert, sizeof(convert), fmt, prec, value);
|
|
1213
1237
|
}
|
|
1214
1238
|
else
|
|
1215
1239
|
{
|
|
1216
1240
|
fmt[0] = '%';
|
|
1217
1241
|
fmt[1] = type;
|
|
1218
1242
|
fmt[2] = '\0';
|
|
1219
|
-
vallen =
|
|
1243
|
+
vallen = snprintf(convert, sizeof(convert), fmt, value);
|
|
1220
1244
|
}
|
|
1221
1245
|
if (vallen < 0)
|
|
1222
1246
|
goto fail;
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* strerror.c
|
|
12
12
|
* Replacements for standard strerror() and strerror_r() functions
|
|
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
|
*
|
|
@@ -120,14 +120,10 @@ get_errno_symbol(int errnum)
|
|
|
120
120
|
return "E2BIG";
|
|
121
121
|
case EACCES:
|
|
122
122
|
return "EACCES";
|
|
123
|
-
#ifdef EADDRINUSE
|
|
124
123
|
case EADDRINUSE:
|
|
125
124
|
return "EADDRINUSE";
|
|
126
|
-
#endif
|
|
127
|
-
#ifdef EADDRNOTAVAIL
|
|
128
125
|
case EADDRNOTAVAIL:
|
|
129
126
|
return "EADDRNOTAVAIL";
|
|
130
|
-
#endif
|
|
131
127
|
case EAFNOSUPPORT:
|
|
132
128
|
return "EAFNOSUPPORT";
|
|
133
129
|
#ifdef EAGAIN
|
|
@@ -148,16 +144,12 @@ get_errno_symbol(int errnum)
|
|
|
148
144
|
return "EBUSY";
|
|
149
145
|
case ECHILD:
|
|
150
146
|
return "ECHILD";
|
|
151
|
-
#ifdef ECONNABORTED
|
|
152
147
|
case ECONNABORTED:
|
|
153
148
|
return "ECONNABORTED";
|
|
154
|
-
#endif
|
|
155
149
|
case ECONNREFUSED:
|
|
156
150
|
return "ECONNREFUSED";
|
|
157
|
-
#ifdef ECONNRESET
|
|
158
151
|
case ECONNRESET:
|
|
159
152
|
return "ECONNRESET";
|
|
160
|
-
#endif
|
|
161
153
|
case EDEADLK:
|
|
162
154
|
return "EDEADLK";
|
|
163
155
|
case EDOM:
|
|
@@ -168,10 +160,10 @@ get_errno_symbol(int errnum)
|
|
|
168
160
|
return "EFAULT";
|
|
169
161
|
case EFBIG:
|
|
170
162
|
return "EFBIG";
|
|
171
|
-
|
|
163
|
+
case EHOSTDOWN:
|
|
164
|
+
return "EHOSTDOWN";
|
|
172
165
|
case EHOSTUNREACH:
|
|
173
166
|
return "EHOSTUNREACH";
|
|
174
|
-
#endif
|
|
175
167
|
case EIDRM:
|
|
176
168
|
return "EIDRM";
|
|
177
169
|
case EINPROGRESS:
|
|
@@ -182,10 +174,8 @@ get_errno_symbol(int errnum)
|
|
|
182
174
|
return "EINVAL";
|
|
183
175
|
case EIO:
|
|
184
176
|
return "EIO";
|
|
185
|
-
#ifdef EISCONN
|
|
186
177
|
case EISCONN:
|
|
187
178
|
return "EISCONN";
|
|
188
|
-
#endif
|
|
189
179
|
case EISDIR:
|
|
190
180
|
return "EISDIR";
|
|
191
181
|
#ifdef ELOOP
|
|
@@ -200,6 +190,12 @@ get_errno_symbol(int errnum)
|
|
|
200
190
|
return "EMSGSIZE";
|
|
201
191
|
case ENAMETOOLONG:
|
|
202
192
|
return "ENAMETOOLONG";
|
|
193
|
+
case ENETDOWN:
|
|
194
|
+
return "ENETDOWN";
|
|
195
|
+
case ENETRESET:
|
|
196
|
+
return "ENETRESET";
|
|
197
|
+
case ENETUNREACH:
|
|
198
|
+
return "ENETUNREACH";
|
|
203
199
|
case ENFILE:
|
|
204
200
|
return "ENFILE";
|
|
205
201
|
case ENOBUFS:
|
|
@@ -216,20 +212,16 @@ get_errno_symbol(int errnum)
|
|
|
216
212
|
return "ENOSPC";
|
|
217
213
|
case ENOSYS:
|
|
218
214
|
return "ENOSYS";
|
|
219
|
-
#ifdef ENOTCONN
|
|
220
215
|
case ENOTCONN:
|
|
221
216
|
return "ENOTCONN";
|
|
222
|
-
#endif
|
|
223
217
|
case ENOTDIR:
|
|
224
218
|
return "ENOTDIR";
|
|
225
219
|
#if defined(ENOTEMPTY) && (ENOTEMPTY != EEXIST) /* same code on AIX */
|
|
226
220
|
case ENOTEMPTY:
|
|
227
221
|
return "ENOTEMPTY";
|
|
228
222
|
#endif
|
|
229
|
-
#ifdef ENOTSOCK
|
|
230
223
|
case ENOTSOCK:
|
|
231
224
|
return "ENOTSOCK";
|
|
232
|
-
#endif
|
|
233
225
|
#ifdef ENOTSUP
|
|
234
226
|
case ENOTSUP:
|
|
235
227
|
return "ENOTSUP";
|
|
@@ -260,10 +252,8 @@ get_errno_symbol(int errnum)
|
|
|
260
252
|
#endif
|
|
261
253
|
case ESRCH:
|
|
262
254
|
return "ESRCH";
|
|
263
|
-
#ifdef ETIMEDOUT
|
|
264
255
|
case ETIMEDOUT:
|
|
265
256
|
return "ETIMEDOUT";
|
|
266
|
-
#endif
|
|
267
257
|
#ifdef ETXTBSY
|
|
268
258
|
case ETXTBSY:
|
|
269
259
|
return "ETXTBSY";
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* Fallback implementation of strnlen().
|
|
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
|
|
@@ -69,7 +69,7 @@ module PgQuery
|
|
|
69
69
|
when :row_expr
|
|
70
70
|
condition_items += next_item.row_expr.args
|
|
71
71
|
when :column_ref
|
|
72
|
-
column, table = next_item.column_ref.fields.map { |f| f.string.
|
|
72
|
+
column, table = next_item.column_ref.fields.map { |f| f.string.sval }.reverse
|
|
73
73
|
filter_columns << [@aliases[table] || table, column]
|
|
74
74
|
when :null_test
|
|
75
75
|
condition_items << next_item.null_test.arg
|
data/lib/pg_query/fingerprint.rb
CHANGED
|
@@ -60,7 +60,7 @@ module PgQuery
|
|
|
60
60
|
end
|
|
61
61
|
|
|
62
62
|
def ignored_node_type?(node)
|
|
63
|
-
[A_Const, Alias, ParamRef, SetToDefault, IntList, OidList
|
|
63
|
+
[A_Const, Alias, ParamRef, SetToDefault, IntList, OidList].include?(node.class) ||
|
|
64
64
|
node.is_a?(TypeCast) && (node.arg.node == :a_const || node.arg.node == :param_ref)
|
|
65
65
|
end
|
|
66
66
|
|
|
@@ -122,6 +122,10 @@ module PgQuery
|
|
|
122
122
|
fingerprint_value(:AEXPR_OP, hash, postgres_node_name, postgres_field_name, true)
|
|
123
123
|
next
|
|
124
124
|
end
|
|
125
|
+
# libpg_query still outputs `str` parts when print a string node. Here we override that to
|
|
126
|
+
# the expected field name of `sval`.
|
|
127
|
+
when 'sval', 'fval', 'bsval'
|
|
128
|
+
postgres_field_name = 'str' if node.is_a?(String) || node.is_a?(BitString) || node.is_a?(Float)
|
|
125
129
|
end
|
|
126
130
|
|
|
127
131
|
fingerprint_value(val, hash, postgres_node_name, postgres_field_name, true)
|
data/lib/pg_query/node.rb
CHANGED
|
@@ -20,8 +20,8 @@ module PgQuery
|
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
# Make it easier to initialize value nodes
|
|
23
|
-
def self.from_string(
|
|
24
|
-
PgQuery::Node.new(string: PgQuery::String.new(
|
|
23
|
+
def self.from_string(sval)
|
|
24
|
+
PgQuery::Node.new(string: PgQuery::String.new(sval: sval))
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
def self.from_integer(ival)
|
data/lib/pg_query/param_refs.rb
CHANGED
|
@@ -29,7 +29,7 @@ module PgQuery
|
|
|
29
29
|
location = typeloc
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
results << { 'location' => location, 'length' => length, 'typename' => t.names.map { |n| n.string.
|
|
32
|
+
results << { 'location' => location, 'length' => length, 'typename' => t.names.map { |n| n.string.sval } }
|
|
33
33
|
end
|
|
34
34
|
end
|
|
35
35
|
|
data/lib/pg_query/parse.rb
CHANGED
|
@@ -139,6 +139,10 @@ module PgQuery
|
|
|
139
139
|
@cte_names.concat(cte_names)
|
|
140
140
|
statements.concat(cte_statements)
|
|
141
141
|
end
|
|
142
|
+
|
|
143
|
+
if statement.select_stmt.into_clause
|
|
144
|
+
from_clause_items << { item: PgQuery::Node.new(range_var: statement.select_stmt.into_clause.rel), type: :ddl }
|
|
145
|
+
end
|
|
142
146
|
# The following statements modify the contents of a table
|
|
143
147
|
when :insert_stmt, :update_stmt, :delete_stmt
|
|
144
148
|
value = statement.public_send(statement.node)
|
|
@@ -171,7 +175,12 @@ module PgQuery
|
|
|
171
175
|
statements << statement.copy_stmt.query
|
|
172
176
|
# The following statement types are DDL (changing table structure)
|
|
173
177
|
when :alter_table_stmt
|
|
174
|
-
|
|
178
|
+
case statement.alter_table_stmt.objtype
|
|
179
|
+
when :OBJECT_INDEX # Index # rubocop:disable Lint/EmptyWhen
|
|
180
|
+
# ignore `ALTER INDEX index_name`
|
|
181
|
+
else
|
|
182
|
+
from_clause_items << { item: PgQuery::Node.new(range_var: statement.alter_table_stmt.relation), type: :ddl }
|
|
183
|
+
end
|
|
175
184
|
when :create_stmt
|
|
176
185
|
from_clause_items << { item: PgQuery::Node.new(range_var: statement.create_stmt.relation), type: :ddl }
|
|
177
186
|
when :create_table_as_stmt
|
|
@@ -203,9 +212,9 @@ module PgQuery
|
|
|
203
212
|
objects = statement.drop_stmt.objects.map do |obj|
|
|
204
213
|
case obj.node
|
|
205
214
|
when :list
|
|
206
|
-
obj.list.items.map { |obj2| obj2.string.
|
|
215
|
+
obj.list.items.map { |obj2| obj2.string.sval if obj2.node == :string }
|
|
207
216
|
when :string
|
|
208
|
-
obj.string.
|
|
217
|
+
obj.string.sval
|
|
209
218
|
end
|
|
210
219
|
end
|
|
211
220
|
case statement.drop_stmt.remove_type
|
|
@@ -216,7 +225,7 @@ module PgQuery
|
|
|
216
225
|
when :OBJECT_FUNCTION
|
|
217
226
|
# Only one function can be dropped in a statement
|
|
218
227
|
obj = statement.drop_stmt.objects[0].object_with_args
|
|
219
|
-
@functions << { function: obj.objname
|
|
228
|
+
@functions << { function: obj.objname.map { |f| f.string.sval }.join('.'), type: :ddl }
|
|
220
229
|
end
|
|
221
230
|
when :grant_stmt
|
|
222
231
|
objects = statement.grant_stmt.objects
|
|
@@ -235,18 +244,20 @@ module PgQuery
|
|
|
235
244
|
statements << statement.explain_stmt.query
|
|
236
245
|
when :create_function_stmt
|
|
237
246
|
@functions << {
|
|
238
|
-
function: statement.create_function_stmt.funcname
|
|
247
|
+
function: statement.create_function_stmt.funcname.map { |f| f.string.sval }.join('.'),
|
|
239
248
|
type: :ddl
|
|
240
249
|
}
|
|
241
250
|
when :rename_stmt
|
|
242
251
|
if statement.rename_stmt.rename_type == :OBJECT_FUNCTION
|
|
243
|
-
original_name = statement.rename_stmt.object.object_with_args.objname
|
|
252
|
+
original_name = statement.rename_stmt.object.object_with_args.objname.map { |f| f.string.sval }.join('.')
|
|
244
253
|
new_name = statement.rename_stmt.newname
|
|
245
254
|
@functions += [
|
|
246
255
|
{ function: original_name, type: :ddl },
|
|
247
256
|
{ function: new_name, type: :ddl }
|
|
248
257
|
]
|
|
249
258
|
end
|
|
259
|
+
when :prepare_stmt
|
|
260
|
+
statements << statement.prepare_stmt.query
|
|
250
261
|
end
|
|
251
262
|
end
|
|
252
263
|
|
|
@@ -278,7 +289,7 @@ module PgQuery
|
|
|
278
289
|
when :func_call
|
|
279
290
|
subselect_items.concat(next_item.func_call.args.to_ary)
|
|
280
291
|
@functions << {
|
|
281
|
-
function: next_item.func_call.funcname.map { |f| f.string.
|
|
292
|
+
function: next_item.func_call.funcname.map { |f| f.string.sval }.join('.'),
|
|
282
293
|
type: :call
|
|
283
294
|
}
|
|
284
295
|
when :case_expr
|
|
@@ -310,7 +321,8 @@ module PgQuery
|
|
|
310
321
|
location: rangevar.location,
|
|
311
322
|
schemaname: (rangevar.schemaname unless rangevar.schemaname.empty?),
|
|
312
323
|
relname: rangevar.relname,
|
|
313
|
-
inh: rangevar.inh
|
|
324
|
+
inh: rangevar.inh,
|
|
325
|
+
relpersistence: rangevar.relpersistence
|
|
314
326
|
}
|
|
315
327
|
@aliases[rangevar.alias.aliasname] = table if rangevar.alias
|
|
316
328
|
when :range_subselect
|