pg_query 4.2.1 → 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.
Files changed (531) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +31 -0
  3. data/README.md +6 -8
  4. data/Rakefile +5 -6
  5. data/ext/pg_query/extconf.rb +14 -4
  6. data/ext/pg_query/include/pg_query.h +27 -3
  7. data/ext/pg_query/include/pg_query_enum_defs.c +311 -149
  8. data/ext/pg_query/include/pg_query_fingerprint_conds.c +545 -489
  9. data/ext/pg_query/include/pg_query_fingerprint_defs.c +5092 -4432
  10. data/ext/pg_query/include/pg_query_outfuncs_conds.c +385 -343
  11. data/ext/pg_query/include/pg_query_outfuncs_defs.c +1294 -1161
  12. data/ext/pg_query/include/pg_query_readfuncs_conds.c +137 -123
  13. data/ext/pg_query/include/pg_query_readfuncs_defs.c +1657 -1496
  14. data/ext/pg_query/include/{access → postgres/access}/amapi.h +3 -1
  15. data/ext/pg_query/include/{access → postgres/access}/attmap.h +5 -3
  16. data/ext/pg_query/include/{access → postgres/access}/attnum.h +1 -1
  17. data/ext/pg_query/include/{access → postgres/access}/clog.h +1 -1
  18. data/ext/pg_query/include/{access → postgres/access}/commit_ts.h +1 -1
  19. data/ext/pg_query/include/{access → postgres/access}/detoast.h +1 -1
  20. data/ext/pg_query/include/{access → postgres/access}/genam.h +7 -5
  21. data/ext/pg_query/include/{access → postgres/access}/gin.h +16 -3
  22. data/ext/pg_query/include/{access → postgres/access}/htup.h +1 -1
  23. data/ext/pg_query/include/{access → postgres/access}/htup_details.h +6 -2
  24. data/ext/pg_query/include/{access → postgres/access}/itup.h +61 -58
  25. data/ext/pg_query/include/{access → postgres/access}/parallel.h +2 -2
  26. data/ext/pg_query/include/{access → postgres/access}/printtup.h +1 -1
  27. data/ext/pg_query/include/{access → postgres/access}/relation.h +1 -1
  28. data/ext/pg_query/include/{access → postgres/access}/relscan.h +1 -1
  29. data/ext/pg_query/include/{access → postgres/access}/rmgrlist.h +2 -2
  30. data/ext/pg_query/include/{access → postgres/access}/sdir.h +12 -3
  31. data/ext/pg_query/include/{access → postgres/access}/skey.h +1 -1
  32. data/ext/pg_query/include/{access → postgres/access}/stratnum.h +1 -1
  33. data/ext/pg_query/include/{access → postgres/access}/sysattr.h +1 -1
  34. data/ext/pg_query/include/{access → postgres/access}/table.h +1 -1
  35. data/ext/pg_query/include/{access → postgres/access}/tableam.h +68 -45
  36. data/ext/pg_query/include/{access → postgres/access}/toast_compression.h +1 -1
  37. data/ext/pg_query/include/{access → postgres/access}/transam.h +1 -1
  38. data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
  39. data/ext/pg_query/include/{access → postgres/access}/tupconvert.h +5 -2
  40. data/ext/pg_query/include/{access → postgres/access}/tupdesc.h +2 -2
  41. data/ext/pg_query/include/{access → postgres/access}/tupmacs.h +58 -98
  42. data/ext/pg_query/include/{access → postgres/access}/twophase.h +2 -2
  43. data/ext/pg_query/include/{access → postgres/access}/xact.h +25 -18
  44. data/ext/pg_query/include/{access → postgres/access}/xlog.h +15 -16
  45. data/ext/pg_query/include/{access → postgres/access}/xlog_internal.h +100 -62
  46. data/ext/pg_query/include/postgres/access/xlogbackup.h +41 -0
  47. data/ext/pg_query/include/{access → postgres/access}/xlogdefs.h +6 -25
  48. data/ext/pg_query/include/{access → postgres/access}/xlogprefetcher.h +1 -1
  49. data/ext/pg_query/include/{access → postgres/access}/xlogreader.h +7 -6
  50. data/ext/pg_query/include/{access → postgres/access}/xlogrecord.h +17 -5
  51. data/ext/pg_query/include/{access → postgres/access}/xlogrecovery.h +4 -3
  52. data/ext/pg_query/include/postgres/archive/archive_module.h +59 -0
  53. data/ext/pg_query/include/{c.h → postgres/c.h} +144 -156
  54. data/ext/pg_query/include/{catalog → postgres/catalog}/catalog.h +4 -3
  55. data/ext/pg_query/include/{catalog → postgres/catalog}/catversion.h +6 -2
  56. data/ext/pg_query/include/{catalog → postgres/catalog}/dependency.h +5 -4
  57. data/ext/pg_query/include/{catalog → postgres/catalog}/genbki.h +7 -6
  58. data/ext/pg_query/include/{catalog → postgres/catalog}/index.h +4 -4
  59. data/ext/pg_query/include/{catalog → postgres/catalog}/indexing.h +1 -1
  60. data/ext/pg_query/include/{catalog → postgres/catalog}/namespace.h +2 -2
  61. data/ext/pg_query/include/{catalog → postgres/catalog}/objectaccess.h +10 -8
  62. data/ext/pg_query/include/{catalog → postgres/catalog}/objectaddress.h +3 -3
  63. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate.h +1 -1
  64. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate_d.h +1 -1
  65. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am.h +1 -1
  66. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am_d.h +1 -1
  67. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute.h +19 -17
  68. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute_d.h +19 -19
  69. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid.h +1 -1
  70. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid_d.h +3 -1
  71. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class.h +1 -1
  72. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class_d.h +1 -1
  73. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation.h +3 -1
  74. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation_d.h +4 -3
  75. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint.h +2 -2
  76. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint_d.h +1 -1
  77. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_control.h +9 -1
  78. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion.h +2 -2
  79. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion_d.h +1 -1
  80. data/ext/pg_query/include/postgres/catalog/pg_database.h +124 -0
  81. data/ext/pg_query/include/postgres/catalog/pg_database_d.h +52 -0
  82. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend.h +1 -1
  83. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend_d.h +1 -1
  84. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger.h +1 -1
  85. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger_d.h +1 -1
  86. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index.h +1 -1
  87. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index_d.h +1 -1
  88. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language.h +1 -1
  89. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language_d.h +1 -1
  90. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace.h +1 -1
  91. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace_d.h +1 -1
  92. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass.h +1 -1
  93. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass_d.h +1 -1
  94. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator.h +1 -1
  95. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator_d.h +1 -1
  96. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily.h +3 -2
  97. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily_d.h +4 -2
  98. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table.h +1 -1
  99. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table_d.h +1 -1
  100. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc.h +1 -1
  101. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc_d.h +1 -1
  102. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication.h +2 -5
  103. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication_d.h +1 -1
  104. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin.h +1 -1
  105. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin_d.h +1 -1
  106. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic.h +1 -1
  107. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_d.h +1 -1
  108. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext.h +1 -1
  109. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext_d.h +1 -1
  110. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform.h +1 -1
  111. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform_d.h +1 -1
  112. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger.h +1 -1
  113. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger_d.h +1 -1
  114. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config.h +1 -1
  115. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config_d.h +1 -1
  116. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict.h +1 -1
  117. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict_d.h +1 -1
  118. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser.h +1 -1
  119. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser_d.h +1 -1
  120. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template.h +1 -1
  121. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template_d.h +1 -1
  122. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type.h +1 -1
  123. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type_d.h +1 -1
  124. data/ext/pg_query/include/{catalog → postgres/catalog}/storage.h +6 -6
  125. data/ext/pg_query/include/{commands → postgres/commands}/async.h +1 -1
  126. data/ext/pg_query/include/{commands → postgres/commands}/dbcommands.h +2 -1
  127. data/ext/pg_query/include/{commands → postgres/commands}/defrem.h +2 -1
  128. data/ext/pg_query/include/{commands → postgres/commands}/event_trigger.h +1 -1
  129. data/ext/pg_query/include/{commands → postgres/commands}/explain.h +3 -1
  130. data/ext/pg_query/include/{commands → postgres/commands}/prepare.h +1 -1
  131. data/ext/pg_query/include/{commands → postgres/commands}/tablespace.h +4 -4
  132. data/ext/pg_query/include/{commands → postgres/commands}/trigger.h +15 -14
  133. data/ext/pg_query/include/{commands → postgres/commands}/user.h +9 -3
  134. data/ext/pg_query/include/{commands → postgres/commands}/vacuum.h +60 -14
  135. data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
  136. data/ext/pg_query/include/{common → postgres/common}/file_perm.h +1 -1
  137. data/ext/pg_query/include/{common → postgres/common}/hashfn.h +1 -1
  138. data/ext/pg_query/include/postgres/common/int.h +437 -0
  139. data/ext/pg_query/include/{common → postgres/common}/keywords.h +1 -1
  140. data/ext/pg_query/include/{common → postgres/common}/kwlookup.h +2 -2
  141. data/ext/pg_query/include/{common → postgres/common}/pg_prng.h +3 -2
  142. data/ext/pg_query/include/{common → postgres/common}/relpath.h +20 -13
  143. data/ext/pg_query/include/postgres/common/scram-common.h +70 -0
  144. data/ext/pg_query/include/postgres/common/sha2.h +32 -0
  145. data/ext/pg_query/include/{common → postgres/common}/string.h +5 -3
  146. data/ext/pg_query/include/{common → postgres/common}/unicode_east_asian_fw_table.h +10 -10
  147. data/ext/pg_query/include/{common/unicode_combining_table.h → postgres/common/unicode_nonspacing_table.h} +31 -13
  148. data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5013 -0
  149. data/ext/pg_query/include/postgres/copyfuncs.switch.c +938 -0
  150. data/ext/pg_query/include/{datatype → postgres/datatype}/timestamp.h +11 -4
  151. data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3097 -0
  152. data/ext/pg_query/include/postgres/equalfuncs.switch.c +785 -0
  153. data/ext/pg_query/include/{executor → postgres/executor}/execdesc.h +1 -1
  154. data/ext/pg_query/include/{executor → postgres/executor}/executor.h +34 -17
  155. data/ext/pg_query/include/{executor → postgres/executor}/functions.h +1 -1
  156. data/ext/pg_query/include/{executor → postgres/executor}/instrument.h +1 -1
  157. data/ext/pg_query/include/{executor → postgres/executor}/spi.h +2 -2
  158. data/ext/pg_query/include/{executor → postgres/executor}/tablefunc.h +1 -1
  159. data/ext/pg_query/include/{executor → postgres/executor}/tuptable.h +18 -11
  160. data/ext/pg_query/include/{fmgr.h → postgres/fmgr.h} +21 -2
  161. data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
  162. data/ext/pg_query/include/{funcapi.h → postgres/funcapi.h} +12 -12
  163. data/ext/pg_query/include/postgres/gram.h +1127 -0
  164. data/ext/pg_query/include/{parser → postgres}/gramparse.h +4 -4
  165. data/ext/pg_query/include/{jit → postgres/jit}/jit.h +2 -2
  166. data/ext/pg_query/include/postgres/kwlist_d.h +1119 -0
  167. data/ext/pg_query/include/{lib → postgres/lib}/dshash.h +4 -1
  168. data/ext/pg_query/include/{lib → postgres/lib}/ilist.h +435 -22
  169. data/ext/pg_query/include/{lib → postgres/lib}/pairingheap.h +1 -1
  170. data/ext/pg_query/include/{lib → postgres/lib}/simplehash.h +9 -9
  171. data/ext/pg_query/include/{lib → postgres/lib}/sort_template.h +1 -1
  172. data/ext/pg_query/include/{lib → postgres/lib}/stringinfo.h +3 -3
  173. data/ext/pg_query/include/{libpq → postgres/libpq}/auth.h +8 -2
  174. data/ext/pg_query/include/{libpq → postgres/libpq}/crypt.h +1 -1
  175. data/ext/pg_query/include/{libpq → postgres/libpq}/hba.h +24 -17
  176. data/ext/pg_query/include/{libpq → postgres/libpq}/libpq-be.h +36 -25
  177. data/ext/pg_query/include/{libpq → postgres/libpq}/libpq.h +1 -1
  178. data/ext/pg_query/include/{libpq → postgres/libpq}/pqcomm.h +10 -41
  179. data/ext/pg_query/include/{libpq → postgres/libpq}/pqformat.h +2 -2
  180. data/ext/pg_query/include/{libpq → postgres/libpq}/pqsignal.h +22 -10
  181. data/ext/pg_query/include/postgres/libpq/sasl.h +136 -0
  182. data/ext/pg_query/include/postgres/libpq/scram.h +37 -0
  183. data/ext/pg_query/include/{mb → postgres/mb}/pg_wchar.h +35 -18
  184. data/ext/pg_query/include/{mb → postgres/mb}/stringinfo_mb.h +1 -1
  185. data/ext/pg_query/include/{miscadmin.h → postgres/miscadmin.h} +27 -15
  186. data/ext/pg_query/include/{nodes → postgres/nodes}/bitmapset.h +11 -7
  187. data/ext/pg_query/include/{nodes → postgres/nodes}/execnodes.h +83 -30
  188. data/ext/pg_query/include/{nodes → postgres/nodes}/extensible.h +5 -3
  189. data/ext/pg_query/include/{nodes → postgres/nodes}/lockoptions.h +1 -1
  190. data/ext/pg_query/include/{nodes → postgres/nodes}/makefuncs.h +14 -2
  191. data/ext/pg_query/include/{nodes → postgres/nodes}/memnodes.h +7 -4
  192. data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
  193. data/ext/pg_query/include/{nodes → postgres/nodes}/nodeFuncs.h +89 -29
  194. data/ext/pg_query/include/{nodes → postgres/nodes}/nodes.h +96 -511
  195. data/ext/pg_query/include/postgres/nodes/nodetags.h +471 -0
  196. data/ext/pg_query/include/{nodes → postgres/nodes}/params.h +3 -3
  197. data/ext/pg_query/include/{nodes → postgres/nodes}/parsenodes.h +377 -139
  198. data/ext/pg_query/include/{nodes → postgres/nodes}/pathnodes.h +1090 -440
  199. data/ext/pg_query/include/{nodes → postgres/nodes}/pg_list.h +30 -7
  200. data/ext/pg_query/include/{nodes → postgres/nodes}/plannodes.h +367 -124
  201. data/ext/pg_query/include/{nodes → postgres/nodes}/primnodes.h +670 -222
  202. data/ext/pg_query/include/{nodes → postgres/nodes}/print.h +1 -1
  203. data/ext/pg_query/include/{utils → postgres/nodes}/queryjumble.h +5 -7
  204. data/ext/pg_query/include/postgres/nodes/replnodes.h +111 -0
  205. data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
  206. data/ext/pg_query/include/{nodes → postgres/nodes}/tidbitmap.h +1 -1
  207. data/ext/pg_query/include/{nodes → postgres/nodes}/value.h +12 -2
  208. data/ext/pg_query/include/{optimizer → postgres/optimizer}/cost.h +6 -4
  209. data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo.h +1 -1
  210. data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo_gene.h +1 -1
  211. data/ext/pg_query/include/{optimizer → postgres/optimizer}/optimizer.h +8 -8
  212. data/ext/pg_query/include/{optimizer → postgres/optimizer}/paths.h +16 -7
  213. data/ext/pg_query/include/{optimizer → postgres/optimizer}/planmain.h +3 -6
  214. data/ext/pg_query/include/{parser → postgres/parser}/analyze.h +4 -3
  215. data/ext/pg_query/include/{parser → postgres/parser}/kwlist.h +12 -1
  216. data/ext/pg_query/include/{parser → postgres/parser}/parse_agg.h +4 -2
  217. data/ext/pg_query/include/{parser → postgres/parser}/parse_coerce.h +3 -1
  218. data/ext/pg_query/include/{parser → postgres/parser}/parse_expr.h +1 -1
  219. data/ext/pg_query/include/{parser → postgres/parser}/parse_func.h +1 -1
  220. data/ext/pg_query/include/{parser → postgres/parser}/parse_node.h +22 -4
  221. data/ext/pg_query/include/{parser → postgres/parser}/parse_oper.h +3 -3
  222. data/ext/pg_query/include/{parser → postgres/parser}/parse_relation.h +8 -3
  223. data/ext/pg_query/include/{parser → postgres/parser}/parse_type.h +4 -3
  224. data/ext/pg_query/include/{parser → postgres/parser}/parser.h +4 -4
  225. data/ext/pg_query/include/{parser → postgres/parser}/parsetree.h +1 -1
  226. data/ext/pg_query/include/{parser → postgres/parser}/scanner.h +2 -2
  227. data/ext/pg_query/include/{parser → postgres/parser}/scansup.h +1 -1
  228. data/ext/pg_query/include/{partitioning → postgres/partitioning}/partdefs.h +1 -1
  229. data/ext/pg_query/include/{pg_config.h → postgres/pg_config.h} +158 -218
  230. data/ext/pg_query/include/{pg_config_manual.h → postgres/pg_config_manual.h} +8 -46
  231. data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
  232. data/ext/pg_query/include/{pg_getopt.h → postgres/pg_getopt.h} +1 -1
  233. data/ext/pg_query/include/{pg_trace.h → postgres/pg_trace.h} +1 -1
  234. data/ext/pg_query/include/{pgstat.h → postgres/pgstat.h} +173 -94
  235. data/ext/pg_query/include/{pgtime.h → postgres/pgtime.h} +3 -3
  236. data/ext/pg_query/include/{pl_gram.h → postgres/pl_gram.h} +66 -64
  237. data/ext/pg_query/include/{pl_reserved_kwlist.h → postgres/pl_reserved_kwlist.h} +1 -1
  238. data/ext/pg_query/include/{pl_reserved_kwlist_d.h → postgres/pl_reserved_kwlist_d.h} +1 -1
  239. data/ext/pg_query/include/{pl_unreserved_kwlist.h → postgres/pl_unreserved_kwlist.h} +2 -1
  240. data/ext/pg_query/include/{pl_unreserved_kwlist_d.h → postgres/pl_unreserved_kwlist_d.h} +48 -46
  241. data/ext/pg_query/include/{plpgsql.h → postgres/plpgsql.h} +28 -33
  242. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-arm.h +3 -3
  243. data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
  244. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-ppc.h +21 -21
  245. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-x86.h +2 -2
  246. data/ext/pg_query/include/{port → postgres/port}/atomics/fallback.h +3 -3
  247. data/ext/pg_query/include/{port → postgres/port}/atomics/generic-gcc.h +1 -1
  248. data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +101 -0
  249. data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +106 -0
  250. data/ext/pg_query/include/{port → postgres/port}/atomics/generic.h +1 -1
  251. data/ext/pg_query/include/{port → postgres/port}/atomics.h +2 -7
  252. data/ext/pg_query/include/{port → postgres/port}/pg_bitutils.h +62 -25
  253. data/ext/pg_query/include/{port → postgres/port}/pg_bswap.h +1 -1
  254. data/ext/pg_query/include/{port → postgres/port}/pg_crc32c.h +1 -1
  255. data/ext/pg_query/include/postgres/port/simd.h +375 -0
  256. data/ext/pg_query/include/postgres/port/win32/arpa/inet.h +3 -0
  257. data/ext/pg_query/include/postgres/port/win32/dlfcn.h +1 -0
  258. data/ext/pg_query/include/postgres/port/win32/grp.h +1 -0
  259. data/ext/pg_query/include/postgres/port/win32/netdb.h +7 -0
  260. data/ext/pg_query/include/postgres/port/win32/netinet/in.h +3 -0
  261. data/ext/pg_query/include/postgres/port/win32/netinet/tcp.h +7 -0
  262. data/ext/pg_query/include/postgres/port/win32/pwd.h +3 -0
  263. data/ext/pg_query/include/postgres/port/win32/sys/resource.h +20 -0
  264. data/ext/pg_query/include/postgres/port/win32/sys/select.h +3 -0
  265. data/ext/pg_query/include/postgres/port/win32/sys/socket.h +26 -0
  266. data/ext/pg_query/include/postgres/port/win32/sys/un.h +17 -0
  267. data/ext/pg_query/include/postgres/port/win32/sys/wait.h +3 -0
  268. data/ext/pg_query/include/postgres/port/win32.h +59 -0
  269. data/ext/pg_query/include/postgres/port/win32_msvc/dirent.h +34 -0
  270. data/ext/pg_query/include/postgres/port/win32_msvc/sys/file.h +1 -0
  271. data/ext/pg_query/include/postgres/port/win32_msvc/sys/param.h +1 -0
  272. data/ext/pg_query/include/postgres/port/win32_msvc/sys/time.h +1 -0
  273. data/ext/pg_query/include/postgres/port/win32_msvc/unistd.h +9 -0
  274. data/ext/pg_query/include/postgres/port/win32_msvc/utime.h +3 -0
  275. data/ext/pg_query/include/postgres/port/win32_port.h +594 -0
  276. data/ext/pg_query/include/{port.h → postgres/port.h} +42 -75
  277. data/ext/pg_query/include/postgres/portability/instr_time.h +197 -0
  278. data/ext/pg_query/include/postgres/postgres.h +579 -0
  279. data/ext/pg_query/include/{postgres_ext.h → postgres/postgres_ext.h} +0 -1
  280. data/ext/pg_query/include/{postmaster → postgres/postmaster}/autovacuum.h +1 -4
  281. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker.h +2 -2
  282. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker_internals.h +1 -1
  283. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgwriter.h +2 -2
  284. data/ext/pg_query/include/{postmaster → postgres/postmaster}/interrupt.h +1 -1
  285. data/ext/pg_query/include/postgres/postmaster/pgarch.h +36 -0
  286. data/ext/pg_query/include/{postmaster → postgres/postmaster}/postmaster.h +6 -3
  287. data/ext/pg_query/include/{postmaster → postgres/postmaster}/startup.h +3 -1
  288. data/ext/pg_query/include/{postmaster → postgres/postmaster}/syslogger.h +2 -2
  289. data/ext/pg_query/include/{postmaster → postgres/postmaster}/walwriter.h +3 -1
  290. data/ext/pg_query/include/{regex → postgres/regex}/regex.h +9 -6
  291. data/ext/pg_query/include/{replication → postgres/replication}/logicallauncher.h +6 -1
  292. data/ext/pg_query/include/{replication → postgres/replication}/logicalproto.h +30 -10
  293. data/ext/pg_query/include/postgres/replication/logicalworker.h +32 -0
  294. data/ext/pg_query/include/{replication → postgres/replication}/origin.h +4 -4
  295. data/ext/pg_query/include/{replication → postgres/replication}/reorderbuffer.h +113 -45
  296. data/ext/pg_query/include/{replication → postgres/replication}/slot.h +25 -6
  297. data/ext/pg_query/include/{replication → postgres/replication}/syncrep.h +2 -8
  298. data/ext/pg_query/include/{replication → postgres/replication}/walreceiver.h +15 -9
  299. data/ext/pg_query/include/{replication → postgres/replication}/walsender.h +13 -13
  300. data/ext/pg_query/include/{rewrite → postgres/rewrite}/prs2lock.h +1 -1
  301. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteHandler.h +1 -4
  302. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteManip.h +11 -2
  303. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteSupport.h +1 -1
  304. data/ext/pg_query/include/{storage → postgres/storage}/backendid.h +1 -1
  305. data/ext/pg_query/include/{storage → postgres/storage}/block.h +24 -31
  306. data/ext/pg_query/include/{storage → postgres/storage}/buf.h +1 -1
  307. data/ext/pg_query/include/{storage → postgres/storage}/bufmgr.h +183 -87
  308. data/ext/pg_query/include/{storage → postgres/storage}/bufpage.h +146 -93
  309. data/ext/pg_query/include/{storage → postgres/storage}/condition_variable.h +2 -2
  310. data/ext/pg_query/include/{storage → postgres/storage}/dsm.h +3 -6
  311. data/ext/pg_query/include/{storage → postgres/storage}/dsm_impl.h +4 -1
  312. data/ext/pg_query/include/{storage → postgres/storage}/fd.h +24 -20
  313. data/ext/pg_query/include/{storage → postgres/storage}/fileset.h +1 -1
  314. data/ext/pg_query/include/{storage → postgres/storage}/ipc.h +2 -2
  315. data/ext/pg_query/include/{storage → postgres/storage}/item.h +1 -1
  316. data/ext/pg_query/include/{storage → postgres/storage}/itemid.h +1 -1
  317. data/ext/pg_query/include/{storage → postgres/storage}/itemptr.h +94 -57
  318. data/ext/pg_query/include/{storage → postgres/storage}/large_object.h +1 -1
  319. data/ext/pg_query/include/{storage → postgres/storage}/latch.h +9 -1
  320. data/ext/pg_query/include/{storage → postgres/storage}/lmgr.h +6 -1
  321. data/ext/pg_query/include/{storage → postgres/storage}/lock.h +21 -13
  322. data/ext/pg_query/include/{storage → postgres/storage}/lockdefs.h +3 -3
  323. data/ext/pg_query/include/{storage → postgres/storage}/lwlock.h +16 -2
  324. data/ext/pg_query/include/{storage → postgres/storage}/off.h +1 -1
  325. data/ext/pg_query/include/{storage → postgres/storage}/pg_sema.h +1 -1
  326. data/ext/pg_query/include/{storage → postgres/storage}/pg_shmem.h +1 -1
  327. data/ext/pg_query/include/{storage → postgres/storage}/pmsignal.h +1 -1
  328. data/ext/pg_query/include/{storage → postgres/storage}/predicate.h +2 -2
  329. data/ext/pg_query/include/{storage → postgres/storage}/proc.h +22 -17
  330. data/ext/pg_query/include/{storage → postgres/storage}/procarray.h +3 -2
  331. data/ext/pg_query/include/{storage → postgres/storage}/proclist_types.h +1 -1
  332. data/ext/pg_query/include/{storage → postgres/storage}/procsignal.h +3 -1
  333. data/ext/pg_query/include/postgres/storage/relfilelocator.h +99 -0
  334. data/ext/pg_query/include/{storage → postgres/storage}/s_lock.h +66 -309
  335. data/ext/pg_query/include/{storage → postgres/storage}/sharedfileset.h +1 -1
  336. data/ext/pg_query/include/{storage → postgres/storage}/shm_mq.h +1 -1
  337. data/ext/pg_query/include/{storage → postgres/storage}/shm_toc.h +1 -1
  338. data/ext/pg_query/include/{storage → postgres/storage}/shmem.h +1 -23
  339. data/ext/pg_query/include/{storage → postgres/storage}/sinval.h +3 -3
  340. data/ext/pg_query/include/{storage → postgres/storage}/sinvaladt.h +4 -2
  341. data/ext/pg_query/include/{storage → postgres/storage}/smgr.h +12 -10
  342. data/ext/pg_query/include/{storage → postgres/storage}/spin.h +1 -1
  343. data/ext/pg_query/include/{storage → postgres/storage}/standby.h +9 -8
  344. data/ext/pg_query/include/{storage → postgres/storage}/standbydefs.h +1 -1
  345. data/ext/pg_query/include/{storage → postgres/storage}/sync.h +3 -3
  346. data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtag.h +7 -2
  347. data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtaglist.h +1 -1
  348. data/ext/pg_query/include/{tcop → postgres/tcop}/deparse_utility.h +1 -1
  349. data/ext/pg_query/include/{tcop → postgres/tcop}/dest.h +1 -3
  350. data/ext/pg_query/include/{tcop → postgres/tcop}/fastpath.h +1 -1
  351. data/ext/pg_query/include/{tcop → postgres/tcop}/pquery.h +1 -1
  352. data/ext/pg_query/include/{tcop → postgres/tcop}/tcopprot.h +3 -6
  353. data/ext/pg_query/include/{tcop → postgres/tcop}/utility.h +1 -1
  354. data/ext/pg_query/include/{tsearch → postgres/tsearch}/ts_cache.h +2 -4
  355. data/ext/pg_query/include/{utils → postgres/utils}/acl.h +26 -81
  356. data/ext/pg_query/include/{utils → postgres/utils}/aclchk_internal.h +1 -1
  357. data/ext/pg_query/include/{utils → postgres/utils}/array.h +19 -1
  358. data/ext/pg_query/include/{utils → postgres/utils}/backend_progress.h +2 -1
  359. data/ext/pg_query/include/{utils → postgres/utils}/backend_status.h +24 -3
  360. data/ext/pg_query/include/{utils → postgres/utils}/builtins.h +15 -6
  361. data/ext/pg_query/include/{utils → postgres/utils}/bytea.h +1 -1
  362. data/ext/pg_query/include/{utils → postgres/utils}/catcache.h +1 -1
  363. data/ext/pg_query/include/{utils → postgres/utils}/date.h +37 -9
  364. data/ext/pg_query/include/{utils → postgres/utils}/datetime.h +41 -21
  365. data/ext/pg_query/include/{utils → postgres/utils}/datum.h +1 -1
  366. data/ext/pg_query/include/{utils → postgres/utils}/dsa.h +5 -1
  367. data/ext/pg_query/include/{utils → postgres/utils}/elog.h +104 -29
  368. data/ext/pg_query/include/{utils → postgres/utils}/expandeddatum.h +14 -3
  369. data/ext/pg_query/include/{utils → postgres/utils}/expandedrecord.h +14 -4
  370. data/ext/pg_query/include/{utils → postgres/utils}/float.h +7 -6
  371. data/ext/pg_query/include/{utils → postgres/utils}/fmgroids.h +54 -1
  372. data/ext/pg_query/include/{utils → postgres/utils}/fmgrprotos.h +45 -3
  373. data/ext/pg_query/include/{utils → postgres/utils}/fmgrtab.h +1 -1
  374. data/ext/pg_query/include/{utils → postgres/utils}/guc.h +59 -86
  375. data/ext/pg_query/include/postgres/utils/guc_hooks.h +163 -0
  376. data/ext/pg_query/include/{utils → postgres/utils}/guc_tables.h +49 -3
  377. data/ext/pg_query/include/{utils → postgres/utils}/hsearch.h +1 -1
  378. data/ext/pg_query/include/{utils → postgres/utils}/inval.h +3 -3
  379. data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
  380. data/ext/pg_query/include/{utils → postgres/utils}/lsyscache.h +5 -1
  381. data/ext/pg_query/include/{utils → postgres/utils}/memdebug.h +1 -1
  382. data/ext/pg_query/include/{utils → postgres/utils}/memutils.h +7 -51
  383. data/ext/pg_query/include/postgres/utils/memutils_internal.h +136 -0
  384. data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +237 -0
  385. data/ext/pg_query/include/{utils → postgres/utils}/numeric.h +20 -5
  386. data/ext/pg_query/include/{utils → postgres/utils}/palloc.h +9 -2
  387. data/ext/pg_query/include/{utils → postgres/utils}/partcache.h +3 -2
  388. data/ext/pg_query/include/{utils → postgres/utils}/pg_locale.h +22 -14
  389. data/ext/pg_query/include/{utils → postgres/utils}/pgstat_internal.h +37 -7
  390. data/ext/pg_query/include/{utils → postgres/utils}/plancache.h +1 -1
  391. data/ext/pg_query/include/{utils → postgres/utils}/portal.h +1 -1
  392. data/ext/pg_query/include/{utils → postgres/utils}/probes.h +6 -6
  393. data/ext/pg_query/include/postgres/utils/ps_status.h +47 -0
  394. data/ext/pg_query/include/{utils → postgres/utils}/queryenvironment.h +1 -1
  395. data/ext/pg_query/include/{utils → postgres/utils}/regproc.h +3 -3
  396. data/ext/pg_query/include/{utils → postgres/utils}/rel.h +60 -43
  397. data/ext/pg_query/include/{utils → postgres/utils}/relcache.h +13 -8
  398. data/ext/pg_query/include/{utils → postgres/utils}/reltrigger.h +1 -1
  399. data/ext/pg_query/include/{utils → postgres/utils}/resowner.h +1 -1
  400. data/ext/pg_query/include/{utils → postgres/utils}/ruleutils.h +6 -1
  401. data/ext/pg_query/include/{utils → postgres/utils}/sharedtuplestore.h +1 -1
  402. data/ext/pg_query/include/{utils → postgres/utils}/snapmgr.h +4 -2
  403. data/ext/pg_query/include/{utils → postgres/utils}/snapshot.h +1 -1
  404. data/ext/pg_query/include/{utils → postgres/utils}/sortsupport.h +2 -2
  405. data/ext/pg_query/include/{utils → postgres/utils}/syscache.h +4 -1
  406. data/ext/pg_query/include/{utils → postgres/utils}/timeout.h +1 -1
  407. data/ext/pg_query/include/{utils → postgres/utils}/timestamp.h +41 -11
  408. data/ext/pg_query/include/{utils → postgres/utils}/tuplesort.h +189 -35
  409. data/ext/pg_query/include/{utils → postgres/utils}/tuplestore.h +1 -1
  410. data/ext/pg_query/include/{utils → postgres/utils}/typcache.h +1 -1
  411. data/ext/pg_query/include/{utils → postgres/utils}/varlena.h +13 -1
  412. data/ext/pg_query/include/{utils → postgres/utils}/wait_event.h +9 -4
  413. data/ext/pg_query/include/{utils → postgres/utils}/xml.h +15 -5
  414. data/ext/pg_query/include/{postgres.h → postgres/varatt.h} +7 -457
  415. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +6186 -5585
  416. data/ext/pg_query/include/protobuf/pg_query.pb.h +112443 -91222
  417. data/ext/pg_query/pg_query.c +10 -1
  418. data/ext/pg_query/pg_query.pb-c.c +19755 -17757
  419. data/ext/pg_query/pg_query_deparse.c +1 -10635
  420. data/ext/pg_query/pg_query_fingerprint.c +12 -8
  421. data/ext/pg_query/pg_query_fingerprint.h +1 -1
  422. data/ext/pg_query/pg_query_internal.h +1 -1
  423. data/ext/pg_query/pg_query_json_plpgsql.c +1 -0
  424. data/ext/pg_query/pg_query_normalize.c +1 -1
  425. data/ext/pg_query/pg_query_outfuncs_json.c +6 -0
  426. data/ext/pg_query/pg_query_outfuncs_protobuf.c +3 -2
  427. data/ext/pg_query/pg_query_parse.c +47 -5
  428. data/ext/pg_query/pg_query_parse_plpgsql.c +7 -5
  429. data/ext/pg_query/pg_query_readfuncs_protobuf.c +1 -0
  430. data/ext/pg_query/pg_query_ruby.c +5 -0
  431. data/ext/pg_query/pg_query_ruby_freebsd.sym +2 -0
  432. data/ext/pg_query/pg_query_scan.c +1 -1
  433. data/ext/pg_query/pg_query_split.c +3 -3
  434. data/ext/pg_query/postgres_deparse.c +11067 -0
  435. data/ext/pg_query/postgres_deparse.h +9 -0
  436. data/ext/pg_query/src_backend_catalog_namespace.c +7 -2
  437. data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -1
  438. data/ext/pg_query/src_backend_commands_define.c +1 -1
  439. data/ext/pg_query/src_backend_nodes_bitmapset.c +11 -70
  440. data/ext/pg_query/src_backend_nodes_copyfuncs.c +96 -6202
  441. data/ext/pg_query/src_backend_nodes_equalfuncs.c +95 -4068
  442. data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
  443. data/ext/pg_query/src_backend_nodes_list.c +14 -2
  444. data/ext/pg_query/src_backend_nodes_makefuncs.c +95 -1
  445. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +283 -132
  446. data/ext/pg_query/src_backend_nodes_nodes.c +38 -0
  447. data/ext/pg_query/src_backend_nodes_value.c +1 -1
  448. data/ext/pg_query/src_backend_parser_gram.c +33208 -31806
  449. data/ext/pg_query/src_backend_parser_parser.c +28 -2
  450. data/ext/pg_query/src_backend_parser_scan.c +4318 -3329
  451. data/ext/pg_query/src_backend_parser_scansup.c +1 -1
  452. data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
  453. data/ext/pg_query/src_backend_tcop_postgres.c +66 -87
  454. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +1 -1
  455. data/ext/pg_query/src_backend_utils_adt_datum.c +5 -7
  456. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  457. data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
  458. data/ext/pg_query/src_backend_utils_adt_numutils.c +489 -0
  459. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +79 -5
  460. data/ext/pg_query/src_backend_utils_error_assert.c +4 -7
  461. data/ext/pg_query/src_backend_utils_error_elog.c +371 -249
  462. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +33 -1
  463. data/ext/pg_query/src_backend_utils_init_globals.c +6 -3
  464. data/ext/pg_query/src_backend_utils_mb_mbutils.c +21 -67
  465. data/ext/pg_query/src_backend_utils_misc_guc_tables.c +492 -0
  466. data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +163 -0
  467. data/ext/pg_query/src_backend_utils_mmgr_aset.c +449 -312
  468. data/ext/pg_query/src_backend_utils_mmgr_generation.c +1039 -0
  469. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +398 -49
  470. data/ext/pg_query/src_backend_utils_mmgr_slab.c +1021 -0
  471. data/ext/pg_query/src_common_encnames.c +4 -1
  472. data/ext/pg_query/src_common_hashfn.c +1 -1
  473. data/ext/pg_query/src_common_keywords.c +1 -1
  474. data/ext/pg_query/src_common_kwlist_d.h +534 -510
  475. data/ext/pg_query/src_common_kwlookup.c +1 -1
  476. data/ext/pg_query/src_common_psprintf.c +1 -1
  477. data/ext/pg_query/src_common_stringinfo.c +4 -4
  478. data/ext/pg_query/src_common_wchar.c +9 -8
  479. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +1 -1
  480. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -1
  481. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +661 -694
  482. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  483. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
  484. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +1 -1
  485. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +48 -46
  486. data/ext/pg_query/src_port_pg_bitutils.c +79 -5
  487. data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
  488. data/ext/pg_query/src_port_snprintf.c +6 -10
  489. data/ext/pg_query/src_port_strerror.c +1 -1
  490. data/ext/pg_query/src_port_strlcpy.c +79 -0
  491. data/lib/pg_query/fingerprint.rb +2 -3
  492. data/lib/pg_query/node.rb +16 -11
  493. data/lib/pg_query/parse.rb +1 -1
  494. data/lib/pg_query/pg_query_pb.rb +166 -3191
  495. data/lib/pg_query/treewalker.rb +23 -5
  496. data/lib/pg_query/version.rb +1 -1
  497. metadata +432 -380
  498. data/ext/pg_query/guc-file.c +0 -0
  499. data/ext/pg_query/include/catalog/pg_parameter_acl.h +0 -60
  500. data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +0 -34
  501. data/ext/pg_query/include/commands/variable.h +0 -38
  502. data/ext/pg_query/include/common/ip.h +0 -31
  503. data/ext/pg_query/include/getaddrinfo.h +0 -162
  504. data/ext/pg_query/include/kwlist_d.h +0 -1095
  505. data/ext/pg_query/include/parser/gram.h +0 -1101
  506. data/ext/pg_query/include/pg_config_os.h +0 -8
  507. data/ext/pg_query/include/portability/instr_time.h +0 -256
  508. data/ext/pg_query/include/postmaster/auxprocess.h +0 -20
  509. data/ext/pg_query/include/postmaster/fork_process.h +0 -17
  510. data/ext/pg_query/include/postmaster/pgarch.h +0 -73
  511. data/ext/pg_query/include/replication/logicalworker.h +0 -19
  512. data/ext/pg_query/include/storage/relfilenode.h +0 -99
  513. data/ext/pg_query/include/utils/dynahash.h +0 -20
  514. data/ext/pg_query/include/utils/pg_lsn.h +0 -29
  515. data/ext/pg_query/include/utils/pidfile.h +0 -56
  516. data/ext/pg_query/include/utils/ps_status.h +0 -25
  517. data/ext/pg_query/include/utils/rls.h +0 -50
  518. data/ext/pg_query/include/utils/tzparser.h +0 -39
  519. data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2201
  520. data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -371
  521. data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1116
  522. data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1993
  523. data/ext/pg_query/src_common_pg_prng.c +0 -152
  524. data/ext/pg_query/src_common_string.c +0 -92
  525. data/ext/pg_query/src_port_pgsleep.c +0 -69
  526. data/ext/pg_query/src_port_strnlen.c +0 -39
  527. /data/ext/pg_query/include/{access → postgres/access}/rmgr.h +0 -0
  528. /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
  529. /data/ext/pg_query/include/{plerrcodes.h → postgres/plerrcodes.h} +0 -0
  530. /data/ext/pg_query/include/{storage → postgres/storage}/lwlocknames.h +0 -0
  531. /data/ext/pg_query/include/{utils → postgres/utils}/errcodes.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-2022, PostgreSQL Global Development Group
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, bool (*walker) (),
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
- bool (*walker) (), void *context);
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;
@@ -532,6 +546,28 @@ exprLocation(const Node *expr)
532
546
  case T_CommonTableExpr:
533
547
  loc = ((const CommonTableExpr *) expr)->location;
534
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;
535
571
  case T_PlaceHolderVar:
536
572
  /* just use argument's location */
537
573
  loc = exprLocation((Node *) ((const PlaceHolderVar *) expr)->phexpr);
@@ -721,7 +757,9 @@ leftmostLoc(int loc1, int loc2)
721
757
  * uses, but may need to be revisited in future.
722
758
  */
723
759
 
724
-
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
725
763
 
726
764
  /*
727
765
  * query_tree_walker --- initiate a walk of a Query's expressions
@@ -887,9 +925,9 @@ leftmostLoc(int loc1, int loc2)
887
925
  * statements can appear in CTEs.
888
926
  */
889
927
  bool
890
- raw_expression_tree_walker(Node *node,
891
- bool (*walker) (),
892
- void *context)
928
+ raw_expression_tree_walker_impl(Node *node,
929
+ tree_walker_callback walker,
930
+ void *context)
893
931
  {
894
932
  ListCell *temp;
895
933
 
@@ -905,6 +943,7 @@ raw_expression_tree_walker(Node *node,
905
943
 
906
944
  switch (nodeTag(node))
907
945
  {
946
+ case T_JsonFormat:
908
947
  case T_SetToDefault:
909
948
  case T_CurrentOfExpr:
910
949
  case T_SQLValueFunction:
@@ -922,17 +961,17 @@ raw_expression_tree_walker(Node *node,
922
961
  /* we assume the colnames list isn't interesting */
923
962
  break;
924
963
  case T_RangeVar:
925
- return walker(((RangeVar *) node)->alias, context);
964
+ return WALK(((RangeVar *) node)->alias);
926
965
  case T_GroupingFunc:
927
- return walker(((GroupingFunc *) node)->args, context);
966
+ return WALK(((GroupingFunc *) node)->args);
928
967
  case T_SubLink:
929
968
  {
930
969
  SubLink *sublink = (SubLink *) node;
931
970
 
932
- if (walker(sublink->testexpr, context))
971
+ if (WALK(sublink->testexpr))
933
972
  return true;
934
973
  /* we assume the operName is not interesting */
935
- if (walker(sublink->subselect, context))
974
+ if (WALK(sublink->subselect))
936
975
  return true;
937
976
  }
938
977
  break;
@@ -940,55 +979,85 @@ raw_expression_tree_walker(Node *node,
940
979
  {
941
980
  CaseExpr *caseexpr = (CaseExpr *) node;
942
981
 
943
- if (walker(caseexpr->arg, context))
982
+ if (WALK(caseexpr->arg))
944
983
  return true;
945
984
  /* we assume walker doesn't care about CaseWhens, either */
946
985
  foreach(temp, caseexpr->args)
947
986
  {
948
987
  CaseWhen *when = lfirst_node(CaseWhen, temp);
949
988
 
950
- if (walker(when->expr, context))
989
+ if (WALK(when->expr))
951
990
  return true;
952
- if (walker(when->result, context))
991
+ if (WALK(when->result))
953
992
  return true;
954
993
  }
955
- if (walker(caseexpr->defresult, context))
994
+ if (WALK(caseexpr->defresult))
956
995
  return true;
957
996
  }
958
997
  break;
959
998
  case T_RowExpr:
960
999
  /* Assume colnames isn't interesting */
961
- return walker(((RowExpr *) node)->args, context);
1000
+ return WALK(((RowExpr *) node)->args);
962
1001
  case T_CoalesceExpr:
963
- return walker(((CoalesceExpr *) node)->args, context);
1002
+ return WALK(((CoalesceExpr *) node)->args);
964
1003
  case T_MinMaxExpr:
965
- return walker(((MinMaxExpr *) node)->args, context);
1004
+ return WALK(((MinMaxExpr *) node)->args);
966
1005
  case T_XmlExpr:
967
1006
  {
968
1007
  XmlExpr *xexpr = (XmlExpr *) node;
969
1008
 
970
- if (walker(xexpr->named_args, context))
1009
+ if (WALK(xexpr->named_args))
971
1010
  return true;
972
1011
  /* we assume walker doesn't care about arg_names */
973
- if (walker(xexpr->args, context))
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))
974
1041
  return true;
975
1042
  }
976
1043
  break;
1044
+ case T_JsonIsPredicate:
1045
+ return WALK(((JsonIsPredicate *) node)->expr);
977
1046
  case T_NullTest:
978
- return walker(((NullTest *) node)->arg, context);
1047
+ return WALK(((NullTest *) node)->arg);
979
1048
  case T_BooleanTest:
980
- return walker(((BooleanTest *) node)->arg, context);
1049
+ return WALK(((BooleanTest *) node)->arg);
981
1050
  case T_JoinExpr:
982
1051
  {
983
1052
  JoinExpr *join = (JoinExpr *) node;
984
1053
 
985
- if (walker(join->larg, context))
1054
+ if (WALK(join->larg))
986
1055
  return true;
987
- if (walker(join->rarg, context))
1056
+ if (WALK(join->rarg))
988
1057
  return true;
989
- if (walker(join->quals, context))
1058
+ if (WALK(join->quals))
990
1059
  return true;
991
- if (walker(join->alias, context))
1060
+ if (WALK(join->alias))
992
1061
  return true;
993
1062
  /* using list is deemed uninteresting */
994
1063
  }
@@ -997,18 +1066,18 @@ raw_expression_tree_walker(Node *node,
997
1066
  {
998
1067
  IntoClause *into = (IntoClause *) node;
999
1068
 
1000
- if (walker(into->rel, context))
1069
+ if (WALK(into->rel))
1001
1070
  return true;
1002
1071
  /* colNames, options are deemed uninteresting */
1003
1072
  /* viewQuery should be null in raw parsetree, but check it */
1004
- if (walker(into->viewQuery, context))
1073
+ if (WALK(into->viewQuery))
1005
1074
  return true;
1006
1075
  }
1007
1076
  break;
1008
1077
  case T_List:
1009
1078
  foreach(temp, (List *) node)
1010
1079
  {
1011
- if (walker((Node *) lfirst(temp), context))
1080
+ if (WALK((Node *) lfirst(temp)))
1012
1081
  return true;
1013
1082
  }
1014
1083
  break;
@@ -1016,17 +1085,17 @@ raw_expression_tree_walker(Node *node,
1016
1085
  {
1017
1086
  InsertStmt *stmt = (InsertStmt *) node;
1018
1087
 
1019
- if (walker(stmt->relation, context))
1088
+ if (WALK(stmt->relation))
1020
1089
  return true;
1021
- if (walker(stmt->cols, context))
1090
+ if (WALK(stmt->cols))
1022
1091
  return true;
1023
- if (walker(stmt->selectStmt, context))
1092
+ if (WALK(stmt->selectStmt))
1024
1093
  return true;
1025
- if (walker(stmt->onConflictClause, context))
1094
+ if (WALK(stmt->onConflictClause))
1026
1095
  return true;
1027
- if (walker(stmt->returningList, context))
1096
+ if (WALK(stmt->returningList))
1028
1097
  return true;
1029
- if (walker(stmt->withClause, context))
1098
+ if (WALK(stmt->withClause))
1030
1099
  return true;
1031
1100
  }
1032
1101
  break;
@@ -1034,15 +1103,15 @@ raw_expression_tree_walker(Node *node,
1034
1103
  {
1035
1104
  DeleteStmt *stmt = (DeleteStmt *) node;
1036
1105
 
1037
- if (walker(stmt->relation, context))
1106
+ if (WALK(stmt->relation))
1038
1107
  return true;
1039
- if (walker(stmt->usingClause, context))
1108
+ if (WALK(stmt->usingClause))
1040
1109
  return true;
1041
- if (walker(stmt->whereClause, context))
1110
+ if (WALK(stmt->whereClause))
1042
1111
  return true;
1043
- if (walker(stmt->returningList, context))
1112
+ if (WALK(stmt->returningList))
1044
1113
  return true;
1045
- if (walker(stmt->withClause, context))
1114
+ if (WALK(stmt->withClause))
1046
1115
  return true;
1047
1116
  }
1048
1117
  break;
@@ -1050,17 +1119,17 @@ raw_expression_tree_walker(Node *node,
1050
1119
  {
1051
1120
  UpdateStmt *stmt = (UpdateStmt *) node;
1052
1121
 
1053
- if (walker(stmt->relation, context))
1122
+ if (WALK(stmt->relation))
1054
1123
  return true;
1055
- if (walker(stmt->targetList, context))
1124
+ if (WALK(stmt->targetList))
1056
1125
  return true;
1057
- if (walker(stmt->whereClause, context))
1126
+ if (WALK(stmt->whereClause))
1058
1127
  return true;
1059
- if (walker(stmt->fromClause, context))
1128
+ if (WALK(stmt->fromClause))
1060
1129
  return true;
1061
- if (walker(stmt->returningList, context))
1130
+ if (WALK(stmt->returningList))
1062
1131
  return true;
1063
- if (walker(stmt->withClause, context))
1132
+ if (WALK(stmt->withClause))
1064
1133
  return true;
1065
1134
  }
1066
1135
  break;
@@ -1068,15 +1137,15 @@ raw_expression_tree_walker(Node *node,
1068
1137
  {
1069
1138
  MergeStmt *stmt = (MergeStmt *) node;
1070
1139
 
1071
- if (walker(stmt->relation, context))
1140
+ if (WALK(stmt->relation))
1072
1141
  return true;
1073
- if (walker(stmt->sourceRelation, context))
1142
+ if (WALK(stmt->sourceRelation))
1074
1143
  return true;
1075
- if (walker(stmt->joinCondition, context))
1144
+ if (WALK(stmt->joinCondition))
1076
1145
  return true;
1077
- if (walker(stmt->mergeWhenClauses, context))
1146
+ if (WALK(stmt->mergeWhenClauses))
1078
1147
  return true;
1079
- if (walker(stmt->withClause, context))
1148
+ if (WALK(stmt->withClause))
1080
1149
  return true;
1081
1150
  }
1082
1151
  break;
@@ -1084,11 +1153,11 @@ raw_expression_tree_walker(Node *node,
1084
1153
  {
1085
1154
  MergeWhenClause *mergeWhenClause = (MergeWhenClause *) node;
1086
1155
 
1087
- if (walker(mergeWhenClause->condition, context))
1156
+ if (WALK(mergeWhenClause->condition))
1088
1157
  return true;
1089
- if (walker(mergeWhenClause->targetList, context))
1158
+ if (WALK(mergeWhenClause->targetList))
1090
1159
  return true;
1091
- if (walker(mergeWhenClause->values, context))
1160
+ if (WALK(mergeWhenClause->values))
1092
1161
  return true;
1093
1162
  }
1094
1163
  break;
@@ -1096,37 +1165,37 @@ raw_expression_tree_walker(Node *node,
1096
1165
  {
1097
1166
  SelectStmt *stmt = (SelectStmt *) node;
1098
1167
 
1099
- if (walker(stmt->distinctClause, context))
1168
+ if (WALK(stmt->distinctClause))
1100
1169
  return true;
1101
- if (walker(stmt->intoClause, context))
1170
+ if (WALK(stmt->intoClause))
1102
1171
  return true;
1103
- if (walker(stmt->targetList, context))
1172
+ if (WALK(stmt->targetList))
1104
1173
  return true;
1105
- if (walker(stmt->fromClause, context))
1174
+ if (WALK(stmt->fromClause))
1106
1175
  return true;
1107
- if (walker(stmt->whereClause, context))
1176
+ if (WALK(stmt->whereClause))
1108
1177
  return true;
1109
- if (walker(stmt->groupClause, context))
1178
+ if (WALK(stmt->groupClause))
1110
1179
  return true;
1111
- if (walker(stmt->havingClause, context))
1180
+ if (WALK(stmt->havingClause))
1112
1181
  return true;
1113
- if (walker(stmt->windowClause, context))
1182
+ if (WALK(stmt->windowClause))
1114
1183
  return true;
1115
- if (walker(stmt->valuesLists, context))
1184
+ if (WALK(stmt->valuesLists))
1116
1185
  return true;
1117
- if (walker(stmt->sortClause, context))
1186
+ if (WALK(stmt->sortClause))
1118
1187
  return true;
1119
- if (walker(stmt->limitOffset, context))
1188
+ if (WALK(stmt->limitOffset))
1120
1189
  return true;
1121
- if (walker(stmt->limitCount, context))
1190
+ if (WALK(stmt->limitCount))
1122
1191
  return true;
1123
- if (walker(stmt->lockingClause, context))
1192
+ if (WALK(stmt->lockingClause))
1124
1193
  return true;
1125
- if (walker(stmt->withClause, context))
1194
+ if (WALK(stmt->withClause))
1126
1195
  return true;
1127
- if (walker(stmt->larg, context))
1196
+ if (WALK(stmt->larg))
1128
1197
  return true;
1129
- if (walker(stmt->rarg, context))
1198
+ if (WALK(stmt->rarg))
1130
1199
  return true;
1131
1200
  }
1132
1201
  break;
@@ -1134,9 +1203,9 @@ raw_expression_tree_walker(Node *node,
1134
1203
  {
1135
1204
  PLAssignStmt *stmt = (PLAssignStmt *) node;
1136
1205
 
1137
- if (walker(stmt->indirection, context))
1206
+ if (WALK(stmt->indirection))
1138
1207
  return true;
1139
- if (walker(stmt->val, context))
1208
+ if (WALK(stmt->val))
1140
1209
  return true;
1141
1210
  }
1142
1211
  break;
@@ -1144,9 +1213,9 @@ raw_expression_tree_walker(Node *node,
1144
1213
  {
1145
1214
  A_Expr *expr = (A_Expr *) node;
1146
1215
 
1147
- if (walker(expr->lexpr, context))
1216
+ if (WALK(expr->lexpr))
1148
1217
  return true;
1149
- if (walker(expr->rexpr, context))
1218
+ if (WALK(expr->rexpr))
1150
1219
  return true;
1151
1220
  /* operator name is deemed uninteresting */
1152
1221
  }
@@ -1155,7 +1224,7 @@ raw_expression_tree_walker(Node *node,
1155
1224
  {
1156
1225
  BoolExpr *expr = (BoolExpr *) node;
1157
1226
 
1158
- if (walker(expr->args, context))
1227
+ if (WALK(expr->args))
1159
1228
  return true;
1160
1229
  }
1161
1230
  break;
@@ -1166,26 +1235,26 @@ raw_expression_tree_walker(Node *node,
1166
1235
  {
1167
1236
  FuncCall *fcall = (FuncCall *) node;
1168
1237
 
1169
- if (walker(fcall->args, context))
1238
+ if (WALK(fcall->args))
1170
1239
  return true;
1171
- if (walker(fcall->agg_order, context))
1240
+ if (WALK(fcall->agg_order))
1172
1241
  return true;
1173
- if (walker(fcall->agg_filter, context))
1242
+ if (WALK(fcall->agg_filter))
1174
1243
  return true;
1175
- if (walker(fcall->over, context))
1244
+ if (WALK(fcall->over))
1176
1245
  return true;
1177
1246
  /* function name is deemed uninteresting */
1178
1247
  }
1179
1248
  break;
1180
1249
  case T_NamedArgExpr:
1181
- return walker(((NamedArgExpr *) node)->arg, context);
1250
+ return WALK(((NamedArgExpr *) node)->arg);
1182
1251
  case T_A_Indices:
1183
1252
  {
1184
1253
  A_Indices *indices = (A_Indices *) node;
1185
1254
 
1186
- if (walker(indices->lidx, context))
1255
+ if (WALK(indices->lidx))
1187
1256
  return true;
1188
- if (walker(indices->uidx, context))
1257
+ if (WALK(indices->uidx))
1189
1258
  return true;
1190
1259
  }
1191
1260
  break;
@@ -1193,51 +1262,51 @@ raw_expression_tree_walker(Node *node,
1193
1262
  {
1194
1263
  A_Indirection *indir = (A_Indirection *) node;
1195
1264
 
1196
- if (walker(indir->arg, context))
1265
+ if (WALK(indir->arg))
1197
1266
  return true;
1198
- if (walker(indir->indirection, context))
1267
+ if (WALK(indir->indirection))
1199
1268
  return true;
1200
1269
  }
1201
1270
  break;
1202
1271
  case T_A_ArrayExpr:
1203
- return walker(((A_ArrayExpr *) node)->elements, context);
1272
+ return WALK(((A_ArrayExpr *) node)->elements);
1204
1273
  case T_ResTarget:
1205
1274
  {
1206
1275
  ResTarget *rt = (ResTarget *) node;
1207
1276
 
1208
- if (walker(rt->indirection, context))
1277
+ if (WALK(rt->indirection))
1209
1278
  return true;
1210
- if (walker(rt->val, context))
1279
+ if (WALK(rt->val))
1211
1280
  return true;
1212
1281
  }
1213
1282
  break;
1214
1283
  case T_MultiAssignRef:
1215
- return walker(((MultiAssignRef *) node)->source, context);
1284
+ return WALK(((MultiAssignRef *) node)->source);
1216
1285
  case T_TypeCast:
1217
1286
  {
1218
1287
  TypeCast *tc = (TypeCast *) node;
1219
1288
 
1220
- if (walker(tc->arg, context))
1289
+ if (WALK(tc->arg))
1221
1290
  return true;
1222
- if (walker(tc->typeName, context))
1291
+ if (WALK(tc->typeName))
1223
1292
  return true;
1224
1293
  }
1225
1294
  break;
1226
1295
  case T_CollateClause:
1227
- return walker(((CollateClause *) node)->arg, context);
1296
+ return WALK(((CollateClause *) node)->arg);
1228
1297
  case T_SortBy:
1229
- return walker(((SortBy *) node)->node, context);
1298
+ return WALK(((SortBy *) node)->node);
1230
1299
  case T_WindowDef:
1231
1300
  {
1232
1301
  WindowDef *wd = (WindowDef *) node;
1233
1302
 
1234
- if (walker(wd->partitionClause, context))
1303
+ if (WALK(wd->partitionClause))
1235
1304
  return true;
1236
- if (walker(wd->orderClause, context))
1305
+ if (WALK(wd->orderClause))
1237
1306
  return true;
1238
- if (walker(wd->startOffset, context))
1307
+ if (WALK(wd->startOffset))
1239
1308
  return true;
1240
- if (walker(wd->endOffset, context))
1309
+ if (WALK(wd->endOffset))
1241
1310
  return true;
1242
1311
  }
1243
1312
  break;
@@ -1245,9 +1314,9 @@ raw_expression_tree_walker(Node *node,
1245
1314
  {
1246
1315
  RangeSubselect *rs = (RangeSubselect *) node;
1247
1316
 
1248
- if (walker(rs->subquery, context))
1317
+ if (WALK(rs->subquery))
1249
1318
  return true;
1250
- if (walker(rs->alias, context))
1319
+ if (WALK(rs->alias))
1251
1320
  return true;
1252
1321
  }
1253
1322
  break;
@@ -1255,11 +1324,11 @@ raw_expression_tree_walker(Node *node,
1255
1324
  {
1256
1325
  RangeFunction *rf = (RangeFunction *) node;
1257
1326
 
1258
- if (walker(rf->functions, context))
1327
+ if (WALK(rf->functions))
1259
1328
  return true;
1260
- if (walker(rf->alias, context))
1329
+ if (WALK(rf->alias))
1261
1330
  return true;
1262
- if (walker(rf->coldeflist, context))
1331
+ if (WALK(rf->coldeflist))
1263
1332
  return true;
1264
1333
  }
1265
1334
  break;
@@ -1267,12 +1336,12 @@ raw_expression_tree_walker(Node *node,
1267
1336
  {
1268
1337
  RangeTableSample *rts = (RangeTableSample *) node;
1269
1338
 
1270
- if (walker(rts->relation, context))
1339
+ if (WALK(rts->relation))
1271
1340
  return true;
1272
1341
  /* method name is deemed uninteresting */
1273
- if (walker(rts->args, context))
1342
+ if (WALK(rts->args))
1274
1343
  return true;
1275
- if (walker(rts->repeatable, context))
1344
+ if (WALK(rts->repeatable))
1276
1345
  return true;
1277
1346
  }
1278
1347
  break;
@@ -1280,15 +1349,15 @@ raw_expression_tree_walker(Node *node,
1280
1349
  {
1281
1350
  RangeTableFunc *rtf = (RangeTableFunc *) node;
1282
1351
 
1283
- if (walker(rtf->docexpr, context))
1352
+ if (WALK(rtf->docexpr))
1284
1353
  return true;
1285
- if (walker(rtf->rowexpr, context))
1354
+ if (WALK(rtf->rowexpr))
1286
1355
  return true;
1287
- if (walker(rtf->namespaces, context))
1356
+ if (WALK(rtf->namespaces))
1288
1357
  return true;
1289
- if (walker(rtf->columns, context))
1358
+ if (WALK(rtf->columns))
1290
1359
  return true;
1291
- if (walker(rtf->alias, context))
1360
+ if (WALK(rtf->alias))
1292
1361
  return true;
1293
1362
  }
1294
1363
  break;
@@ -1296,9 +1365,9 @@ raw_expression_tree_walker(Node *node,
1296
1365
  {
1297
1366
  RangeTableFuncCol *rtfc = (RangeTableFuncCol *) node;
1298
1367
 
1299
- if (walker(rtfc->colexpr, context))
1368
+ if (WALK(rtfc->colexpr))
1300
1369
  return true;
1301
- if (walker(rtfc->coldefexpr, context))
1370
+ if (WALK(rtfc->coldefexpr))
1302
1371
  return true;
1303
1372
  }
1304
1373
  break;
@@ -1306,9 +1375,9 @@ raw_expression_tree_walker(Node *node,
1306
1375
  {
1307
1376
  TypeName *tn = (TypeName *) node;
1308
1377
 
1309
- if (walker(tn->typmods, context))
1378
+ if (WALK(tn->typmods))
1310
1379
  return true;
1311
- if (walker(tn->arrayBounds, context))
1380
+ if (WALK(tn->arrayBounds))
1312
1381
  return true;
1313
1382
  /* type name itself is deemed uninteresting */
1314
1383
  }
@@ -1317,13 +1386,11 @@ raw_expression_tree_walker(Node *node,
1317
1386
  {
1318
1387
  ColumnDef *coldef = (ColumnDef *) node;
1319
1388
 
1320
- if (walker(coldef->typeName, context))
1321
- return true;
1322
- if (walker(coldef->compression, context))
1389
+ if (WALK(coldef->typeName))
1323
1390
  return true;
1324
- if (walker(coldef->raw_default, context))
1391
+ if (WALK(coldef->raw_default))
1325
1392
  return true;
1326
- if (walker(coldef->collClause, context))
1393
+ if (WALK(coldef->collClause))
1327
1394
  return true;
1328
1395
  /* for now, constraints are ignored */
1329
1396
  }
@@ -1332,34 +1399,34 @@ raw_expression_tree_walker(Node *node,
1332
1399
  {
1333
1400
  IndexElem *indelem = (IndexElem *) node;
1334
1401
 
1335
- if (walker(indelem->expr, context))
1402
+ if (WALK(indelem->expr))
1336
1403
  return true;
1337
1404
  /* collation and opclass names are deemed uninteresting */
1338
1405
  }
1339
1406
  break;
1340
1407
  case T_GroupingSet:
1341
- return walker(((GroupingSet *) node)->content, context);
1408
+ return WALK(((GroupingSet *) node)->content);
1342
1409
  case T_LockingClause:
1343
- return walker(((LockingClause *) node)->lockedRels, context);
1410
+ return WALK(((LockingClause *) node)->lockedRels);
1344
1411
  case T_XmlSerialize:
1345
1412
  {
1346
1413
  XmlSerialize *xs = (XmlSerialize *) node;
1347
1414
 
1348
- if (walker(xs->expr, context))
1415
+ if (WALK(xs->expr))
1349
1416
  return true;
1350
- if (walker(xs->typeName, context))
1417
+ if (WALK(xs->typeName))
1351
1418
  return true;
1352
1419
  }
1353
1420
  break;
1354
1421
  case T_WithClause:
1355
- return walker(((WithClause *) node)->ctes, context);
1422
+ return WALK(((WithClause *) node)->ctes);
1356
1423
  case T_InferClause:
1357
1424
  {
1358
1425
  InferClause *stmt = (InferClause *) node;
1359
1426
 
1360
- if (walker(stmt->indexElems, context))
1427
+ if (WALK(stmt->indexElems))
1361
1428
  return true;
1362
- if (walker(stmt->whereClause, context))
1429
+ if (WALK(stmt->whereClause))
1363
1430
  return true;
1364
1431
  }
1365
1432
  break;
@@ -1367,17 +1434,101 @@ raw_expression_tree_walker(Node *node,
1367
1434
  {
1368
1435
  OnConflictClause *stmt = (OnConflictClause *) node;
1369
1436
 
1370
- if (walker(stmt->infer, context))
1437
+ if (WALK(stmt->infer))
1371
1438
  return true;
1372
- if (walker(stmt->targetList, context))
1439
+ if (WALK(stmt->targetList))
1373
1440
  return true;
1374
- if (walker(stmt->whereClause, context))
1441
+ if (WALK(stmt->whereClause))
1375
1442
  return true;
1376
1443
  }
1377
1444
  break;
1378
1445
  case T_CommonTableExpr:
1379
1446
  /* search_clause and cycle_clause are not interesting here */
1380
- return walker(((CommonTableExpr *) node)->ctequery, context);
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;
1381
1532
  default:
1382
1533
  elog(ERROR, "unrecognized node type: %d",
1383
1534
  (int) nodeTag(node));
@@ -1392,7 +1543,7 @@ raw_expression_tree_walker(Node *node,
1392
1543
  * The walker has already visited the current node, and so we need only
1393
1544
  * recurse into any sub-nodes it has.
1394
1545
  */
1395
-
1546
+ #define PSWALK(n) walker(n, context)
1396
1547
 
1397
1548
  /*
1398
1549
  * Walk a list of SubPlans (or initPlans, which also use SubPlan nodes).