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
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b7ecf94b691013f4f32e593af1a9626f26bfe148bbb6482c4d4d3d92758aadec
|
|
4
|
+
data.tar.gz: 554972dda2feecab635e154c1134d6da4fe7ce136c44ce7c3dea4c6e0b5d3a4c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2f09d9bf624acd8e13fdfcc975871c2e9d184a10fc7630af8a060e9a97cdfffba749145d4be1b6ec75cde4be42a5629c26545bf6b1ba6617d3354228e191d7b1
|
|
7
|
+
data.tar.gz: 602ca65b8c7f700dba44a7d2ed0b13d41953cf053d101b07d1766564b9fd34db687c6321e320c6f54977ee1be21032ceae29ec69be1b5d7eb3d3cde26ead1f1a
|
data/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,171 @@
|
|
|
4
4
|
|
|
5
5
|
* ...
|
|
6
6
|
|
|
7
|
+
## 5.1.0 2024-01-09
|
|
8
|
+
|
|
9
|
+
* Update to libpg_query 16-5.1.0
|
|
10
|
+
- Add support for running on Windows
|
|
11
|
+
- Add support for compiling on 32-bit systems
|
|
12
|
+
* Treewalker: Allow passing a block with a single argument to walk!
|
|
13
|
+
* PgQuery::Node: Add inner and inner= helpers to get/set inner object
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
## 5.0.0 2023-12-22
|
|
17
|
+
|
|
18
|
+
* Upgrade to libpg_query 16-5.0.0
|
|
19
|
+
- Updates to the Postgres 16 parser
|
|
20
|
+
- Multiple deparser improvements
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
## 4.2.3 2023-08-04
|
|
24
|
+
|
|
25
|
+
* Update to libpg_query 15-4.2.3
|
|
26
|
+
- Fix builds when compiling with `glibc >= 2.38` [#203](https://github.com/pganalyze/libpg_query/pull/203)
|
|
27
|
+
- Deparser: Add support for COALESCE and other expressions in LIMIT clause [#199](https://github.com/pganalyze/libpg_query/pull/199)
|
|
28
|
+
|
|
29
|
+
## 4.2.2 2023-07-07
|
|
30
|
+
|
|
31
|
+
* Update to libpg_query 15-4.2.2
|
|
32
|
+
- Deparser: Add support for multi-statement CREATE PROCEDURE definitions
|
|
33
|
+
- Deparser: Correctly quote identifier in ALTER TABLE ... ADD CONSTRAINT [x]
|
|
34
|
+
- Deparser: Add support for index fillfactor within CREATE TABLE, fix SHOW ALL
|
|
35
|
+
* Fix builds on FreeBSD ([#292](https://github.com/pganalyze/pg_query/pull/292))
|
|
36
|
+
- This was broken since 4.2.0, due to pg_query_ruby_freebsd.sym being removed by accident
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
## 4.2.1 2023-05-19
|
|
40
|
+
|
|
41
|
+
* Parse: Fix `ALTER INDEX my_index_name` to return `tables=[]` ([#285](https://github.com/pganalyze/pg_query/pull/285))
|
|
42
|
+
* Parse: Detect tables in a SELECT INTO clause as DDL tables ([#281](https://github.com/pganalyze/pg_query/pull/281))
|
|
43
|
+
* Add support for Ruby 3.2 ([#283](https://github.com/pganalyze/pg_query/pull/283))
|
|
44
|
+
* Bump up `google-protobuf` dependency to `>= 3.22.3`
|
|
45
|
+
- 3.22.0 or newer is required for Ruby 3.2 support
|
|
46
|
+
* Update to libpg_query 15-4.2.1
|
|
47
|
+
- Deparser: Handle INTERVAL correctly when used in SET statements
|
|
48
|
+
- Deparser: Ensure index names are quoted as identifiers
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
## 4.2.0 2023-02-08
|
|
52
|
+
|
|
53
|
+
* Update to libpg_query 15-4.2.0
|
|
54
|
+
- Update to PostgreSQL 15.1
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
## 2.2.1 2023-01-20
|
|
58
|
+
|
|
59
|
+
* Detect tables used in the query of a PREPARE statement ([#273](https://github.com/pganalyze/pg_query/pull/273))
|
|
60
|
+
* Expose recursive walk functionality via walk! ([#268](https://github.com/pganalyze/pg_query/pull/268))
|
|
61
|
+
* Retain schema in name when parsing out functions ([#272](https://github.com/pganalyze/pg_query/pull/272))
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
## 2.2.0 2022-11-02
|
|
65
|
+
|
|
66
|
+
* Update to libpg_query 13-2.2.0 ([#264](https://github.com/pganalyze/pg_query/pull/264))
|
|
67
|
+
- Fingerprinting version 3.1
|
|
68
|
+
- Fixes issue with "SELECT DISTINCT" having the same fingerprint as "SELECT"
|
|
69
|
+
(fingerprints for "SELECT DISTINCT" will change with this revision)
|
|
70
|
+
- Group additional DDL statements together that otherwise generate a lot of
|
|
71
|
+
unique fingerprints (ListenStmt, UnlistenStmt, NotifyStmt, CreateFunctionStmt,
|
|
72
|
+
FunctionParameter and DoStmt)
|
|
73
|
+
- Deparser improvements
|
|
74
|
+
- Prefix errors with "deparse", and remove some asserts
|
|
75
|
+
- Fix potential segfault when passing invalid protobuf (RawStmt without Stmt)
|
|
76
|
+
- Update to Postgres 13.8 patch release
|
|
77
|
+
- Backport Xcode 14.1 build fix from upcoming 13.9 release
|
|
78
|
+
- Normalize additional DDL statements
|
|
79
|
+
- Add support for analyzing PL/pgSQL code inside DO blocks
|
|
80
|
+
- Fix memory leak in pg_query_fingerprint error handling
|
|
81
|
+
- PL/pgSQL parser: Add support for Assert, SET, COMMIT, ROLLBACK and CALL
|
|
82
|
+
- Add support for parsing more operators that include a `?` character
|
|
83
|
+
* Support deparsing deeply nested queries ([#259](https://github.com/pganalyze/pg_query/pull/259))
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
## 2.1.4 2022-09-19
|
|
87
|
+
|
|
88
|
+
* Truncate: Simplify VALUES(...) lists
|
|
89
|
+
* Truncate: Correctly handle UPDATE and ON CONFLICT target lists
|
|
90
|
+
* Support complex queries with deeply nested ASTs ([#238](https://github.com/pganalyze/pg_query/pull/238))
|
|
91
|
+
* Find table references inside type casts
|
|
92
|
+
* Find function calls referenced in expression indexes ([#249](https://github.com/pganalyze/pg_query/pull/249))
|
|
93
|
+
* Drop `Init_pg_query` from exported symbol map ([#256](https://github.com/pganalyze/pg_query/pull/256))
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
## 2.1.3 2022-01-28
|
|
97
|
+
|
|
98
|
+
* Track tables in EXCEPT and INTERSECT queries ([#239](https://github.com/pganalyze/pg_query/pull/239))
|
|
99
|
+
* Get filter_columns working with UNION/EXCEPT/INTERSECT ([#240](https://github.com/pganalyze/pg_query/pull/240))
|
|
100
|
+
* Update google-protobuf to address CVE scanner complaints
|
|
101
|
+
- Note that none of the CVEs apply to pg_query, but this avoids unnecessary errors when
|
|
102
|
+
the google-protobuf dependency is pulled in
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
## 2.1.2 2021-11-12
|
|
106
|
+
|
|
107
|
+
* Find tables in using clause of delete statement ([#234](https://github.com/pganalyze/pg_query/pull/234))
|
|
108
|
+
* Find tables in case statements ([#235](https://github.com/pganalyze/pg_query/pull/235))
|
|
109
|
+
* Correctly find nested tables in a subselect in a join condition ([#233](https://github.com/pganalyze/pg_query/pull/233))
|
|
110
|
+
* Mark Postgres methods as visibility hidden, to avoid bloating dynamic symbol table ([#232](https://github.com/pganalyze/pg_query/pull/232))
|
|
111
|
+
- This is required on ELF platforms (i.e. Linux, etc) to avoid including all global
|
|
112
|
+
symbols in the shared library's symbol table, bloating the size, and causing
|
|
113
|
+
potential conflicts with other C libraries using the same symbol names.
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
## 2.1.1 2021-10-13
|
|
117
|
+
|
|
118
|
+
* Update to libpg_query 13-2.1.0 ([#230](https://github.com/pganalyze/pg_query/pull/230))
|
|
119
|
+
- Normalize: add funcname error object
|
|
120
|
+
- Normalize: Match GROUP BY against target list and re-use param refs
|
|
121
|
+
- PL/pgSQL: Setup namespace items for parameters, support RECORD types
|
|
122
|
+
- This significantly improves parsing for PL/pgSQL functions, to the extent
|
|
123
|
+
that most functions should now parse successfully
|
|
124
|
+
- Normalize: Don't modify constants in TypeName typmods/arrayBounds fields
|
|
125
|
+
- This matches how pg_stat_statement behaves, and avoids causing parsing
|
|
126
|
+
errors on the normalized statement
|
|
127
|
+
- Don't fail builds on systems that have strchrnul support (FreeBSD)
|
|
128
|
+
* Fix build on FreeBSD ([#222](https://github.com/pganalyze/pg_query/pull/222))
|
|
129
|
+
* Add workaround for Ruby garbage collection bug ([#227](https://github.com/pganalyze/pg_query/pull/227))
|
|
130
|
+
- The Ruby interpreter has a bug in `String#concat` where the appended
|
|
131
|
+
array may be garbage collected prematurely because the compiler
|
|
132
|
+
optimized out a Ruby stack variable. We now call `to_ary` on the
|
|
133
|
+
Protobuf object to ensure the array lands on the Ruby stack so the
|
|
134
|
+
garbage collector sees it.
|
|
135
|
+
- The real fix in the interpreter is described in
|
|
136
|
+
https://bugs.ruby-lang.org/issues/18140#note-2, but most current Ruby
|
|
137
|
+
interpreters won't have this fix for some time.
|
|
138
|
+
* Table/function extraction: Support subselects and LATERAL better ([#229](https://github.com/pganalyze/pg_query/pull/229))
|
|
139
|
+
- This reworks the parsing logic so we don't ignore certain kinds of
|
|
140
|
+
subselects.
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
## 2.1.0 2021-07-04
|
|
144
|
+
|
|
145
|
+
* Update to libpg_query 13-2.0.6
|
|
146
|
+
- Update to Postgres 13.3 patch release
|
|
147
|
+
- Normalize: Don't touch "GROUP BY 1" and "ORDER BY 1" expressions, keep original text
|
|
148
|
+
- Fingerprint: Cache list item hashes to fingerprint complex queries faster
|
|
149
|
+
- Deparser: Emit the RangeVar catalogname if present
|
|
150
|
+
- Fix crash in pg_scan function when encountering backslash escapes
|
|
151
|
+
* Support extracting functions from a parsed query ([#147](https://github.com/pganalyze/pg_query/pull/147))
|
|
152
|
+
- Adds new `functions`, `ddl_functions` and `call_functions` methods
|
|
153
|
+
- Note that functions are identified by their name only, not their full type definition,
|
|
154
|
+
since raw query parsetrees don't contain sufficient data to identify the types of
|
|
155
|
+
arguments when functions are called
|
|
156
|
+
* Relax google-protobuf dependency ([#213](https://github.com/pganalyze/pg_query/pull/213))
|
|
157
|
+
* Update google-protobuf to 3.17.1 ([#212](https://github.com/pganalyze/pg_query/pull/212))
|
|
158
|
+
- google-protobuf 3.15.x has a bug that causes a seg fault in Ruby under
|
|
159
|
+
certain conditions (https://github.com/protocolbuffers/protobuf/pull/8639). Use
|
|
160
|
+
google-protobuf 3.17.1 instead.
|
|
161
|
+
* Use Protobuf definition for determining JSON field names
|
|
162
|
+
- Note you may see a breaking change if you were using `PgQuery::ParseResult.encode_json`
|
|
163
|
+
to map the protobuf result to JSON, since this now respects the intended JSON names
|
|
164
|
+
from the Proto3 definition (instead of the differently formatted Protobuf field names)
|
|
165
|
+
* Rakefile: Fix "rake clean" by using CLEAN.include instead of CLEAN.<<
|
|
166
|
+
* Find tables inside COALESCE/MIN/MAX functions, UPDATE FROM list
|
|
167
|
+
* Extconf: Add library include path using $INCFLAGS, list it first
|
|
168
|
+
- This ensures any system installed libpg_query gets considered after
|
|
169
|
+
the bundled libpg_query, avoiding errors where the wrong header files
|
|
170
|
+
are used.
|
|
171
|
+
|
|
7
172
|
|
|
8
173
|
## 2.0.3 2021-04-05
|
|
9
174
|
|
data/README.md
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
This Ruby extension uses the actual PostgreSQL server source to parse SQL queries and return the internal PostgreSQL parsetree.
|
|
4
4
|
|
|
5
|
-
In addition the extension allows you to normalize queries (replacing constant values with
|
|
5
|
+
In addition the extension allows you to normalize queries (replacing constant values with $n) and parse these normalized queries into a parsetree again.
|
|
6
6
|
|
|
7
7
|
When you build this extension, it builds parts of the PostgreSQL server source (see [libpg_query](https://github.com/pganalyze/libpg_query)), and then statically links it into this extension.
|
|
8
8
|
|
|
9
|
-
This
|
|
9
|
+
This may seem like a lot of complexity, but is the only reliable way of parsing all valid PostgreSQL queries.
|
|
10
10
|
|
|
11
11
|
You can find further examples and a longer rationale here: https://pganalyze.com/blog/parse-postgresql-queries-in-ruby.html
|
|
12
12
|
|
|
@@ -25,10 +25,10 @@ Due to compiling parts of PostgreSQL, installation might take a while on slower
|
|
|
25
25
|
```ruby
|
|
26
26
|
PgQuery.parse("SELECT 1")
|
|
27
27
|
|
|
28
|
-
=> #<PgQuery::ParserResult:
|
|
28
|
+
=> #<PgQuery::ParserResult:0x000000012ec4e9e0
|
|
29
29
|
@query="SELECT 1",
|
|
30
30
|
@tree=<PgQuery::ParseResult:
|
|
31
|
-
version:
|
|
31
|
+
version: 160001,
|
|
32
32
|
stmts: [
|
|
33
33
|
<PgQuery::RawStmt:
|
|
34
34
|
stmt: <PgQuery::Node:
|
|
@@ -41,9 +41,8 @@ PgQuery.parse("SELECT 1")
|
|
|
41
41
|
indirection: [],
|
|
42
42
|
val: <PgQuery::Node:
|
|
43
43
|
a_const: <PgQuery::A_Const:
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
>,
|
|
44
|
+
ival: <PgQuery::Integer: ival: 1>,
|
|
45
|
+
isnull: false,
|
|
47
46
|
location: 7
|
|
48
47
|
>
|
|
49
48
|
>,
|
|
@@ -53,6 +52,7 @@ PgQuery.parse("SELECT 1")
|
|
|
53
52
|
],
|
|
54
53
|
from_clause: [],
|
|
55
54
|
group_clause: [],
|
|
55
|
+
group_distinct: false,
|
|
56
56
|
window_clause: [],
|
|
57
57
|
values_lists: [],
|
|
58
58
|
sort_clause: [],
|
|
@@ -67,11 +67,18 @@ PgQuery.parse("SELECT 1")
|
|
|
67
67
|
>
|
|
68
68
|
]
|
|
69
69
|
>,
|
|
70
|
-
@warnings=[]
|
|
70
|
+
@warnings=[],
|
|
71
|
+
@tables=nil,
|
|
72
|
+
@aliases=nil,
|
|
73
|
+
@cte_names=nil,
|
|
74
|
+
@functions=nil
|
|
75
|
+
>
|
|
71
76
|
```
|
|
72
77
|
|
|
73
78
|
### Modifying a parsed query and turning it into SQL again
|
|
74
79
|
|
|
80
|
+
This is a simple example for `deparse`, for more complex modification, use `walk!`.
|
|
81
|
+
|
|
75
82
|
```ruby
|
|
76
83
|
parsed_query = PgQuery.parse("SELECT * FROM users")
|
|
77
84
|
|
|
@@ -90,20 +97,12 @@ parsed_query.deparse
|
|
|
90
97
|
PgQuery.normalize("SELECT 1 FROM x WHERE y = 'foo'")
|
|
91
98
|
|
|
92
99
|
=> "SELECT $1 FROM x WHERE y = $2"
|
|
93
|
-
|
|
94
|
-
# Parsing a normalized query (pre-Postgres 10 style)
|
|
95
|
-
PgQuery.parse("SELECT ? FROM x WHERE y = ?")
|
|
96
|
-
|
|
97
|
-
=> #<PgQuery::ParserResult:0x00007fb69a97a5d8
|
|
98
|
-
@query="SELECT ? FROM x WHERE y = ?",
|
|
99
|
-
@tree=<PgQuery::ParseResult: ...>,
|
|
100
|
-
@warnings=[]>
|
|
101
100
|
```
|
|
102
101
|
|
|
103
102
|
### Extracting tables from a query
|
|
104
103
|
|
|
105
104
|
```ruby
|
|
106
|
-
PgQuery.parse("SELECT
|
|
105
|
+
PgQuery.parse("SELECT $1 FROM x JOIN y USING (id) WHERE z = $2").tables
|
|
107
106
|
|
|
108
107
|
=> ["x", "y"]
|
|
109
108
|
```
|
|
@@ -111,7 +110,7 @@ PgQuery.parse("SELECT ? FROM x JOIN y USING (id) WHERE z = ?").tables
|
|
|
111
110
|
### Extracting columns from a query
|
|
112
111
|
|
|
113
112
|
```ruby
|
|
114
|
-
PgQuery.parse("SELECT
|
|
113
|
+
PgQuery.parse("SELECT $1 FROM x WHERE x.y = $2 AND z = $3").filter_columns
|
|
115
114
|
|
|
116
115
|
=> [["x", "y"], [nil, "z"]]
|
|
117
116
|
```
|
|
@@ -128,25 +127,62 @@ PgQuery.parse("SELECT 2; --- comment").fingerprint
|
|
|
128
127
|
=> "50fde20626009aba"
|
|
129
128
|
|
|
130
129
|
# Faster fingerprint method that is implemented inside the native C library
|
|
131
|
-
PgQuery.fingerprint("SELECT
|
|
130
|
+
PgQuery.fingerprint("SELECT $1")
|
|
132
131
|
|
|
133
132
|
=> "50fde20626009aba"
|
|
134
133
|
```
|
|
135
134
|
|
|
136
|
-
|
|
135
|
+
### Scanning a query into tokens
|
|
136
|
+
|
|
137
|
+
```ruby
|
|
138
|
+
PgQuery.scan('SELECT 1 --comment')
|
|
139
|
+
|
|
140
|
+
=> [<PgQuery::ScanResult: version: 160001, tokens: [
|
|
141
|
+
<PgQuery::ScanToken: start: 0, end: 6, token: :SELECT, keyword_kind: :RESERVED_KEYWORD>,
|
|
142
|
+
<PgQuery::ScanToken: start: 7, end: 8, token: :ICONST, keyword_kind: :NO_KEYWORD>,
|
|
143
|
+
<PgQuery::ScanToken: start: 9, end: 18, token: :SQL_COMMENT, keyword_kind: :NO_KEYWORD>]>,
|
|
144
|
+
[]]
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### Walking the parse tree
|
|
148
|
+
|
|
149
|
+
For generalized use, PgQuery provides `walk!` as a means to recursively work with the parsed query.
|
|
150
|
+
|
|
151
|
+
This can be used to create a bespoke pretty printer:
|
|
152
|
+
|
|
153
|
+
```ruby
|
|
154
|
+
parsed_query = PgQuery.parse "SELECT * FROM tbl"
|
|
155
|
+
parsed_query.walk! { |node, k, v, location| puts k }
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
More usefully, this can be used to rewrite a query. For example:
|
|
159
|
+
|
|
160
|
+
```ruby
|
|
161
|
+
parsed_query.walk! do |node, k, v, location|
|
|
162
|
+
next unless k.eql?(:range_var) || k.eql?(:relation)
|
|
163
|
+
next if v.relname.nil?
|
|
164
|
+
v.relname = "X_" + v.relname
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
parsed_query.deparse
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
There are some caveats, and limitations, in this example.
|
|
171
|
+
|
|
172
|
+
First, some of the tree nodes are frozen. You can replace them, but you cannot modify in place.
|
|
137
173
|
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
to support parsing normalized queries containing `?` replacement characters.
|
|
174
|
+
Second, table rewriting is a bit more nuanced than this example. While this will rewrite the table names, it will
|
|
175
|
+
not correctly handle all CTEs, or rewrite columns with explicit table names.
|
|
141
176
|
|
|
142
177
|
## Supported Ruby Versions
|
|
143
178
|
|
|
144
179
|
Currently tested and officially supported Ruby versions:
|
|
145
180
|
|
|
146
|
-
* CRuby 2.5
|
|
147
181
|
* CRuby 2.6
|
|
148
182
|
* CRuby 2.7
|
|
149
183
|
* CRuby 3.0
|
|
184
|
+
* CRuby 3.1
|
|
185
|
+
* CRuby 3.2
|
|
150
186
|
|
|
151
187
|
Not supported:
|
|
152
188
|
|
|
@@ -170,7 +206,7 @@ Once that is done, follow the following steps:
|
|
|
170
206
|
|
|
171
207
|
## Resources
|
|
172
208
|
|
|
173
|
-
See [libpg_query](https://github.com/pganalyze/libpg_query/blob/
|
|
209
|
+
See [libpg_query](https://github.com/pganalyze/libpg_query/blob/15-latest/README.md#resources) for pg_query in other languages, as well as products/tools built on pg_query.
|
|
174
210
|
|
|
175
211
|
## Original Author
|
|
176
212
|
|
|
@@ -184,8 +220,10 @@ See [libpg_query](https://github.com/pganalyze/libpg_query/blob/13-latest/README
|
|
|
184
220
|
|
|
185
221
|
## License
|
|
186
222
|
|
|
187
|
-
|
|
188
|
-
|
|
223
|
+
PostgreSQL server source code, used under the [PostgreSQL license](https://www.postgresql.org/about/licence/).<br>
|
|
224
|
+
Portions Copyright (c) 1996-2023, The PostgreSQL Global Development Group<br>
|
|
225
|
+
Portions Copyright (c) 1994, The Regents of the University of California
|
|
189
226
|
|
|
190
|
-
|
|
191
|
-
Copyright (c)
|
|
227
|
+
All other parts are licensed under the 3-clause BSD license, see LICENSE file for details.<br>
|
|
228
|
+
Copyright (c) 2015, Lukas Fittl <lukas@fittl.com><br>
|
|
229
|
+
Copyright (c) 2016-2023, Duboce Labs, Inc. (pganalyze) <team@pganalyze.com>
|
data/Rakefile
CHANGED
|
@@ -5,8 +5,8 @@ require 'rspec/core/rake_task'
|
|
|
5
5
|
require 'rubocop/rake_task'
|
|
6
6
|
require 'open-uri'
|
|
7
7
|
|
|
8
|
-
LIB_PG_QUERY_TAG = '
|
|
9
|
-
LIB_PG_QUERY_SHA256SUM = '
|
|
8
|
+
LIB_PG_QUERY_TAG = '16-5.1.0'.freeze
|
|
9
|
+
LIB_PG_QUERY_SHA256SUM = '31f25b573da1c966bc762b0313b0a50cdd03aabdbaf666d90469eddcb1656df7'.freeze
|
|
10
10
|
|
|
11
11
|
Rake::ExtensionTask.new 'pg_query' do |ext|
|
|
12
12
|
ext.lib_dir = 'lib/pg_query'
|
|
@@ -21,9 +21,9 @@ task default: %i[spec lint]
|
|
|
21
21
|
task test: :spec
|
|
22
22
|
task lint: :rubocop
|
|
23
23
|
|
|
24
|
-
CLEAN
|
|
25
|
-
CLEAN
|
|
26
|
-
CLEAN
|
|
24
|
+
CLEAN.include 'tmp/**/*'
|
|
25
|
+
CLEAN.include 'ext/pg_query/*.o'
|
|
26
|
+
CLEAN.include 'lib/pg_query/pg_query.bundle'
|
|
27
27
|
|
|
28
28
|
task :update_source do
|
|
29
29
|
workdir = File.join(__dir__, 'tmp')
|
|
@@ -55,18 +55,17 @@ task :update_source do
|
|
|
55
55
|
# Backup important files from ext dir
|
|
56
56
|
system("rm -fr #{extbakdir}")
|
|
57
57
|
system("mkdir -p #{extbakdir}")
|
|
58
|
-
system("cp -a #{extdir}/pg_query_ruby.
|
|
58
|
+
system("cp -a #{extdir}/pg_query_ruby{.c,.sym,_freebsd.sym} #{extdir}/extconf.rb #{extbakdir}")
|
|
59
59
|
|
|
60
60
|
FileUtils.rm_rf extdir
|
|
61
61
|
|
|
62
62
|
# Reduce everything down to one directory
|
|
63
63
|
system("mkdir -p #{extdir}")
|
|
64
64
|
system("cp -a #{libdir}/src/* #{extdir}/")
|
|
65
|
+
system("mv #{extdir}/postgres/include #{extdir}/include/postgres")
|
|
65
66
|
system("mv #{extdir}/postgres/* #{extdir}/")
|
|
66
67
|
system("rmdir #{extdir}/postgres")
|
|
67
68
|
system("cp -a #{libdir}/pg_query.h #{extdir}/include")
|
|
68
|
-
# Make sure every .c file in the top-level directory is its own translation unit
|
|
69
|
-
system("mv #{extdir}/*{_conds,_defs,_helper}.c #{extdir}/include")
|
|
70
69
|
# Protobuf definitions
|
|
71
70
|
system("protoc --proto_path=#{libdir}/protobuf --ruby_out=#{File.join(__dir__, 'lib/pg_query')} #{libdir}/protobuf/pg_query.proto")
|
|
72
71
|
system("mkdir -p #{extdir}/include/protobuf")
|
|
@@ -85,19 +84,5 @@ task :update_source do
|
|
|
85
84
|
# Other support files
|
|
86
85
|
system("cp -a #{libdir}/testdata/* #{testfilesdir}")
|
|
87
86
|
# Copy back the custom ext files
|
|
88
|
-
system("cp -a #{extbakdir}/pg_query_ruby.
|
|
89
|
-
|
|
90
|
-
# Generate JSON field name helper (workaround until https://github.com/protocolbuffers/protobuf/pull/8356 is merged)
|
|
91
|
-
str = "module PgQuery\n INTERNAL_PROTO_FIELD_NAME_TO_JSON_NAME = {\n"
|
|
92
|
-
cur_type = nil
|
|
93
|
-
File.read(File.join(libdir, 'protobuf/pg_query.proto')).each_line do |line|
|
|
94
|
-
if line[/^message (\w+)/]
|
|
95
|
-
cur_type = $1
|
|
96
|
-
next
|
|
97
|
-
end
|
|
98
|
-
next unless line[/(repeated )?\w+ (\w+) = \d+( \[json_name="(\w+)"\])?;/]
|
|
99
|
-
str += format(" [%s, :%s] => '%s',\n", cur_type, $2, $4 || $2)
|
|
100
|
-
end
|
|
101
|
-
str += " }\nend\n"
|
|
102
|
-
File.write(File.join(__dir__, 'lib/pg_query/json_field_names.rb'), str)
|
|
87
|
+
system("cp -a #{extbakdir}/pg_query_ruby{.c,.sym,_freebsd.sym} #{extbakdir}/extconf.rb #{extdir}")
|
|
103
88
|
end
|
data/ext/pg_query/extconf.rb
CHANGED
|
@@ -7,12 +7,30 @@ require 'pathname'
|
|
|
7
7
|
|
|
8
8
|
$objs = Dir.glob(File.join(__dir__, '*.c')).map { |f| Pathname.new(f).sub_ext('.o').to_s }
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
if RUBY_PLATFORM !~ /cygwin|mswin|mingw|bccwin|wince|emx/
|
|
11
|
+
$CFLAGS << " -fvisibility=hidden -O3 -Wall -fno-strict-aliasing -fwrapv -fstack-protector -Wno-unused-function -Wno-unused-variable -Wno-clobbered -Wno-sign-compare -Wno-discarded-qualifiers -Wno-unknown-warning-option -g"
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
$INCFLAGS = "-I#{File.join(__dir__, 'include')} " + "-I#{File.join(__dir__, 'include', 'postgres')} " + $INCFLAGS
|
|
15
|
+
|
|
16
|
+
if RUBY_PLATFORM =~ /cygwin|mswin|mingw|bccwin|wince|emx/
|
|
17
|
+
$INCFLAGS = "-I#{File.join(__dir__, 'include', 'postgres', 'port', 'win32')} " + $INCFLAGS
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
if RUBY_PLATFORM =~ /mswin/
|
|
21
|
+
$INCFLAGS = "-I#{File.join(__dir__, 'include', 'postgres', 'port', 'win32_msvc')} " + $INCFLAGS
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
SYMFILE =
|
|
25
|
+
if RUBY_PLATFORM =~ /freebsd/
|
|
26
|
+
File.join(__dir__, 'pg_query_ruby_freebsd.sym')
|
|
27
|
+
elsif RUBY_PLATFORM !~ /cygwin|mswin|mingw|bccwin|wince|emx/
|
|
28
|
+
File.join(__dir__, 'pg_query_ruby.sym')
|
|
29
|
+
end
|
|
11
30
|
|
|
12
|
-
SYMFILE = File.join(__dir__, 'pg_query_ruby.sym')
|
|
13
31
|
if RUBY_PLATFORM =~ /darwin/
|
|
14
32
|
$DLDFLAGS << " -Wl,-exported_symbols_list #{SYMFILE}" unless defined?(::Rubinius)
|
|
15
|
-
|
|
33
|
+
elsif RUBY_PLATFORM !~ /cygwin|mswin|mingw|bccwin|wince|emx/
|
|
16
34
|
$DLDFLAGS << " -Wl,--retain-symbols-file=#{SYMFILE}"
|
|
17
35
|
end
|
|
18
36
|
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
#define PG_QUERY_H
|
|
3
3
|
|
|
4
4
|
#include <stdint.h>
|
|
5
|
+
#include <sys/types.h>
|
|
5
6
|
|
|
6
7
|
typedef struct {
|
|
7
8
|
char* message; // exception message
|
|
@@ -13,7 +14,7 @@ typedef struct {
|
|
|
13
14
|
} PgQueryError;
|
|
14
15
|
|
|
15
16
|
typedef struct {
|
|
16
|
-
|
|
17
|
+
size_t len;
|
|
17
18
|
char* data;
|
|
18
19
|
} PgQueryProtobuf;
|
|
19
20
|
|
|
@@ -69,6 +70,27 @@ typedef struct {
|
|
|
69
70
|
PgQueryError* error;
|
|
70
71
|
} PgQueryNormalizeResult;
|
|
71
72
|
|
|
73
|
+
// Postgres parser options (parse mode and GUCs that affect parsing)
|
|
74
|
+
|
|
75
|
+
typedef enum
|
|
76
|
+
{
|
|
77
|
+
PG_QUERY_PARSE_DEFAULT = 0,
|
|
78
|
+
PG_QUERY_PARSE_TYPE_NAME,
|
|
79
|
+
PG_QUERY_PARSE_PLPGSQL_EXPR,
|
|
80
|
+
PG_QUERY_PARSE_PLPGSQL_ASSIGN1,
|
|
81
|
+
PG_QUERY_PARSE_PLPGSQL_ASSIGN2,
|
|
82
|
+
PG_QUERY_PARSE_PLPGSQL_ASSIGN3
|
|
83
|
+
} PgQueryParseMode;
|
|
84
|
+
|
|
85
|
+
// We technically only need 3 bits to store parse mode, but
|
|
86
|
+
// having 4 bits avoids API breaks if another one gets added.
|
|
87
|
+
#define PG_QUERY_PARSE_MODE_BITS 4
|
|
88
|
+
#define PG_QUERY_PARSE_MODE_BITMASK ((1 << PG_QUERY_PARSE_MODE_BITS) - 1)
|
|
89
|
+
|
|
90
|
+
#define PG_QUERY_DISABLE_BACKSLASH_QUOTE 16 // backslash_quote = off (default is safe_encoding, which is effectively on)
|
|
91
|
+
#define PG_QUERY_DISABLE_STANDARD_CONFORMING_STRINGS 32 // standard_conforming_strings = off (default is on)
|
|
92
|
+
#define PG_QUERY_DISABLE_ESCAPE_STRING_WARNING 64 // escape_string_warning = off (default is on)
|
|
93
|
+
|
|
72
94
|
#ifdef __cplusplus
|
|
73
95
|
extern "C" {
|
|
74
96
|
#endif
|
|
@@ -76,10 +98,13 @@ extern "C" {
|
|
|
76
98
|
PgQueryNormalizeResult pg_query_normalize(const char* input);
|
|
77
99
|
PgQueryScanResult pg_query_scan(const char* input);
|
|
78
100
|
PgQueryParseResult pg_query_parse(const char* input);
|
|
101
|
+
PgQueryParseResult pg_query_parse_opts(const char* input, int parser_options);
|
|
79
102
|
PgQueryProtobufParseResult pg_query_parse_protobuf(const char* input);
|
|
103
|
+
PgQueryProtobufParseResult pg_query_parse_protobuf_opts(const char* input, int parser_options);
|
|
80
104
|
PgQueryPlpgsqlParseResult pg_query_parse_plpgsql(const char* input);
|
|
81
105
|
|
|
82
106
|
PgQueryFingerprintResult pg_query_fingerprint(const char* input);
|
|
107
|
+
PgQueryFingerprintResult pg_query_fingerprint_opts(const char* input, int parser_options);
|
|
83
108
|
|
|
84
109
|
// Use pg_query_split_with_scanner when you need to split statements that may
|
|
85
110
|
// contain parse errors, otherwise pg_query_split_with_parser is recommended
|
|
@@ -106,9 +131,9 @@ void pg_query_free_fingerprint_result(PgQueryFingerprintResult result);
|
|
|
106
131
|
void pg_query_exit(void);
|
|
107
132
|
|
|
108
133
|
// Postgres version information
|
|
109
|
-
#define
|
|
110
|
-
#define
|
|
111
|
-
#define PG_VERSION_NUM
|
|
134
|
+
#define PG_MAJORVERSION "16"
|
|
135
|
+
#define PG_VERSION "16.1"
|
|
136
|
+
#define PG_VERSION_NUM 160001
|
|
112
137
|
|
|
113
138
|
// Deprecated APIs below
|
|
114
139
|
|