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
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Symbols referenced in this file:
|
|
3
3
|
* - exprLocation
|
|
4
4
|
* - leftmostLoc
|
|
5
|
-
* -
|
|
5
|
+
* - raw_expression_tree_walker_impl
|
|
6
6
|
*--------------------------------------------------------------------
|
|
7
7
|
*/
|
|
8
8
|
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* nodeFuncs.c
|
|
12
12
|
* Various general-purpose manipulations of Node trees
|
|
13
13
|
*
|
|
14
|
-
* Portions Copyright (c) 1996-
|
|
14
|
+
* Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
|
|
15
15
|
* Portions Copyright (c) 1994, Regents of the University of California
|
|
16
16
|
*
|
|
17
17
|
*
|
|
@@ -35,10 +35,12 @@
|
|
|
35
35
|
static bool expression_returns_set_walker(Node *node, void *context);
|
|
36
36
|
static int leftmostLoc(int loc1, int loc2);
|
|
37
37
|
static bool fix_opfuncids_walker(Node *node, void *context);
|
|
38
|
-
static bool planstate_walk_subplans(List *plans,
|
|
38
|
+
static bool planstate_walk_subplans(List *plans,
|
|
39
|
+
planstate_tree_walker_callback walker,
|
|
39
40
|
void *context);
|
|
40
41
|
static bool planstate_walk_members(PlanState **planstates, int nplans,
|
|
41
|
-
|
|
42
|
+
planstate_tree_walker_callback walker,
|
|
43
|
+
void *context);
|
|
42
44
|
|
|
43
45
|
|
|
44
46
|
/*
|
|
@@ -372,6 +374,18 @@ exprLocation(const Node *expr)
|
|
|
372
374
|
exprLocation((Node *) xexpr->args));
|
|
373
375
|
}
|
|
374
376
|
break;
|
|
377
|
+
case T_JsonFormat:
|
|
378
|
+
loc = ((const JsonFormat *) expr)->location;
|
|
379
|
+
break;
|
|
380
|
+
case T_JsonValueExpr:
|
|
381
|
+
loc = exprLocation((Node *) ((const JsonValueExpr *) expr)->raw_expr);
|
|
382
|
+
break;
|
|
383
|
+
case T_JsonConstructorExpr:
|
|
384
|
+
loc = ((const JsonConstructorExpr *) expr)->location;
|
|
385
|
+
break;
|
|
386
|
+
case T_JsonIsPredicate:
|
|
387
|
+
loc = ((const JsonIsPredicate *) expr)->location;
|
|
388
|
+
break;
|
|
375
389
|
case T_NullTest:
|
|
376
390
|
{
|
|
377
391
|
const NullTest *nexpr = (const NullTest *) expr;
|
|
@@ -523,9 +537,37 @@ exprLocation(const Node *expr)
|
|
|
523
537
|
case T_OnConflictClause:
|
|
524
538
|
loc = ((const OnConflictClause *) expr)->location;
|
|
525
539
|
break;
|
|
540
|
+
case T_CTESearchClause:
|
|
541
|
+
loc = ((const CTESearchClause *) expr)->location;
|
|
542
|
+
break;
|
|
543
|
+
case T_CTECycleClause:
|
|
544
|
+
loc = ((const CTECycleClause *) expr)->location;
|
|
545
|
+
break;
|
|
526
546
|
case T_CommonTableExpr:
|
|
527
547
|
loc = ((const CommonTableExpr *) expr)->location;
|
|
528
548
|
break;
|
|
549
|
+
case T_JsonKeyValue:
|
|
550
|
+
/* just use the key's location */
|
|
551
|
+
loc = exprLocation((Node *) ((const JsonKeyValue *) expr)->key);
|
|
552
|
+
break;
|
|
553
|
+
case T_JsonObjectConstructor:
|
|
554
|
+
loc = ((const JsonObjectConstructor *) expr)->location;
|
|
555
|
+
break;
|
|
556
|
+
case T_JsonArrayConstructor:
|
|
557
|
+
loc = ((const JsonArrayConstructor *) expr)->location;
|
|
558
|
+
break;
|
|
559
|
+
case T_JsonArrayQueryConstructor:
|
|
560
|
+
loc = ((const JsonArrayQueryConstructor *) expr)->location;
|
|
561
|
+
break;
|
|
562
|
+
case T_JsonAggConstructor:
|
|
563
|
+
loc = ((const JsonAggConstructor *) expr)->location;
|
|
564
|
+
break;
|
|
565
|
+
case T_JsonObjectAgg:
|
|
566
|
+
loc = exprLocation((Node *) ((const JsonObjectAgg *) expr)->constructor);
|
|
567
|
+
break;
|
|
568
|
+
case T_JsonArrayAgg:
|
|
569
|
+
loc = exprLocation((Node *) ((const JsonArrayAgg *) expr)->constructor);
|
|
570
|
+
break;
|
|
529
571
|
case T_PlaceHolderVar:
|
|
530
572
|
/* just use argument's location */
|
|
531
573
|
loc = exprLocation((Node *) ((const PlaceHolderVar *) expr)->phexpr);
|
|
@@ -715,7 +757,9 @@ leftmostLoc(int loc1, int loc2)
|
|
|
715
757
|
* uses, but may need to be revisited in future.
|
|
716
758
|
*/
|
|
717
759
|
|
|
718
|
-
|
|
760
|
+
#define WALK(n) walker((Node *) (n), context)
|
|
761
|
+
#define LIST_WALK(l) expression_tree_walker_impl((Node *) (l), walker, context)
|
|
762
|
+
#undef LIST_WALK
|
|
719
763
|
|
|
720
764
|
/*
|
|
721
765
|
* query_tree_walker --- initiate a walk of a Query's expressions
|
|
@@ -812,10 +856,6 @@ leftmostLoc(int loc1, int loc2)
|
|
|
812
856
|
#define FLATCOPY(newnode, node, nodetype) \
|
|
813
857
|
( (newnode) = (nodetype *) palloc(sizeof(nodetype)), \
|
|
814
858
|
memcpy((newnode), (node), sizeof(nodetype)) )
|
|
815
|
-
#define CHECKFLATCOPY(newnode, node, nodetype) \
|
|
816
|
-
( AssertMacro(IsA((node), nodetype)), \
|
|
817
|
-
(newnode) = (nodetype *) palloc(sizeof(nodetype)), \
|
|
818
|
-
memcpy((newnode), (node), sizeof(nodetype)) )
|
|
819
859
|
#define MUTATE(newfield, oldfield, fieldtype) \
|
|
820
860
|
( (newfield) = (fieldtype) mutator((Node *) (oldfield), context) )
|
|
821
861
|
|
|
@@ -835,9 +875,9 @@ leftmostLoc(int loc1, int loc2)
|
|
|
835
875
|
* which is the bitwise OR of flag values to suppress mutating of
|
|
836
876
|
* indicated items. (More flag bits may be added as needed.)
|
|
837
877
|
*
|
|
838
|
-
* Normally the Query node itself is copied, but some callers want
|
|
839
|
-
* modified in-place; they must pass QTW_DONT_COPY_QUERY in flags.
|
|
840
|
-
* modified substructure is safely copied in any case.
|
|
878
|
+
* Normally the top-level Query node itself is copied, but some callers want
|
|
879
|
+
* it to be modified in-place; they must pass QTW_DONT_COPY_QUERY in flags.
|
|
880
|
+
* All modified substructure is safely copied in any case.
|
|
841
881
|
*/
|
|
842
882
|
|
|
843
883
|
|
|
@@ -880,14 +920,14 @@ leftmostLoc(int loc1, int loc2)
|
|
|
880
920
|
* boundaries: we descend to everything that's possibly interesting.
|
|
881
921
|
*
|
|
882
922
|
* Currently, the node type coverage here extends only to DML statements
|
|
883
|
-
* (SELECT/INSERT/UPDATE/DELETE) and nodes that can appear in them,
|
|
884
|
-
* this is used mainly during analysis of CTEs, and only DML
|
|
885
|
-
* appear in CTEs.
|
|
923
|
+
* (SELECT/INSERT/UPDATE/DELETE/MERGE) and nodes that can appear in them,
|
|
924
|
+
* because this is used mainly during analysis of CTEs, and only DML
|
|
925
|
+
* statements can appear in CTEs.
|
|
886
926
|
*/
|
|
887
927
|
bool
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
928
|
+
raw_expression_tree_walker_impl(Node *node,
|
|
929
|
+
tree_walker_callback walker,
|
|
930
|
+
void *context)
|
|
891
931
|
{
|
|
892
932
|
ListCell *temp;
|
|
893
933
|
|
|
@@ -903,14 +943,15 @@ raw_expression_tree_walker(Node *node,
|
|
|
903
943
|
|
|
904
944
|
switch (nodeTag(node))
|
|
905
945
|
{
|
|
946
|
+
case T_JsonFormat:
|
|
906
947
|
case T_SetToDefault:
|
|
907
948
|
case T_CurrentOfExpr:
|
|
908
949
|
case T_SQLValueFunction:
|
|
909
950
|
case T_Integer:
|
|
910
951
|
case T_Float:
|
|
952
|
+
case T_Boolean:
|
|
911
953
|
case T_String:
|
|
912
954
|
case T_BitString:
|
|
913
|
-
case T_Null:
|
|
914
955
|
case T_ParamRef:
|
|
915
956
|
case T_A_Const:
|
|
916
957
|
case T_A_Star:
|
|
@@ -920,17 +961,17 @@ raw_expression_tree_walker(Node *node,
|
|
|
920
961
|
/* we assume the colnames list isn't interesting */
|
|
921
962
|
break;
|
|
922
963
|
case T_RangeVar:
|
|
923
|
-
return
|
|
964
|
+
return WALK(((RangeVar *) node)->alias);
|
|
924
965
|
case T_GroupingFunc:
|
|
925
|
-
return
|
|
966
|
+
return WALK(((GroupingFunc *) node)->args);
|
|
926
967
|
case T_SubLink:
|
|
927
968
|
{
|
|
928
969
|
SubLink *sublink = (SubLink *) node;
|
|
929
970
|
|
|
930
|
-
if (
|
|
971
|
+
if (WALK(sublink->testexpr))
|
|
931
972
|
return true;
|
|
932
973
|
/* we assume the operName is not interesting */
|
|
933
|
-
if (
|
|
974
|
+
if (WALK(sublink->subselect))
|
|
934
975
|
return true;
|
|
935
976
|
}
|
|
936
977
|
break;
|
|
@@ -938,55 +979,85 @@ raw_expression_tree_walker(Node *node,
|
|
|
938
979
|
{
|
|
939
980
|
CaseExpr *caseexpr = (CaseExpr *) node;
|
|
940
981
|
|
|
941
|
-
if (
|
|
982
|
+
if (WALK(caseexpr->arg))
|
|
942
983
|
return true;
|
|
943
984
|
/* we assume walker doesn't care about CaseWhens, either */
|
|
944
985
|
foreach(temp, caseexpr->args)
|
|
945
986
|
{
|
|
946
987
|
CaseWhen *when = lfirst_node(CaseWhen, temp);
|
|
947
988
|
|
|
948
|
-
if (
|
|
989
|
+
if (WALK(when->expr))
|
|
949
990
|
return true;
|
|
950
|
-
if (
|
|
991
|
+
if (WALK(when->result))
|
|
951
992
|
return true;
|
|
952
993
|
}
|
|
953
|
-
if (
|
|
994
|
+
if (WALK(caseexpr->defresult))
|
|
954
995
|
return true;
|
|
955
996
|
}
|
|
956
997
|
break;
|
|
957
998
|
case T_RowExpr:
|
|
958
999
|
/* Assume colnames isn't interesting */
|
|
959
|
-
return
|
|
1000
|
+
return WALK(((RowExpr *) node)->args);
|
|
960
1001
|
case T_CoalesceExpr:
|
|
961
|
-
return
|
|
1002
|
+
return WALK(((CoalesceExpr *) node)->args);
|
|
962
1003
|
case T_MinMaxExpr:
|
|
963
|
-
return
|
|
1004
|
+
return WALK(((MinMaxExpr *) node)->args);
|
|
964
1005
|
case T_XmlExpr:
|
|
965
1006
|
{
|
|
966
1007
|
XmlExpr *xexpr = (XmlExpr *) node;
|
|
967
1008
|
|
|
968
|
-
if (
|
|
1009
|
+
if (WALK(xexpr->named_args))
|
|
969
1010
|
return true;
|
|
970
1011
|
/* we assume walker doesn't care about arg_names */
|
|
971
|
-
if (
|
|
1012
|
+
if (WALK(xexpr->args))
|
|
1013
|
+
return true;
|
|
1014
|
+
}
|
|
1015
|
+
break;
|
|
1016
|
+
case T_JsonReturning:
|
|
1017
|
+
return WALK(((JsonReturning *) node)->format);
|
|
1018
|
+
case T_JsonValueExpr:
|
|
1019
|
+
{
|
|
1020
|
+
JsonValueExpr *jve = (JsonValueExpr *) node;
|
|
1021
|
+
|
|
1022
|
+
if (WALK(jve->raw_expr))
|
|
1023
|
+
return true;
|
|
1024
|
+
if (WALK(jve->formatted_expr))
|
|
1025
|
+
return true;
|
|
1026
|
+
if (WALK(jve->format))
|
|
1027
|
+
return true;
|
|
1028
|
+
}
|
|
1029
|
+
break;
|
|
1030
|
+
case T_JsonConstructorExpr:
|
|
1031
|
+
{
|
|
1032
|
+
JsonConstructorExpr *ctor = (JsonConstructorExpr *) node;
|
|
1033
|
+
|
|
1034
|
+
if (WALK(ctor->args))
|
|
1035
|
+
return true;
|
|
1036
|
+
if (WALK(ctor->func))
|
|
1037
|
+
return true;
|
|
1038
|
+
if (WALK(ctor->coercion))
|
|
1039
|
+
return true;
|
|
1040
|
+
if (WALK(ctor->returning))
|
|
972
1041
|
return true;
|
|
973
1042
|
}
|
|
974
1043
|
break;
|
|
1044
|
+
case T_JsonIsPredicate:
|
|
1045
|
+
return WALK(((JsonIsPredicate *) node)->expr);
|
|
975
1046
|
case T_NullTest:
|
|
976
|
-
return
|
|
1047
|
+
return WALK(((NullTest *) node)->arg);
|
|
977
1048
|
case T_BooleanTest:
|
|
978
|
-
return
|
|
1049
|
+
return WALK(((BooleanTest *) node)->arg);
|
|
979
1050
|
case T_JoinExpr:
|
|
980
1051
|
{
|
|
981
1052
|
JoinExpr *join = (JoinExpr *) node;
|
|
982
1053
|
|
|
983
|
-
if (
|
|
1054
|
+
if (WALK(join->larg))
|
|
984
1055
|
return true;
|
|
985
|
-
if (
|
|
1056
|
+
if (WALK(join->rarg))
|
|
986
1057
|
return true;
|
|
987
|
-
if (
|
|
1058
|
+
if (WALK(join->quals))
|
|
988
1059
|
return true;
|
|
989
|
-
if (
|
|
1060
|
+
if (WALK(join->alias))
|
|
990
1061
|
return true;
|
|
991
1062
|
/* using list is deemed uninteresting */
|
|
992
1063
|
}
|
|
@@ -995,18 +1066,18 @@ raw_expression_tree_walker(Node *node,
|
|
|
995
1066
|
{
|
|
996
1067
|
IntoClause *into = (IntoClause *) node;
|
|
997
1068
|
|
|
998
|
-
if (
|
|
1069
|
+
if (WALK(into->rel))
|
|
999
1070
|
return true;
|
|
1000
1071
|
/* colNames, options are deemed uninteresting */
|
|
1001
1072
|
/* viewQuery should be null in raw parsetree, but check it */
|
|
1002
|
-
if (
|
|
1073
|
+
if (WALK(into->viewQuery))
|
|
1003
1074
|
return true;
|
|
1004
1075
|
}
|
|
1005
1076
|
break;
|
|
1006
1077
|
case T_List:
|
|
1007
1078
|
foreach(temp, (List *) node)
|
|
1008
1079
|
{
|
|
1009
|
-
if (
|
|
1080
|
+
if (WALK((Node *) lfirst(temp)))
|
|
1010
1081
|
return true;
|
|
1011
1082
|
}
|
|
1012
1083
|
break;
|
|
@@ -1014,17 +1085,17 @@ raw_expression_tree_walker(Node *node,
|
|
|
1014
1085
|
{
|
|
1015
1086
|
InsertStmt *stmt = (InsertStmt *) node;
|
|
1016
1087
|
|
|
1017
|
-
if (
|
|
1088
|
+
if (WALK(stmt->relation))
|
|
1018
1089
|
return true;
|
|
1019
|
-
if (
|
|
1090
|
+
if (WALK(stmt->cols))
|
|
1020
1091
|
return true;
|
|
1021
|
-
if (
|
|
1092
|
+
if (WALK(stmt->selectStmt))
|
|
1022
1093
|
return true;
|
|
1023
|
-
if (
|
|
1094
|
+
if (WALK(stmt->onConflictClause))
|
|
1024
1095
|
return true;
|
|
1025
|
-
if (
|
|
1096
|
+
if (WALK(stmt->returningList))
|
|
1026
1097
|
return true;
|
|
1027
|
-
if (
|
|
1098
|
+
if (WALK(stmt->withClause))
|
|
1028
1099
|
return true;
|
|
1029
1100
|
}
|
|
1030
1101
|
break;
|
|
@@ -1032,15 +1103,15 @@ raw_expression_tree_walker(Node *node,
|
|
|
1032
1103
|
{
|
|
1033
1104
|
DeleteStmt *stmt = (DeleteStmt *) node;
|
|
1034
1105
|
|
|
1035
|
-
if (
|
|
1106
|
+
if (WALK(stmt->relation))
|
|
1036
1107
|
return true;
|
|
1037
|
-
if (
|
|
1108
|
+
if (WALK(stmt->usingClause))
|
|
1038
1109
|
return true;
|
|
1039
|
-
if (
|
|
1110
|
+
if (WALK(stmt->whereClause))
|
|
1040
1111
|
return true;
|
|
1041
|
-
if (
|
|
1112
|
+
if (WALK(stmt->returningList))
|
|
1042
1113
|
return true;
|
|
1043
|
-
if (
|
|
1114
|
+
if (WALK(stmt->withClause))
|
|
1044
1115
|
return true;
|
|
1045
1116
|
}
|
|
1046
1117
|
break;
|
|
@@ -1048,17 +1119,45 @@ raw_expression_tree_walker(Node *node,
|
|
|
1048
1119
|
{
|
|
1049
1120
|
UpdateStmt *stmt = (UpdateStmt *) node;
|
|
1050
1121
|
|
|
1051
|
-
if (
|
|
1122
|
+
if (WALK(stmt->relation))
|
|
1123
|
+
return true;
|
|
1124
|
+
if (WALK(stmt->targetList))
|
|
1125
|
+
return true;
|
|
1126
|
+
if (WALK(stmt->whereClause))
|
|
1127
|
+
return true;
|
|
1128
|
+
if (WALK(stmt->fromClause))
|
|
1129
|
+
return true;
|
|
1130
|
+
if (WALK(stmt->returningList))
|
|
1131
|
+
return true;
|
|
1132
|
+
if (WALK(stmt->withClause))
|
|
1133
|
+
return true;
|
|
1134
|
+
}
|
|
1135
|
+
break;
|
|
1136
|
+
case T_MergeStmt:
|
|
1137
|
+
{
|
|
1138
|
+
MergeStmt *stmt = (MergeStmt *) node;
|
|
1139
|
+
|
|
1140
|
+
if (WALK(stmt->relation))
|
|
1141
|
+
return true;
|
|
1142
|
+
if (WALK(stmt->sourceRelation))
|
|
1052
1143
|
return true;
|
|
1053
|
-
if (
|
|
1144
|
+
if (WALK(stmt->joinCondition))
|
|
1054
1145
|
return true;
|
|
1055
|
-
if (
|
|
1146
|
+
if (WALK(stmt->mergeWhenClauses))
|
|
1056
1147
|
return true;
|
|
1057
|
-
if (
|
|
1148
|
+
if (WALK(stmt->withClause))
|
|
1149
|
+
return true;
|
|
1150
|
+
}
|
|
1151
|
+
break;
|
|
1152
|
+
case T_MergeWhenClause:
|
|
1153
|
+
{
|
|
1154
|
+
MergeWhenClause *mergeWhenClause = (MergeWhenClause *) node;
|
|
1155
|
+
|
|
1156
|
+
if (WALK(mergeWhenClause->condition))
|
|
1058
1157
|
return true;
|
|
1059
|
-
if (
|
|
1158
|
+
if (WALK(mergeWhenClause->targetList))
|
|
1060
1159
|
return true;
|
|
1061
|
-
if (
|
|
1160
|
+
if (WALK(mergeWhenClause->values))
|
|
1062
1161
|
return true;
|
|
1063
1162
|
}
|
|
1064
1163
|
break;
|
|
@@ -1066,37 +1165,47 @@ raw_expression_tree_walker(Node *node,
|
|
|
1066
1165
|
{
|
|
1067
1166
|
SelectStmt *stmt = (SelectStmt *) node;
|
|
1068
1167
|
|
|
1069
|
-
if (
|
|
1168
|
+
if (WALK(stmt->distinctClause))
|
|
1070
1169
|
return true;
|
|
1071
|
-
if (
|
|
1170
|
+
if (WALK(stmt->intoClause))
|
|
1072
1171
|
return true;
|
|
1073
|
-
if (
|
|
1172
|
+
if (WALK(stmt->targetList))
|
|
1074
1173
|
return true;
|
|
1075
|
-
if (
|
|
1174
|
+
if (WALK(stmt->fromClause))
|
|
1076
1175
|
return true;
|
|
1077
|
-
if (
|
|
1176
|
+
if (WALK(stmt->whereClause))
|
|
1078
1177
|
return true;
|
|
1079
|
-
if (
|
|
1178
|
+
if (WALK(stmt->groupClause))
|
|
1080
1179
|
return true;
|
|
1081
|
-
if (
|
|
1180
|
+
if (WALK(stmt->havingClause))
|
|
1082
1181
|
return true;
|
|
1083
|
-
if (
|
|
1182
|
+
if (WALK(stmt->windowClause))
|
|
1084
1183
|
return true;
|
|
1085
|
-
if (
|
|
1184
|
+
if (WALK(stmt->valuesLists))
|
|
1086
1185
|
return true;
|
|
1087
|
-
if (
|
|
1186
|
+
if (WALK(stmt->sortClause))
|
|
1088
1187
|
return true;
|
|
1089
|
-
if (
|
|
1188
|
+
if (WALK(stmt->limitOffset))
|
|
1090
1189
|
return true;
|
|
1091
|
-
if (
|
|
1190
|
+
if (WALK(stmt->limitCount))
|
|
1092
1191
|
return true;
|
|
1093
|
-
if (
|
|
1192
|
+
if (WALK(stmt->lockingClause))
|
|
1094
1193
|
return true;
|
|
1095
|
-
if (
|
|
1194
|
+
if (WALK(stmt->withClause))
|
|
1096
1195
|
return true;
|
|
1097
|
-
if (
|
|
1196
|
+
if (WALK(stmt->larg))
|
|
1197
|
+
return true;
|
|
1198
|
+
if (WALK(stmt->rarg))
|
|
1199
|
+
return true;
|
|
1200
|
+
}
|
|
1201
|
+
break;
|
|
1202
|
+
case T_PLAssignStmt:
|
|
1203
|
+
{
|
|
1204
|
+
PLAssignStmt *stmt = (PLAssignStmt *) node;
|
|
1205
|
+
|
|
1206
|
+
if (WALK(stmt->indirection))
|
|
1098
1207
|
return true;
|
|
1099
|
-
if (
|
|
1208
|
+
if (WALK(stmt->val))
|
|
1100
1209
|
return true;
|
|
1101
1210
|
}
|
|
1102
1211
|
break;
|
|
@@ -1104,9 +1213,9 @@ raw_expression_tree_walker(Node *node,
|
|
|
1104
1213
|
{
|
|
1105
1214
|
A_Expr *expr = (A_Expr *) node;
|
|
1106
1215
|
|
|
1107
|
-
if (
|
|
1216
|
+
if (WALK(expr->lexpr))
|
|
1108
1217
|
return true;
|
|
1109
|
-
if (
|
|
1218
|
+
if (WALK(expr->rexpr))
|
|
1110
1219
|
return true;
|
|
1111
1220
|
/* operator name is deemed uninteresting */
|
|
1112
1221
|
}
|
|
@@ -1115,7 +1224,7 @@ raw_expression_tree_walker(Node *node,
|
|
|
1115
1224
|
{
|
|
1116
1225
|
BoolExpr *expr = (BoolExpr *) node;
|
|
1117
1226
|
|
|
1118
|
-
if (
|
|
1227
|
+
if (WALK(expr->args))
|
|
1119
1228
|
return true;
|
|
1120
1229
|
}
|
|
1121
1230
|
break;
|
|
@@ -1126,26 +1235,26 @@ raw_expression_tree_walker(Node *node,
|
|
|
1126
1235
|
{
|
|
1127
1236
|
FuncCall *fcall = (FuncCall *) node;
|
|
1128
1237
|
|
|
1129
|
-
if (
|
|
1238
|
+
if (WALK(fcall->args))
|
|
1130
1239
|
return true;
|
|
1131
|
-
if (
|
|
1240
|
+
if (WALK(fcall->agg_order))
|
|
1132
1241
|
return true;
|
|
1133
|
-
if (
|
|
1242
|
+
if (WALK(fcall->agg_filter))
|
|
1134
1243
|
return true;
|
|
1135
|
-
if (
|
|
1244
|
+
if (WALK(fcall->over))
|
|
1136
1245
|
return true;
|
|
1137
1246
|
/* function name is deemed uninteresting */
|
|
1138
1247
|
}
|
|
1139
1248
|
break;
|
|
1140
1249
|
case T_NamedArgExpr:
|
|
1141
|
-
return
|
|
1250
|
+
return WALK(((NamedArgExpr *) node)->arg);
|
|
1142
1251
|
case T_A_Indices:
|
|
1143
1252
|
{
|
|
1144
1253
|
A_Indices *indices = (A_Indices *) node;
|
|
1145
1254
|
|
|
1146
|
-
if (
|
|
1255
|
+
if (WALK(indices->lidx))
|
|
1147
1256
|
return true;
|
|
1148
|
-
if (
|
|
1257
|
+
if (WALK(indices->uidx))
|
|
1149
1258
|
return true;
|
|
1150
1259
|
}
|
|
1151
1260
|
break;
|
|
@@ -1153,51 +1262,51 @@ raw_expression_tree_walker(Node *node,
|
|
|
1153
1262
|
{
|
|
1154
1263
|
A_Indirection *indir = (A_Indirection *) node;
|
|
1155
1264
|
|
|
1156
|
-
if (
|
|
1265
|
+
if (WALK(indir->arg))
|
|
1157
1266
|
return true;
|
|
1158
|
-
if (
|
|
1267
|
+
if (WALK(indir->indirection))
|
|
1159
1268
|
return true;
|
|
1160
1269
|
}
|
|
1161
1270
|
break;
|
|
1162
1271
|
case T_A_ArrayExpr:
|
|
1163
|
-
return
|
|
1272
|
+
return WALK(((A_ArrayExpr *) node)->elements);
|
|
1164
1273
|
case T_ResTarget:
|
|
1165
1274
|
{
|
|
1166
1275
|
ResTarget *rt = (ResTarget *) node;
|
|
1167
1276
|
|
|
1168
|
-
if (
|
|
1277
|
+
if (WALK(rt->indirection))
|
|
1169
1278
|
return true;
|
|
1170
|
-
if (
|
|
1279
|
+
if (WALK(rt->val))
|
|
1171
1280
|
return true;
|
|
1172
1281
|
}
|
|
1173
1282
|
break;
|
|
1174
1283
|
case T_MultiAssignRef:
|
|
1175
|
-
return
|
|
1284
|
+
return WALK(((MultiAssignRef *) node)->source);
|
|
1176
1285
|
case T_TypeCast:
|
|
1177
1286
|
{
|
|
1178
1287
|
TypeCast *tc = (TypeCast *) node;
|
|
1179
1288
|
|
|
1180
|
-
if (
|
|
1289
|
+
if (WALK(tc->arg))
|
|
1181
1290
|
return true;
|
|
1182
|
-
if (
|
|
1291
|
+
if (WALK(tc->typeName))
|
|
1183
1292
|
return true;
|
|
1184
1293
|
}
|
|
1185
1294
|
break;
|
|
1186
1295
|
case T_CollateClause:
|
|
1187
|
-
return
|
|
1296
|
+
return WALK(((CollateClause *) node)->arg);
|
|
1188
1297
|
case T_SortBy:
|
|
1189
|
-
return
|
|
1298
|
+
return WALK(((SortBy *) node)->node);
|
|
1190
1299
|
case T_WindowDef:
|
|
1191
1300
|
{
|
|
1192
1301
|
WindowDef *wd = (WindowDef *) node;
|
|
1193
1302
|
|
|
1194
|
-
if (
|
|
1303
|
+
if (WALK(wd->partitionClause))
|
|
1195
1304
|
return true;
|
|
1196
|
-
if (
|
|
1305
|
+
if (WALK(wd->orderClause))
|
|
1197
1306
|
return true;
|
|
1198
|
-
if (
|
|
1307
|
+
if (WALK(wd->startOffset))
|
|
1199
1308
|
return true;
|
|
1200
|
-
if (
|
|
1309
|
+
if (WALK(wd->endOffset))
|
|
1201
1310
|
return true;
|
|
1202
1311
|
}
|
|
1203
1312
|
break;
|
|
@@ -1205,9 +1314,9 @@ raw_expression_tree_walker(Node *node,
|
|
|
1205
1314
|
{
|
|
1206
1315
|
RangeSubselect *rs = (RangeSubselect *) node;
|
|
1207
1316
|
|
|
1208
|
-
if (
|
|
1317
|
+
if (WALK(rs->subquery))
|
|
1209
1318
|
return true;
|
|
1210
|
-
if (
|
|
1319
|
+
if (WALK(rs->alias))
|
|
1211
1320
|
return true;
|
|
1212
1321
|
}
|
|
1213
1322
|
break;
|
|
@@ -1215,11 +1324,11 @@ raw_expression_tree_walker(Node *node,
|
|
|
1215
1324
|
{
|
|
1216
1325
|
RangeFunction *rf = (RangeFunction *) node;
|
|
1217
1326
|
|
|
1218
|
-
if (
|
|
1327
|
+
if (WALK(rf->functions))
|
|
1219
1328
|
return true;
|
|
1220
|
-
if (
|
|
1329
|
+
if (WALK(rf->alias))
|
|
1221
1330
|
return true;
|
|
1222
|
-
if (
|
|
1331
|
+
if (WALK(rf->coldeflist))
|
|
1223
1332
|
return true;
|
|
1224
1333
|
}
|
|
1225
1334
|
break;
|
|
@@ -1227,12 +1336,12 @@ raw_expression_tree_walker(Node *node,
|
|
|
1227
1336
|
{
|
|
1228
1337
|
RangeTableSample *rts = (RangeTableSample *) node;
|
|
1229
1338
|
|
|
1230
|
-
if (
|
|
1339
|
+
if (WALK(rts->relation))
|
|
1231
1340
|
return true;
|
|
1232
1341
|
/* method name is deemed uninteresting */
|
|
1233
|
-
if (
|
|
1342
|
+
if (WALK(rts->args))
|
|
1234
1343
|
return true;
|
|
1235
|
-
if (
|
|
1344
|
+
if (WALK(rts->repeatable))
|
|
1236
1345
|
return true;
|
|
1237
1346
|
}
|
|
1238
1347
|
break;
|
|
@@ -1240,15 +1349,15 @@ raw_expression_tree_walker(Node *node,
|
|
|
1240
1349
|
{
|
|
1241
1350
|
RangeTableFunc *rtf = (RangeTableFunc *) node;
|
|
1242
1351
|
|
|
1243
|
-
if (
|
|
1352
|
+
if (WALK(rtf->docexpr))
|
|
1244
1353
|
return true;
|
|
1245
|
-
if (
|
|
1354
|
+
if (WALK(rtf->rowexpr))
|
|
1246
1355
|
return true;
|
|
1247
|
-
if (
|
|
1356
|
+
if (WALK(rtf->namespaces))
|
|
1248
1357
|
return true;
|
|
1249
|
-
if (
|
|
1358
|
+
if (WALK(rtf->columns))
|
|
1250
1359
|
return true;
|
|
1251
|
-
if (
|
|
1360
|
+
if (WALK(rtf->alias))
|
|
1252
1361
|
return true;
|
|
1253
1362
|
}
|
|
1254
1363
|
break;
|
|
@@ -1256,9 +1365,9 @@ raw_expression_tree_walker(Node *node,
|
|
|
1256
1365
|
{
|
|
1257
1366
|
RangeTableFuncCol *rtfc = (RangeTableFuncCol *) node;
|
|
1258
1367
|
|
|
1259
|
-
if (
|
|
1368
|
+
if (WALK(rtfc->colexpr))
|
|
1260
1369
|
return true;
|
|
1261
|
-
if (
|
|
1370
|
+
if (WALK(rtfc->coldefexpr))
|
|
1262
1371
|
return true;
|
|
1263
1372
|
}
|
|
1264
1373
|
break;
|
|
@@ -1266,9 +1375,9 @@ raw_expression_tree_walker(Node *node,
|
|
|
1266
1375
|
{
|
|
1267
1376
|
TypeName *tn = (TypeName *) node;
|
|
1268
1377
|
|
|
1269
|
-
if (
|
|
1378
|
+
if (WALK(tn->typmods))
|
|
1270
1379
|
return true;
|
|
1271
|
-
if (
|
|
1380
|
+
if (WALK(tn->arrayBounds))
|
|
1272
1381
|
return true;
|
|
1273
1382
|
/* type name itself is deemed uninteresting */
|
|
1274
1383
|
}
|
|
@@ -1277,11 +1386,11 @@ raw_expression_tree_walker(Node *node,
|
|
|
1277
1386
|
{
|
|
1278
1387
|
ColumnDef *coldef = (ColumnDef *) node;
|
|
1279
1388
|
|
|
1280
|
-
if (
|
|
1389
|
+
if (WALK(coldef->typeName))
|
|
1281
1390
|
return true;
|
|
1282
|
-
if (
|
|
1391
|
+
if (WALK(coldef->raw_default))
|
|
1283
1392
|
return true;
|
|
1284
|
-
if (
|
|
1393
|
+
if (WALK(coldef->collClause))
|
|
1285
1394
|
return true;
|
|
1286
1395
|
/* for now, constraints are ignored */
|
|
1287
1396
|
}
|
|
@@ -1290,34 +1399,34 @@ raw_expression_tree_walker(Node *node,
|
|
|
1290
1399
|
{
|
|
1291
1400
|
IndexElem *indelem = (IndexElem *) node;
|
|
1292
1401
|
|
|
1293
|
-
if (
|
|
1402
|
+
if (WALK(indelem->expr))
|
|
1294
1403
|
return true;
|
|
1295
1404
|
/* collation and opclass names are deemed uninteresting */
|
|
1296
1405
|
}
|
|
1297
1406
|
break;
|
|
1298
1407
|
case T_GroupingSet:
|
|
1299
|
-
return
|
|
1408
|
+
return WALK(((GroupingSet *) node)->content);
|
|
1300
1409
|
case T_LockingClause:
|
|
1301
|
-
return
|
|
1410
|
+
return WALK(((LockingClause *) node)->lockedRels);
|
|
1302
1411
|
case T_XmlSerialize:
|
|
1303
1412
|
{
|
|
1304
1413
|
XmlSerialize *xs = (XmlSerialize *) node;
|
|
1305
1414
|
|
|
1306
|
-
if (
|
|
1415
|
+
if (WALK(xs->expr))
|
|
1307
1416
|
return true;
|
|
1308
|
-
if (
|
|
1417
|
+
if (WALK(xs->typeName))
|
|
1309
1418
|
return true;
|
|
1310
1419
|
}
|
|
1311
1420
|
break;
|
|
1312
1421
|
case T_WithClause:
|
|
1313
|
-
return
|
|
1422
|
+
return WALK(((WithClause *) node)->ctes);
|
|
1314
1423
|
case T_InferClause:
|
|
1315
1424
|
{
|
|
1316
1425
|
InferClause *stmt = (InferClause *) node;
|
|
1317
1426
|
|
|
1318
|
-
if (
|
|
1427
|
+
if (WALK(stmt->indexElems))
|
|
1319
1428
|
return true;
|
|
1320
|
-
if (
|
|
1429
|
+
if (WALK(stmt->whereClause))
|
|
1321
1430
|
return true;
|
|
1322
1431
|
}
|
|
1323
1432
|
break;
|
|
@@ -1325,16 +1434,101 @@ raw_expression_tree_walker(Node *node,
|
|
|
1325
1434
|
{
|
|
1326
1435
|
OnConflictClause *stmt = (OnConflictClause *) node;
|
|
1327
1436
|
|
|
1328
|
-
if (
|
|
1437
|
+
if (WALK(stmt->infer))
|
|
1329
1438
|
return true;
|
|
1330
|
-
if (
|
|
1439
|
+
if (WALK(stmt->targetList))
|
|
1331
1440
|
return true;
|
|
1332
|
-
if (
|
|
1441
|
+
if (WALK(stmt->whereClause))
|
|
1333
1442
|
return true;
|
|
1334
1443
|
}
|
|
1335
1444
|
break;
|
|
1336
1445
|
case T_CommonTableExpr:
|
|
1337
|
-
|
|
1446
|
+
/* search_clause and cycle_clause are not interesting here */
|
|
1447
|
+
return WALK(((CommonTableExpr *) node)->ctequery);
|
|
1448
|
+
case T_JsonOutput:
|
|
1449
|
+
{
|
|
1450
|
+
JsonOutput *out = (JsonOutput *) node;
|
|
1451
|
+
|
|
1452
|
+
if (WALK(out->typeName))
|
|
1453
|
+
return true;
|
|
1454
|
+
if (WALK(out->returning))
|
|
1455
|
+
return true;
|
|
1456
|
+
}
|
|
1457
|
+
break;
|
|
1458
|
+
case T_JsonKeyValue:
|
|
1459
|
+
{
|
|
1460
|
+
JsonKeyValue *jkv = (JsonKeyValue *) node;
|
|
1461
|
+
|
|
1462
|
+
if (WALK(jkv->key))
|
|
1463
|
+
return true;
|
|
1464
|
+
if (WALK(jkv->value))
|
|
1465
|
+
return true;
|
|
1466
|
+
}
|
|
1467
|
+
break;
|
|
1468
|
+
case T_JsonObjectConstructor:
|
|
1469
|
+
{
|
|
1470
|
+
JsonObjectConstructor *joc = (JsonObjectConstructor *) node;
|
|
1471
|
+
|
|
1472
|
+
if (WALK(joc->output))
|
|
1473
|
+
return true;
|
|
1474
|
+
if (WALK(joc->exprs))
|
|
1475
|
+
return true;
|
|
1476
|
+
}
|
|
1477
|
+
break;
|
|
1478
|
+
case T_JsonArrayConstructor:
|
|
1479
|
+
{
|
|
1480
|
+
JsonArrayConstructor *jac = (JsonArrayConstructor *) node;
|
|
1481
|
+
|
|
1482
|
+
if (WALK(jac->output))
|
|
1483
|
+
return true;
|
|
1484
|
+
if (WALK(jac->exprs))
|
|
1485
|
+
return true;
|
|
1486
|
+
}
|
|
1487
|
+
break;
|
|
1488
|
+
case T_JsonAggConstructor:
|
|
1489
|
+
{
|
|
1490
|
+
JsonAggConstructor *ctor = (JsonAggConstructor *) node;
|
|
1491
|
+
|
|
1492
|
+
if (WALK(ctor->output))
|
|
1493
|
+
return true;
|
|
1494
|
+
if (WALK(ctor->agg_order))
|
|
1495
|
+
return true;
|
|
1496
|
+
if (WALK(ctor->agg_filter))
|
|
1497
|
+
return true;
|
|
1498
|
+
if (WALK(ctor->over))
|
|
1499
|
+
return true;
|
|
1500
|
+
}
|
|
1501
|
+
break;
|
|
1502
|
+
case T_JsonObjectAgg:
|
|
1503
|
+
{
|
|
1504
|
+
JsonObjectAgg *joa = (JsonObjectAgg *) node;
|
|
1505
|
+
|
|
1506
|
+
if (WALK(joa->constructor))
|
|
1507
|
+
return true;
|
|
1508
|
+
if (WALK(joa->arg))
|
|
1509
|
+
return true;
|
|
1510
|
+
}
|
|
1511
|
+
break;
|
|
1512
|
+
case T_JsonArrayAgg:
|
|
1513
|
+
{
|
|
1514
|
+
JsonArrayAgg *jaa = (JsonArrayAgg *) node;
|
|
1515
|
+
|
|
1516
|
+
if (WALK(jaa->constructor))
|
|
1517
|
+
return true;
|
|
1518
|
+
if (WALK(jaa->arg))
|
|
1519
|
+
return true;
|
|
1520
|
+
}
|
|
1521
|
+
break;
|
|
1522
|
+
case T_JsonArrayQueryConstructor:
|
|
1523
|
+
{
|
|
1524
|
+
JsonArrayQueryConstructor *jaqc = (JsonArrayQueryConstructor *) node;
|
|
1525
|
+
|
|
1526
|
+
if (WALK(jaqc->output))
|
|
1527
|
+
return true;
|
|
1528
|
+
if (WALK(jaqc->query))
|
|
1529
|
+
return true;
|
|
1530
|
+
}
|
|
1531
|
+
break;
|
|
1338
1532
|
default:
|
|
1339
1533
|
elog(ERROR, "unrecognized node type: %d",
|
|
1340
1534
|
(int) nodeTag(node));
|
|
@@ -1349,7 +1543,7 @@ raw_expression_tree_walker(Node *node,
|
|
|
1349
1543
|
* The walker has already visited the current node, and so we need only
|
|
1350
1544
|
* recurse into any sub-nodes it has.
|
|
1351
1545
|
*/
|
|
1352
|
-
|
|
1546
|
+
#define PSWALK(n) walker(n, context)
|
|
1353
1547
|
|
|
1354
1548
|
/*
|
|
1355
1549
|
* Walk a list of SubPlans (or initPlans, which also use SubPlan nodes).
|