pg_query 2.0.3 → 5.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 +165 -0
- data/README.md +67 -29
- data/Rakefile +8 -23
- data/ext/pg_query/extconf.rb +21 -3
- data/ext/pg_query/include/pg_query.h +29 -4
- data/ext/pg_query/include/pg_query_enum_defs.c +551 -272
- data/ext/pg_query/include/pg_query_fingerprint_conds.c +563 -470
- data/ext/pg_query/include/pg_query_fingerprint_defs.c +5403 -3945
- data/ext/pg_query/include/pg_query_outfuncs_conds.c +402 -330
- data/ext/pg_query/include/pg_query_outfuncs_defs.c +1319 -1059
- data/ext/pg_query/include/pg_query_readfuncs_conds.c +141 -118
- data/ext/pg_query/include/pg_query_readfuncs_defs.c +1685 -1379
- data/ext/pg_query/include/{access → postgres/access}/amapi.h +47 -1
- data/ext/pg_query/include/{access → postgres/access}/attmap.h +5 -3
- data/ext/pg_query/include/{access → postgres/access}/attnum.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/clog.h +4 -2
- data/ext/pg_query/include/{access → postgres/access}/commit_ts.h +6 -9
- data/ext/pg_query/include/{access → postgres/access}/detoast.h +1 -11
- data/ext/pg_query/include/{access → postgres/access}/genam.h +21 -16
- data/ext/pg_query/include/{access → postgres/access}/gin.h +17 -4
- data/ext/pg_query/include/{access → postgres/access}/htup.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/htup_details.h +80 -88
- data/ext/pg_query/include/{access → postgres/access}/itup.h +61 -52
- data/ext/pg_query/include/{access → postgres/access}/parallel.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/printtup.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/relation.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/relscan.h +17 -2
- data/ext/pg_query/include/postgres/access/rmgr.h +62 -0
- data/ext/pg_query/include/{access → postgres/access}/rmgrlist.h +24 -24
- data/ext/pg_query/include/{access → postgres/access}/sdir.h +12 -3
- data/ext/pg_query/include/{access → postgres/access}/skey.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/stratnum.h +4 -2
- data/ext/pg_query/include/{access → postgres/access}/sysattr.h +1 -1
- data/ext/pg_query/include/{access → postgres/access}/table.h +2 -1
- data/ext/pg_query/include/{access → postgres/access}/tableam.h +337 -62
- data/ext/pg_query/include/postgres/access/toast_compression.h +73 -0
- data/ext/pg_query/include/{access → postgres/access}/transam.h +123 -13
- data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
- data/ext/pg_query/include/{access → postgres/access}/tupconvert.h +5 -2
- data/ext/pg_query/include/{access → postgres/access}/tupdesc.h +2 -2
- data/ext/pg_query/include/{access → postgres/access}/tupmacs.h +60 -100
- data/ext/pg_query/include/{access → postgres/access}/twophase.h +5 -1
- data/ext/pg_query/include/{access → postgres/access}/xact.h +99 -32
- data/ext/pg_query/include/{access → postgres/access}/xlog.h +69 -165
- data/ext/pg_query/include/{access → postgres/access}/xlog_internal.h +147 -73
- data/ext/pg_query/include/postgres/access/xlogbackup.h +41 -0
- data/ext/pg_query/include/{access → postgres/access}/xlogdefs.h +13 -40
- data/ext/pg_query/include/postgres/access/xlogprefetcher.h +55 -0
- data/ext/pg_query/include/{access → postgres/access}/xlogreader.h +154 -37
- data/ext/pg_query/include/{access → postgres/access}/xlogrecord.h +34 -13
- data/ext/pg_query/include/postgres/access/xlogrecovery.h +158 -0
- data/ext/pg_query/include/postgres/archive/archive_module.h +59 -0
- data/ext/pg_query/include/{c.h → postgres/c.h} +245 -188
- data/ext/pg_query/include/{catalog → postgres/catalog}/catalog.h +6 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/catversion.h +6 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/dependency.h +14 -19
- data/ext/pg_query/include/postgres/catalog/genbki.h +143 -0
- data/ext/pg_query/include/{catalog → postgres/catalog}/index.h +20 -5
- data/ext/pg_query/include/postgres/catalog/indexing.h +54 -0
- data/ext/pg_query/include/{catalog → postgres/catalog}/namespace.h +5 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/objectaccess.h +73 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/objectaddress.h +12 -7
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate.h +14 -10
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate_d.h +2 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am.h +4 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute.h +45 -26
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute_d.h +19 -16
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid.h +7 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid_d.h +19 -9
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class.h +45 -15
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class_d.h +31 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation.h +35 -8
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation_d.h +21 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint.h +39 -13
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint_d.h +10 -4
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_control.h +13 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion.h +8 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion_d.h +4 -1
- data/ext/pg_query/include/postgres/catalog/pg_database.h +124 -0
- data/ext/pg_query/include/postgres/catalog/pg_database_d.h +52 -0
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend.h +11 -7
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger.h +9 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index.h +17 -7
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index_d.h +20 -17
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language.h +10 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace.h +7 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass.h +8 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator.h +21 -16
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator_d.h +37 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily.h +8 -4
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily_d.h +6 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table.h +20 -9
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table_d.h +2 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc.h +20 -11
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc_d.h +10 -8
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication.h +49 -6
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin.h +6 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin_d.h +5 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic.h +19 -12
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_d.h +2 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext.h +19 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext_d.h +7 -2
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform.h +8 -5
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger.h +24 -8
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger_d.h +4 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config.h +6 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict.h +8 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser.h +6 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template.h +6 -3
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template_d.h +3 -1
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type.h +56 -24
- data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type_d.h +70 -31
- data/ext/pg_query/include/{catalog → postgres/catalog}/storage.h +9 -7
- data/ext/pg_query/include/{commands → postgres/commands}/async.h +4 -5
- data/ext/pg_query/include/{commands → postgres/commands}/dbcommands.h +3 -1
- data/ext/pg_query/include/{commands → postgres/commands}/defrem.h +12 -24
- data/ext/pg_query/include/{commands → postgres/commands}/event_trigger.h +2 -2
- data/ext/pg_query/include/{commands → postgres/commands}/explain.h +3 -1
- data/ext/pg_query/include/{commands → postgres/commands}/prepare.h +1 -1
- data/ext/pg_query/include/{commands → postgres/commands}/tablespace.h +6 -4
- data/ext/pg_query/include/{commands → postgres/commands}/trigger.h +36 -25
- data/ext/pg_query/include/{commands → postgres/commands}/user.h +10 -4
- data/ext/pg_query/include/{commands → postgres/commands}/vacuum.h +140 -47
- data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
- data/ext/pg_query/include/{common → postgres/common}/file_perm.h +4 -4
- data/ext/pg_query/include/{common → postgres/common}/hashfn.h +1 -1
- data/ext/pg_query/include/postgres/common/int.h +437 -0
- data/ext/pg_query/include/{common → postgres/common}/keywords.h +2 -6
- data/ext/pg_query/include/{common → postgres/common}/kwlookup.h +2 -2
- data/ext/pg_query/include/postgres/common/pg_prng.h +61 -0
- data/ext/pg_query/include/{common → postgres/common}/relpath.h +21 -14
- 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 +125 -0
- data/ext/pg_query/include/{common/unicode_combining_table.h → postgres/common/unicode_nonspacing_table.h} +138 -8
- data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5013 -0
- data/ext/pg_query/include/postgres/copyfuncs.switch.c +938 -0
- data/ext/pg_query/include/{datatype → postgres/datatype}/timestamp.h +50 -4
- data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3097 -0
- data/ext/pg_query/include/postgres/equalfuncs.switch.c +785 -0
- data/ext/pg_query/include/{executor → postgres/executor}/execdesc.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/executor.h +98 -32
- data/ext/pg_query/include/{executor → postgres/executor}/functions.h +17 -3
- data/ext/pg_query/include/{executor → postgres/executor}/instrument.h +33 -16
- data/ext/pg_query/include/{executor → postgres/executor}/spi.h +42 -4
- data/ext/pg_query/include/{executor → postgres/executor}/tablefunc.h +1 -1
- data/ext/pg_query/include/{executor → postgres/executor}/tuptable.h +18 -11
- data/ext/pg_query/include/{fmgr.h → postgres/fmgr.h} +33 -8
- data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
- data/ext/pg_query/include/{funcapi.h → postgres/funcapi.h} +22 -10
- data/ext/pg_query/include/postgres/gram.h +1127 -0
- data/ext/pg_query/include/{parser → postgres}/gramparse.h +4 -4
- data/ext/pg_query/include/{jit → postgres/jit}/jit.h +12 -12
- data/ext/pg_query/include/postgres/kwlist_d.h +1119 -0
- data/ext/pg_query/include/postgres/lib/dshash.h +115 -0
- data/ext/pg_query/include/{lib → postgres/lib}/ilist.h +454 -22
- data/ext/pg_query/include/{lib → postgres/lib}/pairingheap.h +1 -1
- data/ext/pg_query/include/{lib → postgres/lib}/simplehash.h +158 -33
- data/ext/pg_query/include/postgres/lib/sort_template.h +432 -0
- data/ext/pg_query/include/{lib → postgres/lib}/stringinfo.h +3 -3
- data/ext/pg_query/include/{libpq → postgres/libpq}/auth.h +12 -4
- data/ext/pg_query/include/{libpq → postgres/libpq}/crypt.h +5 -4
- data/ext/pg_query/include/{libpq → postgres/libpq}/hba.h +54 -8
- data/ext/pg_query/include/{libpq → postgres/libpq}/libpq-be.h +45 -17
- data/ext/pg_query/include/{libpq → postgres/libpq}/libpq.h +31 -20
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqcomm.h +26 -71
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqformat.h +2 -2
- data/ext/pg_query/include/{libpq → postgres/libpq}/pqsignal.h +25 -13
- 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/{mb → postgres/mb}/pg_wchar.h +125 -25
- data/ext/pg_query/include/{mb → postgres/mb}/stringinfo_mb.h +1 -1
- data/ext/pg_query/include/{miscadmin.h → postgres/miscadmin.h} +96 -65
- data/ext/pg_query/include/{nodes → postgres/nodes}/bitmapset.h +11 -7
- data/ext/pg_query/include/{nodes → postgres/nodes}/execnodes.h +351 -103
- data/ext/pg_query/include/{nodes → postgres/nodes}/extensible.h +8 -4
- data/ext/pg_query/include/{nodes → postgres/nodes}/lockoptions.h +1 -1
- data/ext/pg_query/include/{nodes → postgres/nodes}/makefuncs.h +19 -6
- data/ext/pg_query/include/{nodes → postgres/nodes}/memnodes.h +11 -6
- data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/nodeFuncs.h +89 -29
- data/ext/pg_query/include/{nodes → postgres/nodes}/nodes.h +100 -496
- data/ext/pg_query/include/postgres/nodes/nodetags.h +471 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/params.h +3 -3
- data/ext/pg_query/include/{nodes → postgres/nodes}/parsenodes.h +678 -207
- data/ext/pg_query/include/{nodes → postgres/nodes}/pathnodes.h +1282 -454
- data/ext/pg_query/include/{nodes → postgres/nodes}/pg_list.h +103 -73
- data/ext/pg_query/include/{nodes → postgres/nodes}/plannodes.h +474 -133
- data/ext/pg_query/include/{nodes → postgres/nodes}/primnodes.h +754 -254
- data/ext/pg_query/include/{nodes → postgres/nodes}/print.h +1 -1
- data/ext/pg_query/include/postgres/nodes/queryjumble.h +86 -0
- data/ext/pg_query/include/postgres/nodes/replnodes.h +111 -0
- data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
- data/ext/pg_query/include/{nodes → postgres/nodes}/tidbitmap.h +1 -1
- data/ext/pg_query/include/postgres/nodes/value.h +90 -0
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/cost.h +14 -5
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo.h +9 -7
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo_gene.h +1 -1
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/optimizer.h +31 -28
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/paths.h +29 -12
- data/ext/pg_query/include/{optimizer → postgres/optimizer}/planmain.h +15 -17
- data/ext/pg_query/include/{parser → postgres/parser}/analyze.h +20 -5
- data/ext/pg_query/include/postgres/parser/kwlist.h +498 -0
- data/ext/pg_query/include/{parser → postgres/parser}/parse_agg.h +5 -8
- data/ext/pg_query/include/{parser → postgres/parser}/parse_coerce.h +6 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_expr.h +2 -3
- data/ext/pg_query/include/{parser → postgres/parser}/parse_func.h +2 -1
- data/ext/pg_query/include/{parser → postgres/parser}/parse_node.h +41 -11
- data/ext/pg_query/include/{parser → postgres/parser}/parse_oper.h +3 -5
- data/ext/pg_query/include/{parser → postgres/parser}/parse_relation.h +11 -5
- data/ext/pg_query/include/{parser → postgres/parser}/parse_type.h +4 -3
- data/ext/pg_query/include/postgres/parser/parser.h +68 -0
- data/ext/pg_query/include/{parser → postgres/parser}/parsetree.h +1 -1
- data/ext/pg_query/include/{parser → postgres/parser}/scanner.h +2 -2
- data/ext/pg_query/include/{parser → postgres/parser}/scansup.h +2 -5
- data/ext/pg_query/include/{partitioning → postgres/partitioning}/partdefs.h +1 -1
- data/ext/pg_query/include/{pg_config.h → postgres/pg_config.h} +216 -228
- data/ext/pg_query/include/{pg_config_manual.h → postgres/pg_config_manual.h} +80 -58
- data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
- data/ext/pg_query/include/{pg_getopt.h → postgres/pg_getopt.h} +6 -6
- data/ext/pg_query/include/{pg_trace.h → postgres/pg_trace.h} +1 -1
- data/ext/pg_query/include/postgres/pgstat.h +778 -0
- data/ext/pg_query/include/{pgtime.h → postgres/pgtime.h} +16 -6
- data/ext/pg_query/include/{pl_gram.h → postgres/pl_gram.h} +116 -116
- data/ext/pg_query/include/{pl_reserved_kwlist.h → postgres/pl_reserved_kwlist.h} +1 -1
- data/ext/pg_query/include/{pl_reserved_kwlist_d.h → postgres/pl_reserved_kwlist_d.h} +10 -10
- data/ext/pg_query/include/{pl_unreserved_kwlist.h → postgres/pl_unreserved_kwlist.h} +3 -3
- data/ext/pg_query/include/{pl_unreserved_kwlist_d.h → postgres/pl_unreserved_kwlist_d.h} +60 -60
- data/ext/pg_query/include/{plerrcodes.h → postgres/plerrcodes.h} +9 -1
- data/ext/pg_query/include/{plpgsql.h → postgres/plpgsql.h} +79 -86
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-arm.h +9 -3
- data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-ppc.h +21 -21
- data/ext/pg_query/include/{port → postgres/port}/atomics/arch-x86.h +2 -2
- data/ext/pg_query/include/{port → postgres/port}/atomics/fallback.h +3 -3
- data/ext/pg_query/include/{port → postgres/port}/atomics/generic-gcc.h +3 -3
- data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +101 -0
- data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +106 -0
- data/ext/pg_query/include/{port → postgres/port}/atomics/generic.h +1 -1
- data/ext/pg_query/include/{port → postgres/port}/atomics.h +2 -7
- data/ext/pg_query/include/{port → postgres/port}/pg_bitutils.h +129 -16
- data/ext/pg_query/include/{port → postgres/port}/pg_bswap.h +1 -1
- data/ext/pg_query/include/{port → postgres/port}/pg_crc32c.h +1 -1
- data/ext/pg_query/include/postgres/port/simd.h +375 -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 +26 -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 +594 -0
- data/ext/pg_query/include/{port.h → postgres/port.h} +107 -111
- 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_ext.h → postgres/postgres_ext.h} +0 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/autovacuum.h +17 -20
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker.h +3 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker_internals.h +2 -2
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgwriter.h +6 -6
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/interrupt.h +1 -1
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/pgarch.h +7 -10
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/postmaster.h +21 -17
- data/ext/pg_query/include/postgres/postmaster/startup.h +41 -0
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/syslogger.h +16 -11
- data/ext/pg_query/include/{postmaster → postgres/postmaster}/walwriter.h +5 -3
- data/ext/pg_query/include/{regex → postgres/regex}/regex.h +27 -22
- data/ext/pg_query/include/{replication → postgres/replication}/logicallauncher.h +8 -5
- data/ext/pg_query/include/postgres/replication/logicalproto.h +274 -0
- data/ext/pg_query/include/postgres/replication/logicalworker.h +32 -0
- data/ext/pg_query/include/{replication → postgres/replication}/origin.h +8 -8
- data/ext/pg_query/include/postgres/replication/reorderbuffer.h +753 -0
- data/ext/pg_query/include/{replication → postgres/replication}/slot.h +42 -12
- data/ext/pg_query/include/{replication → postgres/replication}/syncrep.h +6 -12
- data/ext/pg_query/include/{replication → postgres/replication}/walreceiver.h +158 -20
- data/ext/pg_query/include/{replication → postgres/replication}/walsender.h +20 -20
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/prs2lock.h +1 -1
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteHandler.h +1 -6
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteManip.h +11 -2
- data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteSupport.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/backendid.h +3 -3
- data/ext/pg_query/include/{storage → postgres/storage}/block.h +24 -37
- data/ext/pg_query/include/{storage → postgres/storage}/buf.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/bufmgr.h +196 -95
- data/ext/pg_query/include/{storage → postgres/storage}/bufpage.h +152 -101
- data/ext/pg_query/include/{storage → postgres/storage}/condition_variable.h +14 -3
- data/ext/pg_query/include/{storage → postgres/storage}/dsm.h +6 -6
- data/ext/pg_query/include/{storage → postgres/storage}/dsm_impl.h +6 -2
- data/ext/pg_query/include/{storage → postgres/storage}/fd.h +48 -14
- data/ext/pg_query/include/postgres/storage/fileset.h +40 -0
- data/ext/pg_query/include/{storage → postgres/storage}/ipc.h +5 -2
- data/ext/pg_query/include/{storage → postgres/storage}/item.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/itemid.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/itemptr.h +96 -57
- data/ext/pg_query/include/{storage → postgres/storage}/large_object.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/latch.h +17 -13
- data/ext/pg_query/include/{storage → postgres/storage}/lmgr.h +7 -1
- data/ext/pg_query/include/{storage → postgres/storage}/lock.h +37 -25
- data/ext/pg_query/include/{storage → postgres/storage}/lockdefs.h +4 -4
- data/ext/pg_query/include/{storage → postgres/storage}/lwlock.h +21 -33
- data/ext/pg_query/include/{storage → postgres/storage}/lwlocknames.h +0 -1
- data/ext/pg_query/include/{storage → postgres/storage}/off.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/pg_sema.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/pg_shmem.h +9 -7
- data/ext/pg_query/include/{storage → postgres/storage}/pmsignal.h +15 -4
- data/ext/pg_query/include/{storage → postgres/storage}/predicate.h +5 -5
- data/ext/pg_query/include/{storage → postgres/storage}/proc.h +200 -67
- data/ext/pg_query/include/postgres/storage/procarray.h +99 -0
- data/ext/pg_query/include/{storage → postgres/storage}/proclist_types.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/procsignal.h +5 -7
- data/ext/pg_query/include/postgres/storage/relfilelocator.h +99 -0
- data/ext/pg_query/include/{storage → postgres/storage}/s_lock.h +118 -298
- data/ext/pg_query/include/{storage → postgres/storage}/sharedfileset.h +3 -11
- data/ext/pg_query/include/{storage → postgres/storage}/shm_mq.h +5 -4
- data/ext/pg_query/include/{storage → postgres/storage}/shm_toc.h +1 -1
- data/ext/pg_query/include/{storage → postgres/storage}/shmem.h +1 -23
- data/ext/pg_query/include/{storage → postgres/storage}/sinval.h +5 -5
- data/ext/pg_query/include/{storage → postgres/storage}/sinvaladt.h +4 -2
- data/ext/pg_query/include/{storage → postgres/storage}/smgr.h +21 -17
- data/ext/pg_query/include/{storage → postgres/storage}/spin.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/standby.h +17 -9
- data/ext/pg_query/include/{storage → postgres/storage}/standbydefs.h +2 -2
- data/ext/pg_query/include/{storage → postgres/storage}/sync.h +9 -5
- data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtag.h +7 -2
- data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtaglist.h +3 -2
- data/ext/pg_query/include/{tcop → postgres/tcop}/deparse_utility.h +1 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/dest.h +1 -3
- data/ext/pg_query/include/{tcop → postgres/tcop}/fastpath.h +1 -2
- data/ext/pg_query/include/{tcop → postgres/tcop}/pquery.h +7 -1
- data/ext/pg_query/include/{tcop → postgres/tcop}/tcopprot.h +19 -14
- data/ext/pg_query/include/{tcop → postgres/tcop}/utility.h +7 -3
- data/ext/pg_query/include/{tsearch → postgres/tsearch}/ts_cache.h +3 -5
- data/ext/pg_query/include/{utils → postgres/utils}/acl.h +37 -71
- data/ext/pg_query/include/{utils → postgres/utils}/aclchk_internal.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/array.h +26 -2
- data/ext/pg_query/include/postgres/utils/backend_progress.h +45 -0
- data/ext/pg_query/include/postgres/utils/backend_status.h +342 -0
- data/ext/pg_query/include/{utils → postgres/utils}/builtins.h +20 -11
- data/ext/pg_query/include/{utils → postgres/utils}/bytea.h +3 -2
- data/ext/pg_query/include/{utils → postgres/utils}/catcache.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/date.h +37 -9
- data/ext/pg_query/include/{utils → postgres/utils}/datetime.h +48 -27
- data/ext/pg_query/include/{utils → postgres/utils}/datum.h +9 -1
- data/ext/pg_query/include/{utils → postgres/utils}/dsa.h +5 -1
- data/ext/pg_query/include/{utils → postgres/utils}/elog.h +154 -48
- data/ext/pg_query/include/{utils → postgres/utils}/errcodes.h +2 -0
- data/ext/pg_query/include/{utils → postgres/utils}/expandeddatum.h +14 -3
- data/ext/pg_query/include/{utils → postgres/utils}/expandedrecord.h +14 -4
- data/ext/pg_query/include/{utils → postgres/utils}/float.h +13 -12
- data/ext/pg_query/include/{utils → postgres/utils}/fmgroids.h +1353 -696
- data/ext/pg_query/include/{utils → postgres/utils}/fmgrprotos.h +243 -18
- data/ext/pg_query/include/{utils → postgres/utils}/fmgrtab.h +6 -5
- data/ext/pg_query/include/{utils → postgres/utils}/guc.h +120 -121
- data/ext/pg_query/include/postgres/utils/guc_hooks.h +163 -0
- data/ext/pg_query/include/{utils → postgres/utils}/guc_tables.h +71 -21
- data/ext/pg_query/include/{utils → postgres/utils}/hsearch.h +15 -11
- data/ext/pg_query/include/{utils → postgres/utils}/inval.h +7 -3
- data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
- data/ext/pg_query/include/{utils → postgres/utils}/lsyscache.h +16 -1
- data/ext/pg_query/include/{utils → postgres/utils}/memdebug.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/memutils.h +14 -53
- data/ext/pg_query/include/postgres/utils/memutils_internal.h +136 -0
- data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +237 -0
- data/ext/pg_query/include/{utils → postgres/utils}/numeric.h +38 -9
- data/ext/pg_query/include/{utils → postgres/utils}/palloc.h +33 -4
- data/ext/pg_query/include/{utils → postgres/utils}/partcache.h +3 -2
- data/ext/pg_query/include/{utils → postgres/utils}/pg_locale.h +37 -21
- data/ext/pg_query/include/postgres/utils/pgstat_internal.h +814 -0
- data/ext/pg_query/include/{utils → postgres/utils}/plancache.h +6 -5
- data/ext/pg_query/include/{utils → postgres/utils}/portal.h +12 -1
- data/ext/pg_query/include/{utils → postgres/utils}/probes.h +59 -59
- data/ext/pg_query/include/postgres/utils/ps_status.h +47 -0
- data/ext/pg_query/include/{utils → postgres/utils}/queryenvironment.h +1 -1
- data/ext/pg_query/include/postgres/utils/regproc.h +39 -0
- data/ext/pg_query/include/{utils → postgres/utils}/rel.h +129 -61
- data/ext/pg_query/include/{utils → postgres/utils}/relcache.h +21 -14
- data/ext/pg_query/include/{utils → postgres/utils}/reltrigger.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/resowner.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/ruleutils.h +9 -1
- data/ext/pg_query/include/{utils → postgres/utils}/sharedtuplestore.h +1 -1
- data/ext/pg_query/include/{utils → postgres/utils}/snapmgr.h +38 -15
- data/ext/pg_query/include/{utils → postgres/utils}/snapshot.h +14 -1
- data/ext/pg_query/include/{utils → postgres/utils}/sortsupport.h +117 -2
- data/ext/pg_query/include/{utils → postgres/utils}/syscache.h +9 -1
- data/ext/pg_query/include/{utils → postgres/utils}/timeout.h +11 -4
- data/ext/pg_query/include/{utils → postgres/utils}/timestamp.h +46 -15
- data/ext/pg_query/include/{utils → postgres/utils}/tuplesort.h +209 -41
- data/ext/pg_query/include/{utils → postgres/utils}/tuplestore.h +2 -2
- data/ext/pg_query/include/{utils → postgres/utils}/typcache.h +24 -17
- data/ext/pg_query/include/{utils → postgres/utils}/varlena.h +17 -3
- data/ext/pg_query/include/postgres/utils/wait_event.h +294 -0
- data/ext/pg_query/include/{utils → postgres/utils}/xml.h +18 -8
- data/ext/pg_query/include/{postgres.h → postgres/varatt.h} +65 -471
- data/ext/pg_query/include/protobuf/pg_query.pb-c.h +7494 -6382
- data/ext/pg_query/include/protobuf/pg_query.pb.h +116922 -84792
- data/ext/pg_query/include/protobuf-c/protobuf-c.h +7 -3
- data/ext/pg_query/include/protobuf-c.h +7 -3
- data/ext/pg_query/pg_query.c +10 -1
- data/ext/pg_query/pg_query.pb-c.c +21026 -17002
- data/ext/pg_query/pg_query_deparse.c +1 -9896
- data/ext/pg_query/pg_query_fingerprint.c +162 -50
- data/ext/pg_query/pg_query_fingerprint.h +3 -1
- data/ext/pg_query/pg_query_internal.h +1 -1
- data/ext/pg_query/pg_query_json_plpgsql.c +56 -12
- data/ext/pg_query/pg_query_normalize.c +259 -64
- data/ext/pg_query/pg_query_outfuncs.h +1 -0
- data/ext/pg_query/pg_query_outfuncs_json.c +71 -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 +86 -21
- data/ext/pg_query/pg_query_readfuncs_protobuf.c +43 -8
- data/ext/pg_query/pg_query_ruby.c +6 -1
- data/ext/pg_query/pg_query_ruby_freebsd.sym +2 -0
- data/ext/pg_query/pg_query_scan.c +3 -2
- data/ext/pg_query/pg_query_split.c +6 -5
- data/ext/pg_query/postgres_deparse.c +11067 -0
- data/ext/pg_query/postgres_deparse.h +9 -0
- data/ext/pg_query/protobuf-c.c +34 -27
- data/ext/pg_query/src_backend_catalog_namespace.c +27 -10
- 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 +13 -70
- data/ext/pg_query/src_backend_nodes_copyfuncs.c +103 -5894
- data/ext/pg_query/src_backend_nodes_equalfuncs.c +102 -3830
- data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
- data/ext/pg_query/src_backend_nodes_list.c +99 -12
- data/ext/pg_query/src_backend_nodes_makefuncs.c +99 -4
- data/ext/pg_query/src_backend_nodes_nodeFuncs.c +325 -131
- data/ext/pg_query/src_backend_nodes_nodes.c +38 -0
- data/ext/pg_query/src_backend_nodes_value.c +28 -19
- data/ext/pg_query/src_backend_parser_gram.c +36104 -32074
- data/ext/pg_query/src_backend_parser_parser.c +53 -8
- data/ext/pg_query/src_backend_parser_scan.c +4893 -3701
- data/ext/pg_query/src_backend_parser_scansup.c +4 -28
- data/ext/pg_query/src_backend_storage_ipc_ipc.c +13 -4
- data/ext/pg_query/src_backend_tcop_postgres.c +133 -105
- data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +140 -0
- data/ext/pg_query/src_backend_utils_adt_datum.c +17 -7
- 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 +489 -0
- data/ext/pg_query/src_backend_utils_adt_ruleutils.c +187 -19
- data/ext/pg_query/src_backend_utils_error_assert.c +17 -18
- data/ext/pg_query/src_backend_utils_error_elog.c +513 -318
- data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +44 -17
- data/ext/pg_query/src_backend_utils_init_globals.c +9 -6
- data/ext/pg_query/src_backend_utils_mb_mbutils.c +74 -131
- data/ext/pg_query/src_backend_utils_misc_guc_tables.c +492 -0
- data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +163 -0
- data/ext/pg_query/src_backend_utils_mmgr_aset.c +453 -314
- data/ext/pg_query/src_backend_utils_mmgr_generation.c +1039 -0
- data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +549 -76
- data/ext/pg_query/src_backend_utils_mmgr_slab.c +1021 -0
- data/ext/pg_query/src_common_encnames.c +4 -1
- data/ext/pg_query/src_common_hashfn.c +420 -0
- data/ext/pg_query/src_common_keywords.c +15 -2
- data/ext/pg_query/src_common_kwlist_d.h +545 -498
- data/ext/pg_query/src_common_kwlookup.c +1 -1
- data/ext/pg_query/src_common_psprintf.c +1 -1
- data/ext/pg_query/src_common_stringinfo.c +4 -4
- data/ext/pg_query/src_common_wchar.c +717 -113
- data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +49 -22
- data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -18
- data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1136 -1195
- 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 +60 -60
- data/ext/pg_query/src_port_pg_bitutils.c +103 -40
- data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
- data/ext/pg_query/src_port_qsort.c +12 -224
- data/ext/pg_query/src_port_snprintf.c +51 -29
- data/ext/pg_query/src_port_strerror.c +9 -19
- data/ext/pg_query/src_port_strlcpy.c +79 -0
- data/lib/pg_query/deparse.rb +7 -1
- data/lib/pg_query/filter_columns.rb +7 -5
- data/lib/pg_query/fingerprint.rb +21 -9
- data/lib/pg_query/node.rb +18 -13
- data/lib/pg_query/param_refs.rb +1 -1
- data/lib/pg_query/parse.rb +141 -50
- data/lib/pg_query/pg_query_pb.rb +175 -3031
- data/lib/pg_query/treewalker.rb +26 -2
- data/lib/pg_query/truncate.rb +54 -8
- data/lib/pg_query/version.rb +1 -1
- data/lib/pg_query.rb +0 -1
- metadata +443 -380
- data/ext/pg_query/guc-file.c +0 -0
- data/ext/pg_query/include/access/rmgr.h +0 -35
- 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/catalog/genbki.h +0 -64
- data/ext/pg_query/include/catalog/indexing.h +0 -366
- data/ext/pg_query/include/commands/variable.h +0 -38
- data/ext/pg_query/include/common/ip.h +0 -37
- data/ext/pg_query/include/common/string.h +0 -19
- data/ext/pg_query/include/getaddrinfo.h +0 -162
- data/ext/pg_query/include/kwlist_d.h +0 -1072
- data/ext/pg_query/include/nodes/value.h +0 -61
- data/ext/pg_query/include/parser/gram.h +0 -1067
- data/ext/pg_query/include/parser/kwlist.h +0 -477
- 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/include/parser/parser.h +0 -41
- data/ext/pg_query/include/pg_config_os.h +0 -8
- data/ext/pg_query/include/pgstat.h +0 -1487
- data/ext/pg_query/include/portability/instr_time.h +0 -256
- data/ext/pg_query/include/postmaster/fork_process.h +0 -17
- 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/reorderbuffer.h +0 -467
- data/ext/pg_query/include/storage/relfilenode.h +0 -99
- data/ext/pg_query/include/utils/dynahash.h +0 -19
- 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/ps_status.h +0 -25
- data/ext/pg_query/include/utils/regproc.h +0 -28
- data/ext/pg_query/include/utils/rls.h +0 -50
- data/ext/pg_query/include/utils/tzparser.h +0 -39
- 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_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 -1831
- 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/lib/pg_query/json_field_names.rb +0 -1402
- /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
|
@@ -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;
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
#define _GNU_SOURCE // Necessary to get asprintf (which is a GNU extension)
|
|
2
1
|
#include <stdio.h>
|
|
3
2
|
|
|
4
3
|
#include "pg_query.h"
|
|
@@ -18,7 +17,7 @@ typedef struct {
|
|
|
18
17
|
PgQueryError* error;
|
|
19
18
|
} PgQueryInternalPlpgsqlFuncAndError;
|
|
20
19
|
|
|
21
|
-
static PgQueryInternalPlpgsqlFuncAndError pg_query_raw_parse_plpgsql(
|
|
20
|
+
static PgQueryInternalPlpgsqlFuncAndError pg_query_raw_parse_plpgsql(Node* stmt);
|
|
22
21
|
|
|
23
22
|
static void add_dummy_return(PLpgSQL_function *function)
|
|
24
23
|
{
|
|
@@ -73,6 +72,36 @@ static void plpgsql_compile_error_callback(void *arg)
|
|
|
73
72
|
plpgsql_error_funcname, plpgsql_latest_lineno());
|
|
74
73
|
}
|
|
75
74
|
|
|
75
|
+
static PLpgSQL_function *compile_do_stmt(DoStmt* stmt)
|
|
76
|
+
{
|
|
77
|
+
char *proc_source = NULL;
|
|
78
|
+
const ListCell *lc;
|
|
79
|
+
char *language = "plpgsql";
|
|
80
|
+
|
|
81
|
+
assert(IsA(stmt, DoStmt));
|
|
82
|
+
|
|
83
|
+
foreach(lc, stmt->args)
|
|
84
|
+
{
|
|
85
|
+
DefElem* elem = (DefElem*) lfirst(lc);
|
|
86
|
+
|
|
87
|
+
if (strcmp(elem->defname, "as") == 0) {
|
|
88
|
+
|
|
89
|
+
assert(IsA(elem->arg, String));
|
|
90
|
+
proc_source = strVal(elem->arg);
|
|
91
|
+
} else if (strcmp(elem->defname, "language") == 0) {
|
|
92
|
+
language = strVal(elem->arg);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
assert(proc_source != NULL);
|
|
97
|
+
|
|
98
|
+
if(strcmp(language, "plpgsql") != 0) {
|
|
99
|
+
return (PLpgSQL_function *) palloc0(sizeof(PLpgSQL_function));
|
|
100
|
+
}
|
|
101
|
+
return plpgsql_compile_inline(proc_source);
|
|
102
|
+
|
|
103
|
+
}
|
|
104
|
+
|
|
76
105
|
static PLpgSQL_function *compile_create_function_stmt(CreateFunctionStmt* stmt)
|
|
77
106
|
{
|
|
78
107
|
char *func_name;
|
|
@@ -87,6 +116,7 @@ static PLpgSQL_function *compile_create_function_stmt(CreateFunctionStmt* stmt)
|
|
|
87
116
|
const ListCell *lc, *lc2, *lc3;
|
|
88
117
|
bool is_trigger = false;
|
|
89
118
|
bool is_setof = false;
|
|
119
|
+
char *language = "plpgsql";
|
|
90
120
|
|
|
91
121
|
assert(IsA(stmt, CreateFunctionStmt));
|
|
92
122
|
|
|
@@ -105,10 +135,16 @@ static PLpgSQL_function *compile_create_function_stmt(CreateFunctionStmt* stmt)
|
|
|
105
135
|
{
|
|
106
136
|
proc_source = strVal(lfirst(lc2));
|
|
107
137
|
}
|
|
138
|
+
} else if (strcmp(elem->defname, "language") == 0) {
|
|
139
|
+
language = strVal(elem->arg);
|
|
108
140
|
}
|
|
109
141
|
}
|
|
110
142
|
|
|
111
|
-
assert(proc_source);
|
|
143
|
+
assert(proc_source != NULL);
|
|
144
|
+
|
|
145
|
+
if(strcmp(language, "plpgsql") != 0) {
|
|
146
|
+
return (PLpgSQL_function *) palloc0(sizeof(PLpgSQL_function));
|
|
147
|
+
}
|
|
112
148
|
|
|
113
149
|
if (stmt->returnType != NULL) {
|
|
114
150
|
foreach(lc3, stmt->returnType->names)
|
|
@@ -179,6 +215,26 @@ static PLpgSQL_function *compile_create_function_stmt(CreateFunctionStmt* stmt)
|
|
|
179
215
|
plpgsql_DumpExecTree = false;
|
|
180
216
|
plpgsql_start_datums();
|
|
181
217
|
|
|
218
|
+
/* Setup parameter names */
|
|
219
|
+
foreach(lc, stmt->parameters)
|
|
220
|
+
{
|
|
221
|
+
FunctionParameter *param = lfirst_node(FunctionParameter, lc);
|
|
222
|
+
if (param->name != NULL)
|
|
223
|
+
{
|
|
224
|
+
char buf[32];
|
|
225
|
+
PLpgSQL_type *argdtype;
|
|
226
|
+
PLpgSQL_variable *argvariable;
|
|
227
|
+
PLpgSQL_nsitem_type argitemtype;
|
|
228
|
+
snprintf(buf, sizeof(buf), "$%d", foreach_current_index(lc) + 1);
|
|
229
|
+
argdtype = plpgsql_build_datatype(UNKNOWNOID, -1, InvalidOid, NULL);
|
|
230
|
+
argvariable = plpgsql_build_variable(param->name ? param->name : buf, 0, argdtype, false);
|
|
231
|
+
argitemtype = argvariable->dtype == PLPGSQL_DTYPE_VAR ? PLPGSQL_NSTYPE_VAR : PLPGSQL_NSTYPE_REC;
|
|
232
|
+
plpgsql_ns_additem(argitemtype, argvariable->dno, buf);
|
|
233
|
+
if (param->name != NULL)
|
|
234
|
+
plpgsql_ns_additem(argitemtype, argvariable->dno, param->name);
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
182
238
|
/* Set up as though in a function returning VOID */
|
|
183
239
|
function->fn_rettype = VOIDOID;
|
|
184
240
|
function->fn_retset = is_setof;
|
|
@@ -253,7 +309,7 @@ static PLpgSQL_function *compile_create_function_stmt(CreateFunctionStmt* stmt)
|
|
|
253
309
|
return function;
|
|
254
310
|
}
|
|
255
311
|
|
|
256
|
-
PgQueryInternalPlpgsqlFuncAndError pg_query_raw_parse_plpgsql(
|
|
312
|
+
PgQueryInternalPlpgsqlFuncAndError pg_query_raw_parse_plpgsql(Node* stmt)
|
|
257
313
|
{
|
|
258
314
|
PgQueryInternalPlpgsqlFuncAndError result = {0};
|
|
259
315
|
MemoryContext cctx = CurrentMemoryContext;
|
|
@@ -286,7 +342,13 @@ PgQueryInternalPlpgsqlFuncAndError pg_query_raw_parse_plpgsql(CreateFunctionStmt
|
|
|
286
342
|
|
|
287
343
|
PG_TRY();
|
|
288
344
|
{
|
|
289
|
-
|
|
345
|
+
if (IsA(stmt, CreateFunctionStmt)) {
|
|
346
|
+
result.func = compile_create_function_stmt((CreateFunctionStmt *) stmt);
|
|
347
|
+
} else if (IsA(stmt, DoStmt)){
|
|
348
|
+
result.func = compile_do_stmt((DoStmt *) stmt);
|
|
349
|
+
} else {
|
|
350
|
+
elog(ERROR, "Unexpected node type for PL/pgSQL parsing: %d", nodeTag(stmt));
|
|
351
|
+
}
|
|
290
352
|
|
|
291
353
|
#ifndef DEBUG
|
|
292
354
|
// Save stderr for result
|
|
@@ -334,36 +396,36 @@ PgQueryInternalPlpgsqlFuncAndError pg_query_raw_parse_plpgsql(CreateFunctionStmt
|
|
|
334
396
|
return result;
|
|
335
397
|
}
|
|
336
398
|
|
|
337
|
-
typedef struct
|
|
399
|
+
typedef struct plStmts
|
|
338
400
|
{
|
|
339
|
-
|
|
401
|
+
Node **stmts;
|
|
340
402
|
int stmts_buf_size;
|
|
341
403
|
int stmts_count;
|
|
342
|
-
}
|
|
404
|
+
} plStmts;
|
|
343
405
|
|
|
344
|
-
static bool
|
|
406
|
+
static bool stmts_walker(Node *node, plStmts *state)
|
|
345
407
|
{
|
|
346
408
|
bool result;
|
|
347
409
|
MemoryContext ccxt = CurrentMemoryContext;
|
|
348
410
|
|
|
349
411
|
if (node == NULL) return false;
|
|
350
412
|
|
|
351
|
-
if (IsA(node, CreateFunctionStmt))
|
|
413
|
+
if (IsA(node, CreateFunctionStmt) || IsA(node, DoStmt))
|
|
352
414
|
{
|
|
353
415
|
if (state->stmts_count >= state->stmts_buf_size)
|
|
354
416
|
{
|
|
355
417
|
state->stmts_buf_size *= 2;
|
|
356
|
-
state->stmts = (
|
|
418
|
+
state->stmts = (Node**) repalloc(state->stmts, state->stmts_buf_size * sizeof(Node*));
|
|
357
419
|
}
|
|
358
|
-
state->stmts[state->stmts_count] = (
|
|
420
|
+
state->stmts[state->stmts_count] = (Node *) node;
|
|
359
421
|
state->stmts_count++;
|
|
360
422
|
} else if (IsA(node, RawStmt)) {
|
|
361
|
-
return
|
|
423
|
+
return stmts_walker((Node *) ((RawStmt *) node)->stmt, state);
|
|
362
424
|
}
|
|
363
425
|
|
|
364
426
|
PG_TRY();
|
|
365
427
|
{
|
|
366
|
-
result = raw_expression_tree_walker(node,
|
|
428
|
+
result = raw_expression_tree_walker(node, stmts_walker, (void*) state);
|
|
367
429
|
}
|
|
368
430
|
PG_CATCH();
|
|
369
431
|
{
|
|
@@ -381,12 +443,12 @@ PgQueryPlpgsqlParseResult pg_query_parse_plpgsql(const char* input)
|
|
|
381
443
|
MemoryContext ctx = NULL;
|
|
382
444
|
PgQueryPlpgsqlParseResult result = {0};
|
|
383
445
|
PgQueryInternalParsetreeAndError parse_result;
|
|
384
|
-
|
|
446
|
+
plStmts statements;
|
|
385
447
|
size_t i;
|
|
386
448
|
|
|
387
449
|
ctx = pg_query_enter_memory_context();
|
|
388
450
|
|
|
389
|
-
parse_result = pg_query_raw_parse(input);
|
|
451
|
+
parse_result = pg_query_raw_parse(input, PG_QUERY_PARSE_DEFAULT);
|
|
390
452
|
result.error = parse_result.error;
|
|
391
453
|
if (result.error != NULL) {
|
|
392
454
|
pg_query_exit_memory_context(ctx);
|
|
@@ -394,10 +456,10 @@ PgQueryPlpgsqlParseResult pg_query_parse_plpgsql(const char* input)
|
|
|
394
456
|
}
|
|
395
457
|
|
|
396
458
|
statements.stmts_buf_size = 100;
|
|
397
|
-
statements.stmts = (
|
|
459
|
+
statements.stmts = (Node**) palloc(statements.stmts_buf_size * sizeof(Node*));
|
|
398
460
|
statements.stmts_count = 0;
|
|
399
461
|
|
|
400
|
-
|
|
462
|
+
stmts_walker((Node*) parse_result.tree, &statements);
|
|
401
463
|
|
|
402
464
|
if (statements.stmts_count == 0) {
|
|
403
465
|
result.plpgsql_funcs = strdup("[]");
|
|
@@ -423,14 +485,17 @@ PgQueryPlpgsqlParseResult pg_query_parse_plpgsql(const char* input)
|
|
|
423
485
|
if (func_and_error.func != NULL) {
|
|
424
486
|
char *func_json;
|
|
425
487
|
char *new_out;
|
|
488
|
+
size_t new_out_len;
|
|
426
489
|
|
|
427
490
|
func_json = plpgsqlToJSON(func_and_error.func);
|
|
428
491
|
plpgsql_free_function_memory(func_and_error.func);
|
|
429
492
|
|
|
430
|
-
|
|
431
|
-
|
|
493
|
+
new_out_len = strlen(result.plpgsql_funcs) + strlen(func_json) + 3;
|
|
494
|
+
new_out = malloc(new_out_len);
|
|
495
|
+
int n = snprintf(new_out, new_out_len, "%s%s,\n", result.plpgsql_funcs, func_json);
|
|
496
|
+
if (n < 0 || n >= new_out_len) {
|
|
432
497
|
PgQueryError* error = malloc(sizeof(PgQueryError));
|
|
433
|
-
error->message = strdup("Failed to output PL/pgSQL functions due to
|
|
498
|
+
error->message = strdup("Failed to output PL/pgSQL functions due to snprintf failure");
|
|
434
499
|
result.error = error;
|
|
435
500
|
} else {
|
|
436
501
|
free(result.plpgsql_funcs);
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
#define READ_INT_FIELD(outname, outname_json, fldname) node->fldname = msg->outname;
|
|
16
16
|
#define READ_UINT_FIELD(outname, outname_json, fldname) node->fldname = msg->outname;
|
|
17
|
+
#define READ_UINT64_FIELD(outname, outname_json, fldname) node->fldname = msg->outname;
|
|
17
18
|
#define READ_LONG_FIELD(outname, outname_json, fldname) node->fldname = msg->outname;
|
|
18
19
|
#define READ_FLOAT_FIELD(outname, outname_json, fldname) node->fldname = msg->outname;
|
|
19
20
|
#define READ_BOOL_FIELD(outname, outname_json, fldname) node->fldname = msg->outname;
|
|
@@ -74,6 +75,12 @@
|
|
|
74
75
|
|
|
75
76
|
static Node * _readNode(PgQuery__Node *msg);
|
|
76
77
|
|
|
78
|
+
static String *
|
|
79
|
+
_readString(PgQuery__String* msg)
|
|
80
|
+
{
|
|
81
|
+
return makeString(pstrdup(msg->sval));
|
|
82
|
+
}
|
|
83
|
+
|
|
77
84
|
#include "pg_query_enum_defs.c"
|
|
78
85
|
#include "pg_query_readfuncs_defs.c"
|
|
79
86
|
|
|
@@ -96,17 +103,45 @@ static Node * _readNode(PgQuery__Node *msg)
|
|
|
96
103
|
case PG_QUERY__NODE__NODE_INTEGER:
|
|
97
104
|
return (Node *) makeInteger(msg->integer->ival);
|
|
98
105
|
case PG_QUERY__NODE__NODE_FLOAT:
|
|
99
|
-
return (Node *) makeFloat(pstrdup(msg->float_->
|
|
106
|
+
return (Node *) makeFloat(pstrdup(msg->float_->fval));
|
|
107
|
+
case PG_QUERY__NODE__NODE_BOOLEAN:
|
|
108
|
+
return (Node *) makeBoolean(msg->boolean->boolval);
|
|
100
109
|
case PG_QUERY__NODE__NODE_STRING:
|
|
101
|
-
return (Node *) makeString(pstrdup(msg->string->
|
|
110
|
+
return (Node *) makeString(pstrdup(msg->string->sval));
|
|
102
111
|
case PG_QUERY__NODE__NODE_BIT_STRING:
|
|
103
|
-
return (Node *) makeBitString(pstrdup(msg->bit_string->
|
|
104
|
-
case
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
112
|
+
return (Node *) makeBitString(pstrdup(msg->bit_string->bsval));
|
|
113
|
+
case PG_QUERY__NODE__NODE_A_CONST: {
|
|
114
|
+
A_Const *ac = makeNode(A_Const);
|
|
115
|
+
ac->location = msg->a_const->location;
|
|
116
|
+
|
|
117
|
+
if (msg->a_const->isnull) {
|
|
118
|
+
ac->isnull = true;
|
|
119
|
+
} else {
|
|
120
|
+
switch (msg->a_const->val_case) {
|
|
121
|
+
case PG_QUERY__A__CONST__VAL_IVAL:
|
|
122
|
+
ac->val.ival = *makeInteger(msg->a_const->ival->ival);
|
|
123
|
+
break;
|
|
124
|
+
case PG_QUERY__A__CONST__VAL_FVAL:
|
|
125
|
+
ac->val.fval = *makeFloat(pstrdup(msg->a_const->fval->fval));
|
|
126
|
+
break;
|
|
127
|
+
case PG_QUERY__A__CONST__VAL_BOOLVAL:
|
|
128
|
+
ac->val.boolval = *makeBoolean(msg->a_const->boolval->boolval);
|
|
129
|
+
break;
|
|
130
|
+
case PG_QUERY__A__CONST__VAL_SVAL:
|
|
131
|
+
ac->val.sval = *makeString(pstrdup(msg->a_const->sval->sval));
|
|
132
|
+
break;
|
|
133
|
+
case PG_QUERY__A__CONST__VAL_BSVAL:
|
|
134
|
+
ac->val.bsval = *makeBitString(pstrdup(msg->a_const->bsval->bsval));
|
|
135
|
+
break;
|
|
136
|
+
case PG_QUERY__A__CONST__VAL__NOT_SET:
|
|
137
|
+
case _PG_QUERY__A__CONST__VAL__CASE_IS_INT_SIZE:
|
|
138
|
+
Assert(false);
|
|
139
|
+
break;
|
|
140
|
+
}
|
|
109
141
|
}
|
|
142
|
+
|
|
143
|
+
return (Node *) ac;
|
|
144
|
+
}
|
|
110
145
|
case PG_QUERY__NODE__NODE_LIST:
|
|
111
146
|
return (Node *) _readList(msg->list);
|
|
112
147
|
case PG_QUERY__NODE__NODE__NOT_SET:
|
|
@@ -14,7 +14,7 @@ VALUE pg_query_ruby_fingerprint(VALUE self, VALUE input);
|
|
|
14
14
|
VALUE pg_query_ruby_scan(VALUE self, VALUE input);
|
|
15
15
|
VALUE pg_query_ruby_hash_xxh3_64(VALUE self, VALUE input, VALUE seed);
|
|
16
16
|
|
|
17
|
-
void Init_pg_query(void)
|
|
17
|
+
__attribute__((visibility ("default"))) void Init_pg_query(void)
|
|
18
18
|
{
|
|
19
19
|
VALUE cPgQuery;
|
|
20
20
|
|
|
@@ -221,5 +221,10 @@ VALUE pg_query_ruby_hash_xxh3_64(VALUE self, VALUE input, VALUE seed)
|
|
|
221
221
|
Check_Type(input, T_STRING);
|
|
222
222
|
Check_Type(seed, T_FIXNUM);
|
|
223
223
|
|
|
224
|
+
#ifdef HAVE_LONG_LONG
|
|
225
|
+
return ULL2NUM(XXH3_64bits_withSeed(StringValuePtr(input), RSTRING_LEN(input), NUM2ULONG(seed)));
|
|
226
|
+
#else
|
|
224
227
|
return ULONG2NUM(XXH3_64bits_withSeed(StringValuePtr(input), RSTRING_LEN(input), NUM2ULONG(seed)));
|
|
228
|
+
#endif
|
|
229
|
+
|
|
225
230
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#include "pg_query.h"
|
|
2
2
|
#include "pg_query_internal.h"
|
|
3
3
|
|
|
4
|
-
#include "
|
|
4
|
+
#include "gramparse.h"
|
|
5
5
|
#include "lib/stringinfo.h"
|
|
6
6
|
|
|
7
7
|
#include "protobuf/pg_query.pb-c.h"
|
|
@@ -101,8 +101,9 @@ PgQueryScanResult pg_query_scan(const char* input)
|
|
|
101
101
|
output_tokens[i]->token = tok;
|
|
102
102
|
|
|
103
103
|
switch (tok) {
|
|
104
|
-
#define PG_KEYWORD(a,b,c) case b: output_tokens[i]->keyword_kind = c + 1; break;
|
|
104
|
+
#define PG_KEYWORD(a,b,c,d) case b: output_tokens[i]->keyword_kind = c + 1; break;
|
|
105
105
|
#include "parser/kwlist.h"
|
|
106
|
+
#undef PG_KEYWORD
|
|
106
107
|
default: output_tokens[i]->keyword_kind = 0;
|
|
107
108
|
}
|
|
108
109
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#include "pg_query.h"
|
|
2
2
|
#include "pg_query_internal.h"
|
|
3
3
|
|
|
4
|
-
#include "
|
|
4
|
+
#include "gramparse.h"
|
|
5
5
|
#include "lib/stringinfo.h"
|
|
6
6
|
|
|
7
7
|
#include <unistd.h>
|
|
@@ -59,8 +59,9 @@ PgQuerySplitResult pg_query_split_with_scanner(const char* input)
|
|
|
59
59
|
{
|
|
60
60
|
int tok = core_yylex(&yylval, &yylloc, yyscanner);
|
|
61
61
|
switch (tok) {
|
|
62
|
-
#define PG_KEYWORD(a,b,c) case b: is_keyword = true; break;
|
|
62
|
+
#define PG_KEYWORD(a,b,c,d) case b: is_keyword = true; break;
|
|
63
63
|
#include "parser/kwlist.h"
|
|
64
|
+
#undef PG_KEYWORD
|
|
64
65
|
default: is_keyword = false;
|
|
65
66
|
}
|
|
66
67
|
if (is_keyword)
|
|
@@ -88,7 +89,7 @@ PgQuerySplitResult pg_query_split_with_scanner(const char* input)
|
|
|
88
89
|
{
|
|
89
90
|
int tok = core_yylex(&yylval, &yylloc, yyscanner);
|
|
90
91
|
switch (tok) {
|
|
91
|
-
#define PG_KEYWORD(a,b,c) case b: is_keyword = true; break;
|
|
92
|
+
#define PG_KEYWORD(a,b,c,d) case b: is_keyword = true; break;
|
|
92
93
|
#include "parser/kwlist.h"
|
|
93
94
|
default: is_keyword = false;
|
|
94
95
|
}
|
|
@@ -165,11 +166,11 @@ PgQuerySplitResult pg_query_split_with_parser(const char* input)
|
|
|
165
166
|
{
|
|
166
167
|
MemoryContext ctx = NULL;
|
|
167
168
|
PgQueryInternalParsetreeAndError parsetree_and_error;
|
|
168
|
-
PgQuerySplitResult result = {};
|
|
169
|
+
PgQuerySplitResult result = {0};
|
|
169
170
|
|
|
170
171
|
ctx = pg_query_enter_memory_context();
|
|
171
172
|
|
|
172
|
-
parsetree_and_error = pg_query_raw_parse(input);
|
|
173
|
+
parsetree_and_error = pg_query_raw_parse(input, PG_QUERY_PARSE_DEFAULT);
|
|
173
174
|
|
|
174
175
|
// These are all malloc-ed and will survive exiting the memory context, the caller is responsible to free them now
|
|
175
176
|
result.stderr_buffer = parsetree_and_error.stderr_buffer;
|