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
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* parse_agg.h
|
|
4
4
|
* handle aggregates and window functions in parser
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* src/include/parser/parse_agg.h
|
|
@@ -26,7 +26,7 @@ extern void transformWindowFuncCall(ParseState *pstate, WindowFunc *wfunc,
|
|
|
26
26
|
|
|
27
27
|
extern void parseCheckAggregates(ParseState *pstate, Query *qry);
|
|
28
28
|
|
|
29
|
-
extern List *expand_grouping_sets(List *groupingSets, int limit);
|
|
29
|
+
extern List *expand_grouping_sets(List *groupingSets, bool groupDistinct, int limit);
|
|
30
30
|
|
|
31
31
|
extern int get_aggregate_argtypes(Aggref *aggref, Oid *inputTypes);
|
|
32
32
|
|
|
@@ -46,11 +46,6 @@ extern void build_aggregate_transfn_expr(Oid *agg_input_types,
|
|
|
46
46
|
Expr **transfnexpr,
|
|
47
47
|
Expr **invtransfnexpr);
|
|
48
48
|
|
|
49
|
-
extern void build_aggregate_combinefn_expr(Oid agg_state_type,
|
|
50
|
-
Oid agg_input_collation,
|
|
51
|
-
Oid combinefn_oid,
|
|
52
|
-
Expr **combinefnexpr);
|
|
53
|
-
|
|
54
49
|
extern void build_aggregate_serialfn_expr(Oid serialfn_oid,
|
|
55
50
|
Expr **serialfnexpr);
|
|
56
51
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Routines for type coercion.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/parser/parse_coerce.h
|
|
@@ -70,6 +70,9 @@ extern Oid select_common_type(ParseState *pstate, List *exprs,
|
|
|
70
70
|
extern Node *coerce_to_common_type(ParseState *pstate, Node *node,
|
|
71
71
|
Oid targetTypeId,
|
|
72
72
|
const char *context);
|
|
73
|
+
extern bool verify_common_type(Oid common_type, List *exprs);
|
|
74
|
+
|
|
75
|
+
extern int32 select_common_typmod(ParseState *pstate, List *exprs, Oid common_type);
|
|
73
76
|
|
|
74
77
|
extern bool check_generic_type_consistency(const Oid *actual_arg_types,
|
|
75
78
|
const Oid *declared_arg_types,
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* parse_expr.h
|
|
4
4
|
* handle expressions in parser
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* src/include/parser/parse_expr.h
|
|
@@ -16,8 +16,7 @@
|
|
|
16
16
|
#include "parser/parse_node.h"
|
|
17
17
|
|
|
18
18
|
/* GUC parameters */
|
|
19
|
-
extern
|
|
20
|
-
extern bool Transform_null_equals;
|
|
19
|
+
extern PGDLLIMPORT bool Transform_null_equals;
|
|
21
20
|
|
|
22
21
|
extern Node *transformExpr(ParseState *pstate, Node *expr, ParseExprKind exprKind);
|
|
23
22
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/parser/parse_func.h
|
|
@@ -39,6 +39,7 @@ extern FuncDetailCode func_get_detail(List *funcname,
|
|
|
39
39
|
List *fargs, List *fargnames,
|
|
40
40
|
int nargs, Oid *argtypes,
|
|
41
41
|
bool expand_variadic, bool expand_defaults,
|
|
42
|
+
bool include_out_arguments,
|
|
42
43
|
Oid *funcid, Oid *rettype,
|
|
43
44
|
bool *retset, int *nvargs, Oid *vatype,
|
|
44
45
|
Oid **true_typeids, List **argdefaults);
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Internal definitions for parser
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/parser/parse_node.h
|
|
@@ -55,6 +55,7 @@ typedef enum ParseExprKind
|
|
|
55
55
|
EXPR_KIND_INSERT_TARGET, /* INSERT target list item */
|
|
56
56
|
EXPR_KIND_UPDATE_SOURCE, /* UPDATE assignment source item */
|
|
57
57
|
EXPR_KIND_UPDATE_TARGET, /* UPDATE assignment target item */
|
|
58
|
+
EXPR_KIND_MERGE_WHEN, /* MERGE WHEN [NOT] MATCHED condition */
|
|
58
59
|
EXPR_KIND_GROUP_BY, /* GROUP BY */
|
|
59
60
|
EXPR_KIND_ORDER_BY, /* ORDER BY */
|
|
60
61
|
EXPR_KIND_DISTINCT_ON, /* DISTINCT ON */
|
|
@@ -69,6 +70,7 @@ typedef enum ParseExprKind
|
|
|
69
70
|
EXPR_KIND_FUNCTION_DEFAULT, /* default parameter value for function */
|
|
70
71
|
EXPR_KIND_INDEX_EXPRESSION, /* index expression */
|
|
71
72
|
EXPR_KIND_INDEX_PREDICATE, /* index predicate */
|
|
73
|
+
EXPR_KIND_STATS_EXPRESSION, /* extended statistics expression */
|
|
72
74
|
EXPR_KIND_ALTER_COL_TRANSFORM, /* transform expr in ALTER COLUMN TYPE */
|
|
73
75
|
EXPR_KIND_EXECUTE_PARAMETER, /* parameter value in EXECUTE */
|
|
74
76
|
EXPR_KIND_TRIGGER_WHEN, /* WHEN condition in CREATE TRIGGER */
|
|
@@ -78,6 +80,7 @@ typedef enum ParseExprKind
|
|
|
78
80
|
EXPR_KIND_CALL_ARGUMENT, /* procedure argument in CALL */
|
|
79
81
|
EXPR_KIND_COPY_WHERE, /* WHERE condition in COPY FROM */
|
|
80
82
|
EXPR_KIND_GENERATED_COLUMN, /* generation expression for a column */
|
|
83
|
+
EXPR_KIND_CYCLE_MARK, /* cycle mark value */
|
|
81
84
|
} ParseExprKind;
|
|
82
85
|
|
|
83
86
|
|
|
@@ -133,7 +136,7 @@ typedef Node *(*CoerceParamHook) (ParseState *pstate, Param *param,
|
|
|
133
136
|
* p_parent_cte: CommonTableExpr that immediately contains the current query,
|
|
134
137
|
* if any.
|
|
135
138
|
*
|
|
136
|
-
* p_target_relation: target relation, if query is INSERT
|
|
139
|
+
* p_target_relation: target relation, if query is INSERT/UPDATE/DELETE/MERGE
|
|
137
140
|
*
|
|
138
141
|
* p_target_nsitem: target relation's ParseNamespaceItem.
|
|
139
142
|
*
|
|
@@ -187,7 +190,7 @@ struct ParseState
|
|
|
187
190
|
List *p_ctenamespace; /* current namespace for common table exprs */
|
|
188
191
|
List *p_future_ctes; /* common table exprs not yet in namespace */
|
|
189
192
|
CommonTableExpr *p_parent_cte; /* this query's containing CTE */
|
|
190
|
-
Relation p_target_relation; /* INSERT/UPDATE/DELETE target rel */
|
|
193
|
+
Relation p_target_relation; /* INSERT/UPDATE/DELETE/MERGE target rel */
|
|
191
194
|
ParseNamespaceItem *p_target_nsitem; /* target rel's NSItem, or NULL */
|
|
192
195
|
bool p_is_insert; /* process assignment like INSERT not UPDATE */
|
|
193
196
|
List *p_windowdefs; /* raw representations of window clauses */
|
|
@@ -225,8 +228,16 @@ struct ParseState
|
|
|
225
228
|
/*
|
|
226
229
|
* An element of a namespace list.
|
|
227
230
|
*
|
|
231
|
+
* p_names contains the table name and column names exposed by this nsitem.
|
|
232
|
+
* (Typically it's equal to p_rte->eref, but for a JOIN USING alias it's
|
|
233
|
+
* equal to p_rte->join_using_alias. Since the USING columns will be the
|
|
234
|
+
* join's first N columns, the net effect is just that we expose only those
|
|
235
|
+
* join columns via this nsitem.)
|
|
236
|
+
*
|
|
237
|
+
* p_rte and p_rtindex link to the underlying rangetable entry.
|
|
238
|
+
*
|
|
228
239
|
* The p_nscolumns array contains info showing how to construct Vars
|
|
229
|
-
* referencing
|
|
240
|
+
* referencing the names appearing in the p_names->colnames list.
|
|
230
241
|
*
|
|
231
242
|
* Namespace items with p_rel_visible set define which RTEs are accessible by
|
|
232
243
|
* qualified names, while those with p_cols_visible set define which RTEs are
|
|
@@ -254,9 +265,10 @@ struct ParseState
|
|
|
254
265
|
*/
|
|
255
266
|
struct ParseNamespaceItem
|
|
256
267
|
{
|
|
268
|
+
Alias *p_names; /* Table and column names */
|
|
257
269
|
RangeTblEntry *p_rte; /* The relation's rangetable entry */
|
|
258
270
|
int p_rtindex; /* The relation's index in the rangetable */
|
|
259
|
-
/* array of same length as
|
|
271
|
+
/* array of same length as p_names->colnames: */
|
|
260
272
|
ParseNamespaceColumn *p_nscolumns; /* per-column data */
|
|
261
273
|
bool p_rel_visible; /* Relation name is visible? */
|
|
262
274
|
bool p_cols_visible; /* Column names visible as unqualified refs? */
|
|
@@ -294,6 +306,7 @@ struct ParseNamespaceColumn
|
|
|
294
306
|
Oid p_varcollid; /* OID of collation, or InvalidOid */
|
|
295
307
|
Index p_varnosyn; /* rangetable index of syntactic referent */
|
|
296
308
|
AttrNumber p_varattnosyn; /* attribute number of syntactic referent */
|
|
309
|
+
bool p_dontexpand; /* not included in star expansion */
|
|
297
310
|
};
|
|
298
311
|
|
|
299
312
|
/* Support for parser_errposition_callback function */
|
|
@@ -313,15 +326,14 @@ extern void setup_parser_errposition_callback(ParseCallbackState *pcbstate,
|
|
|
313
326
|
ParseState *pstate, int location);
|
|
314
327
|
extern void cancel_parser_errposition_callback(ParseCallbackState *pcbstate);
|
|
315
328
|
|
|
316
|
-
extern
|
|
329
|
+
extern void transformContainerType(Oid *containerType, int32 *containerTypmod);
|
|
317
330
|
|
|
318
331
|
extern SubscriptingRef *transformContainerSubscripts(ParseState *pstate,
|
|
319
332
|
Node *containerBase,
|
|
320
333
|
Oid containerType,
|
|
321
|
-
Oid elementType,
|
|
322
334
|
int32 containerTypMod,
|
|
323
335
|
List *indirection,
|
|
324
|
-
|
|
325
|
-
extern Const *make_const(ParseState *pstate,
|
|
336
|
+
bool isAssignment);
|
|
337
|
+
extern Const *make_const(ParseState *pstate, A_Const *aconst);
|
|
326
338
|
|
|
327
339
|
#endif /* PARSE_NODE_H */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* handle operator things for parser
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/parser/parse_oper.h
|
|
@@ -31,8 +31,6 @@ extern Oid LookupOperWithArgs(ObjectWithArgs *oper, bool noError);
|
|
|
31
31
|
/* NB: the selected operator may require coercion of the input types! */
|
|
32
32
|
extern Operator oper(ParseState *pstate, List *op, Oid arg1, Oid arg2,
|
|
33
33
|
bool noError, int location);
|
|
34
|
-
extern Operator right_oper(ParseState *pstate, List *op, Oid arg,
|
|
35
|
-
bool noError, int location);
|
|
36
34
|
extern Operator left_oper(ParseState *pstate, List *op, Oid arg,
|
|
37
35
|
bool noError, int location);
|
|
38
36
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* prototypes for parse_relation.c.
|
|
5
5
|
*
|
|
6
6
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
7
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
8
8
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
9
|
*
|
|
10
10
|
* src/include/parser/parse_relation.h
|
|
@@ -41,8 +41,7 @@ extern Node *scanNSItemForColumn(ParseState *pstate, ParseNamespaceItem *nsitem,
|
|
|
41
41
|
int location);
|
|
42
42
|
extern Node *colNameToVar(ParseState *pstate, const char *colname, bool localonly,
|
|
43
43
|
int location);
|
|
44
|
-
extern void markVarForSelectPriv(ParseState *pstate, Var *var
|
|
45
|
-
RangeTblEntry *rte);
|
|
44
|
+
extern void markVarForSelectPriv(ParseState *pstate, Var *var);
|
|
46
45
|
extern Relation parserOpenTable(ParseState *pstate, const RangeVar *relation,
|
|
47
46
|
int lockmode);
|
|
48
47
|
extern ParseNamespaceItem *addRangeTableEntry(ParseState *pstate,
|
|
@@ -89,6 +88,7 @@ extern ParseNamespaceItem *addRangeTableEntryForJoin(ParseState *pstate,
|
|
|
89
88
|
List *aliasvars,
|
|
90
89
|
List *leftcols,
|
|
91
90
|
List *rightcols,
|
|
91
|
+
Alias *joinalias,
|
|
92
92
|
Alias *alias,
|
|
93
93
|
bool inFromCl);
|
|
94
94
|
extern ParseNamespaceItem *addRangeTableEntryForCTE(ParseState *pstate,
|
|
@@ -113,7 +113,8 @@ extern List *expandNSItemVars(ParseNamespaceItem *nsitem,
|
|
|
113
113
|
int sublevels_up, int location,
|
|
114
114
|
List **colnames);
|
|
115
115
|
extern List *expandNSItemAttrs(ParseState *pstate, ParseNamespaceItem *nsitem,
|
|
116
|
-
int sublevels_up,
|
|
116
|
+
int sublevels_up, bool require_col_privs,
|
|
117
|
+
int location);
|
|
117
118
|
extern int attnameAttNum(Relation rd, const char *attname, bool sysColOK);
|
|
118
119
|
extern const NameData *attnumAttName(Relation rd, int attid);
|
|
119
120
|
extern Oid attnumTypeId(Relation rd, int attid);
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* parse_type.h
|
|
4
4
|
* handle type operations for parser
|
|
5
5
|
*
|
|
6
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
7
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
8
8
|
*
|
|
9
9
|
* src/include/parser/parse_type.h
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*
|
|
6
6
|
* This is the external API for the raw lexing/parsing functions.
|
|
7
7
|
*
|
|
8
|
-
* Portions Copyright (c) 1996-
|
|
8
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
9
9
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
10
10
|
*
|
|
11
11
|
* src/include/parser/parser.h
|
|
@@ -18,6 +18,33 @@
|
|
|
18
18
|
#include "nodes/parsenodes.h"
|
|
19
19
|
|
|
20
20
|
|
|
21
|
+
/*
|
|
22
|
+
* RawParseMode determines the form of the string that raw_parser() accepts:
|
|
23
|
+
*
|
|
24
|
+
* RAW_PARSE_DEFAULT: parse a semicolon-separated list of SQL commands,
|
|
25
|
+
* and return a List of RawStmt nodes.
|
|
26
|
+
*
|
|
27
|
+
* RAW_PARSE_TYPE_NAME: parse a type name, and return a one-element List
|
|
28
|
+
* containing a TypeName node.
|
|
29
|
+
*
|
|
30
|
+
* RAW_PARSE_PLPGSQL_EXPR: parse a PL/pgSQL expression, and return
|
|
31
|
+
* a one-element List containing a RawStmt node.
|
|
32
|
+
*
|
|
33
|
+
* RAW_PARSE_PLPGSQL_ASSIGNn: parse a PL/pgSQL assignment statement,
|
|
34
|
+
* and return a one-element List containing a RawStmt node. "n"
|
|
35
|
+
* gives the number of dotted names comprising the target ColumnRef.
|
|
36
|
+
*/
|
|
37
|
+
typedef enum
|
|
38
|
+
{
|
|
39
|
+
RAW_PARSE_DEFAULT = 0,
|
|
40
|
+
RAW_PARSE_TYPE_NAME,
|
|
41
|
+
RAW_PARSE_PLPGSQL_EXPR,
|
|
42
|
+
RAW_PARSE_PLPGSQL_ASSIGN1,
|
|
43
|
+
RAW_PARSE_PLPGSQL_ASSIGN2,
|
|
44
|
+
RAW_PARSE_PLPGSQL_ASSIGN3
|
|
45
|
+
} RawParseMode;
|
|
46
|
+
|
|
47
|
+
/* Values for the backslash_quote GUC */
|
|
21
48
|
typedef enum
|
|
22
49
|
{
|
|
23
50
|
BACKSLASH_QUOTE_OFF,
|
|
@@ -26,13 +53,13 @@ typedef enum
|
|
|
26
53
|
} BackslashQuoteType;
|
|
27
54
|
|
|
28
55
|
/* GUC variables in scan.l (every one of these is a bad idea :-() */
|
|
29
|
-
extern __thread int backslash_quote;
|
|
30
|
-
extern __thread bool escape_string_warning;
|
|
56
|
+
extern PGDLLIMPORT __thread int backslash_quote;
|
|
57
|
+
extern PGDLLIMPORT __thread bool escape_string_warning;
|
|
31
58
|
extern PGDLLIMPORT __thread bool standard_conforming_strings;
|
|
32
59
|
|
|
33
60
|
|
|
34
61
|
/* Primary entry point for the raw parsing functions */
|
|
35
|
-
extern List *raw_parser(const char *str);
|
|
62
|
+
extern List *raw_parser(const char *str, RawParseMode mode);
|
|
36
63
|
|
|
37
64
|
/* Utility functions exported by gram.y (perhaps these should be elsewhere) */
|
|
38
65
|
extern List *SystemFuncName(char *name);
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* parse trees.
|
|
6
6
|
*
|
|
7
7
|
*
|
|
8
|
-
* Portions Copyright (c) 1996-
|
|
8
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
9
9
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
10
10
|
*
|
|
11
11
|
* src/include/parser/parsetree.h
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* higher-level API provided by parser.h.
|
|
9
9
|
*
|
|
10
10
|
*
|
|
11
|
-
* Portions Copyright (c) 1996-
|
|
11
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
12
12
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
13
13
|
*
|
|
14
14
|
* src/include/parser/scanner.h
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
/*-------------------------------------------------------------------------
|
|
2
2
|
*
|
|
3
3
|
* scansup.h
|
|
4
|
-
* scanner support routines
|
|
5
|
-
* as well as the normal lexer
|
|
4
|
+
* scanner support routines used by the core lexer
|
|
6
5
|
*
|
|
7
|
-
* Portions Copyright (c) 1996-
|
|
6
|
+
* Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
|
|
8
7
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
9
8
|
*
|
|
10
9
|
* src/include/parser/scansup.h
|
|
@@ -15,8 +14,6 @@
|
|
|
15
14
|
#ifndef SCANSUP_H
|
|
16
15
|
#define SCANSUP_H
|
|
17
16
|
|
|
18
|
-
extern char *scanstr(const char *s);
|
|
19
|
-
|
|
20
17
|
extern char *downcase_truncate_identifier(const char *ident, int len,
|
|
21
18
|
bool warn);
|
|
22
19
|
|