pg_query 2.2.0 → 6.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (895) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +86 -0
  3. data/README.md +57 -31
  4. data/Rakefile +5 -6
  5. data/ext/pg_query/ext_symbols_freebsd.sym +1 -0
  6. data/ext/pg_query/ext_symbols_freebsd_with_ruby_abi_version.sym +2 -0
  7. data/ext/pg_query/ext_symbols_openbsd.sym +1 -0
  8. data/ext/pg_query/ext_symbols_openbsd_with_ruby_abi_version.sym +2 -0
  9. data/ext/pg_query/ext_symbols_with_ruby_abi_version.sym +2 -0
  10. data/ext/pg_query/extconf.rb +33 -9
  11. data/ext/pg_query/include/pg_query.h +30 -4
  12. data/ext/pg_query/include/pg_query_enum_defs.c +839 -290
  13. data/ext/pg_query/include/pg_query_fingerprint_conds.c +638 -481
  14. data/ext/pg_query/include/pg_query_fingerprint_defs.c +6786 -4193
  15. data/ext/pg_query/include/pg_query_outfuncs_conds.c +450 -330
  16. data/ext/pg_query/include/pg_query_outfuncs_defs.c +1489 -1044
  17. data/ext/pg_query/include/pg_query_readfuncs_conds.c +157 -118
  18. data/ext/pg_query/include/pg_query_readfuncs_defs.c +1933 -1410
  19. data/ext/pg_query/include/postgres/access/amapi.h +303 -0
  20. data/ext/pg_query/include/postgres/access/attmap.h +54 -0
  21. data/ext/pg_query/include/postgres/access/attnum.h +64 -0
  22. data/ext/pg_query/include/postgres/access/brin_internal.h +116 -0
  23. data/ext/pg_query/include/postgres/access/brin_tuple.h +112 -0
  24. data/ext/pg_query/include/postgres/access/clog.h +62 -0
  25. data/ext/pg_query/include/postgres/access/commit_ts.h +73 -0
  26. data/ext/pg_query/include/postgres/access/detoast.h +82 -0
  27. data/ext/pg_query/include/postgres/access/genam.h +246 -0
  28. data/ext/pg_query/include/postgres/access/gin.h +91 -0
  29. data/ext/pg_query/include/postgres/access/htup.h +89 -0
  30. data/ext/pg_query/include/postgres/access/htup_details.h +811 -0
  31. data/ext/pg_query/include/postgres/access/itup.h +170 -0
  32. data/ext/pg_query/include/postgres/access/parallel.h +81 -0
  33. data/ext/pg_query/include/postgres/access/printtup.h +35 -0
  34. data/ext/pg_query/include/postgres/access/relation.h +28 -0
  35. data/ext/pg_query/include/postgres/access/relscan.h +191 -0
  36. data/ext/pg_query/include/postgres/access/rmgr.h +62 -0
  37. data/ext/pg_query/include/postgres/access/rmgrlist.h +49 -0
  38. data/ext/pg_query/include/postgres/access/sdir.h +67 -0
  39. data/ext/pg_query/include/postgres/access/skey.h +151 -0
  40. data/ext/pg_query/include/postgres/access/slru.h +218 -0
  41. data/ext/pg_query/include/postgres/access/stratnum.h +85 -0
  42. data/ext/pg_query/include/postgres/access/sysattr.h +29 -0
  43. data/ext/pg_query/include/postgres/access/table.h +28 -0
  44. data/ext/pg_query/include/postgres/access/tableam.h +2110 -0
  45. data/ext/pg_query/include/postgres/access/tidstore.h +50 -0
  46. data/ext/pg_query/include/postgres/access/toast_compression.h +73 -0
  47. data/ext/pg_query/include/postgres/access/transam.h +418 -0
  48. data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
  49. data/ext/pg_query/include/postgres/access/tupconvert.h +54 -0
  50. data/ext/pg_query/include/postgres/access/tupdesc.h +154 -0
  51. data/ext/pg_query/include/postgres/access/tupmacs.h +207 -0
  52. data/ext/pg_query/include/postgres/access/twophase.h +65 -0
  53. data/ext/pg_query/include/postgres/access/xact.h +530 -0
  54. data/ext/pg_query/include/postgres/access/xlog.h +310 -0
  55. data/ext/pg_query/include/postgres/access/xlog_internal.h +405 -0
  56. data/ext/pg_query/include/postgres/access/xlogbackup.h +43 -0
  57. data/ext/pg_query/include/postgres/access/xlogdefs.h +82 -0
  58. data/ext/pg_query/include/postgres/access/xlogprefetcher.h +55 -0
  59. data/ext/pg_query/include/postgres/access/xlogreader.h +444 -0
  60. data/ext/pg_query/include/postgres/access/xlogrecord.h +248 -0
  61. data/ext/pg_query/include/postgres/access/xlogrecovery.h +158 -0
  62. data/ext/pg_query/include/postgres/archive/archive_module.h +67 -0
  63. data/ext/pg_query/include/postgres/c.h +1374 -0
  64. data/ext/pg_query/include/postgres/catalog/catalog.h +47 -0
  65. data/ext/pg_query/include/postgres/catalog/catversion.h +62 -0
  66. data/ext/pg_query/include/postgres/catalog/dependency.h +228 -0
  67. data/ext/pg_query/include/postgres/catalog/genbki.h +149 -0
  68. data/ext/pg_query/include/postgres/catalog/index.h +218 -0
  69. data/ext/pg_query/include/postgres/catalog/indexing.h +54 -0
  70. data/ext/pg_query/include/postgres/catalog/namespace.h +189 -0
  71. data/ext/pg_query/include/postgres/catalog/objectaccess.h +267 -0
  72. data/ext/pg_query/include/postgres/catalog/objectaddress.h +93 -0
  73. data/ext/pg_query/include/postgres/catalog/pg_aggregate.h +182 -0
  74. data/ext/pg_query/include/postgres/catalog/pg_aggregate_d.h +78 -0
  75. data/ext/pg_query/include/postgres/catalog/pg_am.h +66 -0
  76. data/ext/pg_query/include/postgres/catalog/pg_am_d.h +47 -0
  77. data/ext/pg_query/include/postgres/catalog/pg_attribute.h +240 -0
  78. data/ext/pg_query/include/postgres/catalog/pg_attribute_d.h +62 -0
  79. data/ext/pg_query/include/postgres/catalog/pg_authid.h +66 -0
  80. data/ext/pg_query/include/postgres/catalog/pg_authid_d.h +60 -0
  81. data/ext/pg_query/include/postgres/catalog/pg_class.h +235 -0
  82. data/ext/pg_query/include/postgres/catalog/pg_class_d.h +134 -0
  83. data/ext/pg_query/include/postgres/catalog/pg_collation.h +106 -0
  84. data/ext/pg_query/include/postgres/catalog/pg_collation_d.h +66 -0
  85. data/ext/pg_query/include/postgres/catalog/pg_constraint.h +278 -0
  86. data/ext/pg_query/include/postgres/catalog/pg_constraint_d.h +74 -0
  87. data/ext/pg_query/include/postgres/catalog/pg_control.h +260 -0
  88. data/ext/pg_query/include/postgres/catalog/pg_conversion.h +79 -0
  89. data/ext/pg_query/include/postgres/catalog/pg_conversion_d.h +38 -0
  90. data/ext/pg_query/include/postgres/catalog/pg_database.h +129 -0
  91. data/ext/pg_query/include/postgres/catalog/pg_database_d.h +53 -0
  92. data/ext/pg_query/include/postgres/catalog/pg_depend.h +77 -0
  93. data/ext/pg_query/include/postgres/catalog/pg_depend_d.h +36 -0
  94. data/ext/pg_query/include/postgres/catalog/pg_event_trigger.h +60 -0
  95. data/ext/pg_query/include/postgres/catalog/pg_event_trigger_d.h +36 -0
  96. data/ext/pg_query/include/postgres/catalog/pg_index.h +92 -0
  97. data/ext/pg_query/include/postgres/catalog/pg_index_d.h +59 -0
  98. data/ext/pg_query/include/postgres/catalog/pg_language.h +75 -0
  99. data/ext/pg_query/include/postgres/catalog/pg_language_d.h +41 -0
  100. data/ext/pg_query/include/postgres/catalog/pg_namespace.h +67 -0
  101. data/ext/pg_query/include/postgres/catalog/pg_namespace_d.h +36 -0
  102. data/ext/pg_query/include/postgres/catalog/pg_opclass.h +91 -0
  103. data/ext/pg_query/include/postgres/catalog/pg_opclass_d.h +51 -0
  104. data/ext/pg_query/include/postgres/catalog/pg_operator.h +124 -0
  105. data/ext/pg_query/include/postgres/catalog/pg_operator_d.h +142 -0
  106. data/ext/pg_query/include/postgres/catalog/pg_opfamily.h +67 -0
  107. data/ext/pg_query/include/postgres/catalog/pg_opfamily_d.h +51 -0
  108. data/ext/pg_query/include/postgres/catalog/pg_partitioned_table.h +76 -0
  109. data/ext/pg_query/include/postgres/catalog/pg_partitioned_table_d.h +36 -0
  110. data/ext/pg_query/include/postgres/catalog/pg_proc.h +223 -0
  111. data/ext/pg_query/include/postgres/catalog/pg_proc_d.h +101 -0
  112. data/ext/pg_query/include/postgres/catalog/pg_publication.h +161 -0
  113. data/ext/pg_query/include/postgres/catalog/pg_publication_d.h +38 -0
  114. data/ext/pg_query/include/postgres/catalog/pg_replication_origin.h +65 -0
  115. data/ext/pg_query/include/postgres/catalog/pg_replication_origin_d.h +33 -0
  116. data/ext/pg_query/include/postgres/catalog/pg_statistic.h +288 -0
  117. data/ext/pg_query/include/postgres/catalog/pg_statistic_d.h +199 -0
  118. data/ext/pg_query/include/postgres/catalog/pg_statistic_ext.h +91 -0
  119. data/ext/pg_query/include/postgres/catalog/pg_statistic_ext_d.h +45 -0
  120. data/ext/pg_query/include/postgres/catalog/pg_transform.h +51 -0
  121. data/ext/pg_query/include/postgres/catalog/pg_transform_d.h +34 -0
  122. data/ext/pg_query/include/postgres/catalog/pg_trigger.h +153 -0
  123. data/ext/pg_query/include/postgres/catalog/pg_trigger_d.h +109 -0
  124. data/ext/pg_query/include/postgres/catalog/pg_ts_config.h +56 -0
  125. data/ext/pg_query/include/postgres/catalog/pg_ts_config_d.h +34 -0
  126. data/ext/pg_query/include/postgres/catalog/pg_ts_dict.h +62 -0
  127. data/ext/pg_query/include/postgres/catalog/pg_ts_dict_d.h +35 -0
  128. data/ext/pg_query/include/postgres/catalog/pg_ts_parser.h +63 -0
  129. data/ext/pg_query/include/postgres/catalog/pg_ts_parser_d.h +37 -0
  130. data/ext/pg_query/include/postgres/catalog/pg_ts_template.h +54 -0
  131. data/ext/pg_query/include/postgres/catalog/pg_ts_template_d.h +34 -0
  132. data/ext/pg_query/include/postgres/catalog/pg_type.h +407 -0
  133. data/ext/pg_query/include/postgres/catalog/pg_type_d.h +324 -0
  134. data/ext/pg_query/include/postgres/catalog/storage.h +50 -0
  135. data/ext/pg_query/include/postgres/catalog/syscache_ids.h +104 -0
  136. data/ext/pg_query/include/postgres/commands/async.h +49 -0
  137. data/ext/pg_query/include/postgres/commands/dbcommands.h +37 -0
  138. data/ext/pg_query/include/postgres/commands/defrem.h +161 -0
  139. data/ext/pg_query/include/postgres/commands/event_trigger.h +97 -0
  140. data/ext/pg_query/include/postgres/commands/explain.h +145 -0
  141. data/ext/pg_query/include/postgres/commands/prepare.h +61 -0
  142. data/ext/pg_query/include/postgres/commands/tablespace.h +69 -0
  143. data/ext/pg_query/include/postgres/commands/trigger.h +288 -0
  144. data/ext/pg_query/include/postgres/commands/user.h +43 -0
  145. data/ext/pg_query/include/postgres/commands/vacuum.h +388 -0
  146. data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
  147. data/ext/pg_query/include/postgres/common/file_perm.h +56 -0
  148. data/ext/pg_query/include/postgres/common/file_utils.h +65 -0
  149. data/ext/pg_query/include/postgres/common/hashfn.h +119 -0
  150. data/ext/pg_query/include/postgres/common/hashfn_unstable.h +407 -0
  151. data/ext/pg_query/include/postgres/common/int.h +512 -0
  152. data/ext/pg_query/include/postgres/common/keywords.h +29 -0
  153. data/ext/pg_query/include/postgres/common/kwlookup.h +44 -0
  154. data/ext/pg_query/include/postgres/common/pg_prng.h +62 -0
  155. data/ext/pg_query/include/postgres/common/relpath.h +97 -0
  156. data/ext/pg_query/include/postgres/common/scram-common.h +70 -0
  157. data/ext/pg_query/include/postgres/common/sha2.h +32 -0
  158. data/ext/pg_query/include/postgres/common/string.h +44 -0
  159. data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +124 -0
  160. data/ext/pg_query/include/postgres/common/unicode_nonspacing_table.h +326 -0
  161. data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5261 -0
  162. data/ext/pg_query/include/postgres/copyfuncs.switch.c +989 -0
  163. data/ext/pg_query/include/postgres/datatype/timestamp.h +269 -0
  164. data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3310 -0
  165. data/ext/pg_query/include/postgres/equalfuncs.switch.c +836 -0
  166. data/ext/pg_query/include/postgres/executor/execdesc.h +70 -0
  167. data/ext/pg_query/include/postgres/executor/executor.h +681 -0
  168. data/ext/pg_query/include/postgres/executor/functions.h +56 -0
  169. data/ext/pg_query/include/postgres/executor/instrument.h +120 -0
  170. data/ext/pg_query/include/postgres/executor/spi.h +207 -0
  171. data/ext/pg_query/include/postgres/executor/tablefunc.h +67 -0
  172. data/ext/pg_query/include/postgres/executor/tuptable.h +523 -0
  173. data/ext/pg_query/include/postgres/fmgr.h +800 -0
  174. data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
  175. data/ext/pg_query/include/postgres/funcapi.h +360 -0
  176. data/ext/pg_query/include/postgres/gram.h +1168 -0
  177. data/ext/pg_query/include/postgres/gramparse.h +75 -0
  178. data/ext/pg_query/include/postgres/jit/jit.h +106 -0
  179. data/ext/pg_query/include/postgres/kwlist_d.h +1164 -0
  180. data/ext/pg_query/include/postgres/lib/dshash.h +130 -0
  181. data/ext/pg_query/include/postgres/lib/ilist.h +1159 -0
  182. data/ext/pg_query/include/postgres/lib/pairingheap.h +102 -0
  183. data/ext/pg_query/include/postgres/lib/simplehash.h +1206 -0
  184. data/ext/pg_query/include/postgres/lib/sort_template.h +445 -0
  185. data/ext/pg_query/include/postgres/lib/stringinfo.h +243 -0
  186. data/ext/pg_query/include/postgres/libpq/auth.h +37 -0
  187. data/ext/pg_query/include/postgres/libpq/crypt.h +47 -0
  188. data/ext/pg_query/include/postgres/libpq/hba.h +186 -0
  189. data/ext/pg_query/include/postgres/libpq/libpq-be.h +361 -0
  190. data/ext/pg_query/include/postgres/libpq/libpq.h +143 -0
  191. data/ext/pg_query/include/postgres/libpq/pqcomm.h +169 -0
  192. data/ext/pg_query/include/postgres/libpq/pqformat.h +209 -0
  193. data/ext/pg_query/include/postgres/libpq/pqsignal.h +54 -0
  194. data/ext/pg_query/include/postgres/libpq/protocol.h +89 -0
  195. data/ext/pg_query/include/postgres/libpq/sasl.h +136 -0
  196. data/ext/pg_query/include/postgres/libpq/scram.h +37 -0
  197. data/ext/pg_query/include/postgres/mb/pg_wchar.h +793 -0
  198. data/ext/pg_query/include/postgres/mb/stringinfo_mb.h +24 -0
  199. data/ext/pg_query/include/postgres/miscadmin.h +527 -0
  200. data/ext/pg_query/include/postgres/nodes/bitmapset.h +140 -0
  201. data/ext/pg_query/include/postgres/nodes/execnodes.h +2855 -0
  202. data/ext/pg_query/include/postgres/nodes/extensible.h +164 -0
  203. data/ext/pg_query/include/postgres/nodes/lockoptions.h +61 -0
  204. data/ext/pg_query/include/postgres/nodes/makefuncs.h +127 -0
  205. data/ext/pg_query/include/postgres/nodes/memnodes.h +152 -0
  206. data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
  207. data/ext/pg_query/include/postgres/nodes/nodeFuncs.h +222 -0
  208. data/ext/pg_query/include/postgres/nodes/nodes.h +435 -0
  209. data/ext/pg_query/include/postgres/nodes/nodetags.h +491 -0
  210. data/ext/pg_query/include/postgres/nodes/params.h +170 -0
  211. data/ext/pg_query/include/postgres/nodes/parsenodes.h +4233 -0
  212. data/ext/pg_query/include/postgres/nodes/pathnodes.h +3438 -0
  213. data/ext/pg_query/include/postgres/nodes/pg_list.h +686 -0
  214. data/ext/pg_query/include/postgres/nodes/plannodes.h +1593 -0
  215. data/ext/pg_query/include/postgres/nodes/primnodes.h +2339 -0
  216. data/ext/pg_query/include/postgres/nodes/print.h +34 -0
  217. data/ext/pg_query/include/postgres/nodes/queryjumble.h +86 -0
  218. data/ext/pg_query/include/postgres/nodes/replnodes.h +132 -0
  219. data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
  220. data/ext/pg_query/include/postgres/nodes/tidbitmap.h +75 -0
  221. data/ext/pg_query/include/postgres/nodes/value.h +90 -0
  222. data/ext/pg_query/include/postgres/optimizer/cost.h +216 -0
  223. data/ext/pg_query/include/postgres/optimizer/geqo.h +90 -0
  224. data/ext/pg_query/include/postgres/optimizer/geqo_gene.h +45 -0
  225. data/ext/pg_query/include/postgres/optimizer/optimizer.h +205 -0
  226. data/ext/pg_query/include/postgres/optimizer/paths.h +271 -0
  227. data/ext/pg_query/include/postgres/optimizer/planmain.h +123 -0
  228. data/ext/pg_query/include/postgres/parser/analyze.h +66 -0
  229. data/ext/pg_query/include/postgres/parser/kwlist.h +518 -0
  230. data/ext/pg_query/include/postgres/parser/parse_agg.h +65 -0
  231. data/ext/pg_query/include/postgres/parser/parse_coerce.h +105 -0
  232. data/ext/pg_query/include/postgres/parser/parse_expr.h +25 -0
  233. data/ext/pg_query/include/postgres/parser/parse_func.h +74 -0
  234. data/ext/pg_query/include/postgres/parser/parse_node.h +358 -0
  235. data/ext/pg_query/include/postgres/parser/parse_oper.h +68 -0
  236. data/ext/pg_query/include/postgres/parser/parse_relation.h +129 -0
  237. data/ext/pg_query/include/postgres/parser/parse_type.h +61 -0
  238. data/ext/pg_query/include/postgres/parser/parser.h +68 -0
  239. data/ext/pg_query/include/postgres/parser/parsetree.h +61 -0
  240. data/ext/pg_query/include/postgres/parser/scanner.h +152 -0
  241. data/ext/pg_query/include/postgres/parser/scansup.h +27 -0
  242. data/ext/pg_query/include/postgres/partitioning/partdefs.h +26 -0
  243. data/ext/pg_query/include/postgres/pg_config.h +985 -0
  244. data/ext/pg_query/include/postgres/pg_config_manual.h +385 -0
  245. data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
  246. data/ext/pg_query/include/postgres/pg_getopt.h +56 -0
  247. data/ext/pg_query/include/postgres/pg_trace.h +17 -0
  248. data/ext/pg_query/include/postgres/pgstat.h +780 -0
  249. data/ext/pg_query/include/postgres/pgtime.h +94 -0
  250. data/ext/pg_query/include/postgres/pl_gram.h +385 -0
  251. data/ext/pg_query/include/postgres/pl_reserved_kwlist.h +52 -0
  252. data/ext/pg_query/include/postgres/pl_reserved_kwlist_d.h +114 -0
  253. data/ext/pg_query/include/postgres/pl_unreserved_kwlist.h +112 -0
  254. data/ext/pg_query/include/postgres/pl_unreserved_kwlist_d.h +246 -0
  255. data/ext/pg_query/include/postgres/plerrcodes.h +998 -0
  256. data/ext/pg_query/include/postgres/plpgsql.h +1342 -0
  257. data/ext/pg_query/include/postgres/port/atomics/arch-arm.h +32 -0
  258. data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
  259. data/ext/pg_query/include/postgres/port/atomics/arch-ppc.h +256 -0
  260. data/ext/pg_query/include/postgres/port/atomics/arch-x86.h +254 -0
  261. data/ext/pg_query/include/postgres/port/atomics/fallback.h +170 -0
  262. data/ext/pg_query/include/postgres/port/atomics/generic-gcc.h +323 -0
  263. data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +119 -0
  264. data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +121 -0
  265. data/ext/pg_query/include/postgres/port/atomics/generic.h +437 -0
  266. data/ext/pg_query/include/postgres/port/atomics.h +606 -0
  267. data/ext/pg_query/include/postgres/port/pg_bitutils.h +421 -0
  268. data/ext/pg_query/include/postgres/port/pg_bswap.h +161 -0
  269. data/ext/pg_query/include/postgres/port/pg_crc32c.h +110 -0
  270. data/ext/pg_query/include/postgres/port/pg_iovec.h +117 -0
  271. data/ext/pg_query/include/postgres/port/simd.h +422 -0
  272. data/ext/pg_query/include/postgres/port/win32/arpa/inet.h +3 -0
  273. data/ext/pg_query/include/postgres/port/win32/dlfcn.h +1 -0
  274. data/ext/pg_query/include/postgres/port/win32/grp.h +1 -0
  275. data/ext/pg_query/include/postgres/port/win32/netdb.h +7 -0
  276. data/ext/pg_query/include/postgres/port/win32/netinet/in.h +3 -0
  277. data/ext/pg_query/include/postgres/port/win32/netinet/tcp.h +7 -0
  278. data/ext/pg_query/include/postgres/port/win32/pwd.h +3 -0
  279. data/ext/pg_query/include/postgres/port/win32/sys/resource.h +20 -0
  280. data/ext/pg_query/include/postgres/port/win32/sys/select.h +3 -0
  281. data/ext/pg_query/include/postgres/port/win32/sys/socket.h +34 -0
  282. data/ext/pg_query/include/postgres/port/win32/sys/un.h +17 -0
  283. data/ext/pg_query/include/postgres/port/win32/sys/wait.h +3 -0
  284. data/ext/pg_query/include/postgres/port/win32.h +59 -0
  285. data/ext/pg_query/include/postgres/port/win32_msvc/dirent.h +34 -0
  286. data/ext/pg_query/include/postgres/port/win32_msvc/sys/file.h +1 -0
  287. data/ext/pg_query/include/postgres/port/win32_msvc/sys/param.h +1 -0
  288. data/ext/pg_query/include/postgres/port/win32_msvc/sys/time.h +1 -0
  289. data/ext/pg_query/include/postgres/port/win32_msvc/unistd.h +9 -0
  290. data/ext/pg_query/include/postgres/port/win32_msvc/utime.h +3 -0
  291. data/ext/pg_query/include/postgres/port/win32_port.h +582 -0
  292. data/ext/pg_query/include/postgres/port.h +555 -0
  293. data/ext/pg_query/include/postgres/portability/instr_time.h +197 -0
  294. data/ext/pg_query/include/postgres/postgres.h +579 -0
  295. data/ext/pg_query/include/postgres/postgres_ext.h +73 -0
  296. data/ext/pg_query/include/postgres/postmaster/autovacuum.h +69 -0
  297. data/ext/pg_query/include/postgres/postmaster/bgworker.h +164 -0
  298. data/ext/pg_query/include/postgres/postmaster/bgworker_internals.h +60 -0
  299. data/ext/pg_query/include/postgres/postmaster/bgwriter.h +45 -0
  300. data/ext/pg_query/include/postgres/postmaster/interrupt.h +32 -0
  301. data/ext/pg_query/include/postgres/postmaster/pgarch.h +36 -0
  302. data/ext/pg_query/include/postgres/postmaster/postmaster.h +101 -0
  303. data/ext/pg_query/include/postgres/postmaster/startup.h +41 -0
  304. data/ext/pg_query/include/postgres/postmaster/syslogger.h +101 -0
  305. data/ext/pg_query/include/postgres/postmaster/walsummarizer.h +35 -0
  306. data/ext/pg_query/include/postgres/postmaster/walwriter.h +23 -0
  307. data/ext/pg_query/include/postgres/regex/regex.h +272 -0
  308. data/ext/pg_query/include/postgres/replication/logicallauncher.h +34 -0
  309. data/ext/pg_query/include/postgres/replication/logicalproto.h +274 -0
  310. data/ext/pg_query/include/postgres/replication/logicalworker.h +33 -0
  311. data/ext/pg_query/include/postgres/replication/origin.h +73 -0
  312. data/ext/pg_query/include/postgres/replication/reorderbuffer.h +734 -0
  313. data/ext/pg_query/include/postgres/replication/slot.h +289 -0
  314. data/ext/pg_query/include/postgres/replication/slotsync.h +38 -0
  315. data/ext/pg_query/include/postgres/replication/syncrep.h +109 -0
  316. data/ext/pg_query/include/postgres/replication/walreceiver.h +504 -0
  317. data/ext/pg_query/include/postgres/replication/walsender.h +76 -0
  318. data/ext/pg_query/include/postgres/rewrite/prs2lock.h +46 -0
  319. data/ext/pg_query/include/postgres/rewrite/rewriteHandler.h +41 -0
  320. data/ext/pg_query/include/postgres/rewrite/rewriteManip.h +96 -0
  321. data/ext/pg_query/include/postgres/rewrite/rewriteSupport.h +26 -0
  322. data/ext/pg_query/include/postgres/storage/block.h +108 -0
  323. data/ext/pg_query/include/postgres/storage/buf.h +46 -0
  324. data/ext/pg_query/include/postgres/storage/bufmgr.h +411 -0
  325. data/ext/pg_query/include/postgres/storage/bufpage.h +510 -0
  326. data/ext/pg_query/include/postgres/storage/condition_variable.h +73 -0
  327. data/ext/pg_query/include/postgres/storage/dsm.h +61 -0
  328. data/ext/pg_query/include/postgres/storage/dsm_impl.h +79 -0
  329. data/ext/pg_query/include/postgres/storage/fd.h +219 -0
  330. data/ext/pg_query/include/postgres/storage/fileset.h +40 -0
  331. data/ext/pg_query/include/postgres/storage/ipc.h +87 -0
  332. data/ext/pg_query/include/postgres/storage/item.h +19 -0
  333. data/ext/pg_query/include/postgres/storage/itemid.h +184 -0
  334. data/ext/pg_query/include/postgres/storage/itemptr.h +245 -0
  335. data/ext/pg_query/include/postgres/storage/large_object.h +100 -0
  336. data/ext/pg_query/include/postgres/storage/latch.h +196 -0
  337. data/ext/pg_query/include/postgres/storage/lmgr.h +126 -0
  338. data/ext/pg_query/include/postgres/storage/lock.h +624 -0
  339. data/ext/pg_query/include/postgres/storage/lockdefs.h +61 -0
  340. data/ext/pg_query/include/postgres/storage/lwlock.h +228 -0
  341. data/ext/pg_query/include/postgres/storage/lwlocknames.h +47 -0
  342. data/ext/pg_query/include/postgres/storage/off.h +57 -0
  343. data/ext/pg_query/include/postgres/storage/pg_sema.h +61 -0
  344. data/ext/pg_query/include/postgres/storage/pg_shmem.h +93 -0
  345. data/ext/pg_query/include/postgres/storage/pmsignal.h +105 -0
  346. data/ext/pg_query/include/postgres/storage/predicate.h +83 -0
  347. data/ext/pg_query/include/postgres/storage/proc.h +488 -0
  348. data/ext/pg_query/include/postgres/storage/procarray.h +103 -0
  349. data/ext/pg_query/include/postgres/storage/proclist_types.h +53 -0
  350. data/ext/pg_query/include/postgres/storage/procnumber.h +43 -0
  351. data/ext/pg_query/include/postgres/storage/procsignal.h +75 -0
  352. data/ext/pg_query/include/postgres/storage/read_stream.h +65 -0
  353. data/ext/pg_query/include/postgres/storage/relfilelocator.h +100 -0
  354. data/ext/pg_query/include/postgres/storage/s_lock.h +847 -0
  355. data/ext/pg_query/include/postgres/storage/sharedfileset.h +37 -0
  356. data/ext/pg_query/include/postgres/storage/shm_mq.h +86 -0
  357. data/ext/pg_query/include/postgres/storage/shm_toc.h +58 -0
  358. data/ext/pg_query/include/postgres/storage/shmem.h +59 -0
  359. data/ext/pg_query/include/postgres/storage/sinval.h +153 -0
  360. data/ext/pg_query/include/postgres/storage/smgr.h +130 -0
  361. data/ext/pg_query/include/postgres/storage/spin.h +77 -0
  362. data/ext/pg_query/include/postgres/storage/standby.h +109 -0
  363. data/ext/pg_query/include/postgres/storage/standbydefs.h +74 -0
  364. data/ext/pg_query/include/postgres/storage/sync.h +66 -0
  365. data/ext/pg_query/include/postgres/tcop/cmdtag.h +62 -0
  366. data/ext/pg_query/include/postgres/tcop/cmdtaglist.h +219 -0
  367. data/ext/pg_query/include/postgres/tcop/deparse_utility.h +108 -0
  368. data/ext/pg_query/include/postgres/tcop/dest.h +148 -0
  369. data/ext/pg_query/include/postgres/tcop/fastpath.h +20 -0
  370. data/ext/pg_query/include/postgres/tcop/pquery.h +51 -0
  371. data/ext/pg_query/include/postgres/tcop/tcopprot.h +98 -0
  372. data/ext/pg_query/include/postgres/tcop/utility.h +112 -0
  373. data/ext/pg_query/include/postgres/tsearch/ts_cache.h +96 -0
  374. data/ext/pg_query/include/postgres/utils/acl.h +290 -0
  375. data/ext/pg_query/include/postgres/utils/aclchk_internal.h +45 -0
  376. data/ext/pg_query/include/postgres/utils/array.h +481 -0
  377. data/ext/pg_query/include/postgres/utils/ascii.h +84 -0
  378. data/ext/pg_query/include/postgres/utils/backend_progress.h +46 -0
  379. data/ext/pg_query/include/postgres/utils/backend_status.h +340 -0
  380. data/ext/pg_query/include/postgres/utils/builtins.h +139 -0
  381. data/ext/pg_query/include/postgres/utils/bytea.h +28 -0
  382. data/ext/pg_query/include/postgres/utils/catcache.h +231 -0
  383. data/ext/pg_query/include/postgres/utils/date.h +118 -0
  384. data/ext/pg_query/include/postgres/utils/datetime.h +367 -0
  385. data/ext/pg_query/include/postgres/utils/datum.h +76 -0
  386. data/ext/pg_query/include/postgres/utils/dsa.h +166 -0
  387. data/ext/pg_query/include/postgres/utils/elog.h +540 -0
  388. data/ext/pg_query/include/postgres/utils/errcodes.h +352 -0
  389. data/ext/pg_query/include/postgres/utils/expandeddatum.h +170 -0
  390. data/ext/pg_query/include/postgres/utils/expandedrecord.h +241 -0
  391. data/ext/pg_query/include/postgres/utils/float.h +357 -0
  392. data/ext/pg_query/include/postgres/utils/fmgroids.h +3347 -0
  393. data/ext/pg_query/include/postgres/utils/fmgrprotos.h +2904 -0
  394. data/ext/pg_query/include/postgres/utils/fmgrtab.h +49 -0
  395. data/ext/pg_query/include/postgres/utils/guc.h +456 -0
  396. data/ext/pg_query/include/postgres/utils/guc_hooks.h +184 -0
  397. data/ext/pg_query/include/postgres/utils/guc_tables.h +323 -0
  398. data/ext/pg_query/include/postgres/utils/hsearch.h +153 -0
  399. data/ext/pg_query/include/postgres/utils/injection_point.h +44 -0
  400. data/ext/pg_query/include/postgres/utils/inval.h +68 -0
  401. data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
  402. data/ext/pg_query/include/postgres/utils/lsyscache.h +215 -0
  403. data/ext/pg_query/include/postgres/utils/memdebug.h +82 -0
  404. data/ext/pg_query/include/postgres/utils/memutils.h +193 -0
  405. data/ext/pg_query/include/postgres/utils/memutils_internal.h +176 -0
  406. data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +253 -0
  407. data/ext/pg_query/include/postgres/utils/numeric.h +110 -0
  408. data/ext/pg_query/include/postgres/utils/palloc.h +151 -0
  409. data/ext/pg_query/include/postgres/utils/partcache.h +103 -0
  410. data/ext/pg_query/include/postgres/utils/pg_locale.h +136 -0
  411. data/ext/pg_query/include/postgres/utils/pgstat_internal.h +827 -0
  412. data/ext/pg_query/include/postgres/utils/plancache.h +238 -0
  413. data/ext/pg_query/include/postgres/utils/portal.h +252 -0
  414. data/ext/pg_query/include/postgres/utils/probes.h +114 -0
  415. data/ext/pg_query/include/postgres/utils/ps_status.h +47 -0
  416. data/ext/pg_query/include/postgres/utils/queryenvironment.h +74 -0
  417. data/ext/pg_query/include/postgres/utils/regproc.h +39 -0
  418. data/ext/pg_query/include/postgres/utils/rel.h +711 -0
  419. data/ext/pg_query/include/postgres/utils/relcache.h +155 -0
  420. data/ext/pg_query/include/postgres/utils/reltrigger.h +81 -0
  421. data/ext/pg_query/include/postgres/utils/resowner.h +167 -0
  422. data/ext/pg_query/include/postgres/utils/ruleutils.h +52 -0
  423. data/ext/pg_query/include/postgres/utils/sharedtuplestore.h +61 -0
  424. data/ext/pg_query/include/postgres/utils/snapmgr.h +130 -0
  425. data/ext/pg_query/include/postgres/utils/snapshot.h +219 -0
  426. data/ext/pg_query/include/postgres/utils/sortsupport.h +391 -0
  427. data/ext/pg_query/include/postgres/utils/syscache.h +136 -0
  428. data/ext/pg_query/include/postgres/utils/timeout.h +96 -0
  429. data/ext/pg_query/include/postgres/utils/timestamp.h +147 -0
  430. data/ext/pg_query/include/postgres/utils/tuplesort.h +472 -0
  431. data/ext/pg_query/include/postgres/utils/tuplestore.h +88 -0
  432. data/ext/pg_query/include/postgres/utils/typcache.h +210 -0
  433. data/ext/pg_query/include/postgres/utils/varlena.h +53 -0
  434. data/ext/pg_query/include/postgres/utils/wait_event.h +108 -0
  435. data/ext/pg_query/include/postgres/utils/wait_event_types.h +218 -0
  436. data/ext/pg_query/include/postgres/utils/xml.h +94 -0
  437. data/ext/pg_query/include/postgres/varatt.h +358 -0
  438. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +8077 -6217
  439. data/ext/pg_query/include/protobuf/pg_query.pb.h +132024 -88124
  440. data/ext/pg_query/pg_query.c +10 -1
  441. data/ext/pg_query/pg_query.pb-c.c +24028 -17173
  442. data/ext/pg_query/pg_query_deparse.c +1 -9902
  443. data/ext/pg_query/pg_query_fingerprint.c +42 -18
  444. data/ext/pg_query/pg_query_fingerprint.h +1 -1
  445. data/ext/pg_query/pg_query_internal.h +1 -1
  446. data/ext/pg_query/pg_query_json_plpgsql.c +1 -25
  447. data/ext/pg_query/pg_query_normalize.c +44 -3
  448. data/ext/pg_query/pg_query_outfuncs_json.c +62 -16
  449. data/ext/pg_query/pg_query_outfuncs_protobuf.c +73 -12
  450. data/ext/pg_query/pg_query_parse.c +47 -5
  451. data/ext/pg_query/pg_query_parse_plpgsql.c +19 -18
  452. data/ext/pg_query/pg_query_readfuncs_protobuf.c +45 -10
  453. data/ext/pg_query/pg_query_ruby.c +5 -0
  454. data/ext/pg_query/pg_query_scan.c +4 -3
  455. data/ext/pg_query/pg_query_split.c +6 -5
  456. data/ext/pg_query/postgres_deparse.c +11496 -0
  457. data/ext/pg_query/postgres_deparse.h +9 -0
  458. data/ext/pg_query/src_backend_catalog_namespace.c +262 -71
  459. data/ext/pg_query/src_backend_catalog_pg_proc.c +3 -2
  460. data/ext/pg_query/src_backend_commands_define.c +12 -3
  461. data/ext/pg_query/src_backend_nodes_bitmapset.c +142 -156
  462. data/ext/pg_query/src_backend_nodes_copyfuncs.c +100 -5881
  463. data/ext/pg_query/src_backend_nodes_equalfuncs.c +102 -3831
  464. data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
  465. data/ext/pg_query/src_backend_nodes_list.c +89 -18
  466. data/ext/pg_query/src_backend_nodes_makefuncs.c +138 -4
  467. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +433 -132
  468. data/ext/pg_query/src_backend_nodes_value.c +28 -19
  469. data/ext/pg_query/src_backend_parser_gram.c +45255 -38885
  470. data/ext/pg_query/src_backend_parser_parser.c +53 -8
  471. data/ext/pg_query/src_backend_parser_scan.c +6999 -3438
  472. data/ext/pg_query/src_backend_parser_scansup.c +5 -28
  473. data/ext/pg_query/src_backend_storage_ipc_ipc.c +13 -4
  474. data/ext/pg_query/src_backend_tcop_postgres.c +156 -114
  475. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +140 -0
  476. data/ext/pg_query/src_backend_utils_adt_datum.c +14 -2
  477. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  478. data/ext/pg_query/src_backend_utils_adt_format_type.c +6 -2
  479. data/ext/pg_query/src_backend_utils_adt_numutils.c +488 -0
  480. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +247 -34
  481. data/ext/pg_query/src_backend_utils_error_assert.c +17 -18
  482. data/ext/pg_query/src_backend_utils_error_elog.c +543 -343
  483. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +47 -18
  484. data/ext/pg_query/src_backend_utils_init_globals.c +22 -7
  485. data/ext/pg_query/src_backend_utils_mb_mbutils.c +84 -148
  486. data/ext/pg_query/src_backend_utils_misc_guc_tables.c +502 -0
  487. data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +166 -0
  488. data/ext/pg_query/src_backend_utils_mmgr_aset.c +708 -499
  489. data/ext/pg_query/src_backend_utils_mmgr_bump.c +728 -0
  490. data/ext/pg_query/src_backend_utils_mmgr_generation.c +1115 -0
  491. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +710 -218
  492. data/ext/pg_query/src_backend_utils_mmgr_slab.c +1079 -0
  493. data/ext/pg_query/src_common_encnames.c +46 -44
  494. data/ext/pg_query/src_common_hashfn.c +3 -3
  495. data/ext/pg_query/src_common_keywords.c +15 -2
  496. data/ext/pg_query/src_common_kwlist_d.h +602 -510
  497. data/ext/pg_query/src_common_kwlookup.c +1 -1
  498. data/ext/pg_query/src_common_psprintf.c +3 -3
  499. data/ext/pg_query/src_common_stringinfo.c +21 -4
  500. data/ext/pg_query/src_common_wchar.c +754 -178
  501. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +143 -24
  502. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -18
  503. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1295 -1255
  504. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  505. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +10 -10
  506. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +20 -2
  507. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +60 -60
  508. data/ext/pg_query/src_port_pg_bitutils.c +283 -54
  509. data/ext/pg_query/src_port_pgstrcasecmp.c +57 -1
  510. data/ext/pg_query/src_port_qsort.c +12 -224
  511. data/ext/pg_query/src_port_snprintf.c +56 -39
  512. data/ext/pg_query/src_port_strerror.c +9 -21
  513. data/ext/pg_query/src_port_strlcpy.c +79 -0
  514. data/lib/pg_query/filter_columns.rb +1 -1
  515. data/lib/pg_query/fingerprint.rb +10 -9
  516. data/lib/pg_query/node.rb +18 -13
  517. data/lib/pg_query/param_refs.rb +3 -3
  518. data/lib/pg_query/parse.rb +25 -15
  519. data/lib/pg_query/parse_error.rb +1 -0
  520. data/lib/pg_query/pg_query_pb.rb +181 -3038
  521. data/lib/pg_query/scan.rb +1 -0
  522. data/lib/pg_query/treewalker.rb +55 -8
  523. data/lib/pg_query/truncate.rb +19 -21
  524. data/lib/pg_query/version.rb +1 -1
  525. metadata +447 -436
  526. data/ext/pg_query/guc-file.c +0 -0
  527. data/ext/pg_query/include/access/amapi.h +0 -246
  528. data/ext/pg_query/include/access/attmap.h +0 -52
  529. data/ext/pg_query/include/access/attnum.h +0 -64
  530. data/ext/pg_query/include/access/clog.h +0 -61
  531. data/ext/pg_query/include/access/commit_ts.h +0 -77
  532. data/ext/pg_query/include/access/detoast.h +0 -92
  533. data/ext/pg_query/include/access/genam.h +0 -228
  534. data/ext/pg_query/include/access/gin.h +0 -78
  535. data/ext/pg_query/include/access/htup.h +0 -89
  536. data/ext/pg_query/include/access/htup_details.h +0 -819
  537. data/ext/pg_query/include/access/itup.h +0 -161
  538. data/ext/pg_query/include/access/parallel.h +0 -82
  539. data/ext/pg_query/include/access/printtup.h +0 -35
  540. data/ext/pg_query/include/access/relation.h +0 -28
  541. data/ext/pg_query/include/access/relscan.h +0 -176
  542. data/ext/pg_query/include/access/rmgr.h +0 -35
  543. data/ext/pg_query/include/access/rmgrlist.h +0 -49
  544. data/ext/pg_query/include/access/sdir.h +0 -58
  545. data/ext/pg_query/include/access/skey.h +0 -151
  546. data/ext/pg_query/include/access/stratnum.h +0 -83
  547. data/ext/pg_query/include/access/sysattr.h +0 -29
  548. data/ext/pg_query/include/access/table.h +0 -27
  549. data/ext/pg_query/include/access/tableam.h +0 -1825
  550. data/ext/pg_query/include/access/transam.h +0 -265
  551. data/ext/pg_query/include/access/tupconvert.h +0 -51
  552. data/ext/pg_query/include/access/tupdesc.h +0 -154
  553. data/ext/pg_query/include/access/tupmacs.h +0 -247
  554. data/ext/pg_query/include/access/twophase.h +0 -63
  555. data/ext/pg_query/include/access/xact.h +0 -469
  556. data/ext/pg_query/include/access/xlog.h +0 -398
  557. data/ext/pg_query/include/access/xlog_internal.h +0 -339
  558. data/ext/pg_query/include/access/xlogdefs.h +0 -109
  559. data/ext/pg_query/include/access/xloginsert.h +0 -64
  560. data/ext/pg_query/include/access/xlogreader.h +0 -337
  561. data/ext/pg_query/include/access/xlogrecord.h +0 -227
  562. data/ext/pg_query/include/bootstrap/bootstrap.h +0 -62
  563. data/ext/pg_query/include/c.h +0 -1334
  564. data/ext/pg_query/include/catalog/catalog.h +0 -42
  565. data/ext/pg_query/include/catalog/catversion.h +0 -58
  566. data/ext/pg_query/include/catalog/dependency.h +0 -277
  567. data/ext/pg_query/include/catalog/genbki.h +0 -64
  568. data/ext/pg_query/include/catalog/index.h +0 -199
  569. data/ext/pg_query/include/catalog/indexing.h +0 -366
  570. data/ext/pg_query/include/catalog/namespace.h +0 -188
  571. data/ext/pg_query/include/catalog/objectaccess.h +0 -197
  572. data/ext/pg_query/include/catalog/objectaddress.h +0 -84
  573. data/ext/pg_query/include/catalog/pg_aggregate.h +0 -176
  574. data/ext/pg_query/include/catalog/pg_aggregate_d.h +0 -77
  575. data/ext/pg_query/include/catalog/pg_am.h +0 -60
  576. data/ext/pg_query/include/catalog/pg_am_d.h +0 -45
  577. data/ext/pg_query/include/catalog/pg_attribute.h +0 -204
  578. data/ext/pg_query/include/catalog/pg_attribute_d.h +0 -59
  579. data/ext/pg_query/include/catalog/pg_authid.h +0 -58
  580. data/ext/pg_query/include/catalog/pg_authid_d.h +0 -49
  581. data/ext/pg_query/include/catalog/pg_class.h +0 -200
  582. data/ext/pg_query/include/catalog/pg_class_d.h +0 -103
  583. data/ext/pg_query/include/catalog/pg_collation.h +0 -73
  584. data/ext/pg_query/include/catalog/pg_collation_d.h +0 -45
  585. data/ext/pg_query/include/catalog/pg_constraint.h +0 -247
  586. data/ext/pg_query/include/catalog/pg_constraint_d.h +0 -67
  587. data/ext/pg_query/include/catalog/pg_control.h +0 -252
  588. data/ext/pg_query/include/catalog/pg_conversion.h +0 -72
  589. data/ext/pg_query/include/catalog/pg_conversion_d.h +0 -35
  590. data/ext/pg_query/include/catalog/pg_depend.h +0 -73
  591. data/ext/pg_query/include/catalog/pg_depend_d.h +0 -34
  592. data/ext/pg_query/include/catalog/pg_event_trigger.h +0 -51
  593. data/ext/pg_query/include/catalog/pg_event_trigger_d.h +0 -34
  594. data/ext/pg_query/include/catalog/pg_index.h +0 -80
  595. data/ext/pg_query/include/catalog/pg_index_d.h +0 -56
  596. data/ext/pg_query/include/catalog/pg_language.h +0 -67
  597. data/ext/pg_query/include/catalog/pg_language_d.h +0 -39
  598. data/ext/pg_query/include/catalog/pg_namespace.h +0 -59
  599. data/ext/pg_query/include/catalog/pg_namespace_d.h +0 -34
  600. data/ext/pg_query/include/catalog/pg_opclass.h +0 -85
  601. data/ext/pg_query/include/catalog/pg_opclass_d.h +0 -49
  602. data/ext/pg_query/include/catalog/pg_operator.h +0 -104
  603. data/ext/pg_query/include/catalog/pg_operator_d.h +0 -106
  604. data/ext/pg_query/include/catalog/pg_opfamily.h +0 -60
  605. data/ext/pg_query/include/catalog/pg_opfamily_d.h +0 -47
  606. data/ext/pg_query/include/catalog/pg_partitioned_table.h +0 -63
  607. data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +0 -35
  608. data/ext/pg_query/include/catalog/pg_proc.h +0 -211
  609. data/ext/pg_query/include/catalog/pg_proc_d.h +0 -99
  610. data/ext/pg_query/include/catalog/pg_publication.h +0 -118
  611. data/ext/pg_query/include/catalog/pg_publication_d.h +0 -36
  612. data/ext/pg_query/include/catalog/pg_replication_origin.h +0 -57
  613. data/ext/pg_query/include/catalog/pg_replication_origin_d.h +0 -29
  614. data/ext/pg_query/include/catalog/pg_statistic.h +0 -275
  615. data/ext/pg_query/include/catalog/pg_statistic_d.h +0 -194
  616. data/ext/pg_query/include/catalog/pg_statistic_ext.h +0 -74
  617. data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +0 -40
  618. data/ext/pg_query/include/catalog/pg_transform.h +0 -45
  619. data/ext/pg_query/include/catalog/pg_transform_d.h +0 -32
  620. data/ext/pg_query/include/catalog/pg_trigger.h +0 -137
  621. data/ext/pg_query/include/catalog/pg_trigger_d.h +0 -106
  622. data/ext/pg_query/include/catalog/pg_ts_config.h +0 -50
  623. data/ext/pg_query/include/catalog/pg_ts_config_d.h +0 -32
  624. data/ext/pg_query/include/catalog/pg_ts_dict.h +0 -54
  625. data/ext/pg_query/include/catalog/pg_ts_dict_d.h +0 -33
  626. data/ext/pg_query/include/catalog/pg_ts_parser.h +0 -57
  627. data/ext/pg_query/include/catalog/pg_ts_parser_d.h +0 -35
  628. data/ext/pg_query/include/catalog/pg_ts_template.h +0 -48
  629. data/ext/pg_query/include/catalog/pg_ts_template_d.h +0 -32
  630. data/ext/pg_query/include/catalog/pg_type.h +0 -373
  631. data/ext/pg_query/include/catalog/pg_type_d.h +0 -285
  632. data/ext/pg_query/include/catalog/storage.h +0 -48
  633. data/ext/pg_query/include/commands/async.h +0 -54
  634. data/ext/pg_query/include/commands/dbcommands.h +0 -35
  635. data/ext/pg_query/include/commands/defrem.h +0 -173
  636. data/ext/pg_query/include/commands/event_trigger.h +0 -88
  637. data/ext/pg_query/include/commands/explain.h +0 -127
  638. data/ext/pg_query/include/commands/prepare.h +0 -61
  639. data/ext/pg_query/include/commands/tablespace.h +0 -69
  640. data/ext/pg_query/include/commands/trigger.h +0 -285
  641. data/ext/pg_query/include/commands/user.h +0 -37
  642. data/ext/pg_query/include/commands/vacuum.h +0 -293
  643. data/ext/pg_query/include/commands/variable.h +0 -38
  644. data/ext/pg_query/include/common/file_perm.h +0 -56
  645. data/ext/pg_query/include/common/hashfn.h +0 -104
  646. data/ext/pg_query/include/common/ip.h +0 -37
  647. data/ext/pg_query/include/common/keywords.h +0 -33
  648. data/ext/pg_query/include/common/kwlookup.h +0 -44
  649. data/ext/pg_query/include/common/relpath.h +0 -90
  650. data/ext/pg_query/include/common/string.h +0 -19
  651. data/ext/pg_query/include/common/unicode_combining_table.h +0 -196
  652. data/ext/pg_query/include/datatype/timestamp.h +0 -197
  653. data/ext/pg_query/include/executor/execdesc.h +0 -70
  654. data/ext/pg_query/include/executor/executor.h +0 -620
  655. data/ext/pg_query/include/executor/functions.h +0 -41
  656. data/ext/pg_query/include/executor/instrument.h +0 -101
  657. data/ext/pg_query/include/executor/spi.h +0 -175
  658. data/ext/pg_query/include/executor/tablefunc.h +0 -67
  659. data/ext/pg_query/include/executor/tuptable.h +0 -487
  660. data/ext/pg_query/include/fmgr.h +0 -775
  661. data/ext/pg_query/include/funcapi.h +0 -348
  662. data/ext/pg_query/include/getaddrinfo.h +0 -162
  663. data/ext/pg_query/include/jit/jit.h +0 -105
  664. data/ext/pg_query/include/kwlist_d.h +0 -1072
  665. data/ext/pg_query/include/lib/ilist.h +0 -727
  666. data/ext/pg_query/include/lib/pairingheap.h +0 -102
  667. data/ext/pg_query/include/lib/simplehash.h +0 -1059
  668. data/ext/pg_query/include/lib/stringinfo.h +0 -161
  669. data/ext/pg_query/include/libpq/auth.h +0 -29
  670. data/ext/pg_query/include/libpq/crypt.h +0 -46
  671. data/ext/pg_query/include/libpq/hba.h +0 -140
  672. data/ext/pg_query/include/libpq/libpq-be.h +0 -326
  673. data/ext/pg_query/include/libpq/libpq.h +0 -134
  674. data/ext/pg_query/include/libpq/pqcomm.h +0 -208
  675. data/ext/pg_query/include/libpq/pqformat.h +0 -210
  676. data/ext/pg_query/include/libpq/pqsignal.h +0 -42
  677. data/ext/pg_query/include/mb/pg_wchar.h +0 -673
  678. data/ext/pg_query/include/mb/stringinfo_mb.h +0 -24
  679. data/ext/pg_query/include/miscadmin.h +0 -489
  680. data/ext/pg_query/include/nodes/bitmapset.h +0 -122
  681. data/ext/pg_query/include/nodes/execnodes.h +0 -2523
  682. data/ext/pg_query/include/nodes/extensible.h +0 -160
  683. data/ext/pg_query/include/nodes/lockoptions.h +0 -61
  684. data/ext/pg_query/include/nodes/makefuncs.h +0 -108
  685. data/ext/pg_query/include/nodes/memnodes.h +0 -108
  686. data/ext/pg_query/include/nodes/nodeFuncs.h +0 -162
  687. data/ext/pg_query/include/nodes/nodes.h +0 -842
  688. data/ext/pg_query/include/nodes/params.h +0 -170
  689. data/ext/pg_query/include/nodes/parsenodes.h +0 -3580
  690. data/ext/pg_query/include/nodes/pathnodes.h +0 -2557
  691. data/ext/pg_query/include/nodes/pg_list.h +0 -606
  692. data/ext/pg_query/include/nodes/plannodes.h +0 -1266
  693. data/ext/pg_query/include/nodes/primnodes.h +0 -1541
  694. data/ext/pg_query/include/nodes/print.h +0 -34
  695. data/ext/pg_query/include/nodes/tidbitmap.h +0 -75
  696. data/ext/pg_query/include/nodes/value.h +0 -61
  697. data/ext/pg_query/include/optimizer/cost.h +0 -206
  698. data/ext/pg_query/include/optimizer/geqo.h +0 -88
  699. data/ext/pg_query/include/optimizer/geqo_gene.h +0 -45
  700. data/ext/pg_query/include/optimizer/optimizer.h +0 -194
  701. data/ext/pg_query/include/optimizer/paths.h +0 -257
  702. data/ext/pg_query/include/optimizer/planmain.h +0 -119
  703. data/ext/pg_query/include/parser/analyze.h +0 -49
  704. data/ext/pg_query/include/parser/gram.h +0 -1067
  705. data/ext/pg_query/include/parser/gramparse.h +0 -75
  706. data/ext/pg_query/include/parser/kwlist.h +0 -477
  707. data/ext/pg_query/include/parser/parse_agg.h +0 -68
  708. data/ext/pg_query/include/parser/parse_clause.h +0 -54
  709. data/ext/pg_query/include/parser/parse_coerce.h +0 -98
  710. data/ext/pg_query/include/parser/parse_collate.h +0 -27
  711. data/ext/pg_query/include/parser/parse_expr.h +0 -26
  712. data/ext/pg_query/include/parser/parse_func.h +0 -73
  713. data/ext/pg_query/include/parser/parse_node.h +0 -327
  714. data/ext/pg_query/include/parser/parse_oper.h +0 -67
  715. data/ext/pg_query/include/parser/parse_relation.h +0 -123
  716. data/ext/pg_query/include/parser/parse_target.h +0 -46
  717. data/ext/pg_query/include/parser/parse_type.h +0 -60
  718. data/ext/pg_query/include/parser/parser.h +0 -41
  719. data/ext/pg_query/include/parser/parsetree.h +0 -61
  720. data/ext/pg_query/include/parser/scanner.h +0 -152
  721. data/ext/pg_query/include/parser/scansup.h +0 -30
  722. data/ext/pg_query/include/partitioning/partdefs.h +0 -26
  723. data/ext/pg_query/include/pg_config.h +0 -995
  724. data/ext/pg_query/include/pg_config_manual.h +0 -357
  725. data/ext/pg_query/include/pg_config_os.h +0 -8
  726. data/ext/pg_query/include/pg_getopt.h +0 -56
  727. data/ext/pg_query/include/pg_trace.h +0 -17
  728. data/ext/pg_query/include/pgstat.h +0 -1488
  729. data/ext/pg_query/include/pgtime.h +0 -84
  730. data/ext/pg_query/include/pl_gram.h +0 -385
  731. data/ext/pg_query/include/pl_reserved_kwlist.h +0 -52
  732. data/ext/pg_query/include/pl_reserved_kwlist_d.h +0 -114
  733. data/ext/pg_query/include/pl_unreserved_kwlist.h +0 -112
  734. data/ext/pg_query/include/pl_unreserved_kwlist_d.h +0 -246
  735. data/ext/pg_query/include/plerrcodes.h +0 -990
  736. data/ext/pg_query/include/plpgsql.h +0 -1347
  737. data/ext/pg_query/include/port/atomics/arch-arm.h +0 -26
  738. data/ext/pg_query/include/port/atomics/arch-ppc.h +0 -254
  739. data/ext/pg_query/include/port/atomics/arch-x86.h +0 -252
  740. data/ext/pg_query/include/port/atomics/fallback.h +0 -170
  741. data/ext/pg_query/include/port/atomics/generic-gcc.h +0 -286
  742. data/ext/pg_query/include/port/atomics/generic.h +0 -401
  743. data/ext/pg_query/include/port/atomics.h +0 -524
  744. data/ext/pg_query/include/port/pg_bitutils.h +0 -272
  745. data/ext/pg_query/include/port/pg_bswap.h +0 -161
  746. data/ext/pg_query/include/port/pg_crc32c.h +0 -101
  747. data/ext/pg_query/include/port.h +0 -528
  748. data/ext/pg_query/include/portability/instr_time.h +0 -256
  749. data/ext/pg_query/include/postgres.h +0 -764
  750. data/ext/pg_query/include/postgres_ext.h +0 -74
  751. data/ext/pg_query/include/postmaster/autovacuum.h +0 -83
  752. data/ext/pg_query/include/postmaster/bgworker.h +0 -161
  753. data/ext/pg_query/include/postmaster/bgworker_internals.h +0 -64
  754. data/ext/pg_query/include/postmaster/bgwriter.h +0 -45
  755. data/ext/pg_query/include/postmaster/fork_process.h +0 -17
  756. data/ext/pg_query/include/postmaster/interrupt.h +0 -32
  757. data/ext/pg_query/include/postmaster/pgarch.h +0 -39
  758. data/ext/pg_query/include/postmaster/postmaster.h +0 -77
  759. data/ext/pg_query/include/postmaster/syslogger.h +0 -98
  760. data/ext/pg_query/include/postmaster/walwriter.h +0 -21
  761. data/ext/pg_query/include/regex/regex.h +0 -184
  762. data/ext/pg_query/include/replication/logicallauncher.h +0 -31
  763. data/ext/pg_query/include/replication/logicalproto.h +0 -110
  764. data/ext/pg_query/include/replication/logicalworker.h +0 -19
  765. data/ext/pg_query/include/replication/origin.h +0 -73
  766. data/ext/pg_query/include/replication/reorderbuffer.h +0 -468
  767. data/ext/pg_query/include/replication/slot.h +0 -219
  768. data/ext/pg_query/include/replication/syncrep.h +0 -115
  769. data/ext/pg_query/include/replication/walreceiver.h +0 -340
  770. data/ext/pg_query/include/replication/walsender.h +0 -74
  771. data/ext/pg_query/include/rewrite/prs2lock.h +0 -46
  772. data/ext/pg_query/include/rewrite/rewriteHandler.h +0 -40
  773. data/ext/pg_query/include/rewrite/rewriteManip.h +0 -87
  774. data/ext/pg_query/include/rewrite/rewriteSupport.h +0 -26
  775. data/ext/pg_query/include/storage/backendid.h +0 -37
  776. data/ext/pg_query/include/storage/block.h +0 -121
  777. data/ext/pg_query/include/storage/buf.h +0 -46
  778. data/ext/pg_query/include/storage/bufmgr.h +0 -292
  779. data/ext/pg_query/include/storage/bufpage.h +0 -459
  780. data/ext/pg_query/include/storage/condition_variable.h +0 -62
  781. data/ext/pg_query/include/storage/dsm.h +0 -61
  782. data/ext/pg_query/include/storage/dsm_impl.h +0 -75
  783. data/ext/pg_query/include/storage/fd.h +0 -168
  784. data/ext/pg_query/include/storage/ipc.h +0 -81
  785. data/ext/pg_query/include/storage/item.h +0 -19
  786. data/ext/pg_query/include/storage/itemid.h +0 -184
  787. data/ext/pg_query/include/storage/itemptr.h +0 -206
  788. data/ext/pg_query/include/storage/large_object.h +0 -100
  789. data/ext/pg_query/include/storage/latch.h +0 -190
  790. data/ext/pg_query/include/storage/lmgr.h +0 -114
  791. data/ext/pg_query/include/storage/lock.h +0 -613
  792. data/ext/pg_query/include/storage/lockdefs.h +0 -59
  793. data/ext/pg_query/include/storage/lwlock.h +0 -233
  794. data/ext/pg_query/include/storage/lwlocknames.h +0 -51
  795. data/ext/pg_query/include/storage/off.h +0 -57
  796. data/ext/pg_query/include/storage/pg_sema.h +0 -61
  797. data/ext/pg_query/include/storage/pg_shmem.h +0 -90
  798. data/ext/pg_query/include/storage/pmsignal.h +0 -94
  799. data/ext/pg_query/include/storage/predicate.h +0 -87
  800. data/ext/pg_query/include/storage/proc.h +0 -347
  801. data/ext/pg_query/include/storage/proclist_types.h +0 -51
  802. data/ext/pg_query/include/storage/procsignal.h +0 -75
  803. data/ext/pg_query/include/storage/relfilenode.h +0 -99
  804. data/ext/pg_query/include/storage/s_lock.h +0 -1071
  805. data/ext/pg_query/include/storage/sharedfileset.h +0 -45
  806. data/ext/pg_query/include/storage/shm_mq.h +0 -85
  807. data/ext/pg_query/include/storage/shm_toc.h +0 -58
  808. data/ext/pg_query/include/storage/shmem.h +0 -81
  809. data/ext/pg_query/include/storage/sinval.h +0 -153
  810. data/ext/pg_query/include/storage/sinvaladt.h +0 -43
  811. data/ext/pg_query/include/storage/smgr.h +0 -109
  812. data/ext/pg_query/include/storage/spin.h +0 -77
  813. data/ext/pg_query/include/storage/standby.h +0 -91
  814. data/ext/pg_query/include/storage/standbydefs.h +0 -74
  815. data/ext/pg_query/include/storage/sync.h +0 -62
  816. data/ext/pg_query/include/tcop/cmdtag.h +0 -58
  817. data/ext/pg_query/include/tcop/cmdtaglist.h +0 -217
  818. data/ext/pg_query/include/tcop/deparse_utility.h +0 -108
  819. data/ext/pg_query/include/tcop/dest.h +0 -149
  820. data/ext/pg_query/include/tcop/fastpath.h +0 -21
  821. data/ext/pg_query/include/tcop/pquery.h +0 -51
  822. data/ext/pg_query/include/tcop/tcopprot.h +0 -89
  823. data/ext/pg_query/include/tcop/utility.h +0 -108
  824. data/ext/pg_query/include/tsearch/ts_cache.h +0 -98
  825. data/ext/pg_query/include/utils/acl.h +0 -312
  826. data/ext/pg_query/include/utils/aclchk_internal.h +0 -45
  827. data/ext/pg_query/include/utils/array.h +0 -459
  828. data/ext/pg_query/include/utils/builtins.h +0 -128
  829. data/ext/pg_query/include/utils/bytea.h +0 -27
  830. data/ext/pg_query/include/utils/catcache.h +0 -231
  831. data/ext/pg_query/include/utils/date.h +0 -90
  832. data/ext/pg_query/include/utils/datetime.h +0 -343
  833. data/ext/pg_query/include/utils/datum.h +0 -68
  834. data/ext/pg_query/include/utils/dsa.h +0 -123
  835. data/ext/pg_query/include/utils/dynahash.h +0 -19
  836. data/ext/pg_query/include/utils/elog.h +0 -439
  837. data/ext/pg_query/include/utils/errcodes.h +0 -352
  838. data/ext/pg_query/include/utils/expandeddatum.h +0 -159
  839. data/ext/pg_query/include/utils/expandedrecord.h +0 -231
  840. data/ext/pg_query/include/utils/float.h +0 -356
  841. data/ext/pg_query/include/utils/fmgroids.h +0 -2657
  842. data/ext/pg_query/include/utils/fmgrprotos.h +0 -2646
  843. data/ext/pg_query/include/utils/fmgrtab.h +0 -48
  844. data/ext/pg_query/include/utils/guc.h +0 -443
  845. data/ext/pg_query/include/utils/guc_tables.h +0 -272
  846. data/ext/pg_query/include/utils/hsearch.h +0 -149
  847. data/ext/pg_query/include/utils/inval.h +0 -65
  848. data/ext/pg_query/include/utils/lsyscache.h +0 -198
  849. data/ext/pg_query/include/utils/memdebug.h +0 -82
  850. data/ext/pg_query/include/utils/memutils.h +0 -225
  851. data/ext/pg_query/include/utils/numeric.h +0 -76
  852. data/ext/pg_query/include/utils/palloc.h +0 -136
  853. data/ext/pg_query/include/utils/partcache.h +0 -102
  854. data/ext/pg_query/include/utils/pg_locale.h +0 -119
  855. data/ext/pg_query/include/utils/pg_lsn.h +0 -29
  856. data/ext/pg_query/include/utils/pidfile.h +0 -56
  857. data/ext/pg_query/include/utils/plancache.h +0 -235
  858. data/ext/pg_query/include/utils/portal.h +0 -254
  859. data/ext/pg_query/include/utils/probes.h +0 -114
  860. data/ext/pg_query/include/utils/ps_status.h +0 -25
  861. data/ext/pg_query/include/utils/queryenvironment.h +0 -74
  862. data/ext/pg_query/include/utils/regproc.h +0 -28
  863. data/ext/pg_query/include/utils/rel.h +0 -643
  864. data/ext/pg_query/include/utils/relcache.h +0 -150
  865. data/ext/pg_query/include/utils/reltrigger.h +0 -81
  866. data/ext/pg_query/include/utils/resowner.h +0 -86
  867. data/ext/pg_query/include/utils/rls.h +0 -50
  868. data/ext/pg_query/include/utils/ruleutils.h +0 -44
  869. data/ext/pg_query/include/utils/sharedtuplestore.h +0 -61
  870. data/ext/pg_query/include/utils/snapmgr.h +0 -159
  871. data/ext/pg_query/include/utils/snapshot.h +0 -206
  872. data/ext/pg_query/include/utils/sortsupport.h +0 -276
  873. data/ext/pg_query/include/utils/syscache.h +0 -219
  874. data/ext/pg_query/include/utils/timeout.h +0 -88
  875. data/ext/pg_query/include/utils/timestamp.h +0 -116
  876. data/ext/pg_query/include/utils/tuplesort.h +0 -277
  877. data/ext/pg_query/include/utils/tuplestore.h +0 -91
  878. data/ext/pg_query/include/utils/typcache.h +0 -202
  879. data/ext/pg_query/include/utils/tzparser.h +0 -39
  880. data/ext/pg_query/include/utils/varlena.h +0 -39
  881. data/ext/pg_query/include/utils/xml.h +0 -84
  882. data/ext/pg_query/pg_query_ruby_freebsd.sym +0 -2
  883. data/ext/pg_query/src_backend_libpq_pqcomm.c +0 -659
  884. data/ext/pg_query/src_backend_parser_parse_expr.c +0 -313
  885. data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2230
  886. data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -370
  887. data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1086
  888. data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1832
  889. data/ext/pg_query/src_common_string.c +0 -86
  890. data/ext/pg_query/src_port_erand48.c +0 -127
  891. data/ext/pg_query/src_port_pgsleep.c +0 -69
  892. data/ext/pg_query/src_port_random.c +0 -31
  893. data/ext/pg_query/src_port_strnlen.c +0 -39
  894. /data/ext/pg_query/{pg_query_ruby.sym → ext_symbols.sym} +0 -0
  895. /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
- * - raw_expression_tree_walker
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-2020, PostgreSQL Global Development Group
14
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
15
15
  * Portions Copyright (c) 1994, Regents of the University of California
16
16
  *
17
17
  *
@@ -26,7 +26,6 @@
26
26
  #include "catalog/pg_type.h"
27
27
  #include "miscadmin.h"
28
28
  #include "nodes/execnodes.h"
29
- #include "nodes/makefuncs.h"
30
29
  #include "nodes/nodeFuncs.h"
31
30
  #include "nodes/pathnodes.h"
32
31
  #include "utils/builtins.h"
@@ -35,10 +34,12 @@
35
34
  static bool expression_returns_set_walker(Node *node, void *context);
36
35
  static int leftmostLoc(int loc1, int loc2);
37
36
  static bool fix_opfuncids_walker(Node *node, void *context);
38
- static bool planstate_walk_subplans(List *plans, bool (*walker) (),
37
+ static bool planstate_walk_subplans(List *plans,
38
+ planstate_tree_walker_callback walker,
39
39
  void *context);
40
40
  static bool planstate_walk_members(PlanState **planstates, int nplans,
41
- bool (*walker) (), void *context);
41
+ planstate_tree_walker_callback walker,
42
+ void *context);
42
43
 
43
44
 
44
45
  /*
@@ -219,6 +220,9 @@ exprLocation(const Node *expr)
219
220
  /* function name should always be the first thing */
220
221
  loc = ((const WindowFunc *) expr)->location;
221
222
  break;
223
+ case T_MergeSupportFunc:
224
+ loc = ((const MergeSupportFunc *) expr)->location;
225
+ break;
222
226
  case T_SubscriptingRef:
223
227
  /* just use container argument's location */
224
228
  loc = exprLocation((Node *) ((const SubscriptingRef *) expr)->refexpr);
@@ -372,6 +376,30 @@ exprLocation(const Node *expr)
372
376
  exprLocation((Node *) xexpr->args));
373
377
  }
374
378
  break;
379
+ case T_JsonFormat:
380
+ loc = ((const JsonFormat *) expr)->location;
381
+ break;
382
+ case T_JsonValueExpr:
383
+ loc = exprLocation((Node *) ((const JsonValueExpr *) expr)->raw_expr);
384
+ break;
385
+ case T_JsonConstructorExpr:
386
+ loc = ((const JsonConstructorExpr *) expr)->location;
387
+ break;
388
+ case T_JsonIsPredicate:
389
+ loc = ((const JsonIsPredicate *) expr)->location;
390
+ break;
391
+ case T_JsonExpr:
392
+ {
393
+ const JsonExpr *jsexpr = (const JsonExpr *) expr;
394
+
395
+ /* consider both function name and leftmost arg */
396
+ loc = leftmostLoc(jsexpr->location,
397
+ exprLocation(jsexpr->formatted_expr));
398
+ }
399
+ break;
400
+ case T_JsonBehavior:
401
+ loc = exprLocation(((JsonBehavior *) expr)->expr);
402
+ break;
375
403
  case T_NullTest:
376
404
  {
377
405
  const NullTest *nexpr = (const NullTest *) expr;
@@ -523,9 +551,37 @@ exprLocation(const Node *expr)
523
551
  case T_OnConflictClause:
524
552
  loc = ((const OnConflictClause *) expr)->location;
525
553
  break;
554
+ case T_CTESearchClause:
555
+ loc = ((const CTESearchClause *) expr)->location;
556
+ break;
557
+ case T_CTECycleClause:
558
+ loc = ((const CTECycleClause *) expr)->location;
559
+ break;
526
560
  case T_CommonTableExpr:
527
561
  loc = ((const CommonTableExpr *) expr)->location;
528
562
  break;
563
+ case T_JsonKeyValue:
564
+ /* just use the key's location */
565
+ loc = exprLocation((Node *) ((const JsonKeyValue *) expr)->key);
566
+ break;
567
+ case T_JsonObjectConstructor:
568
+ loc = ((const JsonObjectConstructor *) expr)->location;
569
+ break;
570
+ case T_JsonArrayConstructor:
571
+ loc = ((const JsonArrayConstructor *) expr)->location;
572
+ break;
573
+ case T_JsonArrayQueryConstructor:
574
+ loc = ((const JsonArrayQueryConstructor *) expr)->location;
575
+ break;
576
+ case T_JsonAggConstructor:
577
+ loc = ((const JsonAggConstructor *) expr)->location;
578
+ break;
579
+ case T_JsonObjectAgg:
580
+ loc = exprLocation((Node *) ((const JsonObjectAgg *) expr)->constructor);
581
+ break;
582
+ case T_JsonArrayAgg:
583
+ loc = exprLocation((Node *) ((const JsonArrayAgg *) expr)->constructor);
584
+ break;
529
585
  case T_PlaceHolderVar:
530
586
  /* just use argument's location */
531
587
  loc = exprLocation((Node *) ((const PlaceHolderVar *) expr)->phexpr);
@@ -715,7 +771,9 @@ leftmostLoc(int loc1, int loc2)
715
771
  * uses, but may need to be revisited in future.
716
772
  */
717
773
 
718
-
774
+ #define WALK(n) walker((Node *) (n), context)
775
+ #define LIST_WALK(l) expression_tree_walker_impl((Node *) (l), walker, context)
776
+ #undef LIST_WALK
719
777
 
720
778
  /*
721
779
  * query_tree_walker --- initiate a walk of a Query's expressions
@@ -812,10 +870,6 @@ leftmostLoc(int loc1, int loc2)
812
870
  #define FLATCOPY(newnode, node, nodetype) \
813
871
  ( (newnode) = (nodetype *) palloc(sizeof(nodetype)), \
814
872
  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
873
  #define MUTATE(newfield, oldfield, fieldtype) \
820
874
  ( (newfield) = (fieldtype) mutator((Node *) (oldfield), context) )
821
875
 
@@ -835,9 +889,9 @@ leftmostLoc(int loc1, int loc2)
835
889
  * which is the bitwise OR of flag values to suppress mutating of
836
890
  * indicated items. (More flag bits may be added as needed.)
837
891
  *
838
- * Normally the Query node itself is copied, but some callers want it to be
839
- * modified in-place; they must pass QTW_DONT_COPY_QUERY in flags. All
840
- * modified substructure is safely copied in any case.
892
+ * Normally the top-level Query node itself is copied, but some callers want
893
+ * it to be modified in-place; they must pass QTW_DONT_COPY_QUERY in flags.
894
+ * All modified substructure is safely copied in any case.
841
895
  */
842
896
 
843
897
 
@@ -880,14 +934,14 @@ leftmostLoc(int loc1, int loc2)
880
934
  * boundaries: we descend to everything that's possibly interesting.
881
935
  *
882
936
  * Currently, the node type coverage here extends only to DML statements
883
- * (SELECT/INSERT/UPDATE/DELETE) and nodes that can appear in them, because
884
- * this is used mainly during analysis of CTEs, and only DML statements can
885
- * appear in CTEs.
937
+ * (SELECT/INSERT/UPDATE/DELETE/MERGE) and nodes that can appear in them,
938
+ * because this is used mainly during analysis of CTEs, and only DML
939
+ * statements can appear in CTEs.
886
940
  */
887
941
  bool
888
- raw_expression_tree_walker(Node *node,
889
- bool (*walker) (),
890
- void *context)
942
+ raw_expression_tree_walker_impl(Node *node,
943
+ tree_walker_callback walker,
944
+ void *context)
891
945
  {
892
946
  ListCell *temp;
893
947
 
@@ -903,34 +957,36 @@ raw_expression_tree_walker(Node *node,
903
957
 
904
958
  switch (nodeTag(node))
905
959
  {
960
+ case T_JsonFormat:
906
961
  case T_SetToDefault:
907
962
  case T_CurrentOfExpr:
908
963
  case T_SQLValueFunction:
909
964
  case T_Integer:
910
965
  case T_Float:
966
+ case T_Boolean:
911
967
  case T_String:
912
968
  case T_BitString:
913
- case T_Null:
914
969
  case T_ParamRef:
915
970
  case T_A_Const:
916
971
  case T_A_Star:
972
+ case T_MergeSupportFunc:
917
973
  /* primitive node types with no subnodes */
918
974
  break;
919
975
  case T_Alias:
920
976
  /* we assume the colnames list isn't interesting */
921
977
  break;
922
978
  case T_RangeVar:
923
- return walker(((RangeVar *) node)->alias, context);
979
+ return WALK(((RangeVar *) node)->alias);
924
980
  case T_GroupingFunc:
925
- return walker(((GroupingFunc *) node)->args, context);
981
+ return WALK(((GroupingFunc *) node)->args);
926
982
  case T_SubLink:
927
983
  {
928
984
  SubLink *sublink = (SubLink *) node;
929
985
 
930
- if (walker(sublink->testexpr, context))
986
+ if (WALK(sublink->testexpr))
931
987
  return true;
932
988
  /* we assume the operName is not interesting */
933
- if (walker(sublink->subselect, context))
989
+ if (WALK(sublink->subselect))
934
990
  return true;
935
991
  }
936
992
  break;
@@ -938,55 +994,175 @@ raw_expression_tree_walker(Node *node,
938
994
  {
939
995
  CaseExpr *caseexpr = (CaseExpr *) node;
940
996
 
941
- if (walker(caseexpr->arg, context))
997
+ if (WALK(caseexpr->arg))
942
998
  return true;
943
999
  /* we assume walker doesn't care about CaseWhens, either */
944
1000
  foreach(temp, caseexpr->args)
945
1001
  {
946
1002
  CaseWhen *when = lfirst_node(CaseWhen, temp);
947
1003
 
948
- if (walker(when->expr, context))
1004
+ if (WALK(when->expr))
949
1005
  return true;
950
- if (walker(when->result, context))
1006
+ if (WALK(when->result))
951
1007
  return true;
952
1008
  }
953
- if (walker(caseexpr->defresult, context))
1009
+ if (WALK(caseexpr->defresult))
954
1010
  return true;
955
1011
  }
956
1012
  break;
957
1013
  case T_RowExpr:
958
1014
  /* Assume colnames isn't interesting */
959
- return walker(((RowExpr *) node)->args, context);
1015
+ return WALK(((RowExpr *) node)->args);
960
1016
  case T_CoalesceExpr:
961
- return walker(((CoalesceExpr *) node)->args, context);
1017
+ return WALK(((CoalesceExpr *) node)->args);
962
1018
  case T_MinMaxExpr:
963
- return walker(((MinMaxExpr *) node)->args, context);
1019
+ return WALK(((MinMaxExpr *) node)->args);
964
1020
  case T_XmlExpr:
965
1021
  {
966
1022
  XmlExpr *xexpr = (XmlExpr *) node;
967
1023
 
968
- if (walker(xexpr->named_args, context))
1024
+ if (WALK(xexpr->named_args))
969
1025
  return true;
970
1026
  /* we assume walker doesn't care about arg_names */
971
- if (walker(xexpr->args, context))
1027
+ if (WALK(xexpr->args))
1028
+ return true;
1029
+ }
1030
+ break;
1031
+ case T_JsonReturning:
1032
+ return WALK(((JsonReturning *) node)->format);
1033
+ case T_JsonValueExpr:
1034
+ {
1035
+ JsonValueExpr *jve = (JsonValueExpr *) node;
1036
+
1037
+ if (WALK(jve->raw_expr))
1038
+ return true;
1039
+ if (WALK(jve->formatted_expr))
1040
+ return true;
1041
+ if (WALK(jve->format))
1042
+ return true;
1043
+ }
1044
+ break;
1045
+ case T_JsonParseExpr:
1046
+ {
1047
+ JsonParseExpr *jpe = (JsonParseExpr *) node;
1048
+
1049
+ if (WALK(jpe->expr))
1050
+ return true;
1051
+ if (WALK(jpe->output))
1052
+ return true;
1053
+ }
1054
+ break;
1055
+ case T_JsonScalarExpr:
1056
+ {
1057
+ JsonScalarExpr *jse = (JsonScalarExpr *) node;
1058
+
1059
+ if (WALK(jse->expr))
1060
+ return true;
1061
+ if (WALK(jse->output))
972
1062
  return true;
973
1063
  }
974
1064
  break;
1065
+ case T_JsonSerializeExpr:
1066
+ {
1067
+ JsonSerializeExpr *jse = (JsonSerializeExpr *) node;
1068
+
1069
+ if (WALK(jse->expr))
1070
+ return true;
1071
+ if (WALK(jse->output))
1072
+ return true;
1073
+ }
1074
+ break;
1075
+ case T_JsonConstructorExpr:
1076
+ {
1077
+ JsonConstructorExpr *ctor = (JsonConstructorExpr *) node;
1078
+
1079
+ if (WALK(ctor->args))
1080
+ return true;
1081
+ if (WALK(ctor->func))
1082
+ return true;
1083
+ if (WALK(ctor->coercion))
1084
+ return true;
1085
+ if (WALK(ctor->returning))
1086
+ return true;
1087
+ }
1088
+ break;
1089
+ case T_JsonIsPredicate:
1090
+ return WALK(((JsonIsPredicate *) node)->expr);
1091
+ case T_JsonArgument:
1092
+ return WALK(((JsonArgument *) node)->val);
1093
+ case T_JsonFuncExpr:
1094
+ {
1095
+ JsonFuncExpr *jfe = (JsonFuncExpr *) node;
1096
+
1097
+ if (WALK(jfe->context_item))
1098
+ return true;
1099
+ if (WALK(jfe->pathspec))
1100
+ return true;
1101
+ if (WALK(jfe->passing))
1102
+ return true;
1103
+ if (WALK(jfe->output))
1104
+ return true;
1105
+ if (WALK(jfe->on_empty))
1106
+ return true;
1107
+ if (WALK(jfe->on_error))
1108
+ return true;
1109
+ }
1110
+ break;
1111
+ case T_JsonBehavior:
1112
+ {
1113
+ JsonBehavior *jb = (JsonBehavior *) node;
1114
+
1115
+ if (WALK(jb->expr))
1116
+ return true;
1117
+ }
1118
+ break;
1119
+ case T_JsonTable:
1120
+ {
1121
+ JsonTable *jt = (JsonTable *) node;
1122
+
1123
+ if (WALK(jt->context_item))
1124
+ return true;
1125
+ if (WALK(jt->pathspec))
1126
+ return true;
1127
+ if (WALK(jt->passing))
1128
+ return true;
1129
+ if (WALK(jt->columns))
1130
+ return true;
1131
+ if (WALK(jt->on_error))
1132
+ return true;
1133
+ }
1134
+ break;
1135
+ case T_JsonTableColumn:
1136
+ {
1137
+ JsonTableColumn *jtc = (JsonTableColumn *) node;
1138
+
1139
+ if (WALK(jtc->typeName))
1140
+ return true;
1141
+ if (WALK(jtc->on_empty))
1142
+ return true;
1143
+ if (WALK(jtc->on_error))
1144
+ return true;
1145
+ if (WALK(jtc->columns))
1146
+ return true;
1147
+ }
1148
+ break;
1149
+ case T_JsonTablePathSpec:
1150
+ return WALK(((JsonTablePathSpec *) node)->string);
975
1151
  case T_NullTest:
976
- return walker(((NullTest *) node)->arg, context);
1152
+ return WALK(((NullTest *) node)->arg);
977
1153
  case T_BooleanTest:
978
- return walker(((BooleanTest *) node)->arg, context);
1154
+ return WALK(((BooleanTest *) node)->arg);
979
1155
  case T_JoinExpr:
980
1156
  {
981
1157
  JoinExpr *join = (JoinExpr *) node;
982
1158
 
983
- if (walker(join->larg, context))
1159
+ if (WALK(join->larg))
984
1160
  return true;
985
- if (walker(join->rarg, context))
1161
+ if (WALK(join->rarg))
986
1162
  return true;
987
- if (walker(join->quals, context))
1163
+ if (WALK(join->quals))
988
1164
  return true;
989
- if (walker(join->alias, context))
1165
+ if (WALK(join->alias))
990
1166
  return true;
991
1167
  /* using list is deemed uninteresting */
992
1168
  }
@@ -995,18 +1171,18 @@ raw_expression_tree_walker(Node *node,
995
1171
  {
996
1172
  IntoClause *into = (IntoClause *) node;
997
1173
 
998
- if (walker(into->rel, context))
1174
+ if (WALK(into->rel))
999
1175
  return true;
1000
1176
  /* colNames, options are deemed uninteresting */
1001
1177
  /* viewQuery should be null in raw parsetree, but check it */
1002
- if (walker(into->viewQuery, context))
1178
+ if (WALK(into->viewQuery))
1003
1179
  return true;
1004
1180
  }
1005
1181
  break;
1006
1182
  case T_List:
1007
1183
  foreach(temp, (List *) node)
1008
1184
  {
1009
- if (walker((Node *) lfirst(temp), context))
1185
+ if (WALK((Node *) lfirst(temp)))
1010
1186
  return true;
1011
1187
  }
1012
1188
  break;
@@ -1014,17 +1190,17 @@ raw_expression_tree_walker(Node *node,
1014
1190
  {
1015
1191
  InsertStmt *stmt = (InsertStmt *) node;
1016
1192
 
1017
- if (walker(stmt->relation, context))
1193
+ if (WALK(stmt->relation))
1018
1194
  return true;
1019
- if (walker(stmt->cols, context))
1195
+ if (WALK(stmt->cols))
1020
1196
  return true;
1021
- if (walker(stmt->selectStmt, context))
1197
+ if (WALK(stmt->selectStmt))
1022
1198
  return true;
1023
- if (walker(stmt->onConflictClause, context))
1199
+ if (WALK(stmt->onConflictClause))
1024
1200
  return true;
1025
- if (walker(stmt->returningList, context))
1201
+ if (WALK(stmt->returningList))
1026
1202
  return true;
1027
- if (walker(stmt->withClause, context))
1203
+ if (WALK(stmt->withClause))
1028
1204
  return true;
1029
1205
  }
1030
1206
  break;
@@ -1032,15 +1208,15 @@ raw_expression_tree_walker(Node *node,
1032
1208
  {
1033
1209
  DeleteStmt *stmt = (DeleteStmt *) node;
1034
1210
 
1035
- if (walker(stmt->relation, context))
1211
+ if (WALK(stmt->relation))
1036
1212
  return true;
1037
- if (walker(stmt->usingClause, context))
1213
+ if (WALK(stmt->usingClause))
1038
1214
  return true;
1039
- if (walker(stmt->whereClause, context))
1215
+ if (WALK(stmt->whereClause))
1040
1216
  return true;
1041
- if (walker(stmt->returningList, context))
1217
+ if (WALK(stmt->returningList))
1042
1218
  return true;
1043
- if (walker(stmt->withClause, context))
1219
+ if (WALK(stmt->withClause))
1044
1220
  return true;
1045
1221
  }
1046
1222
  break;
@@ -1048,17 +1224,47 @@ raw_expression_tree_walker(Node *node,
1048
1224
  {
1049
1225
  UpdateStmt *stmt = (UpdateStmt *) node;
1050
1226
 
1051
- if (walker(stmt->relation, context))
1227
+ if (WALK(stmt->relation))
1228
+ return true;
1229
+ if (WALK(stmt->targetList))
1230
+ return true;
1231
+ if (WALK(stmt->whereClause))
1232
+ return true;
1233
+ if (WALK(stmt->fromClause))
1234
+ return true;
1235
+ if (WALK(stmt->returningList))
1236
+ return true;
1237
+ if (WALK(stmt->withClause))
1238
+ return true;
1239
+ }
1240
+ break;
1241
+ case T_MergeStmt:
1242
+ {
1243
+ MergeStmt *stmt = (MergeStmt *) node;
1244
+
1245
+ if (WALK(stmt->relation))
1246
+ return true;
1247
+ if (WALK(stmt->sourceRelation))
1248
+ return true;
1249
+ if (WALK(stmt->joinCondition))
1052
1250
  return true;
1053
- if (walker(stmt->targetList, context))
1251
+ if (WALK(stmt->mergeWhenClauses))
1054
1252
  return true;
1055
- if (walker(stmt->whereClause, context))
1253
+ if (WALK(stmt->returningList))
1056
1254
  return true;
1057
- if (walker(stmt->fromClause, context))
1255
+ if (WALK(stmt->withClause))
1256
+ return true;
1257
+ }
1258
+ break;
1259
+ case T_MergeWhenClause:
1260
+ {
1261
+ MergeWhenClause *mergeWhenClause = (MergeWhenClause *) node;
1262
+
1263
+ if (WALK(mergeWhenClause->condition))
1058
1264
  return true;
1059
- if (walker(stmt->returningList, context))
1265
+ if (WALK(mergeWhenClause->targetList))
1060
1266
  return true;
1061
- if (walker(stmt->withClause, context))
1267
+ if (WALK(mergeWhenClause->values))
1062
1268
  return true;
1063
1269
  }
1064
1270
  break;
@@ -1066,37 +1272,47 @@ raw_expression_tree_walker(Node *node,
1066
1272
  {
1067
1273
  SelectStmt *stmt = (SelectStmt *) node;
1068
1274
 
1069
- if (walker(stmt->distinctClause, context))
1275
+ if (WALK(stmt->distinctClause))
1276
+ return true;
1277
+ if (WALK(stmt->intoClause))
1278
+ return true;
1279
+ if (WALK(stmt->targetList))
1070
1280
  return true;
1071
- if (walker(stmt->intoClause, context))
1281
+ if (WALK(stmt->fromClause))
1072
1282
  return true;
1073
- if (walker(stmt->targetList, context))
1283
+ if (WALK(stmt->whereClause))
1074
1284
  return true;
1075
- if (walker(stmt->fromClause, context))
1285
+ if (WALK(stmt->groupClause))
1076
1286
  return true;
1077
- if (walker(stmt->whereClause, context))
1287
+ if (WALK(stmt->havingClause))
1078
1288
  return true;
1079
- if (walker(stmt->groupClause, context))
1289
+ if (WALK(stmt->windowClause))
1080
1290
  return true;
1081
- if (walker(stmt->havingClause, context))
1291
+ if (WALK(stmt->valuesLists))
1082
1292
  return true;
1083
- if (walker(stmt->windowClause, context))
1293
+ if (WALK(stmt->sortClause))
1084
1294
  return true;
1085
- if (walker(stmt->valuesLists, context))
1295
+ if (WALK(stmt->limitOffset))
1086
1296
  return true;
1087
- if (walker(stmt->sortClause, context))
1297
+ if (WALK(stmt->limitCount))
1088
1298
  return true;
1089
- if (walker(stmt->limitOffset, context))
1299
+ if (WALK(stmt->lockingClause))
1090
1300
  return true;
1091
- if (walker(stmt->limitCount, context))
1301
+ if (WALK(stmt->withClause))
1092
1302
  return true;
1093
- if (walker(stmt->lockingClause, context))
1303
+ if (WALK(stmt->larg))
1094
1304
  return true;
1095
- if (walker(stmt->withClause, context))
1305
+ if (WALK(stmt->rarg))
1096
1306
  return true;
1097
- if (walker(stmt->larg, context))
1307
+ }
1308
+ break;
1309
+ case T_PLAssignStmt:
1310
+ {
1311
+ PLAssignStmt *stmt = (PLAssignStmt *) node;
1312
+
1313
+ if (WALK(stmt->indirection))
1098
1314
  return true;
1099
- if (walker(stmt->rarg, context))
1315
+ if (WALK(stmt->val))
1100
1316
  return true;
1101
1317
  }
1102
1318
  break;
@@ -1104,9 +1320,9 @@ raw_expression_tree_walker(Node *node,
1104
1320
  {
1105
1321
  A_Expr *expr = (A_Expr *) node;
1106
1322
 
1107
- if (walker(expr->lexpr, context))
1323
+ if (WALK(expr->lexpr))
1108
1324
  return true;
1109
- if (walker(expr->rexpr, context))
1325
+ if (WALK(expr->rexpr))
1110
1326
  return true;
1111
1327
  /* operator name is deemed uninteresting */
1112
1328
  }
@@ -1115,7 +1331,7 @@ raw_expression_tree_walker(Node *node,
1115
1331
  {
1116
1332
  BoolExpr *expr = (BoolExpr *) node;
1117
1333
 
1118
- if (walker(expr->args, context))
1334
+ if (WALK(expr->args))
1119
1335
  return true;
1120
1336
  }
1121
1337
  break;
@@ -1126,26 +1342,26 @@ raw_expression_tree_walker(Node *node,
1126
1342
  {
1127
1343
  FuncCall *fcall = (FuncCall *) node;
1128
1344
 
1129
- if (walker(fcall->args, context))
1345
+ if (WALK(fcall->args))
1130
1346
  return true;
1131
- if (walker(fcall->agg_order, context))
1347
+ if (WALK(fcall->agg_order))
1132
1348
  return true;
1133
- if (walker(fcall->agg_filter, context))
1349
+ if (WALK(fcall->agg_filter))
1134
1350
  return true;
1135
- if (walker(fcall->over, context))
1351
+ if (WALK(fcall->over))
1136
1352
  return true;
1137
1353
  /* function name is deemed uninteresting */
1138
1354
  }
1139
1355
  break;
1140
1356
  case T_NamedArgExpr:
1141
- return walker(((NamedArgExpr *) node)->arg, context);
1357
+ return WALK(((NamedArgExpr *) node)->arg);
1142
1358
  case T_A_Indices:
1143
1359
  {
1144
1360
  A_Indices *indices = (A_Indices *) node;
1145
1361
 
1146
- if (walker(indices->lidx, context))
1362
+ if (WALK(indices->lidx))
1147
1363
  return true;
1148
- if (walker(indices->uidx, context))
1364
+ if (WALK(indices->uidx))
1149
1365
  return true;
1150
1366
  }
1151
1367
  break;
@@ -1153,51 +1369,51 @@ raw_expression_tree_walker(Node *node,
1153
1369
  {
1154
1370
  A_Indirection *indir = (A_Indirection *) node;
1155
1371
 
1156
- if (walker(indir->arg, context))
1372
+ if (WALK(indir->arg))
1157
1373
  return true;
1158
- if (walker(indir->indirection, context))
1374
+ if (WALK(indir->indirection))
1159
1375
  return true;
1160
1376
  }
1161
1377
  break;
1162
1378
  case T_A_ArrayExpr:
1163
- return walker(((A_ArrayExpr *) node)->elements, context);
1379
+ return WALK(((A_ArrayExpr *) node)->elements);
1164
1380
  case T_ResTarget:
1165
1381
  {
1166
1382
  ResTarget *rt = (ResTarget *) node;
1167
1383
 
1168
- if (walker(rt->indirection, context))
1384
+ if (WALK(rt->indirection))
1169
1385
  return true;
1170
- if (walker(rt->val, context))
1386
+ if (WALK(rt->val))
1171
1387
  return true;
1172
1388
  }
1173
1389
  break;
1174
1390
  case T_MultiAssignRef:
1175
- return walker(((MultiAssignRef *) node)->source, context);
1391
+ return WALK(((MultiAssignRef *) node)->source);
1176
1392
  case T_TypeCast:
1177
1393
  {
1178
1394
  TypeCast *tc = (TypeCast *) node;
1179
1395
 
1180
- if (walker(tc->arg, context))
1396
+ if (WALK(tc->arg))
1181
1397
  return true;
1182
- if (walker(tc->typeName, context))
1398
+ if (WALK(tc->typeName))
1183
1399
  return true;
1184
1400
  }
1185
1401
  break;
1186
1402
  case T_CollateClause:
1187
- return walker(((CollateClause *) node)->arg, context);
1403
+ return WALK(((CollateClause *) node)->arg);
1188
1404
  case T_SortBy:
1189
- return walker(((SortBy *) node)->node, context);
1405
+ return WALK(((SortBy *) node)->node);
1190
1406
  case T_WindowDef:
1191
1407
  {
1192
1408
  WindowDef *wd = (WindowDef *) node;
1193
1409
 
1194
- if (walker(wd->partitionClause, context))
1410
+ if (WALK(wd->partitionClause))
1195
1411
  return true;
1196
- if (walker(wd->orderClause, context))
1412
+ if (WALK(wd->orderClause))
1197
1413
  return true;
1198
- if (walker(wd->startOffset, context))
1414
+ if (WALK(wd->startOffset))
1199
1415
  return true;
1200
- if (walker(wd->endOffset, context))
1416
+ if (WALK(wd->endOffset))
1201
1417
  return true;
1202
1418
  }
1203
1419
  break;
@@ -1205,9 +1421,9 @@ raw_expression_tree_walker(Node *node,
1205
1421
  {
1206
1422
  RangeSubselect *rs = (RangeSubselect *) node;
1207
1423
 
1208
- if (walker(rs->subquery, context))
1424
+ if (WALK(rs->subquery))
1209
1425
  return true;
1210
- if (walker(rs->alias, context))
1426
+ if (WALK(rs->alias))
1211
1427
  return true;
1212
1428
  }
1213
1429
  break;
@@ -1215,11 +1431,11 @@ raw_expression_tree_walker(Node *node,
1215
1431
  {
1216
1432
  RangeFunction *rf = (RangeFunction *) node;
1217
1433
 
1218
- if (walker(rf->functions, context))
1434
+ if (WALK(rf->functions))
1219
1435
  return true;
1220
- if (walker(rf->alias, context))
1436
+ if (WALK(rf->alias))
1221
1437
  return true;
1222
- if (walker(rf->coldeflist, context))
1438
+ if (WALK(rf->coldeflist))
1223
1439
  return true;
1224
1440
  }
1225
1441
  break;
@@ -1227,12 +1443,12 @@ raw_expression_tree_walker(Node *node,
1227
1443
  {
1228
1444
  RangeTableSample *rts = (RangeTableSample *) node;
1229
1445
 
1230
- if (walker(rts->relation, context))
1446
+ if (WALK(rts->relation))
1231
1447
  return true;
1232
1448
  /* method name is deemed uninteresting */
1233
- if (walker(rts->args, context))
1449
+ if (WALK(rts->args))
1234
1450
  return true;
1235
- if (walker(rts->repeatable, context))
1451
+ if (WALK(rts->repeatable))
1236
1452
  return true;
1237
1453
  }
1238
1454
  break;
@@ -1240,15 +1456,15 @@ raw_expression_tree_walker(Node *node,
1240
1456
  {
1241
1457
  RangeTableFunc *rtf = (RangeTableFunc *) node;
1242
1458
 
1243
- if (walker(rtf->docexpr, context))
1459
+ if (WALK(rtf->docexpr))
1244
1460
  return true;
1245
- if (walker(rtf->rowexpr, context))
1461
+ if (WALK(rtf->rowexpr))
1246
1462
  return true;
1247
- if (walker(rtf->namespaces, context))
1463
+ if (WALK(rtf->namespaces))
1248
1464
  return true;
1249
- if (walker(rtf->columns, context))
1465
+ if (WALK(rtf->columns))
1250
1466
  return true;
1251
- if (walker(rtf->alias, context))
1467
+ if (WALK(rtf->alias))
1252
1468
  return true;
1253
1469
  }
1254
1470
  break;
@@ -1256,9 +1472,9 @@ raw_expression_tree_walker(Node *node,
1256
1472
  {
1257
1473
  RangeTableFuncCol *rtfc = (RangeTableFuncCol *) node;
1258
1474
 
1259
- if (walker(rtfc->colexpr, context))
1475
+ if (WALK(rtfc->colexpr))
1260
1476
  return true;
1261
- if (walker(rtfc->coldefexpr, context))
1477
+ if (WALK(rtfc->coldefexpr))
1262
1478
  return true;
1263
1479
  }
1264
1480
  break;
@@ -1266,9 +1482,9 @@ raw_expression_tree_walker(Node *node,
1266
1482
  {
1267
1483
  TypeName *tn = (TypeName *) node;
1268
1484
 
1269
- if (walker(tn->typmods, context))
1485
+ if (WALK(tn->typmods))
1270
1486
  return true;
1271
- if (walker(tn->arrayBounds, context))
1487
+ if (WALK(tn->arrayBounds))
1272
1488
  return true;
1273
1489
  /* type name itself is deemed uninteresting */
1274
1490
  }
@@ -1277,11 +1493,11 @@ raw_expression_tree_walker(Node *node,
1277
1493
  {
1278
1494
  ColumnDef *coldef = (ColumnDef *) node;
1279
1495
 
1280
- if (walker(coldef->typeName, context))
1496
+ if (WALK(coldef->typeName))
1281
1497
  return true;
1282
- if (walker(coldef->raw_default, context))
1498
+ if (WALK(coldef->raw_default))
1283
1499
  return true;
1284
- if (walker(coldef->collClause, context))
1500
+ if (WALK(coldef->collClause))
1285
1501
  return true;
1286
1502
  /* for now, constraints are ignored */
1287
1503
  }
@@ -1290,34 +1506,34 @@ raw_expression_tree_walker(Node *node,
1290
1506
  {
1291
1507
  IndexElem *indelem = (IndexElem *) node;
1292
1508
 
1293
- if (walker(indelem->expr, context))
1509
+ if (WALK(indelem->expr))
1294
1510
  return true;
1295
1511
  /* collation and opclass names are deemed uninteresting */
1296
1512
  }
1297
1513
  break;
1298
1514
  case T_GroupingSet:
1299
- return walker(((GroupingSet *) node)->content, context);
1515
+ return WALK(((GroupingSet *) node)->content);
1300
1516
  case T_LockingClause:
1301
- return walker(((LockingClause *) node)->lockedRels, context);
1517
+ return WALK(((LockingClause *) node)->lockedRels);
1302
1518
  case T_XmlSerialize:
1303
1519
  {
1304
1520
  XmlSerialize *xs = (XmlSerialize *) node;
1305
1521
 
1306
- if (walker(xs->expr, context))
1522
+ if (WALK(xs->expr))
1307
1523
  return true;
1308
- if (walker(xs->typeName, context))
1524
+ if (WALK(xs->typeName))
1309
1525
  return true;
1310
1526
  }
1311
1527
  break;
1312
1528
  case T_WithClause:
1313
- return walker(((WithClause *) node)->ctes, context);
1529
+ return WALK(((WithClause *) node)->ctes);
1314
1530
  case T_InferClause:
1315
1531
  {
1316
1532
  InferClause *stmt = (InferClause *) node;
1317
1533
 
1318
- if (walker(stmt->indexElems, context))
1534
+ if (WALK(stmt->indexElems))
1319
1535
  return true;
1320
- if (walker(stmt->whereClause, context))
1536
+ if (WALK(stmt->whereClause))
1321
1537
  return true;
1322
1538
  }
1323
1539
  break;
@@ -1325,16 +1541,101 @@ raw_expression_tree_walker(Node *node,
1325
1541
  {
1326
1542
  OnConflictClause *stmt = (OnConflictClause *) node;
1327
1543
 
1328
- if (walker(stmt->infer, context))
1544
+ if (WALK(stmt->infer))
1329
1545
  return true;
1330
- if (walker(stmt->targetList, context))
1546
+ if (WALK(stmt->targetList))
1331
1547
  return true;
1332
- if (walker(stmt->whereClause, context))
1548
+ if (WALK(stmt->whereClause))
1333
1549
  return true;
1334
1550
  }
1335
1551
  break;
1336
1552
  case T_CommonTableExpr:
1337
- return walker(((CommonTableExpr *) node)->ctequery, context);
1553
+ /* search_clause and cycle_clause are not interesting here */
1554
+ return WALK(((CommonTableExpr *) node)->ctequery);
1555
+ case T_JsonOutput:
1556
+ {
1557
+ JsonOutput *out = (JsonOutput *) node;
1558
+
1559
+ if (WALK(out->typeName))
1560
+ return true;
1561
+ if (WALK(out->returning))
1562
+ return true;
1563
+ }
1564
+ break;
1565
+ case T_JsonKeyValue:
1566
+ {
1567
+ JsonKeyValue *jkv = (JsonKeyValue *) node;
1568
+
1569
+ if (WALK(jkv->key))
1570
+ return true;
1571
+ if (WALK(jkv->value))
1572
+ return true;
1573
+ }
1574
+ break;
1575
+ case T_JsonObjectConstructor:
1576
+ {
1577
+ JsonObjectConstructor *joc = (JsonObjectConstructor *) node;
1578
+
1579
+ if (WALK(joc->output))
1580
+ return true;
1581
+ if (WALK(joc->exprs))
1582
+ return true;
1583
+ }
1584
+ break;
1585
+ case T_JsonArrayConstructor:
1586
+ {
1587
+ JsonArrayConstructor *jac = (JsonArrayConstructor *) node;
1588
+
1589
+ if (WALK(jac->output))
1590
+ return true;
1591
+ if (WALK(jac->exprs))
1592
+ return true;
1593
+ }
1594
+ break;
1595
+ case T_JsonAggConstructor:
1596
+ {
1597
+ JsonAggConstructor *ctor = (JsonAggConstructor *) node;
1598
+
1599
+ if (WALK(ctor->output))
1600
+ return true;
1601
+ if (WALK(ctor->agg_order))
1602
+ return true;
1603
+ if (WALK(ctor->agg_filter))
1604
+ return true;
1605
+ if (WALK(ctor->over))
1606
+ return true;
1607
+ }
1608
+ break;
1609
+ case T_JsonObjectAgg:
1610
+ {
1611
+ JsonObjectAgg *joa = (JsonObjectAgg *) node;
1612
+
1613
+ if (WALK(joa->constructor))
1614
+ return true;
1615
+ if (WALK(joa->arg))
1616
+ return true;
1617
+ }
1618
+ break;
1619
+ case T_JsonArrayAgg:
1620
+ {
1621
+ JsonArrayAgg *jaa = (JsonArrayAgg *) node;
1622
+
1623
+ if (WALK(jaa->constructor))
1624
+ return true;
1625
+ if (WALK(jaa->arg))
1626
+ return true;
1627
+ }
1628
+ break;
1629
+ case T_JsonArrayQueryConstructor:
1630
+ {
1631
+ JsonArrayQueryConstructor *jaqc = (JsonArrayQueryConstructor *) node;
1632
+
1633
+ if (WALK(jaqc->output))
1634
+ return true;
1635
+ if (WALK(jaqc->query))
1636
+ return true;
1637
+ }
1638
+ break;
1338
1639
  default:
1339
1640
  elog(ERROR, "unrecognized node type: %d",
1340
1641
  (int) nodeTag(node));
@@ -1349,7 +1650,7 @@ raw_expression_tree_walker(Node *node,
1349
1650
  * The walker has already visited the current node, and so we need only
1350
1651
  * recurse into any sub-nodes it has.
1351
1652
  */
1352
-
1653
+ #define PSWALK(n) walker(n, context)
1353
1654
 
1354
1655
  /*
1355
1656
  * Walk a list of SubPlans (or initPlans, which also use SubPlan nodes).