pg_query 2.2.0 → 6.1.0
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 +86 -0
- data/README.md +57 -31
- data/Rakefile +5 -6
- data/ext/pg_query/ext_symbols_freebsd.sym +1 -0
- data/ext/pg_query/ext_symbols_freebsd_with_ruby_abi_version.sym +2 -0
- data/ext/pg_query/ext_symbols_openbsd.sym +1 -0
- data/ext/pg_query/ext_symbols_openbsd_with_ruby_abi_version.sym +2 -0
- data/ext/pg_query/ext_symbols_with_ruby_abi_version.sym +2 -0
- data/ext/pg_query/extconf.rb +33 -9
- data/ext/pg_query/include/pg_query.h +30 -4
- data/ext/pg_query/include/pg_query_enum_defs.c +839 -290
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +638 -481
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +6786 -4193
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +450 -330
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +1489 -1044
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +157 -118
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +1933 -1410
- data/ext/pg_query/include/postgres/access/amapi.h +303 -0
- data/ext/pg_query/include/postgres/access/attmap.h +54 -0
- data/ext/pg_query/include/postgres/access/attnum.h +64 -0
- data/ext/pg_query/include/postgres/access/brin_internal.h +116 -0
- data/ext/pg_query/include/postgres/access/brin_tuple.h +112 -0
- data/ext/pg_query/include/postgres/access/clog.h +62 -0
- data/ext/pg_query/include/postgres/access/commit_ts.h +73 -0
- data/ext/pg_query/include/postgres/access/detoast.h +82 -0
- data/ext/pg_query/include/postgres/access/genam.h +246 -0
- data/ext/pg_query/include/postgres/access/gin.h +91 -0
- data/ext/pg_query/include/postgres/access/htup.h +89 -0
- data/ext/pg_query/include/postgres/access/htup_details.h +811 -0
- data/ext/pg_query/include/postgres/access/itup.h +170 -0
- data/ext/pg_query/include/postgres/access/parallel.h +81 -0
- data/ext/pg_query/include/postgres/access/printtup.h +35 -0
- data/ext/pg_query/include/postgres/access/relation.h +28 -0
- data/ext/pg_query/include/postgres/access/relscan.h +191 -0
- data/ext/pg_query/include/postgres/access/rmgr.h +62 -0
- data/ext/pg_query/include/postgres/access/rmgrlist.h +49 -0
- data/ext/pg_query/include/postgres/access/sdir.h +67 -0
- data/ext/pg_query/include/postgres/access/skey.h +151 -0
- data/ext/pg_query/include/postgres/access/slru.h +218 -0
- data/ext/pg_query/include/postgres/access/stratnum.h +85 -0
- data/ext/pg_query/include/postgres/access/sysattr.h +29 -0
- data/ext/pg_query/include/postgres/access/table.h +28 -0
- data/ext/pg_query/include/postgres/access/tableam.h +2110 -0
- data/ext/pg_query/include/postgres/access/tidstore.h +50 -0
- data/ext/pg_query/include/postgres/access/toast_compression.h +73 -0
- data/ext/pg_query/include/postgres/access/transam.h +418 -0
- data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
- data/ext/pg_query/include/postgres/access/tupconvert.h +54 -0
- data/ext/pg_query/include/postgres/access/tupdesc.h +154 -0
- data/ext/pg_query/include/postgres/access/tupmacs.h +207 -0
- data/ext/pg_query/include/postgres/access/twophase.h +65 -0
- data/ext/pg_query/include/postgres/access/xact.h +530 -0
- data/ext/pg_query/include/postgres/access/xlog.h +310 -0
- data/ext/pg_query/include/postgres/access/xlog_internal.h +405 -0
- data/ext/pg_query/include/postgres/access/xlogbackup.h +43 -0
- data/ext/pg_query/include/postgres/access/xlogdefs.h +82 -0
- data/ext/pg_query/include/postgres/access/xlogprefetcher.h +55 -0
- data/ext/pg_query/include/postgres/access/xlogreader.h +444 -0
- data/ext/pg_query/include/postgres/access/xlogrecord.h +248 -0
- data/ext/pg_query/include/postgres/access/xlogrecovery.h +158 -0
- data/ext/pg_query/include/postgres/archive/archive_module.h +67 -0
- data/ext/pg_query/include/postgres/c.h +1374 -0
- data/ext/pg_query/include/postgres/catalog/catalog.h +47 -0
- data/ext/pg_query/include/postgres/catalog/catversion.h +62 -0
- data/ext/pg_query/include/postgres/catalog/dependency.h +228 -0
- data/ext/pg_query/include/postgres/catalog/genbki.h +149 -0
- data/ext/pg_query/include/postgres/catalog/index.h +218 -0
- data/ext/pg_query/include/postgres/catalog/indexing.h +54 -0
- data/ext/pg_query/include/postgres/catalog/namespace.h +189 -0
- data/ext/pg_query/include/postgres/catalog/objectaccess.h +267 -0
- data/ext/pg_query/include/postgres/catalog/objectaddress.h +93 -0
- data/ext/pg_query/include/postgres/catalog/pg_aggregate.h +182 -0
- data/ext/pg_query/include/postgres/catalog/pg_aggregate_d.h +78 -0
- data/ext/pg_query/include/postgres/catalog/pg_am.h +66 -0
- data/ext/pg_query/include/postgres/catalog/pg_am_d.h +47 -0
- data/ext/pg_query/include/postgres/catalog/pg_attribute.h +240 -0
- data/ext/pg_query/include/postgres/catalog/pg_attribute_d.h +62 -0
- data/ext/pg_query/include/postgres/catalog/pg_authid.h +66 -0
- data/ext/pg_query/include/postgres/catalog/pg_authid_d.h +60 -0
- data/ext/pg_query/include/postgres/catalog/pg_class.h +235 -0
- data/ext/pg_query/include/postgres/catalog/pg_class_d.h +134 -0
- data/ext/pg_query/include/postgres/catalog/pg_collation.h +106 -0
- data/ext/pg_query/include/postgres/catalog/pg_collation_d.h +66 -0
- data/ext/pg_query/include/postgres/catalog/pg_constraint.h +278 -0
- data/ext/pg_query/include/postgres/catalog/pg_constraint_d.h +74 -0
- data/ext/pg_query/include/postgres/catalog/pg_control.h +260 -0
- data/ext/pg_query/include/postgres/catalog/pg_conversion.h +79 -0
- data/ext/pg_query/include/postgres/catalog/pg_conversion_d.h +38 -0
- data/ext/pg_query/include/postgres/catalog/pg_database.h +129 -0
- data/ext/pg_query/include/postgres/catalog/pg_database_d.h +53 -0
- data/ext/pg_query/include/postgres/catalog/pg_depend.h +77 -0
- data/ext/pg_query/include/postgres/catalog/pg_depend_d.h +36 -0
- data/ext/pg_query/include/postgres/catalog/pg_event_trigger.h +60 -0
- data/ext/pg_query/include/postgres/catalog/pg_event_trigger_d.h +36 -0
- data/ext/pg_query/include/postgres/catalog/pg_index.h +92 -0
- data/ext/pg_query/include/postgres/catalog/pg_index_d.h +59 -0
- data/ext/pg_query/include/postgres/catalog/pg_language.h +75 -0
- data/ext/pg_query/include/postgres/catalog/pg_language_d.h +41 -0
- data/ext/pg_query/include/postgres/catalog/pg_namespace.h +67 -0
- data/ext/pg_query/include/postgres/catalog/pg_namespace_d.h +36 -0
- data/ext/pg_query/include/postgres/catalog/pg_opclass.h +91 -0
- data/ext/pg_query/include/postgres/catalog/pg_opclass_d.h +51 -0
- data/ext/pg_query/include/postgres/catalog/pg_operator.h +124 -0
- data/ext/pg_query/include/postgres/catalog/pg_operator_d.h +142 -0
- data/ext/pg_query/include/postgres/catalog/pg_opfamily.h +67 -0
- data/ext/pg_query/include/postgres/catalog/pg_opfamily_d.h +51 -0
- data/ext/pg_query/include/postgres/catalog/pg_partitioned_table.h +76 -0
- data/ext/pg_query/include/postgres/catalog/pg_partitioned_table_d.h +36 -0
- data/ext/pg_query/include/postgres/catalog/pg_proc.h +223 -0
- data/ext/pg_query/include/postgres/catalog/pg_proc_d.h +101 -0
- data/ext/pg_query/include/postgres/catalog/pg_publication.h +161 -0
- data/ext/pg_query/include/postgres/catalog/pg_publication_d.h +38 -0
- data/ext/pg_query/include/postgres/catalog/pg_replication_origin.h +65 -0
- data/ext/pg_query/include/postgres/catalog/pg_replication_origin_d.h +33 -0
- data/ext/pg_query/include/postgres/catalog/pg_statistic.h +288 -0
- data/ext/pg_query/include/postgres/catalog/pg_statistic_d.h +199 -0
- data/ext/pg_query/include/postgres/catalog/pg_statistic_ext.h +91 -0
- data/ext/pg_query/include/postgres/catalog/pg_statistic_ext_d.h +45 -0
- data/ext/pg_query/include/postgres/catalog/pg_transform.h +51 -0
- data/ext/pg_query/include/postgres/catalog/pg_transform_d.h +34 -0
- data/ext/pg_query/include/postgres/catalog/pg_trigger.h +153 -0
- data/ext/pg_query/include/postgres/catalog/pg_trigger_d.h +109 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_config.h +56 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_config_d.h +34 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_dict.h +62 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_dict_d.h +35 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_parser.h +63 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_parser_d.h +37 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_template.h +54 -0
- data/ext/pg_query/include/postgres/catalog/pg_ts_template_d.h +34 -0
- data/ext/pg_query/include/postgres/catalog/pg_type.h +407 -0
- data/ext/pg_query/include/postgres/catalog/pg_type_d.h +324 -0
- data/ext/pg_query/include/postgres/catalog/storage.h +50 -0
- data/ext/pg_query/include/postgres/catalog/syscache_ids.h +104 -0
- data/ext/pg_query/include/postgres/commands/async.h +49 -0
- data/ext/pg_query/include/postgres/commands/dbcommands.h +37 -0
- data/ext/pg_query/include/postgres/commands/defrem.h +161 -0
- data/ext/pg_query/include/postgres/commands/event_trigger.h +97 -0
- data/ext/pg_query/include/postgres/commands/explain.h +145 -0
- data/ext/pg_query/include/postgres/commands/prepare.h +61 -0
- data/ext/pg_query/include/postgres/commands/tablespace.h +69 -0
- data/ext/pg_query/include/postgres/commands/trigger.h +288 -0
- data/ext/pg_query/include/postgres/commands/user.h +43 -0
- data/ext/pg_query/include/postgres/commands/vacuum.h +388 -0
- data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
- data/ext/pg_query/include/postgres/common/file_perm.h +56 -0
- data/ext/pg_query/include/postgres/common/file_utils.h +65 -0
- data/ext/pg_query/include/postgres/common/hashfn.h +119 -0
- data/ext/pg_query/include/postgres/common/hashfn_unstable.h +407 -0
- data/ext/pg_query/include/postgres/common/int.h +512 -0
- data/ext/pg_query/include/postgres/common/keywords.h +29 -0
- data/ext/pg_query/include/postgres/common/kwlookup.h +44 -0
- data/ext/pg_query/include/postgres/common/pg_prng.h +62 -0
- data/ext/pg_query/include/postgres/common/relpath.h +97 -0
- data/ext/pg_query/include/postgres/common/scram-common.h +70 -0
- data/ext/pg_query/include/postgres/common/sha2.h +32 -0
- data/ext/pg_query/include/postgres/common/string.h +44 -0
- data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +124 -0
- data/ext/pg_query/include/postgres/common/unicode_nonspacing_table.h +326 -0
- data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5261 -0
- data/ext/pg_query/include/postgres/copyfuncs.switch.c +989 -0
- data/ext/pg_query/include/postgres/datatype/timestamp.h +269 -0
- data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3310 -0
- data/ext/pg_query/include/postgres/equalfuncs.switch.c +836 -0
- data/ext/pg_query/include/postgres/executor/execdesc.h +70 -0
- data/ext/pg_query/include/postgres/executor/executor.h +681 -0
- data/ext/pg_query/include/postgres/executor/functions.h +56 -0
- data/ext/pg_query/include/postgres/executor/instrument.h +120 -0
- data/ext/pg_query/include/postgres/executor/spi.h +207 -0
- data/ext/pg_query/include/postgres/executor/tablefunc.h +67 -0
- data/ext/pg_query/include/postgres/executor/tuptable.h +523 -0
- data/ext/pg_query/include/postgres/fmgr.h +800 -0
- data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
- data/ext/pg_query/include/postgres/funcapi.h +360 -0
- data/ext/pg_query/include/postgres/gram.h +1168 -0
- data/ext/pg_query/include/postgres/gramparse.h +75 -0
- data/ext/pg_query/include/postgres/jit/jit.h +106 -0
- data/ext/pg_query/include/postgres/kwlist_d.h +1164 -0
- data/ext/pg_query/include/postgres/lib/dshash.h +130 -0
- data/ext/pg_query/include/postgres/lib/ilist.h +1159 -0
- data/ext/pg_query/include/postgres/lib/pairingheap.h +102 -0
- data/ext/pg_query/include/postgres/lib/simplehash.h +1206 -0
- data/ext/pg_query/include/postgres/lib/sort_template.h +445 -0
- data/ext/pg_query/include/postgres/lib/stringinfo.h +243 -0
- data/ext/pg_query/include/postgres/libpq/auth.h +37 -0
- data/ext/pg_query/include/postgres/libpq/crypt.h +47 -0
- data/ext/pg_query/include/postgres/libpq/hba.h +186 -0
- data/ext/pg_query/include/postgres/libpq/libpq-be.h +361 -0
- data/ext/pg_query/include/postgres/libpq/libpq.h +143 -0
- data/ext/pg_query/include/postgres/libpq/pqcomm.h +169 -0
- data/ext/pg_query/include/postgres/libpq/pqformat.h +209 -0
- data/ext/pg_query/include/postgres/libpq/pqsignal.h +54 -0
- data/ext/pg_query/include/postgres/libpq/protocol.h +89 -0
- data/ext/pg_query/include/postgres/libpq/sasl.h +136 -0
- data/ext/pg_query/include/postgres/libpq/scram.h +37 -0
- data/ext/pg_query/include/postgres/mb/pg_wchar.h +793 -0
- data/ext/pg_query/include/postgres/mb/stringinfo_mb.h +24 -0
- data/ext/pg_query/include/postgres/miscadmin.h +527 -0
- data/ext/pg_query/include/postgres/nodes/bitmapset.h +140 -0
- data/ext/pg_query/include/postgres/nodes/execnodes.h +2855 -0
- data/ext/pg_query/include/postgres/nodes/extensible.h +164 -0
- data/ext/pg_query/include/postgres/nodes/lockoptions.h +61 -0
- data/ext/pg_query/include/postgres/nodes/makefuncs.h +127 -0
- data/ext/pg_query/include/postgres/nodes/memnodes.h +152 -0
- data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
- data/ext/pg_query/include/postgres/nodes/nodeFuncs.h +222 -0
- data/ext/pg_query/include/postgres/nodes/nodes.h +435 -0
- data/ext/pg_query/include/postgres/nodes/nodetags.h +491 -0
- data/ext/pg_query/include/postgres/nodes/params.h +170 -0
- data/ext/pg_query/include/postgres/nodes/parsenodes.h +4233 -0
- data/ext/pg_query/include/postgres/nodes/pathnodes.h +3438 -0
- data/ext/pg_query/include/postgres/nodes/pg_list.h +686 -0
- data/ext/pg_query/include/postgres/nodes/plannodes.h +1593 -0
- data/ext/pg_query/include/postgres/nodes/primnodes.h +2339 -0
- data/ext/pg_query/include/postgres/nodes/print.h +34 -0
- data/ext/pg_query/include/postgres/nodes/queryjumble.h +86 -0
- data/ext/pg_query/include/postgres/nodes/replnodes.h +132 -0
- data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
- data/ext/pg_query/include/postgres/nodes/tidbitmap.h +75 -0
- data/ext/pg_query/include/postgres/nodes/value.h +90 -0
- data/ext/pg_query/include/postgres/optimizer/cost.h +216 -0
- data/ext/pg_query/include/postgres/optimizer/geqo.h +90 -0
- data/ext/pg_query/include/postgres/optimizer/geqo_gene.h +45 -0
- data/ext/pg_query/include/postgres/optimizer/optimizer.h +205 -0
- data/ext/pg_query/include/postgres/optimizer/paths.h +271 -0
- data/ext/pg_query/include/postgres/optimizer/planmain.h +123 -0
- data/ext/pg_query/include/postgres/parser/analyze.h +66 -0
- data/ext/pg_query/include/postgres/parser/kwlist.h +518 -0
- data/ext/pg_query/include/postgres/parser/parse_agg.h +65 -0
- data/ext/pg_query/include/postgres/parser/parse_coerce.h +105 -0
- data/ext/pg_query/include/postgres/parser/parse_expr.h +25 -0
- data/ext/pg_query/include/postgres/parser/parse_func.h +74 -0
- data/ext/pg_query/include/postgres/parser/parse_node.h +358 -0
- data/ext/pg_query/include/postgres/parser/parse_oper.h +68 -0
- data/ext/pg_query/include/postgres/parser/parse_relation.h +129 -0
- data/ext/pg_query/include/postgres/parser/parse_type.h +61 -0
- data/ext/pg_query/include/postgres/parser/parser.h +68 -0
- data/ext/pg_query/include/postgres/parser/parsetree.h +61 -0
- data/ext/pg_query/include/postgres/parser/scanner.h +152 -0
- data/ext/pg_query/include/postgres/parser/scansup.h +27 -0
- data/ext/pg_query/include/postgres/partitioning/partdefs.h +26 -0
- data/ext/pg_query/include/postgres/pg_config.h +985 -0
- data/ext/pg_query/include/postgres/pg_config_manual.h +385 -0
- data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
- data/ext/pg_query/include/postgres/pg_getopt.h +56 -0
- data/ext/pg_query/include/postgres/pg_trace.h +17 -0
- data/ext/pg_query/include/postgres/pgstat.h +780 -0
- data/ext/pg_query/include/postgres/pgtime.h +94 -0
- data/ext/pg_query/include/postgres/pl_gram.h +385 -0
- data/ext/pg_query/include/postgres/pl_reserved_kwlist.h +52 -0
- data/ext/pg_query/include/postgres/pl_reserved_kwlist_d.h +114 -0
- data/ext/pg_query/include/postgres/pl_unreserved_kwlist.h +112 -0
- data/ext/pg_query/include/postgres/pl_unreserved_kwlist_d.h +246 -0
- data/ext/pg_query/include/postgres/plerrcodes.h +998 -0
- data/ext/pg_query/include/postgres/plpgsql.h +1342 -0
- data/ext/pg_query/include/postgres/port/atomics/arch-arm.h +32 -0
- data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
- data/ext/pg_query/include/postgres/port/atomics/arch-ppc.h +256 -0
- data/ext/pg_query/include/postgres/port/atomics/arch-x86.h +254 -0
- data/ext/pg_query/include/postgres/port/atomics/fallback.h +170 -0
- data/ext/pg_query/include/postgres/port/atomics/generic-gcc.h +323 -0
- data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +119 -0
- data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +121 -0
- data/ext/pg_query/include/postgres/port/atomics/generic.h +437 -0
- data/ext/pg_query/include/postgres/port/atomics.h +606 -0
- data/ext/pg_query/include/postgres/port/pg_bitutils.h +421 -0
- data/ext/pg_query/include/postgres/port/pg_bswap.h +161 -0
- data/ext/pg_query/include/postgres/port/pg_crc32c.h +110 -0
- data/ext/pg_query/include/postgres/port/pg_iovec.h +117 -0
- data/ext/pg_query/include/postgres/port/simd.h +422 -0
- data/ext/pg_query/include/postgres/port/win32/arpa/inet.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/dlfcn.h +1 -0
- data/ext/pg_query/include/postgres/port/win32/grp.h +1 -0
- data/ext/pg_query/include/postgres/port/win32/netdb.h +7 -0
- data/ext/pg_query/include/postgres/port/win32/netinet/in.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/netinet/tcp.h +7 -0
- data/ext/pg_query/include/postgres/port/win32/pwd.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/sys/resource.h +20 -0
- data/ext/pg_query/include/postgres/port/win32/sys/select.h +3 -0
- data/ext/pg_query/include/postgres/port/win32/sys/socket.h +34 -0
- data/ext/pg_query/include/postgres/port/win32/sys/un.h +17 -0
- data/ext/pg_query/include/postgres/port/win32/sys/wait.h +3 -0
- data/ext/pg_query/include/postgres/port/win32.h +59 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/dirent.h +34 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/file.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/param.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/sys/time.h +1 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/unistd.h +9 -0
- data/ext/pg_query/include/postgres/port/win32_msvc/utime.h +3 -0
- data/ext/pg_query/include/postgres/port/win32_port.h +582 -0
- data/ext/pg_query/include/postgres/port.h +555 -0
- data/ext/pg_query/include/postgres/portability/instr_time.h +197 -0
- data/ext/pg_query/include/postgres/postgres.h +579 -0
- data/ext/pg_query/include/postgres/postgres_ext.h +73 -0
- data/ext/pg_query/include/postgres/postmaster/autovacuum.h +69 -0
- data/ext/pg_query/include/postgres/postmaster/bgworker.h +164 -0
- data/ext/pg_query/include/postgres/postmaster/bgworker_internals.h +60 -0
- data/ext/pg_query/include/postgres/postmaster/bgwriter.h +45 -0
- data/ext/pg_query/include/postgres/postmaster/interrupt.h +32 -0
- data/ext/pg_query/include/postgres/postmaster/pgarch.h +36 -0
- data/ext/pg_query/include/postgres/postmaster/postmaster.h +101 -0
- data/ext/pg_query/include/postgres/postmaster/startup.h +41 -0
- data/ext/pg_query/include/postgres/postmaster/syslogger.h +101 -0
- data/ext/pg_query/include/postgres/postmaster/walsummarizer.h +35 -0
- data/ext/pg_query/include/postgres/postmaster/walwriter.h +23 -0
- data/ext/pg_query/include/postgres/regex/regex.h +272 -0
- data/ext/pg_query/include/postgres/replication/logicallauncher.h +34 -0
- data/ext/pg_query/include/postgres/replication/logicalproto.h +274 -0
- data/ext/pg_query/include/postgres/replication/logicalworker.h +33 -0
- data/ext/pg_query/include/postgres/replication/origin.h +73 -0
- data/ext/pg_query/include/postgres/replication/reorderbuffer.h +734 -0
- data/ext/pg_query/include/postgres/replication/slot.h +289 -0
- data/ext/pg_query/include/postgres/replication/slotsync.h +38 -0
- data/ext/pg_query/include/postgres/replication/syncrep.h +109 -0
- data/ext/pg_query/include/postgres/replication/walreceiver.h +504 -0
- data/ext/pg_query/include/postgres/replication/walsender.h +76 -0
- data/ext/pg_query/include/postgres/rewrite/prs2lock.h +46 -0
- data/ext/pg_query/include/postgres/rewrite/rewriteHandler.h +41 -0
- data/ext/pg_query/include/postgres/rewrite/rewriteManip.h +96 -0
- data/ext/pg_query/include/postgres/rewrite/rewriteSupport.h +26 -0
- data/ext/pg_query/include/postgres/storage/block.h +108 -0
- data/ext/pg_query/include/postgres/storage/buf.h +46 -0
- data/ext/pg_query/include/postgres/storage/bufmgr.h +411 -0
- data/ext/pg_query/include/postgres/storage/bufpage.h +510 -0
- data/ext/pg_query/include/postgres/storage/condition_variable.h +73 -0
- data/ext/pg_query/include/postgres/storage/dsm.h +61 -0
- data/ext/pg_query/include/postgres/storage/dsm_impl.h +79 -0
- data/ext/pg_query/include/postgres/storage/fd.h +219 -0
- data/ext/pg_query/include/postgres/storage/fileset.h +40 -0
- data/ext/pg_query/include/postgres/storage/ipc.h +87 -0
- data/ext/pg_query/include/postgres/storage/item.h +19 -0
- data/ext/pg_query/include/postgres/storage/itemid.h +184 -0
- data/ext/pg_query/include/postgres/storage/itemptr.h +245 -0
- data/ext/pg_query/include/postgres/storage/large_object.h +100 -0
- data/ext/pg_query/include/postgres/storage/latch.h +196 -0
- data/ext/pg_query/include/postgres/storage/lmgr.h +126 -0
- data/ext/pg_query/include/postgres/storage/lock.h +624 -0
- data/ext/pg_query/include/postgres/storage/lockdefs.h +61 -0
- data/ext/pg_query/include/postgres/storage/lwlock.h +228 -0
- data/ext/pg_query/include/postgres/storage/lwlocknames.h +47 -0
- data/ext/pg_query/include/postgres/storage/off.h +57 -0
- data/ext/pg_query/include/postgres/storage/pg_sema.h +61 -0
- data/ext/pg_query/include/postgres/storage/pg_shmem.h +93 -0
- data/ext/pg_query/include/postgres/storage/pmsignal.h +105 -0
- data/ext/pg_query/include/postgres/storage/predicate.h +83 -0
- data/ext/pg_query/include/postgres/storage/proc.h +488 -0
- data/ext/pg_query/include/postgres/storage/procarray.h +103 -0
- data/ext/pg_query/include/postgres/storage/proclist_types.h +53 -0
- data/ext/pg_query/include/postgres/storage/procnumber.h +43 -0
- data/ext/pg_query/include/postgres/storage/procsignal.h +75 -0
- data/ext/pg_query/include/postgres/storage/read_stream.h +65 -0
- data/ext/pg_query/include/postgres/storage/relfilelocator.h +100 -0
- data/ext/pg_query/include/postgres/storage/s_lock.h +847 -0
- data/ext/pg_query/include/postgres/storage/sharedfileset.h +37 -0
- data/ext/pg_query/include/postgres/storage/shm_mq.h +86 -0
- data/ext/pg_query/include/postgres/storage/shm_toc.h +58 -0
- data/ext/pg_query/include/postgres/storage/shmem.h +59 -0
- data/ext/pg_query/include/postgres/storage/sinval.h +153 -0
- data/ext/pg_query/include/postgres/storage/smgr.h +130 -0
- data/ext/pg_query/include/postgres/storage/spin.h +77 -0
- data/ext/pg_query/include/postgres/storage/standby.h +109 -0
- data/ext/pg_query/include/postgres/storage/standbydefs.h +74 -0
- data/ext/pg_query/include/postgres/storage/sync.h +66 -0
- data/ext/pg_query/include/postgres/tcop/cmdtag.h +62 -0
- data/ext/pg_query/include/postgres/tcop/cmdtaglist.h +219 -0
- data/ext/pg_query/include/postgres/tcop/deparse_utility.h +108 -0
- data/ext/pg_query/include/postgres/tcop/dest.h +148 -0
- data/ext/pg_query/include/postgres/tcop/fastpath.h +20 -0
- data/ext/pg_query/include/postgres/tcop/pquery.h +51 -0
- data/ext/pg_query/include/postgres/tcop/tcopprot.h +98 -0
- data/ext/pg_query/include/postgres/tcop/utility.h +112 -0
- data/ext/pg_query/include/postgres/tsearch/ts_cache.h +96 -0
- data/ext/pg_query/include/postgres/utils/acl.h +290 -0
- data/ext/pg_query/include/postgres/utils/aclchk_internal.h +45 -0
- data/ext/pg_query/include/postgres/utils/array.h +481 -0
- data/ext/pg_query/include/postgres/utils/ascii.h +84 -0
- data/ext/pg_query/include/postgres/utils/backend_progress.h +46 -0
- data/ext/pg_query/include/postgres/utils/backend_status.h +340 -0
- data/ext/pg_query/include/postgres/utils/builtins.h +139 -0
- data/ext/pg_query/include/postgres/utils/bytea.h +28 -0
- data/ext/pg_query/include/postgres/utils/catcache.h +231 -0
- data/ext/pg_query/include/postgres/utils/date.h +118 -0
- data/ext/pg_query/include/postgres/utils/datetime.h +367 -0
- data/ext/pg_query/include/postgres/utils/datum.h +76 -0
- data/ext/pg_query/include/postgres/utils/dsa.h +166 -0
- data/ext/pg_query/include/postgres/utils/elog.h +540 -0
- data/ext/pg_query/include/postgres/utils/errcodes.h +352 -0
- data/ext/pg_query/include/postgres/utils/expandeddatum.h +170 -0
- data/ext/pg_query/include/postgres/utils/expandedrecord.h +241 -0
- data/ext/pg_query/include/postgres/utils/float.h +357 -0
- data/ext/pg_query/include/postgres/utils/fmgroids.h +3347 -0
- data/ext/pg_query/include/postgres/utils/fmgrprotos.h +2904 -0
- data/ext/pg_query/include/postgres/utils/fmgrtab.h +49 -0
- data/ext/pg_query/include/postgres/utils/guc.h +456 -0
- data/ext/pg_query/include/postgres/utils/guc_hooks.h +184 -0
- data/ext/pg_query/include/postgres/utils/guc_tables.h +323 -0
- data/ext/pg_query/include/postgres/utils/hsearch.h +153 -0
- data/ext/pg_query/include/postgres/utils/injection_point.h +44 -0
- data/ext/pg_query/include/postgres/utils/inval.h +68 -0
- data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
- data/ext/pg_query/include/postgres/utils/lsyscache.h +215 -0
- data/ext/pg_query/include/postgres/utils/memdebug.h +82 -0
- data/ext/pg_query/include/postgres/utils/memutils.h +193 -0
- data/ext/pg_query/include/postgres/utils/memutils_internal.h +176 -0
- data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +253 -0
- data/ext/pg_query/include/postgres/utils/numeric.h +110 -0
- data/ext/pg_query/include/postgres/utils/palloc.h +151 -0
- data/ext/pg_query/include/postgres/utils/partcache.h +103 -0
- data/ext/pg_query/include/postgres/utils/pg_locale.h +136 -0
- data/ext/pg_query/include/postgres/utils/pgstat_internal.h +827 -0
- data/ext/pg_query/include/postgres/utils/plancache.h +238 -0
- data/ext/pg_query/include/postgres/utils/portal.h +252 -0
- data/ext/pg_query/include/postgres/utils/probes.h +114 -0
- data/ext/pg_query/include/postgres/utils/ps_status.h +47 -0
- data/ext/pg_query/include/postgres/utils/queryenvironment.h +74 -0
- data/ext/pg_query/include/postgres/utils/regproc.h +39 -0
- data/ext/pg_query/include/postgres/utils/rel.h +711 -0
- data/ext/pg_query/include/postgres/utils/relcache.h +155 -0
- data/ext/pg_query/include/postgres/utils/reltrigger.h +81 -0
- data/ext/pg_query/include/postgres/utils/resowner.h +167 -0
- data/ext/pg_query/include/postgres/utils/ruleutils.h +52 -0
- data/ext/pg_query/include/postgres/utils/sharedtuplestore.h +61 -0
- data/ext/pg_query/include/postgres/utils/snapmgr.h +130 -0
- data/ext/pg_query/include/postgres/utils/snapshot.h +219 -0
- data/ext/pg_query/include/postgres/utils/sortsupport.h +391 -0
- data/ext/pg_query/include/postgres/utils/syscache.h +136 -0
- data/ext/pg_query/include/postgres/utils/timeout.h +96 -0
- data/ext/pg_query/include/postgres/utils/timestamp.h +147 -0
- data/ext/pg_query/include/postgres/utils/tuplesort.h +472 -0
- data/ext/pg_query/include/postgres/utils/tuplestore.h +88 -0
- data/ext/pg_query/include/postgres/utils/typcache.h +210 -0
- data/ext/pg_query/include/postgres/utils/varlena.h +53 -0
- data/ext/pg_query/include/postgres/utils/wait_event.h +108 -0
- data/ext/pg_query/include/postgres/utils/wait_event_types.h +218 -0
- data/ext/pg_query/include/postgres/utils/xml.h +94 -0
- data/ext/pg_query/include/postgres/varatt.h +358 -0
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +8077 -6217
- data/ext/pg_query/include/protobuf/pg_query.pb.h +132024 -88124
- data/ext/pg_query/pg_query.c +10 -1
- data/ext/pg_query/pg_query.pb-c.c +24028 -17173
- data/ext/pg_query/pg_query_deparse.c +1 -9902
- data/ext/pg_query/pg_query_fingerprint.c +42 -18
- data/ext/pg_query/pg_query_fingerprint.h +1 -1
- data/ext/pg_query/pg_query_internal.h +1 -1
- data/ext/pg_query/pg_query_json_plpgsql.c +1 -25
- data/ext/pg_query/pg_query_normalize.c +44 -3
- data/ext/pg_query/pg_query_outfuncs_json.c +62 -16
- data/ext/pg_query/pg_query_outfuncs_protobuf.c +73 -12
- data/ext/pg_query/pg_query_parse.c +47 -5
- data/ext/pg_query/pg_query_parse_plpgsql.c +19 -18
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +45 -10
- data/ext/pg_query/pg_query_ruby.c +5 -0
- data/ext/pg_query/pg_query_scan.c +4 -3
- data/ext/pg_query/pg_query_split.c +6 -5
- data/ext/pg_query/postgres_deparse.c +11496 -0
- data/ext/pg_query/postgres_deparse.h +9 -0
- data/ext/pg_query/src_backend_catalog_namespace.c +262 -71
- data/ext/pg_query/src_backend_catalog_pg_proc.c +3 -2
- data/ext/pg_query/src_backend_commands_define.c +12 -3
- data/ext/pg_query/src_backend_nodes_bitmapset.c +142 -156
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +100 -5881
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +102 -3831
- data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
- data/ext/pg_query/src_backend_nodes_list.c +89 -18
- data/ext/pg_query/src_backend_nodes_makefuncs.c +138 -4
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +433 -132
- data/ext/pg_query/src_backend_nodes_value.c +28 -19
- data/ext/pg_query/src_backend_parser_gram.c +45255 -38885
- data/ext/pg_query/src_backend_parser_parser.c +53 -8
- data/ext/pg_query/src_backend_parser_scan.c +6999 -3438
- data/ext/pg_query/src_backend_parser_scansup.c +5 -28
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +13 -4
- data/ext/pg_query/src_backend_tcop_postgres.c +156 -114
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +140 -0
- data/ext/pg_query/src_backend_utils_adt_datum.c +14 -2
- 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_numutils.c +488 -0
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +247 -34
- data/ext/pg_query/src_backend_utils_error_assert.c +17 -18
- data/ext/pg_query/src_backend_utils_error_elog.c +543 -343
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +47 -18
- data/ext/pg_query/src_backend_utils_init_globals.c +22 -7
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +84 -148
- data/ext/pg_query/src_backend_utils_misc_guc_tables.c +502 -0
- data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +166 -0
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +708 -499
- data/ext/pg_query/src_backend_utils_mmgr_bump.c +728 -0
- data/ext/pg_query/src_backend_utils_mmgr_generation.c +1115 -0
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +710 -218
- data/ext/pg_query/src_backend_utils_mmgr_slab.c +1079 -0
- data/ext/pg_query/src_common_encnames.c +46 -44
- 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 +602 -510
- data/ext/pg_query/src_common_kwlookup.c +1 -1
- data/ext/pg_query/src_common_psprintf.c +3 -3
- data/ext/pg_query/src_common_stringinfo.c +21 -4
- data/ext/pg_query/src_common_wchar.c +754 -178
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +143 -24
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -18
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1295 -1255
- 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 +20 -2
- data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +60 -60
- data/ext/pg_query/src_port_pg_bitutils.c +283 -54
- data/ext/pg_query/src_port_pgstrcasecmp.c +57 -1
- data/ext/pg_query/src_port_qsort.c +12 -224
- data/ext/pg_query/src_port_snprintf.c +56 -39
- data/ext/pg_query/src_port_strerror.c +9 -21
- data/ext/pg_query/src_port_strlcpy.c +79 -0
- data/lib/pg_query/filter_columns.rb +1 -1
- data/lib/pg_query/fingerprint.rb +10 -9
- data/lib/pg_query/node.rb +18 -13
- data/lib/pg_query/param_refs.rb +3 -3
- data/lib/pg_query/parse.rb +25 -15
- data/lib/pg_query/parse_error.rb +1 -0
- data/lib/pg_query/pg_query_pb.rb +181 -3038
- data/lib/pg_query/scan.rb +1 -0
- data/lib/pg_query/treewalker.rb +55 -8
- data/lib/pg_query/truncate.rb +19 -21
- data/lib/pg_query/version.rb +1 -1
- metadata +447 -436
- data/ext/pg_query/guc-file.c +0 -0
- data/ext/pg_query/include/access/amapi.h +0 -246
- data/ext/pg_query/include/access/attmap.h +0 -52
- data/ext/pg_query/include/access/attnum.h +0 -64
- data/ext/pg_query/include/access/clog.h +0 -61
- data/ext/pg_query/include/access/commit_ts.h +0 -77
- data/ext/pg_query/include/access/detoast.h +0 -92
- data/ext/pg_query/include/access/genam.h +0 -228
- data/ext/pg_query/include/access/gin.h +0 -78
- data/ext/pg_query/include/access/htup.h +0 -89
- data/ext/pg_query/include/access/htup_details.h +0 -819
- data/ext/pg_query/include/access/itup.h +0 -161
- data/ext/pg_query/include/access/parallel.h +0 -82
- data/ext/pg_query/include/access/printtup.h +0 -35
- data/ext/pg_query/include/access/relation.h +0 -28
- data/ext/pg_query/include/access/relscan.h +0 -176
- data/ext/pg_query/include/access/rmgr.h +0 -35
- data/ext/pg_query/include/access/rmgrlist.h +0 -49
- data/ext/pg_query/include/access/sdir.h +0 -58
- data/ext/pg_query/include/access/skey.h +0 -151
- data/ext/pg_query/include/access/stratnum.h +0 -83
- data/ext/pg_query/include/access/sysattr.h +0 -29
- data/ext/pg_query/include/access/table.h +0 -27
- data/ext/pg_query/include/access/tableam.h +0 -1825
- data/ext/pg_query/include/access/transam.h +0 -265
- data/ext/pg_query/include/access/tupconvert.h +0 -51
- data/ext/pg_query/include/access/tupdesc.h +0 -154
- data/ext/pg_query/include/access/tupmacs.h +0 -247
- data/ext/pg_query/include/access/twophase.h +0 -63
- data/ext/pg_query/include/access/xact.h +0 -469
- data/ext/pg_query/include/access/xlog.h +0 -398
- data/ext/pg_query/include/access/xlog_internal.h +0 -339
- data/ext/pg_query/include/access/xlogdefs.h +0 -109
- data/ext/pg_query/include/access/xloginsert.h +0 -64
- data/ext/pg_query/include/access/xlogreader.h +0 -337
- data/ext/pg_query/include/access/xlogrecord.h +0 -227
- data/ext/pg_query/include/bootstrap/bootstrap.h +0 -62
- data/ext/pg_query/include/c.h +0 -1334
- data/ext/pg_query/include/catalog/catalog.h +0 -42
- data/ext/pg_query/include/catalog/catversion.h +0 -58
- data/ext/pg_query/include/catalog/dependency.h +0 -277
- data/ext/pg_query/include/catalog/genbki.h +0 -64
- data/ext/pg_query/include/catalog/index.h +0 -199
- data/ext/pg_query/include/catalog/indexing.h +0 -366
- data/ext/pg_query/include/catalog/namespace.h +0 -188
- data/ext/pg_query/include/catalog/objectaccess.h +0 -197
- data/ext/pg_query/include/catalog/objectaddress.h +0 -84
- data/ext/pg_query/include/catalog/pg_aggregate.h +0 -176
- data/ext/pg_query/include/catalog/pg_aggregate_d.h +0 -77
- data/ext/pg_query/include/catalog/pg_am.h +0 -60
- data/ext/pg_query/include/catalog/pg_am_d.h +0 -45
- data/ext/pg_query/include/catalog/pg_attribute.h +0 -204
- data/ext/pg_query/include/catalog/pg_attribute_d.h +0 -59
- data/ext/pg_query/include/catalog/pg_authid.h +0 -58
- data/ext/pg_query/include/catalog/pg_authid_d.h +0 -49
- data/ext/pg_query/include/catalog/pg_class.h +0 -200
- data/ext/pg_query/include/catalog/pg_class_d.h +0 -103
- data/ext/pg_query/include/catalog/pg_collation.h +0 -73
- data/ext/pg_query/include/catalog/pg_collation_d.h +0 -45
- data/ext/pg_query/include/catalog/pg_constraint.h +0 -247
- data/ext/pg_query/include/catalog/pg_constraint_d.h +0 -67
- data/ext/pg_query/include/catalog/pg_control.h +0 -252
- data/ext/pg_query/include/catalog/pg_conversion.h +0 -72
- data/ext/pg_query/include/catalog/pg_conversion_d.h +0 -35
- data/ext/pg_query/include/catalog/pg_depend.h +0 -73
- data/ext/pg_query/include/catalog/pg_depend_d.h +0 -34
- data/ext/pg_query/include/catalog/pg_event_trigger.h +0 -51
- data/ext/pg_query/include/catalog/pg_event_trigger_d.h +0 -34
- data/ext/pg_query/include/catalog/pg_index.h +0 -80
- data/ext/pg_query/include/catalog/pg_index_d.h +0 -56
- data/ext/pg_query/include/catalog/pg_language.h +0 -67
- data/ext/pg_query/include/catalog/pg_language_d.h +0 -39
- data/ext/pg_query/include/catalog/pg_namespace.h +0 -59
- data/ext/pg_query/include/catalog/pg_namespace_d.h +0 -34
- data/ext/pg_query/include/catalog/pg_opclass.h +0 -85
- data/ext/pg_query/include/catalog/pg_opclass_d.h +0 -49
- data/ext/pg_query/include/catalog/pg_operator.h +0 -104
- data/ext/pg_query/include/catalog/pg_operator_d.h +0 -106
- data/ext/pg_query/include/catalog/pg_opfamily.h +0 -60
- data/ext/pg_query/include/catalog/pg_opfamily_d.h +0 -47
- data/ext/pg_query/include/catalog/pg_partitioned_table.h +0 -63
- data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +0 -35
- data/ext/pg_query/include/catalog/pg_proc.h +0 -211
- data/ext/pg_query/include/catalog/pg_proc_d.h +0 -99
- data/ext/pg_query/include/catalog/pg_publication.h +0 -118
- data/ext/pg_query/include/catalog/pg_publication_d.h +0 -36
- data/ext/pg_query/include/catalog/pg_replication_origin.h +0 -57
- data/ext/pg_query/include/catalog/pg_replication_origin_d.h +0 -29
- data/ext/pg_query/include/catalog/pg_statistic.h +0 -275
- data/ext/pg_query/include/catalog/pg_statistic_d.h +0 -194
- data/ext/pg_query/include/catalog/pg_statistic_ext.h +0 -74
- data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +0 -40
- data/ext/pg_query/include/catalog/pg_transform.h +0 -45
- data/ext/pg_query/include/catalog/pg_transform_d.h +0 -32
- data/ext/pg_query/include/catalog/pg_trigger.h +0 -137
- data/ext/pg_query/include/catalog/pg_trigger_d.h +0 -106
- data/ext/pg_query/include/catalog/pg_ts_config.h +0 -50
- data/ext/pg_query/include/catalog/pg_ts_config_d.h +0 -32
- data/ext/pg_query/include/catalog/pg_ts_dict.h +0 -54
- data/ext/pg_query/include/catalog/pg_ts_dict_d.h +0 -33
- data/ext/pg_query/include/catalog/pg_ts_parser.h +0 -57
- data/ext/pg_query/include/catalog/pg_ts_parser_d.h +0 -35
- data/ext/pg_query/include/catalog/pg_ts_template.h +0 -48
- data/ext/pg_query/include/catalog/pg_ts_template_d.h +0 -32
- data/ext/pg_query/include/catalog/pg_type.h +0 -373
- data/ext/pg_query/include/catalog/pg_type_d.h +0 -285
- data/ext/pg_query/include/catalog/storage.h +0 -48
- data/ext/pg_query/include/commands/async.h +0 -54
- data/ext/pg_query/include/commands/dbcommands.h +0 -35
- data/ext/pg_query/include/commands/defrem.h +0 -173
- data/ext/pg_query/include/commands/event_trigger.h +0 -88
- data/ext/pg_query/include/commands/explain.h +0 -127
- data/ext/pg_query/include/commands/prepare.h +0 -61
- data/ext/pg_query/include/commands/tablespace.h +0 -69
- data/ext/pg_query/include/commands/trigger.h +0 -285
- data/ext/pg_query/include/commands/user.h +0 -37
- data/ext/pg_query/include/commands/vacuum.h +0 -293
- data/ext/pg_query/include/commands/variable.h +0 -38
- data/ext/pg_query/include/common/file_perm.h +0 -56
- data/ext/pg_query/include/common/hashfn.h +0 -104
- data/ext/pg_query/include/common/ip.h +0 -37
- data/ext/pg_query/include/common/keywords.h +0 -33
- data/ext/pg_query/include/common/kwlookup.h +0 -44
- data/ext/pg_query/include/common/relpath.h +0 -90
- data/ext/pg_query/include/common/string.h +0 -19
- data/ext/pg_query/include/common/unicode_combining_table.h +0 -196
- data/ext/pg_query/include/datatype/timestamp.h +0 -197
- data/ext/pg_query/include/executor/execdesc.h +0 -70
- data/ext/pg_query/include/executor/executor.h +0 -620
- data/ext/pg_query/include/executor/functions.h +0 -41
- data/ext/pg_query/include/executor/instrument.h +0 -101
- data/ext/pg_query/include/executor/spi.h +0 -175
- data/ext/pg_query/include/executor/tablefunc.h +0 -67
- data/ext/pg_query/include/executor/tuptable.h +0 -487
- data/ext/pg_query/include/fmgr.h +0 -775
- data/ext/pg_query/include/funcapi.h +0 -348
- data/ext/pg_query/include/getaddrinfo.h +0 -162
- data/ext/pg_query/include/jit/jit.h +0 -105
- data/ext/pg_query/include/kwlist_d.h +0 -1072
- data/ext/pg_query/include/lib/ilist.h +0 -727
- data/ext/pg_query/include/lib/pairingheap.h +0 -102
- data/ext/pg_query/include/lib/simplehash.h +0 -1059
- data/ext/pg_query/include/lib/stringinfo.h +0 -161
- data/ext/pg_query/include/libpq/auth.h +0 -29
- data/ext/pg_query/include/libpq/crypt.h +0 -46
- data/ext/pg_query/include/libpq/hba.h +0 -140
- data/ext/pg_query/include/libpq/libpq-be.h +0 -326
- data/ext/pg_query/include/libpq/libpq.h +0 -134
- data/ext/pg_query/include/libpq/pqcomm.h +0 -208
- data/ext/pg_query/include/libpq/pqformat.h +0 -210
- data/ext/pg_query/include/libpq/pqsignal.h +0 -42
- data/ext/pg_query/include/mb/pg_wchar.h +0 -673
- data/ext/pg_query/include/mb/stringinfo_mb.h +0 -24
- data/ext/pg_query/include/miscadmin.h +0 -489
- data/ext/pg_query/include/nodes/bitmapset.h +0 -122
- data/ext/pg_query/include/nodes/execnodes.h +0 -2523
- data/ext/pg_query/include/nodes/extensible.h +0 -160
- data/ext/pg_query/include/nodes/lockoptions.h +0 -61
- data/ext/pg_query/include/nodes/makefuncs.h +0 -108
- data/ext/pg_query/include/nodes/memnodes.h +0 -108
- data/ext/pg_query/include/nodes/nodeFuncs.h +0 -162
- data/ext/pg_query/include/nodes/nodes.h +0 -842
- data/ext/pg_query/include/nodes/params.h +0 -170
- data/ext/pg_query/include/nodes/parsenodes.h +0 -3580
- data/ext/pg_query/include/nodes/pathnodes.h +0 -2557
- data/ext/pg_query/include/nodes/pg_list.h +0 -606
- data/ext/pg_query/include/nodes/plannodes.h +0 -1266
- data/ext/pg_query/include/nodes/primnodes.h +0 -1541
- data/ext/pg_query/include/nodes/print.h +0 -34
- data/ext/pg_query/include/nodes/tidbitmap.h +0 -75
- data/ext/pg_query/include/nodes/value.h +0 -61
- data/ext/pg_query/include/optimizer/cost.h +0 -206
- data/ext/pg_query/include/optimizer/geqo.h +0 -88
- data/ext/pg_query/include/optimizer/geqo_gene.h +0 -45
- data/ext/pg_query/include/optimizer/optimizer.h +0 -194
- data/ext/pg_query/include/optimizer/paths.h +0 -257
- data/ext/pg_query/include/optimizer/planmain.h +0 -119
- data/ext/pg_query/include/parser/analyze.h +0 -49
- data/ext/pg_query/include/parser/gram.h +0 -1067
- data/ext/pg_query/include/parser/gramparse.h +0 -75
- data/ext/pg_query/include/parser/kwlist.h +0 -477
- data/ext/pg_query/include/parser/parse_agg.h +0 -68
- data/ext/pg_query/include/parser/parse_clause.h +0 -54
- data/ext/pg_query/include/parser/parse_coerce.h +0 -98
- data/ext/pg_query/include/parser/parse_collate.h +0 -27
- data/ext/pg_query/include/parser/parse_expr.h +0 -26
- data/ext/pg_query/include/parser/parse_func.h +0 -73
- data/ext/pg_query/include/parser/parse_node.h +0 -327
- data/ext/pg_query/include/parser/parse_oper.h +0 -67
- data/ext/pg_query/include/parser/parse_relation.h +0 -123
- data/ext/pg_query/include/parser/parse_target.h +0 -46
- data/ext/pg_query/include/parser/parse_type.h +0 -60
- data/ext/pg_query/include/parser/parser.h +0 -41
- data/ext/pg_query/include/parser/parsetree.h +0 -61
- data/ext/pg_query/include/parser/scanner.h +0 -152
- data/ext/pg_query/include/parser/scansup.h +0 -30
- data/ext/pg_query/include/partitioning/partdefs.h +0 -26
- data/ext/pg_query/include/pg_config.h +0 -995
- data/ext/pg_query/include/pg_config_manual.h +0 -357
- data/ext/pg_query/include/pg_config_os.h +0 -8
- data/ext/pg_query/include/pg_getopt.h +0 -56
- data/ext/pg_query/include/pg_trace.h +0 -17
- data/ext/pg_query/include/pgstat.h +0 -1488
- data/ext/pg_query/include/pgtime.h +0 -84
- data/ext/pg_query/include/pl_gram.h +0 -385
- data/ext/pg_query/include/pl_reserved_kwlist.h +0 -52
- data/ext/pg_query/include/pl_reserved_kwlist_d.h +0 -114
- data/ext/pg_query/include/pl_unreserved_kwlist.h +0 -112
- data/ext/pg_query/include/pl_unreserved_kwlist_d.h +0 -246
- data/ext/pg_query/include/plerrcodes.h +0 -990
- data/ext/pg_query/include/plpgsql.h +0 -1347
- data/ext/pg_query/include/port/atomics/arch-arm.h +0 -26
- data/ext/pg_query/include/port/atomics/arch-ppc.h +0 -254
- data/ext/pg_query/include/port/atomics/arch-x86.h +0 -252
- data/ext/pg_query/include/port/atomics/fallback.h +0 -170
- data/ext/pg_query/include/port/atomics/generic-gcc.h +0 -286
- data/ext/pg_query/include/port/atomics/generic.h +0 -401
- data/ext/pg_query/include/port/atomics.h +0 -524
- data/ext/pg_query/include/port/pg_bitutils.h +0 -272
- data/ext/pg_query/include/port/pg_bswap.h +0 -161
- data/ext/pg_query/include/port/pg_crc32c.h +0 -101
- data/ext/pg_query/include/port.h +0 -528
- data/ext/pg_query/include/portability/instr_time.h +0 -256
- data/ext/pg_query/include/postgres.h +0 -764
- data/ext/pg_query/include/postgres_ext.h +0 -74
- data/ext/pg_query/include/postmaster/autovacuum.h +0 -83
- data/ext/pg_query/include/postmaster/bgworker.h +0 -161
- data/ext/pg_query/include/postmaster/bgworker_internals.h +0 -64
- data/ext/pg_query/include/postmaster/bgwriter.h +0 -45
- data/ext/pg_query/include/postmaster/fork_process.h +0 -17
- data/ext/pg_query/include/postmaster/interrupt.h +0 -32
- data/ext/pg_query/include/postmaster/pgarch.h +0 -39
- data/ext/pg_query/include/postmaster/postmaster.h +0 -77
- data/ext/pg_query/include/postmaster/syslogger.h +0 -98
- data/ext/pg_query/include/postmaster/walwriter.h +0 -21
- data/ext/pg_query/include/regex/regex.h +0 -184
- data/ext/pg_query/include/replication/logicallauncher.h +0 -31
- data/ext/pg_query/include/replication/logicalproto.h +0 -110
- data/ext/pg_query/include/replication/logicalworker.h +0 -19
- data/ext/pg_query/include/replication/origin.h +0 -73
- data/ext/pg_query/include/replication/reorderbuffer.h +0 -468
- data/ext/pg_query/include/replication/slot.h +0 -219
- data/ext/pg_query/include/replication/syncrep.h +0 -115
- data/ext/pg_query/include/replication/walreceiver.h +0 -340
- data/ext/pg_query/include/replication/walsender.h +0 -74
- data/ext/pg_query/include/rewrite/prs2lock.h +0 -46
- data/ext/pg_query/include/rewrite/rewriteHandler.h +0 -40
- data/ext/pg_query/include/rewrite/rewriteManip.h +0 -87
- data/ext/pg_query/include/rewrite/rewriteSupport.h +0 -26
- data/ext/pg_query/include/storage/backendid.h +0 -37
- data/ext/pg_query/include/storage/block.h +0 -121
- data/ext/pg_query/include/storage/buf.h +0 -46
- data/ext/pg_query/include/storage/bufmgr.h +0 -292
- data/ext/pg_query/include/storage/bufpage.h +0 -459
- data/ext/pg_query/include/storage/condition_variable.h +0 -62
- data/ext/pg_query/include/storage/dsm.h +0 -61
- data/ext/pg_query/include/storage/dsm_impl.h +0 -75
- data/ext/pg_query/include/storage/fd.h +0 -168
- data/ext/pg_query/include/storage/ipc.h +0 -81
- data/ext/pg_query/include/storage/item.h +0 -19
- data/ext/pg_query/include/storage/itemid.h +0 -184
- data/ext/pg_query/include/storage/itemptr.h +0 -206
- data/ext/pg_query/include/storage/large_object.h +0 -100
- data/ext/pg_query/include/storage/latch.h +0 -190
- data/ext/pg_query/include/storage/lmgr.h +0 -114
- data/ext/pg_query/include/storage/lock.h +0 -613
- data/ext/pg_query/include/storage/lockdefs.h +0 -59
- data/ext/pg_query/include/storage/lwlock.h +0 -233
- data/ext/pg_query/include/storage/lwlocknames.h +0 -51
- data/ext/pg_query/include/storage/off.h +0 -57
- data/ext/pg_query/include/storage/pg_sema.h +0 -61
- data/ext/pg_query/include/storage/pg_shmem.h +0 -90
- data/ext/pg_query/include/storage/pmsignal.h +0 -94
- data/ext/pg_query/include/storage/predicate.h +0 -87
- data/ext/pg_query/include/storage/proc.h +0 -347
- data/ext/pg_query/include/storage/proclist_types.h +0 -51
- data/ext/pg_query/include/storage/procsignal.h +0 -75
- data/ext/pg_query/include/storage/relfilenode.h +0 -99
- data/ext/pg_query/include/storage/s_lock.h +0 -1071
- data/ext/pg_query/include/storage/sharedfileset.h +0 -45
- data/ext/pg_query/include/storage/shm_mq.h +0 -85
- data/ext/pg_query/include/storage/shm_toc.h +0 -58
- data/ext/pg_query/include/storage/shmem.h +0 -81
- data/ext/pg_query/include/storage/sinval.h +0 -153
- data/ext/pg_query/include/storage/sinvaladt.h +0 -43
- data/ext/pg_query/include/storage/smgr.h +0 -109
- data/ext/pg_query/include/storage/spin.h +0 -77
- data/ext/pg_query/include/storage/standby.h +0 -91
- data/ext/pg_query/include/storage/standbydefs.h +0 -74
- data/ext/pg_query/include/storage/sync.h +0 -62
- data/ext/pg_query/include/tcop/cmdtag.h +0 -58
- data/ext/pg_query/include/tcop/cmdtaglist.h +0 -217
- data/ext/pg_query/include/tcop/deparse_utility.h +0 -108
- data/ext/pg_query/include/tcop/dest.h +0 -149
- data/ext/pg_query/include/tcop/fastpath.h +0 -21
- data/ext/pg_query/include/tcop/pquery.h +0 -51
- data/ext/pg_query/include/tcop/tcopprot.h +0 -89
- data/ext/pg_query/include/tcop/utility.h +0 -108
- data/ext/pg_query/include/tsearch/ts_cache.h +0 -98
- data/ext/pg_query/include/utils/acl.h +0 -312
- data/ext/pg_query/include/utils/aclchk_internal.h +0 -45
- data/ext/pg_query/include/utils/array.h +0 -459
- data/ext/pg_query/include/utils/builtins.h +0 -128
- data/ext/pg_query/include/utils/bytea.h +0 -27
- data/ext/pg_query/include/utils/catcache.h +0 -231
- data/ext/pg_query/include/utils/date.h +0 -90
- data/ext/pg_query/include/utils/datetime.h +0 -343
- data/ext/pg_query/include/utils/datum.h +0 -68
- data/ext/pg_query/include/utils/dsa.h +0 -123
- data/ext/pg_query/include/utils/dynahash.h +0 -19
- data/ext/pg_query/include/utils/elog.h +0 -439
- data/ext/pg_query/include/utils/errcodes.h +0 -352
- data/ext/pg_query/include/utils/expandeddatum.h +0 -159
- data/ext/pg_query/include/utils/expandedrecord.h +0 -231
- data/ext/pg_query/include/utils/float.h +0 -356
- data/ext/pg_query/include/utils/fmgroids.h +0 -2657
- data/ext/pg_query/include/utils/fmgrprotos.h +0 -2646
- data/ext/pg_query/include/utils/fmgrtab.h +0 -48
- data/ext/pg_query/include/utils/guc.h +0 -443
- data/ext/pg_query/include/utils/guc_tables.h +0 -272
- data/ext/pg_query/include/utils/hsearch.h +0 -149
- data/ext/pg_query/include/utils/inval.h +0 -65
- data/ext/pg_query/include/utils/lsyscache.h +0 -198
- data/ext/pg_query/include/utils/memdebug.h +0 -82
- data/ext/pg_query/include/utils/memutils.h +0 -225
- data/ext/pg_query/include/utils/numeric.h +0 -76
- data/ext/pg_query/include/utils/palloc.h +0 -136
- data/ext/pg_query/include/utils/partcache.h +0 -102
- data/ext/pg_query/include/utils/pg_locale.h +0 -119
- data/ext/pg_query/include/utils/pg_lsn.h +0 -29
- data/ext/pg_query/include/utils/pidfile.h +0 -56
- data/ext/pg_query/include/utils/plancache.h +0 -235
- data/ext/pg_query/include/utils/portal.h +0 -254
- data/ext/pg_query/include/utils/probes.h +0 -114
- data/ext/pg_query/include/utils/ps_status.h +0 -25
- data/ext/pg_query/include/utils/queryenvironment.h +0 -74
- data/ext/pg_query/include/utils/regproc.h +0 -28
- data/ext/pg_query/include/utils/rel.h +0 -643
- data/ext/pg_query/include/utils/relcache.h +0 -150
- data/ext/pg_query/include/utils/reltrigger.h +0 -81
- data/ext/pg_query/include/utils/resowner.h +0 -86
- data/ext/pg_query/include/utils/rls.h +0 -50
- data/ext/pg_query/include/utils/ruleutils.h +0 -44
- data/ext/pg_query/include/utils/sharedtuplestore.h +0 -61
- data/ext/pg_query/include/utils/snapmgr.h +0 -159
- data/ext/pg_query/include/utils/snapshot.h +0 -206
- data/ext/pg_query/include/utils/sortsupport.h +0 -276
- data/ext/pg_query/include/utils/syscache.h +0 -219
- data/ext/pg_query/include/utils/timeout.h +0 -88
- data/ext/pg_query/include/utils/timestamp.h +0 -116
- data/ext/pg_query/include/utils/tuplesort.h +0 -277
- data/ext/pg_query/include/utils/tuplestore.h +0 -91
- data/ext/pg_query/include/utils/typcache.h +0 -202
- data/ext/pg_query/include/utils/tzparser.h +0 -39
- data/ext/pg_query/include/utils/varlena.h +0 -39
- data/ext/pg_query/include/utils/xml.h +0 -84
- 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_backend_postmaster_postmaster.c +0 -2230
- data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -370
- data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1086
- data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1832
- data/ext/pg_query/src_common_string.c +0 -86
- data/ext/pg_query/src_port_erand48.c +0 -127
- data/ext/pg_query/src_port_pgsleep.c +0 -69
- data/ext/pg_query/src_port_random.c +0 -31
- data/ext/pg_query/src_port_strnlen.c +0 -39
- /data/ext/pg_query/{pg_query_ruby.sym → ext_symbols.sym} +0 -0
- /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
@@ -1,5 +1,3 @@
|
|
1
|
-
// Ensure we have asprintf's definition on glibc-based platforms to avoid compiler warnings
|
2
|
-
#define _GNU_SOURCE
|
3
1
|
#include <stdio.h>
|
4
2
|
|
5
3
|
#include "pg_query.h"
|
@@ -93,34 +91,48 @@ _fingerprintString(FingerprintContext *ctx, const char *str)
|
|
93
91
|
}
|
94
92
|
|
95
93
|
static void
|
96
|
-
_fingerprintInteger(FingerprintContext *ctx, const
|
94
|
+
_fingerprintInteger(FingerprintContext *ctx, const union ValUnion *value)
|
97
95
|
{
|
98
|
-
if (
|
96
|
+
if (value->ival.ival != 0) {
|
99
97
|
_fingerprintString(ctx, "Integer");
|
100
98
|
_fingerprintString(ctx, "ival");
|
101
99
|
char buffer[50];
|
102
|
-
sprintf(buffer, "%d",
|
100
|
+
sprintf(buffer, "%d", value->ival.ival);
|
103
101
|
_fingerprintString(ctx, buffer);
|
104
102
|
}
|
105
103
|
}
|
106
104
|
|
107
105
|
static void
|
108
|
-
_fingerprintFloat(FingerprintContext *ctx, const
|
106
|
+
_fingerprintFloat(FingerprintContext *ctx, const union ValUnion *value)
|
109
107
|
{
|
110
|
-
if (
|
108
|
+
if (value->fval.fval != NULL) {
|
109
|
+
// NB: We output `str` here intentionally, to match the output format from libpg_query 14
|
110
|
+
// and below. This results in stable fingerprints, despite the field name being changed in
|
111
|
+
// PG15 to `fval`.
|
111
112
|
_fingerprintString(ctx, "Float");
|
112
113
|
_fingerprintString(ctx, "str");
|
113
|
-
_fingerprintString(ctx,
|
114
|
+
_fingerprintString(ctx, value->fval.fval);
|
114
115
|
}
|
115
116
|
}
|
116
117
|
|
117
118
|
static void
|
118
|
-
|
119
|
+
_fingerprintBoolean(FingerprintContext *ctx, const union ValUnion *value)
|
119
120
|
{
|
120
|
-
|
121
|
+
_fingerprintString(ctx, "Boolean");
|
122
|
+
_fingerprintString(ctx, "boolval");
|
123
|
+
_fingerprintString(ctx, value->boolval.boolval ? "true" : "false");
|
124
|
+
}
|
125
|
+
|
126
|
+
static void
|
127
|
+
_fingerprintBitString(FingerprintContext *ctx, const union ValUnion *value)
|
128
|
+
{
|
129
|
+
if (value->bsval.bsval != NULL) {
|
130
|
+
// NB: We output `str` here intentionally, to match the output format from libpg_query 14
|
131
|
+
// and below. This results in stable fingerprints, despite the field name being changed in
|
132
|
+
// PG15 to `bsval`.
|
121
133
|
_fingerprintString(ctx, "BitString");
|
122
134
|
_fingerprintString(ctx, "str");
|
123
|
-
_fingerprintString(ctx,
|
135
|
+
_fingerprintString(ctx, value->bsval.bsval);
|
124
136
|
}
|
125
137
|
}
|
126
138
|
|
@@ -272,10 +284,16 @@ _fingerprintNode(FingerprintContext *ctx, const void *obj, const void *parent, c
|
|
272
284
|
case T_Float:
|
273
285
|
_fingerprintFloat(ctx, obj);
|
274
286
|
break;
|
287
|
+
case T_Boolean:
|
288
|
+
_fingerprintBoolean(ctx, obj);
|
289
|
+
break;
|
275
290
|
case T_String:
|
291
|
+
// NB: We output `str` here intentionally, to match the output format from libpg_query
|
292
|
+
// 14 and below. This results in stable fingerprints, despite the field name being
|
293
|
+
// changed in PG15 to `sval`.
|
276
294
|
_fingerprintString(ctx, "String");
|
277
295
|
_fingerprintString(ctx, "str");
|
278
|
-
_fingerprintString(ctx, ((
|
296
|
+
_fingerprintString(ctx, ((union ValUnion*) obj)->sval.sval);
|
279
297
|
break;
|
280
298
|
case T_BitString:
|
281
299
|
_fingerprintBitString(ctx, obj);
|
@@ -306,7 +324,7 @@ uint64_t pg_query_fingerprint_node(const void *node)
|
|
306
324
|
return result;
|
307
325
|
}
|
308
326
|
|
309
|
-
PgQueryFingerprintResult pg_query_fingerprint_with_opts(const char* input, bool printTokens)
|
327
|
+
PgQueryFingerprintResult pg_query_fingerprint_with_opts(const char* input, int parser_options, bool printTokens)
|
310
328
|
{
|
311
329
|
MemoryContext ctx = NULL;
|
312
330
|
PgQueryInternalParsetreeAndError parsetree_and_error;
|
@@ -314,7 +332,7 @@ PgQueryFingerprintResult pg_query_fingerprint_with_opts(const char* input, bool
|
|
314
332
|
|
315
333
|
ctx = pg_query_enter_memory_context();
|
316
334
|
|
317
|
-
parsetree_and_error = pg_query_raw_parse(input);
|
335
|
+
parsetree_and_error = pg_query_raw_parse(input, parser_options);
|
318
336
|
|
319
337
|
// These are all malloc-ed and will survive exiting the memory context, the caller is responsible to free them now
|
320
338
|
result.stderr_buffer = parsetree_and_error.stderr_buffer;
|
@@ -349,12 +367,13 @@ PgQueryFingerprintResult pg_query_fingerprint_with_opts(const char* input, bool
|
|
349
367
|
_fingerprintFreeContext(&ctx);
|
350
368
|
|
351
369
|
XXH64_canonicalFromHash(&chash, result.fingerprint);
|
352
|
-
|
370
|
+
result.fingerprint_str = malloc(17 * sizeof(char));
|
371
|
+
int n = snprintf(result.fingerprint_str, 17, "%02x%02x%02x%02x%02x%02x%02x%02x",
|
353
372
|
chash.digest[0], chash.digest[1], chash.digest[2], chash.digest[3],
|
354
373
|
chash.digest[4], chash.digest[5], chash.digest[6], chash.digest[7]);
|
355
|
-
if (
|
374
|
+
if (n < 0 || n >= 17) {
|
356
375
|
PgQueryError* error = malloc(sizeof(PgQueryError));
|
357
|
-
error->message = strdup("Failed to output fingerprint string due to
|
376
|
+
error->message = strdup("Failed to output fingerprint string due to snprintf failure");
|
358
377
|
result.error = error;
|
359
378
|
}
|
360
379
|
}
|
@@ -366,7 +385,12 @@ PgQueryFingerprintResult pg_query_fingerprint_with_opts(const char* input, bool
|
|
366
385
|
|
367
386
|
PgQueryFingerprintResult pg_query_fingerprint(const char* input)
|
368
387
|
{
|
369
|
-
return pg_query_fingerprint_with_opts(input, false);
|
388
|
+
return pg_query_fingerprint_with_opts(input, PG_QUERY_PARSE_DEFAULT, false);
|
389
|
+
}
|
390
|
+
|
391
|
+
PgQueryFingerprintResult pg_query_fingerprint_opts(const char* input, int parser_options)
|
392
|
+
{
|
393
|
+
return pg_query_fingerprint_with_opts(input, parser_options, false);
|
370
394
|
}
|
371
395
|
|
372
396
|
void pg_query_free_fingerprint_result(PgQueryFingerprintResult result)
|
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
#include <stdbool.h>
|
5
5
|
|
6
|
-
extern PgQueryFingerprintResult pg_query_fingerprint_with_opts(const char* input, bool printTokens);
|
6
|
+
extern PgQueryFingerprintResult pg_query_fingerprint_with_opts(const char* input, int parser_options, bool printTokens);
|
7
7
|
|
8
8
|
extern uint64_t pg_query_fingerprint_node(const void * node);
|
9
9
|
|
@@ -14,7 +14,7 @@ typedef struct {
|
|
14
14
|
PgQueryError* error;
|
15
15
|
} PgQueryInternalParsetreeAndError;
|
16
16
|
|
17
|
-
PgQueryInternalParsetreeAndError pg_query_raw_parse(const char* input);
|
17
|
+
PgQueryInternalParsetreeAndError pg_query_raw_parse(const char* input, int parser_options);
|
18
18
|
|
19
19
|
void pg_query_free_error(PgQueryError *error);
|
20
20
|
|
@@ -96,7 +96,6 @@ static void dump_row(StringInfo out, PLpgSQL_row *stmt);
|
|
96
96
|
static void dump_var(StringInfo out, PLpgSQL_var *stmt);
|
97
97
|
static void dump_variable(StringInfo out, PLpgSQL_variable *stmt);
|
98
98
|
static void dump_record_field(StringInfo out, PLpgSQL_recfield *node);
|
99
|
-
static void dump_array_elem(StringInfo out, PLpgSQL_arrayelem *node);
|
100
99
|
static void dump_stmt(StringInfo out, PLpgSQL_stmt *stmt);
|
101
100
|
static void dump_block(StringInfo out, PLpgSQL_stmt_block *block);
|
102
101
|
static void dump_exception_block(StringInfo out, PLpgSQL_exception_block *node);
|
@@ -130,7 +129,6 @@ static void dump_perform(StringInfo out, PLpgSQL_stmt_perform *stmt);
|
|
130
129
|
static void dump_call(StringInfo out, PLpgSQL_stmt_call *stmt);
|
131
130
|
static void dump_commit(StringInfo out, PLpgSQL_stmt_commit *stmt);
|
132
131
|
static void dump_rollback(StringInfo out, PLpgSQL_stmt_rollback *stmt);
|
133
|
-
static void dump_set(StringInfo out, PLpgSQL_stmt_set *stmt);
|
134
132
|
static void dump_expr(StringInfo out, PLpgSQL_expr *expr);
|
135
133
|
static void dump_function(StringInfo out, PLpgSQL_function *func);
|
136
134
|
static void dump_exception(StringInfo out, PLpgSQL_exception *node);
|
@@ -224,9 +222,6 @@ dump_stmt(StringInfo out, PLpgSQL_stmt *node)
|
|
224
222
|
case PLPGSQL_STMT_ROLLBACK:
|
225
223
|
dump_rollback(out, (PLpgSQL_stmt_rollback *) node);
|
226
224
|
break;
|
227
|
-
case PLPGSQL_STMT_SET:
|
228
|
-
dump_set(out, (PLpgSQL_stmt_set *) node);
|
229
|
-
break;
|
230
225
|
default:
|
231
226
|
elog(ERROR, "unrecognized cmd_type: %d", node->cmd_type);
|
232
227
|
break;
|
@@ -493,15 +488,6 @@ dump_rollback(StringInfo out, PLpgSQL_stmt_rollback *node)
|
|
493
488
|
WRITE_BOOL_FIELD(chain, chain, chain);
|
494
489
|
}
|
495
490
|
|
496
|
-
static void
|
497
|
-
dump_set(StringInfo out, PLpgSQL_stmt_set *node)
|
498
|
-
{
|
499
|
-
WRITE_NODE_TYPE("PLpgSQL_stmt_set");
|
500
|
-
|
501
|
-
WRITE_INT_FIELD(lineno, lineno, lineno);
|
502
|
-
WRITE_EXPR_FIELD(expr);
|
503
|
-
}
|
504
|
-
|
505
491
|
static void
|
506
492
|
dump_exit(StringInfo out, PLpgSQL_stmt_exit *node)
|
507
493
|
{
|
@@ -640,6 +626,7 @@ dump_expr(StringInfo out, PLpgSQL_expr *node)
|
|
640
626
|
WRITE_NODE_TYPE("PLpgSQL_expr");
|
641
627
|
|
642
628
|
WRITE_STRING_FIELD(query, query, query);
|
629
|
+
WRITE_ENUM_FIELD(parseMode, parseMode, parseMode);
|
643
630
|
}
|
644
631
|
|
645
632
|
static void
|
@@ -673,9 +660,6 @@ dump_function(StringInfo out, PLpgSQL_function *node)
|
|
673
660
|
case PLPGSQL_DTYPE_RECFIELD:
|
674
661
|
dump_record_field(out, (PLpgSQL_recfield *) d);
|
675
662
|
break;
|
676
|
-
case PLPGSQL_DTYPE_ARRAYELEM:
|
677
|
-
dump_array_elem(out, (PLpgSQL_arrayelem *) d);
|
678
|
-
break;
|
679
663
|
default:
|
680
664
|
elog(WARNING, "could not dump unrecognized dtype: %d",
|
681
665
|
(int) d->dtype);
|
@@ -780,14 +764,6 @@ dump_record_field(StringInfo out, PLpgSQL_recfield *node) {
|
|
780
764
|
WRITE_INT_FIELD(recparentno, recparentno, recparentno);
|
781
765
|
}
|
782
766
|
|
783
|
-
static void
|
784
|
-
dump_array_elem(StringInfo out, PLpgSQL_arrayelem *node) {
|
785
|
-
WRITE_NODE_TYPE("PLpgSQL_arrayelem");
|
786
|
-
|
787
|
-
WRITE_EXPR_FIELD(subscript);
|
788
|
-
WRITE_INT_FIELD(arrayparentno, arrayparentno, arrayparentno);
|
789
|
-
}
|
790
|
-
|
791
767
|
char *
|
792
768
|
plpgsqlToJSON(PLpgSQL_function *func)
|
793
769
|
{
|
@@ -48,6 +48,9 @@ typedef struct pgssConstLocations
|
|
48
48
|
int *param_refs;
|
49
49
|
int param_refs_buf_size;
|
50
50
|
int param_refs_count;
|
51
|
+
|
52
|
+
/* Should only utility statements be normalized? Set by pg_query_normalize_utility */
|
53
|
+
bool normalize_utility_only;
|
51
54
|
} pgssConstLocations;
|
52
55
|
|
53
56
|
/*
|
@@ -398,8 +401,10 @@ static bool const_record_walker(Node *node, pgssConstLocations *jstate)
|
|
398
401
|
case T_RawStmt:
|
399
402
|
return const_record_walker((Node *) ((RawStmt *) node)->stmt, jstate);
|
400
403
|
case T_VariableSetStmt:
|
404
|
+
if (jstate->normalize_utility_only) return false;
|
401
405
|
return const_record_walker((Node *) ((VariableSetStmt *) node)->args, jstate);
|
402
406
|
case T_CopyStmt:
|
407
|
+
if (jstate->normalize_utility_only) return false;
|
403
408
|
return const_record_walker((Node *) ((CopyStmt *) node)->query, jstate);
|
404
409
|
case T_ExplainStmt:
|
405
410
|
return const_record_walker((Node *) ((ExplainStmt *) node)->query, jstate);
|
@@ -408,16 +413,19 @@ static bool const_record_walker(Node *node, pgssConstLocations *jstate)
|
|
408
413
|
case T_AlterRoleStmt:
|
409
414
|
return const_record_walker((Node *) ((AlterRoleStmt *) node)->options, jstate);
|
410
415
|
case T_DeclareCursorStmt:
|
416
|
+
if (jstate->normalize_utility_only) return false;
|
411
417
|
return const_record_walker((Node *) ((DeclareCursorStmt *) node)->query, jstate);
|
412
418
|
case T_CreateFunctionStmt:
|
419
|
+
if (jstate->normalize_utility_only) return false;
|
413
420
|
return const_record_walker((Node *) ((CreateFunctionStmt *) node)->options, jstate);
|
414
421
|
case T_DoStmt:
|
422
|
+
if (jstate->normalize_utility_only) return false;
|
415
423
|
return const_record_walker((Node *) ((DoStmt *) node)->args, jstate);
|
416
424
|
case T_CreateSubscriptionStmt:
|
417
425
|
record_matching_string(jstate, ((CreateSubscriptionStmt *) node)->conninfo);
|
418
426
|
break;
|
419
427
|
case T_AlterSubscriptionStmt:
|
420
|
-
record_matching_string(jstate, ((
|
428
|
+
record_matching_string(jstate, ((AlterSubscriptionStmt *) node)->conninfo);
|
421
429
|
break;
|
422
430
|
case T_CreateUserMappingStmt:
|
423
431
|
return const_record_walker((Node *) ((CreateUserMappingStmt *) node)->options, jstate);
|
@@ -428,6 +436,7 @@ static bool const_record_walker(Node *node, pgssConstLocations *jstate)
|
|
428
436
|
return false;
|
429
437
|
case T_SelectStmt:
|
430
438
|
{
|
439
|
+
if (jstate->normalize_utility_only) return false;
|
431
440
|
SelectStmt *stmt = (SelectStmt *) node;
|
432
441
|
ListCell *lc;
|
433
442
|
List *fp_and_param_refs_list = NIL;
|
@@ -540,6 +549,26 @@ static bool const_record_walker(Node *node, pgssConstLocations *jstate)
|
|
540
549
|
|
541
550
|
return false;
|
542
551
|
}
|
552
|
+
case T_MergeStmt:
|
553
|
+
{
|
554
|
+
if (jstate->normalize_utility_only) return false;
|
555
|
+
return raw_expression_tree_walker(node, const_record_walker, (void*) jstate);
|
556
|
+
}
|
557
|
+
case T_InsertStmt:
|
558
|
+
{
|
559
|
+
if (jstate->normalize_utility_only) return false;
|
560
|
+
return raw_expression_tree_walker(node, const_record_walker, (void*) jstate);
|
561
|
+
}
|
562
|
+
case T_UpdateStmt:
|
563
|
+
{
|
564
|
+
if (jstate->normalize_utility_only) return false;
|
565
|
+
return raw_expression_tree_walker(node, const_record_walker, (void*) jstate);
|
566
|
+
}
|
567
|
+
case T_DeleteStmt:
|
568
|
+
{
|
569
|
+
if (jstate->normalize_utility_only) return false;
|
570
|
+
return raw_expression_tree_walker(node, const_record_walker, (void*) jstate);
|
571
|
+
}
|
543
572
|
default:
|
544
573
|
{
|
545
574
|
PG_TRY();
|
@@ -558,7 +587,7 @@ static bool const_record_walker(Node *node, pgssConstLocations *jstate)
|
|
558
587
|
return false;
|
559
588
|
}
|
560
589
|
|
561
|
-
PgQueryNormalizeResult
|
590
|
+
PgQueryNormalizeResult pg_query_normalize_ext(const char* input, bool normalize_utility_only)
|
562
591
|
{
|
563
592
|
MemoryContext ctx = NULL;
|
564
593
|
PgQueryNormalizeResult result = {0};
|
@@ -572,7 +601,7 @@ PgQueryNormalizeResult pg_query_normalize(const char* input)
|
|
572
601
|
int query_len;
|
573
602
|
|
574
603
|
/* Parse query */
|
575
|
-
tree = raw_parser(input);
|
604
|
+
tree = raw_parser(input, RAW_PARSE_DEFAULT);
|
576
605
|
|
577
606
|
query_len = (int) strlen(input);
|
578
607
|
|
@@ -588,6 +617,7 @@ PgQueryNormalizeResult pg_query_normalize(const char* input)
|
|
588
617
|
jstate.param_refs = NULL;
|
589
618
|
jstate.param_refs_buf_size = 0;
|
590
619
|
jstate.param_refs_count = 0;
|
620
|
+
jstate.normalize_utility_only = normalize_utility_only;
|
591
621
|
|
592
622
|
/* Walk tree and record const locations */
|
593
623
|
const_record_walker((Node *) tree, &jstate);
|
@@ -621,6 +651,17 @@ PgQueryNormalizeResult pg_query_normalize(const char* input)
|
|
621
651
|
return result;
|
622
652
|
}
|
623
653
|
|
654
|
+
PgQueryNormalizeResult pg_query_normalize(const char* input)
|
655
|
+
{
|
656
|
+
return pg_query_normalize_ext(input, false);
|
657
|
+
}
|
658
|
+
|
659
|
+
|
660
|
+
PgQueryNormalizeResult pg_query_normalize_utility(const char* input)
|
661
|
+
{
|
662
|
+
return pg_query_normalize_ext(input, true);
|
663
|
+
}
|
664
|
+
|
624
665
|
void pg_query_free_normalize_result(PgQueryNormalizeResult result)
|
625
666
|
{
|
626
667
|
if (result.error) {
|
@@ -36,6 +36,12 @@
|
|
36
36
|
appendStringInfo(out, "\"" CppAsString(outname_json) "\":%u,", node->fldname); \
|
37
37
|
}
|
38
38
|
|
39
|
+
/* Write an unsigned integer field */
|
40
|
+
#define WRITE_UINT64_FIELD(outname, outname_json, fldname) \
|
41
|
+
if (node->fldname != 0) { \
|
42
|
+
appendStringInfo(out, "\"" CppAsString(outname_json) "\":" UINT64_FORMAT ",", node->fldname); \
|
43
|
+
}
|
44
|
+
|
39
45
|
/* Write a long-integer field */
|
40
46
|
#define WRITE_LONG_FIELD(outname, outname_json, fldname) \
|
41
47
|
if (node->fldname != 0) { \
|
@@ -195,39 +201,79 @@ _outOidList(StringInfo out, const List *node)
|
|
195
201
|
}
|
196
202
|
|
197
203
|
static void
|
198
|
-
_outInteger(StringInfo out, const
|
204
|
+
_outInteger(StringInfo out, const Integer *node)
|
199
205
|
{
|
200
|
-
|
206
|
+
/* Don't output anything if the value is the default (0), to match
|
207
|
+
* protobuf's behavior. */
|
208
|
+
if (node->ival != 0)
|
209
|
+
appendStringInfo(out, "\"ival\":%d", node->ival);
|
201
210
|
}
|
202
211
|
|
203
212
|
static void
|
204
|
-
|
213
|
+
_outBoolean(StringInfo out, const Boolean *node)
|
205
214
|
{
|
206
|
-
appendStringInfo(out, "\"
|
207
|
-
_outToken(out, node->val.str);
|
208
|
-
appendStringInfo(out, ",");
|
215
|
+
appendStringInfo(out, "\"boolval\":%s", booltostr(node->boolval));
|
209
216
|
}
|
210
217
|
|
211
218
|
static void
|
212
|
-
|
219
|
+
_outFloat(StringInfo out, const Float *node)
|
213
220
|
{
|
214
|
-
appendStringInfo(out, "\"
|
215
|
-
_outToken(out, node->
|
216
|
-
appendStringInfo(out, ",");
|
221
|
+
appendStringInfo(out, "\"fval\":");
|
222
|
+
_outToken(out, node->fval);
|
217
223
|
}
|
218
224
|
|
219
225
|
static void
|
220
|
-
|
226
|
+
_outString(StringInfo out, const String *node)
|
221
227
|
{
|
222
|
-
appendStringInfo(out, "\"
|
223
|
-
_outToken(out, node->
|
224
|
-
appendStringInfo(out, ",");
|
228
|
+
appendStringInfo(out, "\"sval\":");
|
229
|
+
_outToken(out, node->sval);
|
225
230
|
}
|
226
231
|
|
227
232
|
static void
|
228
|
-
|
233
|
+
_outBitString(StringInfo out, const BitString *node)
|
229
234
|
{
|
230
|
-
|
235
|
+
appendStringInfo(out, "\"bsval\":");
|
236
|
+
_outToken(out, node->bsval);
|
237
|
+
}
|
238
|
+
|
239
|
+
static void
|
240
|
+
_outAConst(StringInfo out, const A_Const *node)
|
241
|
+
{
|
242
|
+
if (node->isnull) {
|
243
|
+
appendStringInfo(out, "\"isnull\":true");
|
244
|
+
} else {
|
245
|
+
switch (node->val.node.type) {
|
246
|
+
case T_Integer:
|
247
|
+
appendStringInfoString(out, "\"ival\":{");
|
248
|
+
_outInteger(out, &node->val.ival);
|
249
|
+
appendStringInfoChar(out, '}');
|
250
|
+
break;
|
251
|
+
case T_Float:
|
252
|
+
appendStringInfoString(out, "\"fval\":{");
|
253
|
+
_outFloat(out, &node->val.fval);
|
254
|
+
appendStringInfoChar(out, '}');
|
255
|
+
break;
|
256
|
+
case T_Boolean:
|
257
|
+
appendStringInfo(out, "\"boolval\":{%s}", node->val.boolval.boolval ? "\"boolval\":true" : "");
|
258
|
+
break;
|
259
|
+
case T_String:
|
260
|
+
appendStringInfoString(out, "\"sval\":{");
|
261
|
+
_outString(out, &node->val.sval);
|
262
|
+
appendStringInfoChar(out, '}');
|
263
|
+
break;
|
264
|
+
case T_BitString:
|
265
|
+
appendStringInfoString(out, "\"bsval\":{");
|
266
|
+
_outBitString(out, &node->val.bsval);
|
267
|
+
appendStringInfoChar(out, '}');
|
268
|
+
break;
|
269
|
+
|
270
|
+
// Unreachable, A_Const cannot contain any other nodes.
|
271
|
+
default:
|
272
|
+
Assert(false);
|
273
|
+
}
|
274
|
+
}
|
275
|
+
|
276
|
+
appendStringInfo(out, ",\"location\":%d", node->location);
|
231
277
|
}
|
232
278
|
|
233
279
|
#include "pg_query_enum_defs.c"
|
@@ -23,6 +23,7 @@
|
|
23
23
|
|
24
24
|
#define WRITE_INT_FIELD(outname, outname_json, fldname) out->outname = node->fldname;
|
25
25
|
#define WRITE_UINT_FIELD(outname, outname_json, fldname) out->outname = node->fldname;
|
26
|
+
#define WRITE_UINT64_FIELD(outname, outname_json, fldname) out->outname = node->fldname;
|
26
27
|
#define WRITE_LONG_FIELD(outname, outname_json, fldname) out->outname = node->fldname;
|
27
28
|
#define WRITE_FLOAT_FIELD(outname, outname_json, fldname) out->outname = node->fldname;
|
28
29
|
#define WRITE_BOOL_FIELD(outname, outname_json, fldname) out->outname = node->fldname;
|
@@ -57,11 +58,11 @@
|
|
57
58
|
#define WRITE_BITMAPSET_FIELD(outname, outname_json, fldname) \
|
58
59
|
if (!bms_is_empty(node->fldname)) \
|
59
60
|
{ \
|
60
|
-
int x =
|
61
|
+
int x = -1; \
|
61
62
|
int i = 0; \
|
62
63
|
out->n_##outname = bms_num_members(node->fldname); \
|
63
64
|
out->outname = palloc(sizeof(PgQuery__Node*) * out->n_##outname); \
|
64
|
-
while ((x =
|
65
|
+
while ((x = bms_next_member(node->fldname, x)) >= 0) \
|
65
66
|
out->outname[i++] = x; \
|
66
67
|
}
|
67
68
|
|
@@ -150,33 +151,93 @@ _outOidList(PgQuery__OidList* out, const List *node)
|
|
150
151
|
// TODO: Add Bitmapset
|
151
152
|
|
152
153
|
static void
|
153
|
-
_outInteger(PgQuery__Integer* out, const
|
154
|
+
_outInteger(PgQuery__Integer* out, const Integer *node)
|
154
155
|
{
|
155
|
-
out->ival = node->
|
156
|
+
out->ival = node->ival;
|
156
157
|
}
|
157
158
|
|
158
159
|
static void
|
159
|
-
_outFloat(PgQuery__Float* out, const
|
160
|
+
_outFloat(PgQuery__Float* out, const Float *node)
|
160
161
|
{
|
161
|
-
out->
|
162
|
+
out->fval = node->fval;
|
162
163
|
}
|
163
164
|
|
164
165
|
static void
|
165
|
-
|
166
|
+
_outBoolean(PgQuery__Boolean* out, const Boolean *node)
|
166
167
|
{
|
167
|
-
out->
|
168
|
+
out->boolval = node->boolval;
|
168
169
|
}
|
169
170
|
|
170
171
|
static void
|
171
|
-
|
172
|
+
_outString(PgQuery__String* out, const String *node)
|
172
173
|
{
|
173
|
-
out->
|
174
|
+
out->sval = node->sval;
|
174
175
|
}
|
175
176
|
|
176
177
|
static void
|
177
|
-
|
178
|
+
_outBitString(PgQuery__BitString* out, const BitString *node)
|
178
179
|
{
|
179
|
-
|
180
|
+
out->bsval = node->bsval;
|
181
|
+
}
|
182
|
+
|
183
|
+
static void
|
184
|
+
_outAConst(PgQuery__AConst* out, const A_Const *node)
|
185
|
+
{
|
186
|
+
out->isnull = node->isnull;
|
187
|
+
out->location = node->location;
|
188
|
+
|
189
|
+
if (!node->isnull) {
|
190
|
+
switch (nodeTag(&node->val.node)) {
|
191
|
+
case T_Integer: {
|
192
|
+
PgQuery__Integer *value = palloc(sizeof(PgQuery__Integer));
|
193
|
+
pg_query__integer__init(value);
|
194
|
+
value->ival = node->val.ival.ival;
|
195
|
+
|
196
|
+
out->val_case = PG_QUERY__A__CONST__VAL_IVAL;
|
197
|
+
out->ival = value;
|
198
|
+
break;
|
199
|
+
}
|
200
|
+
case T_Float: {
|
201
|
+
PgQuery__Float *value = palloc(sizeof(PgQuery__Float));
|
202
|
+
pg_query__float__init(value);
|
203
|
+
value->fval = pstrdup(node->val.fval.fval);
|
204
|
+
|
205
|
+
out->val_case = PG_QUERY__A__CONST__VAL_FVAL;
|
206
|
+
out->fval = value;
|
207
|
+
break;
|
208
|
+
}
|
209
|
+
case T_Boolean: {
|
210
|
+
PgQuery__Boolean *value = palloc(sizeof(PgQuery__Boolean));
|
211
|
+
pg_query__boolean__init(value);
|
212
|
+
value->boolval = node->val.boolval.boolval;
|
213
|
+
|
214
|
+
out->val_case = PG_QUERY__A__CONST__VAL_BOOLVAL;
|
215
|
+
out->boolval = value;
|
216
|
+
break;
|
217
|
+
}
|
218
|
+
case T_String: {
|
219
|
+
PgQuery__String *value = palloc(sizeof(PgQuery__String));
|
220
|
+
pg_query__string__init(value);
|
221
|
+
value->sval = pstrdup(node->val.sval.sval);
|
222
|
+
|
223
|
+
out->val_case = PG_QUERY__A__CONST__VAL_SVAL;
|
224
|
+
out->sval = value;
|
225
|
+
break;
|
226
|
+
}
|
227
|
+
case T_BitString: {
|
228
|
+
PgQuery__BitString *value = palloc(sizeof(PgQuery__BitString));
|
229
|
+
pg_query__bit_string__init(value);
|
230
|
+
value->bsval = pstrdup(node->val.bsval.bsval);
|
231
|
+
|
232
|
+
out->val_case = PG_QUERY__A__CONST__VAL_BSVAL;
|
233
|
+
out->bsval = value;
|
234
|
+
break;
|
235
|
+
}
|
236
|
+
default:
|
237
|
+
// Unreachable
|
238
|
+
Assert(false);
|
239
|
+
}
|
240
|
+
}
|
180
241
|
}
|
181
242
|
|
182
243
|
#include "pg_query_enum_defs.c"
|
@@ -9,7 +9,7 @@
|
|
9
9
|
#include <unistd.h>
|
10
10
|
#include <fcntl.h>
|
11
11
|
|
12
|
-
PgQueryInternalParsetreeAndError pg_query_raw_parse(const char* input)
|
12
|
+
PgQueryInternalParsetreeAndError pg_query_raw_parse(const char* input, int parser_options)
|
13
13
|
{
|
14
14
|
PgQueryInternalParsetreeAndError result = {0};
|
15
15
|
MemoryContext parse_context = CurrentMemoryContext;
|
@@ -42,7 +42,39 @@ PgQueryInternalParsetreeAndError pg_query_raw_parse(const char* input)
|
|
42
42
|
|
43
43
|
PG_TRY();
|
44
44
|
{
|
45
|
-
|
45
|
+
RawParseMode rawParseMode = RAW_PARSE_DEFAULT;
|
46
|
+
switch (parser_options & PG_QUERY_PARSE_MODE_BITMASK)
|
47
|
+
{
|
48
|
+
case PG_QUERY_PARSE_TYPE_NAME:
|
49
|
+
rawParseMode = RAW_PARSE_TYPE_NAME;
|
50
|
+
break;
|
51
|
+
case PG_QUERY_PARSE_PLPGSQL_EXPR:
|
52
|
+
rawParseMode = RAW_PARSE_PLPGSQL_EXPR;
|
53
|
+
break;
|
54
|
+
case PG_QUERY_PARSE_PLPGSQL_ASSIGN1:
|
55
|
+
rawParseMode = RAW_PARSE_PLPGSQL_ASSIGN1;
|
56
|
+
break;
|
57
|
+
case PG_QUERY_PARSE_PLPGSQL_ASSIGN2:
|
58
|
+
rawParseMode = RAW_PARSE_PLPGSQL_ASSIGN2;
|
59
|
+
break;
|
60
|
+
case PG_QUERY_PARSE_PLPGSQL_ASSIGN3:
|
61
|
+
rawParseMode = RAW_PARSE_PLPGSQL_ASSIGN3;
|
62
|
+
break;
|
63
|
+
}
|
64
|
+
|
65
|
+
if ((parser_options & PG_QUERY_DISABLE_BACKSLASH_QUOTE) == PG_QUERY_DISABLE_BACKSLASH_QUOTE) {
|
66
|
+
backslash_quote = BACKSLASH_QUOTE_OFF;
|
67
|
+
} else {
|
68
|
+
backslash_quote = BACKSLASH_QUOTE_SAFE_ENCODING;
|
69
|
+
}
|
70
|
+
standard_conforming_strings = !((parser_options & PG_QUERY_DISABLE_STANDARD_CONFORMING_STRINGS) == PG_QUERY_DISABLE_STANDARD_CONFORMING_STRINGS);
|
71
|
+
escape_string_warning = !((parser_options & PG_QUERY_DISABLE_ESCAPE_STRING_WARNING) == PG_QUERY_DISABLE_ESCAPE_STRING_WARNING);
|
72
|
+
|
73
|
+
result.tree = raw_parser(input, rawParseMode);
|
74
|
+
|
75
|
+
backslash_quote = BACKSLASH_QUOTE_SAFE_ENCODING;
|
76
|
+
standard_conforming_strings = true;
|
77
|
+
escape_string_warning = true;
|
46
78
|
|
47
79
|
#ifndef DEBUG
|
48
80
|
// Save stderr for result
|
@@ -84,6 +116,11 @@ PgQueryInternalParsetreeAndError pg_query_raw_parse(const char* input)
|
|
84
116
|
}
|
85
117
|
|
86
118
|
PgQueryParseResult pg_query_parse(const char* input)
|
119
|
+
{
|
120
|
+
return pg_query_parse_opts(input, PG_QUERY_PARSE_DEFAULT);
|
121
|
+
}
|
122
|
+
|
123
|
+
PgQueryParseResult pg_query_parse_opts(const char* input, int parser_options)
|
87
124
|
{
|
88
125
|
MemoryContext ctx = NULL;
|
89
126
|
PgQueryInternalParsetreeAndError parsetree_and_error;
|
@@ -92,7 +129,7 @@ PgQueryParseResult pg_query_parse(const char* input)
|
|
92
129
|
|
93
130
|
ctx = pg_query_enter_memory_context();
|
94
131
|
|
95
|
-
parsetree_and_error = pg_query_raw_parse(input);
|
132
|
+
parsetree_and_error = pg_query_raw_parse(input, parser_options);
|
96
133
|
|
97
134
|
// These are all malloc-ed and will survive exiting the memory context, the caller is responsible to free them now
|
98
135
|
result.stderr_buffer = parsetree_and_error.stderr_buffer;
|
@@ -108,14 +145,19 @@ PgQueryParseResult pg_query_parse(const char* input)
|
|
108
145
|
}
|
109
146
|
|
110
147
|
PgQueryProtobufParseResult pg_query_parse_protobuf(const char* input)
|
148
|
+
{
|
149
|
+
return pg_query_parse_protobuf_opts(input, PG_QUERY_PARSE_DEFAULT);
|
150
|
+
}
|
151
|
+
|
152
|
+
PgQueryProtobufParseResult pg_query_parse_protobuf_opts(const char* input, int parser_options)
|
111
153
|
{
|
112
154
|
MemoryContext ctx = NULL;
|
113
155
|
PgQueryInternalParsetreeAndError parsetree_and_error;
|
114
|
-
PgQueryProtobufParseResult result = {};
|
156
|
+
PgQueryProtobufParseResult result = {0};
|
115
157
|
|
116
158
|
ctx = pg_query_enter_memory_context();
|
117
159
|
|
118
|
-
parsetree_and_error = pg_query_raw_parse(input);
|
160
|
+
parsetree_and_error = pg_query_raw_parse(input, parser_options);
|
119
161
|
|
120
162
|
// These are all malloc-ed and will survive exiting the memory context, the caller is responsible to free them now
|
121
163
|
result.stderr_buffer = parsetree_and_error.stderr_buffer;
|