pg_query 2.0.3 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (557) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +165 -0
  3. data/README.md +67 -29
  4. data/Rakefile +8 -23
  5. data/ext/pg_query/extconf.rb +21 -3
  6. data/ext/pg_query/include/pg_query.h +29 -4
  7. data/ext/pg_query/include/pg_query_enum_defs.c +551 -272
  8. data/ext/pg_query/include/pg_query_fingerprint_conds.c +563 -470
  9. data/ext/pg_query/include/pg_query_fingerprint_defs.c +5403 -3945
  10. data/ext/pg_query/include/pg_query_outfuncs_conds.c +402 -330
  11. data/ext/pg_query/include/pg_query_outfuncs_defs.c +1319 -1059
  12. data/ext/pg_query/include/pg_query_readfuncs_conds.c +141 -118
  13. data/ext/pg_query/include/pg_query_readfuncs_defs.c +1685 -1379
  14. data/ext/pg_query/include/{access → postgres/access}/amapi.h +47 -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 +2 -2
  17. data/ext/pg_query/include/{access → postgres/access}/clog.h +4 -2
  18. data/ext/pg_query/include/{access → postgres/access}/commit_ts.h +6 -9
  19. data/ext/pg_query/include/{access → postgres/access}/detoast.h +1 -11
  20. data/ext/pg_query/include/{access → postgres/access}/genam.h +21 -16
  21. data/ext/pg_query/include/{access → postgres/access}/gin.h +17 -4
  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 +80 -88
  24. data/ext/pg_query/include/{access → postgres/access}/itup.h +61 -52
  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 +17 -2
  29. data/ext/pg_query/include/postgres/access/rmgr.h +62 -0
  30. data/ext/pg_query/include/{access → postgres/access}/rmgrlist.h +24 -24
  31. data/ext/pg_query/include/{access → postgres/access}/sdir.h +12 -3
  32. data/ext/pg_query/include/{access → postgres/access}/skey.h +1 -1
  33. data/ext/pg_query/include/{access → postgres/access}/stratnum.h +4 -2
  34. data/ext/pg_query/include/{access → postgres/access}/sysattr.h +1 -1
  35. data/ext/pg_query/include/{access → postgres/access}/table.h +2 -1
  36. data/ext/pg_query/include/{access → postgres/access}/tableam.h +337 -62
  37. data/ext/pg_query/include/postgres/access/toast_compression.h +73 -0
  38. data/ext/pg_query/include/{access → postgres/access}/transam.h +123 -13
  39. data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
  40. data/ext/pg_query/include/{access → postgres/access}/tupconvert.h +5 -2
  41. data/ext/pg_query/include/{access → postgres/access}/tupdesc.h +2 -2
  42. data/ext/pg_query/include/{access → postgres/access}/tupmacs.h +60 -100
  43. data/ext/pg_query/include/{access → postgres/access}/twophase.h +5 -1
  44. data/ext/pg_query/include/{access → postgres/access}/xact.h +99 -32
  45. data/ext/pg_query/include/{access → postgres/access}/xlog.h +69 -165
  46. data/ext/pg_query/include/{access → postgres/access}/xlog_internal.h +147 -73
  47. data/ext/pg_query/include/postgres/access/xlogbackup.h +41 -0
  48. data/ext/pg_query/include/{access → postgres/access}/xlogdefs.h +13 -40
  49. data/ext/pg_query/include/postgres/access/xlogprefetcher.h +55 -0
  50. data/ext/pg_query/include/{access → postgres/access}/xlogreader.h +154 -37
  51. data/ext/pg_query/include/{access → postgres/access}/xlogrecord.h +34 -13
  52. data/ext/pg_query/include/postgres/access/xlogrecovery.h +158 -0
  53. data/ext/pg_query/include/postgres/archive/archive_module.h +59 -0
  54. data/ext/pg_query/include/{c.h → postgres/c.h} +245 -188
  55. data/ext/pg_query/include/{catalog → postgres/catalog}/catalog.h +6 -3
  56. data/ext/pg_query/include/{catalog → postgres/catalog}/catversion.h +6 -2
  57. data/ext/pg_query/include/{catalog → postgres/catalog}/dependency.h +14 -19
  58. data/ext/pg_query/include/postgres/catalog/genbki.h +143 -0
  59. data/ext/pg_query/include/{catalog → postgres/catalog}/index.h +20 -5
  60. data/ext/pg_query/include/postgres/catalog/indexing.h +54 -0
  61. data/ext/pg_query/include/{catalog → postgres/catalog}/namespace.h +5 -3
  62. data/ext/pg_query/include/{catalog → postgres/catalog}/objectaccess.h +73 -3
  63. data/ext/pg_query/include/{catalog → postgres/catalog}/objectaddress.h +12 -7
  64. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate.h +14 -10
  65. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate_d.h +2 -1
  66. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am.h +4 -1
  67. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am_d.h +3 -1
  68. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute.h +45 -26
  69. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute_d.h +19 -16
  70. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid.h +7 -2
  71. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid_d.h +19 -9
  72. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class.h +45 -15
  73. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class_d.h +31 -2
  74. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation.h +35 -8
  75. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation_d.h +21 -3
  76. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint.h +39 -13
  77. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint_d.h +10 -4
  78. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_control.h +13 -5
  79. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion.h +8 -5
  80. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion_d.h +4 -1
  81. data/ext/pg_query/include/postgres/catalog/pg_database.h +124 -0
  82. data/ext/pg_query/include/postgres/catalog/pg_database_d.h +52 -0
  83. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend.h +11 -7
  84. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend_d.h +3 -1
  85. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger.h +9 -3
  86. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger_d.h +3 -1
  87. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index.h +17 -7
  88. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index_d.h +20 -17
  89. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language.h +10 -5
  90. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language_d.h +3 -1
  91. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace.h +7 -2
  92. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace_d.h +3 -1
  93. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass.h +8 -5
  94. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass_d.h +3 -1
  95. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator.h +21 -16
  96. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator_d.h +37 -1
  97. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily.h +8 -4
  98. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily_d.h +6 -2
  99. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table.h +20 -9
  100. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table_d.h +2 -1
  101. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc.h +20 -11
  102. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc_d.h +10 -8
  103. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication.h +49 -6
  104. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication_d.h +3 -1
  105. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin.h +6 -1
  106. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin_d.h +5 -1
  107. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic.h +19 -12
  108. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_d.h +2 -1
  109. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext.h +19 -5
  110. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext_d.h +7 -2
  111. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform.h +8 -5
  112. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform_d.h +3 -1
  113. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger.h +24 -8
  114. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger_d.h +4 -1
  115. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config.h +6 -3
  116. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config_d.h +3 -1
  117. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict.h +8 -3
  118. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict_d.h +3 -1
  119. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser.h +6 -3
  120. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser_d.h +3 -1
  121. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template.h +6 -3
  122. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template_d.h +3 -1
  123. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type.h +56 -24
  124. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type_d.h +70 -31
  125. data/ext/pg_query/include/{catalog → postgres/catalog}/storage.h +9 -7
  126. data/ext/pg_query/include/{commands → postgres/commands}/async.h +4 -5
  127. data/ext/pg_query/include/{commands → postgres/commands}/dbcommands.h +3 -1
  128. data/ext/pg_query/include/{commands → postgres/commands}/defrem.h +12 -24
  129. data/ext/pg_query/include/{commands → postgres/commands}/event_trigger.h +2 -2
  130. data/ext/pg_query/include/{commands → postgres/commands}/explain.h +3 -1
  131. data/ext/pg_query/include/{commands → postgres/commands}/prepare.h +1 -1
  132. data/ext/pg_query/include/{commands → postgres/commands}/tablespace.h +6 -4
  133. data/ext/pg_query/include/{commands → postgres/commands}/trigger.h +36 -25
  134. data/ext/pg_query/include/{commands → postgres/commands}/user.h +10 -4
  135. data/ext/pg_query/include/{commands → postgres/commands}/vacuum.h +140 -47
  136. data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
  137. data/ext/pg_query/include/{common → postgres/common}/file_perm.h +4 -4
  138. data/ext/pg_query/include/{common → postgres/common}/hashfn.h +1 -1
  139. data/ext/pg_query/include/postgres/common/int.h +437 -0
  140. data/ext/pg_query/include/{common → postgres/common}/keywords.h +2 -6
  141. data/ext/pg_query/include/{common → postgres/common}/kwlookup.h +2 -2
  142. data/ext/pg_query/include/postgres/common/pg_prng.h +61 -0
  143. data/ext/pg_query/include/{common → postgres/common}/relpath.h +21 -14
  144. data/ext/pg_query/include/postgres/common/scram-common.h +70 -0
  145. data/ext/pg_query/include/postgres/common/sha2.h +32 -0
  146. data/ext/pg_query/include/postgres/common/string.h +44 -0
  147. data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +125 -0
  148. data/ext/pg_query/include/{common/unicode_combining_table.h → postgres/common/unicode_nonspacing_table.h} +138 -8
  149. data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5013 -0
  150. data/ext/pg_query/include/postgres/copyfuncs.switch.c +938 -0
  151. data/ext/pg_query/include/{datatype → postgres/datatype}/timestamp.h +50 -4
  152. data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3097 -0
  153. data/ext/pg_query/include/postgres/equalfuncs.switch.c +785 -0
  154. data/ext/pg_query/include/{executor → postgres/executor}/execdesc.h +1 -1
  155. data/ext/pg_query/include/{executor → postgres/executor}/executor.h +98 -32
  156. data/ext/pg_query/include/{executor → postgres/executor}/functions.h +17 -3
  157. data/ext/pg_query/include/{executor → postgres/executor}/instrument.h +33 -16
  158. data/ext/pg_query/include/{executor → postgres/executor}/spi.h +42 -4
  159. data/ext/pg_query/include/{executor → postgres/executor}/tablefunc.h +1 -1
  160. data/ext/pg_query/include/{executor → postgres/executor}/tuptable.h +18 -11
  161. data/ext/pg_query/include/{fmgr.h → postgres/fmgr.h} +33 -8
  162. data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
  163. data/ext/pg_query/include/{funcapi.h → postgres/funcapi.h} +22 -10
  164. data/ext/pg_query/include/postgres/gram.h +1127 -0
  165. data/ext/pg_query/include/{parser → postgres}/gramparse.h +4 -4
  166. data/ext/pg_query/include/{jit → postgres/jit}/jit.h +12 -12
  167. data/ext/pg_query/include/postgres/kwlist_d.h +1119 -0
  168. data/ext/pg_query/include/postgres/lib/dshash.h +115 -0
  169. data/ext/pg_query/include/{lib → postgres/lib}/ilist.h +454 -22
  170. data/ext/pg_query/include/{lib → postgres/lib}/pairingheap.h +1 -1
  171. data/ext/pg_query/include/{lib → postgres/lib}/simplehash.h +158 -33
  172. data/ext/pg_query/include/postgres/lib/sort_template.h +432 -0
  173. data/ext/pg_query/include/{lib → postgres/lib}/stringinfo.h +3 -3
  174. data/ext/pg_query/include/{libpq → postgres/libpq}/auth.h +12 -4
  175. data/ext/pg_query/include/{libpq → postgres/libpq}/crypt.h +5 -4
  176. data/ext/pg_query/include/{libpq → postgres/libpq}/hba.h +54 -8
  177. data/ext/pg_query/include/{libpq → postgres/libpq}/libpq-be.h +45 -17
  178. data/ext/pg_query/include/{libpq → postgres/libpq}/libpq.h +31 -20
  179. data/ext/pg_query/include/{libpq → postgres/libpq}/pqcomm.h +26 -71
  180. data/ext/pg_query/include/{libpq → postgres/libpq}/pqformat.h +2 -2
  181. data/ext/pg_query/include/{libpq → postgres/libpq}/pqsignal.h +25 -13
  182. data/ext/pg_query/include/postgres/libpq/sasl.h +136 -0
  183. data/ext/pg_query/include/postgres/libpq/scram.h +37 -0
  184. data/ext/pg_query/include/{mb → postgres/mb}/pg_wchar.h +125 -25
  185. data/ext/pg_query/include/{mb → postgres/mb}/stringinfo_mb.h +1 -1
  186. data/ext/pg_query/include/{miscadmin.h → postgres/miscadmin.h} +96 -65
  187. data/ext/pg_query/include/{nodes → postgres/nodes}/bitmapset.h +11 -7
  188. data/ext/pg_query/include/{nodes → postgres/nodes}/execnodes.h +351 -103
  189. data/ext/pg_query/include/{nodes → postgres/nodes}/extensible.h +8 -4
  190. data/ext/pg_query/include/{nodes → postgres/nodes}/lockoptions.h +1 -1
  191. data/ext/pg_query/include/{nodes → postgres/nodes}/makefuncs.h +19 -6
  192. data/ext/pg_query/include/{nodes → postgres/nodes}/memnodes.h +11 -6
  193. data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
  194. data/ext/pg_query/include/{nodes → postgres/nodes}/nodeFuncs.h +89 -29
  195. data/ext/pg_query/include/{nodes → postgres/nodes}/nodes.h +100 -496
  196. data/ext/pg_query/include/postgres/nodes/nodetags.h +471 -0
  197. data/ext/pg_query/include/{nodes → postgres/nodes}/params.h +3 -3
  198. data/ext/pg_query/include/{nodes → postgres/nodes}/parsenodes.h +678 -207
  199. data/ext/pg_query/include/{nodes → postgres/nodes}/pathnodes.h +1282 -454
  200. data/ext/pg_query/include/{nodes → postgres/nodes}/pg_list.h +103 -73
  201. data/ext/pg_query/include/{nodes → postgres/nodes}/plannodes.h +474 -133
  202. data/ext/pg_query/include/{nodes → postgres/nodes}/primnodes.h +754 -254
  203. data/ext/pg_query/include/{nodes → postgres/nodes}/print.h +1 -1
  204. data/ext/pg_query/include/postgres/nodes/queryjumble.h +86 -0
  205. data/ext/pg_query/include/postgres/nodes/replnodes.h +111 -0
  206. data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
  207. data/ext/pg_query/include/{nodes → postgres/nodes}/tidbitmap.h +1 -1
  208. data/ext/pg_query/include/postgres/nodes/value.h +90 -0
  209. data/ext/pg_query/include/{optimizer → postgres/optimizer}/cost.h +14 -5
  210. data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo.h +9 -7
  211. data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo_gene.h +1 -1
  212. data/ext/pg_query/include/{optimizer → postgres/optimizer}/optimizer.h +31 -28
  213. data/ext/pg_query/include/{optimizer → postgres/optimizer}/paths.h +29 -12
  214. data/ext/pg_query/include/{optimizer → postgres/optimizer}/planmain.h +15 -17
  215. data/ext/pg_query/include/{parser → postgres/parser}/analyze.h +20 -5
  216. data/ext/pg_query/include/postgres/parser/kwlist.h +498 -0
  217. data/ext/pg_query/include/{parser → postgres/parser}/parse_agg.h +5 -8
  218. data/ext/pg_query/include/{parser → postgres/parser}/parse_coerce.h +6 -1
  219. data/ext/pg_query/include/{parser → postgres/parser}/parse_expr.h +2 -3
  220. data/ext/pg_query/include/{parser → postgres/parser}/parse_func.h +2 -1
  221. data/ext/pg_query/include/{parser → postgres/parser}/parse_node.h +41 -11
  222. data/ext/pg_query/include/{parser → postgres/parser}/parse_oper.h +3 -5
  223. data/ext/pg_query/include/{parser → postgres/parser}/parse_relation.h +11 -5
  224. data/ext/pg_query/include/{parser → postgres/parser}/parse_type.h +4 -3
  225. data/ext/pg_query/include/postgres/parser/parser.h +68 -0
  226. data/ext/pg_query/include/{parser → postgres/parser}/parsetree.h +1 -1
  227. data/ext/pg_query/include/{parser → postgres/parser}/scanner.h +2 -2
  228. data/ext/pg_query/include/{parser → postgres/parser}/scansup.h +2 -5
  229. data/ext/pg_query/include/{partitioning → postgres/partitioning}/partdefs.h +1 -1
  230. data/ext/pg_query/include/{pg_config.h → postgres/pg_config.h} +216 -228
  231. data/ext/pg_query/include/{pg_config_manual.h → postgres/pg_config_manual.h} +80 -58
  232. data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
  233. data/ext/pg_query/include/{pg_getopt.h → postgres/pg_getopt.h} +6 -6
  234. data/ext/pg_query/include/{pg_trace.h → postgres/pg_trace.h} +1 -1
  235. data/ext/pg_query/include/postgres/pgstat.h +778 -0
  236. data/ext/pg_query/include/{pgtime.h → postgres/pgtime.h} +16 -6
  237. data/ext/pg_query/include/{pl_gram.h → postgres/pl_gram.h} +116 -116
  238. data/ext/pg_query/include/{pl_reserved_kwlist.h → postgres/pl_reserved_kwlist.h} +1 -1
  239. data/ext/pg_query/include/{pl_reserved_kwlist_d.h → postgres/pl_reserved_kwlist_d.h} +10 -10
  240. data/ext/pg_query/include/{pl_unreserved_kwlist.h → postgres/pl_unreserved_kwlist.h} +3 -3
  241. data/ext/pg_query/include/{pl_unreserved_kwlist_d.h → postgres/pl_unreserved_kwlist_d.h} +60 -60
  242. data/ext/pg_query/include/{plerrcodes.h → postgres/plerrcodes.h} +9 -1
  243. data/ext/pg_query/include/{plpgsql.h → postgres/plpgsql.h} +79 -86
  244. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-arm.h +9 -3
  245. data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
  246. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-ppc.h +21 -21
  247. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-x86.h +2 -2
  248. data/ext/pg_query/include/{port → postgres/port}/atomics/fallback.h +3 -3
  249. data/ext/pg_query/include/{port → postgres/port}/atomics/generic-gcc.h +3 -3
  250. data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +101 -0
  251. data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +106 -0
  252. data/ext/pg_query/include/{port → postgres/port}/atomics/generic.h +1 -1
  253. data/ext/pg_query/include/{port → postgres/port}/atomics.h +2 -7
  254. data/ext/pg_query/include/{port → postgres/port}/pg_bitutils.h +129 -16
  255. data/ext/pg_query/include/{port → postgres/port}/pg_bswap.h +1 -1
  256. data/ext/pg_query/include/{port → postgres/port}/pg_crc32c.h +1 -1
  257. data/ext/pg_query/include/postgres/port/simd.h +375 -0
  258. data/ext/pg_query/include/postgres/port/win32/arpa/inet.h +3 -0
  259. data/ext/pg_query/include/postgres/port/win32/dlfcn.h +1 -0
  260. data/ext/pg_query/include/postgres/port/win32/grp.h +1 -0
  261. data/ext/pg_query/include/postgres/port/win32/netdb.h +7 -0
  262. data/ext/pg_query/include/postgres/port/win32/netinet/in.h +3 -0
  263. data/ext/pg_query/include/postgres/port/win32/netinet/tcp.h +7 -0
  264. data/ext/pg_query/include/postgres/port/win32/pwd.h +3 -0
  265. data/ext/pg_query/include/postgres/port/win32/sys/resource.h +20 -0
  266. data/ext/pg_query/include/postgres/port/win32/sys/select.h +3 -0
  267. data/ext/pg_query/include/postgres/port/win32/sys/socket.h +26 -0
  268. data/ext/pg_query/include/postgres/port/win32/sys/un.h +17 -0
  269. data/ext/pg_query/include/postgres/port/win32/sys/wait.h +3 -0
  270. data/ext/pg_query/include/postgres/port/win32.h +59 -0
  271. data/ext/pg_query/include/postgres/port/win32_msvc/dirent.h +34 -0
  272. data/ext/pg_query/include/postgres/port/win32_msvc/sys/file.h +1 -0
  273. data/ext/pg_query/include/postgres/port/win32_msvc/sys/param.h +1 -0
  274. data/ext/pg_query/include/postgres/port/win32_msvc/sys/time.h +1 -0
  275. data/ext/pg_query/include/postgres/port/win32_msvc/unistd.h +9 -0
  276. data/ext/pg_query/include/postgres/port/win32_msvc/utime.h +3 -0
  277. data/ext/pg_query/include/postgres/port/win32_port.h +594 -0
  278. data/ext/pg_query/include/{port.h → postgres/port.h} +107 -111
  279. data/ext/pg_query/include/postgres/portability/instr_time.h +197 -0
  280. data/ext/pg_query/include/postgres/postgres.h +579 -0
  281. data/ext/pg_query/include/{postgres_ext.h → postgres/postgres_ext.h} +0 -1
  282. data/ext/pg_query/include/{postmaster → postgres/postmaster}/autovacuum.h +17 -20
  283. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker.h +3 -2
  284. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker_internals.h +2 -2
  285. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgwriter.h +6 -6
  286. data/ext/pg_query/include/{postmaster → postgres/postmaster}/interrupt.h +1 -1
  287. data/ext/pg_query/include/{postmaster → postgres/postmaster}/pgarch.h +7 -10
  288. data/ext/pg_query/include/{postmaster → postgres/postmaster}/postmaster.h +21 -17
  289. data/ext/pg_query/include/postgres/postmaster/startup.h +41 -0
  290. data/ext/pg_query/include/{postmaster → postgres/postmaster}/syslogger.h +16 -11
  291. data/ext/pg_query/include/{postmaster → postgres/postmaster}/walwriter.h +5 -3
  292. data/ext/pg_query/include/{regex → postgres/regex}/regex.h +27 -22
  293. data/ext/pg_query/include/{replication → postgres/replication}/logicallauncher.h +8 -5
  294. data/ext/pg_query/include/postgres/replication/logicalproto.h +274 -0
  295. data/ext/pg_query/include/postgres/replication/logicalworker.h +32 -0
  296. data/ext/pg_query/include/{replication → postgres/replication}/origin.h +8 -8
  297. data/ext/pg_query/include/postgres/replication/reorderbuffer.h +753 -0
  298. data/ext/pg_query/include/{replication → postgres/replication}/slot.h +42 -12
  299. data/ext/pg_query/include/{replication → postgres/replication}/syncrep.h +6 -12
  300. data/ext/pg_query/include/{replication → postgres/replication}/walreceiver.h +158 -20
  301. data/ext/pg_query/include/{replication → postgres/replication}/walsender.h +20 -20
  302. data/ext/pg_query/include/{rewrite → postgres/rewrite}/prs2lock.h +1 -1
  303. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteHandler.h +1 -6
  304. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteManip.h +11 -2
  305. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteSupport.h +1 -1
  306. data/ext/pg_query/include/{storage → postgres/storage}/backendid.h +3 -3
  307. data/ext/pg_query/include/{storage → postgres/storage}/block.h +24 -37
  308. data/ext/pg_query/include/{storage → postgres/storage}/buf.h +1 -1
  309. data/ext/pg_query/include/{storage → postgres/storage}/bufmgr.h +196 -95
  310. data/ext/pg_query/include/{storage → postgres/storage}/bufpage.h +152 -101
  311. data/ext/pg_query/include/{storage → postgres/storage}/condition_variable.h +14 -3
  312. data/ext/pg_query/include/{storage → postgres/storage}/dsm.h +6 -6
  313. data/ext/pg_query/include/{storage → postgres/storage}/dsm_impl.h +6 -2
  314. data/ext/pg_query/include/{storage → postgres/storage}/fd.h +48 -14
  315. data/ext/pg_query/include/postgres/storage/fileset.h +40 -0
  316. data/ext/pg_query/include/{storage → postgres/storage}/ipc.h +5 -2
  317. data/ext/pg_query/include/{storage → postgres/storage}/item.h +1 -1
  318. data/ext/pg_query/include/{storage → postgres/storage}/itemid.h +1 -1
  319. data/ext/pg_query/include/{storage → postgres/storage}/itemptr.h +96 -57
  320. data/ext/pg_query/include/{storage → postgres/storage}/large_object.h +2 -2
  321. data/ext/pg_query/include/{storage → postgres/storage}/latch.h +17 -13
  322. data/ext/pg_query/include/{storage → postgres/storage}/lmgr.h +7 -1
  323. data/ext/pg_query/include/{storage → postgres/storage}/lock.h +37 -25
  324. data/ext/pg_query/include/{storage → postgres/storage}/lockdefs.h +4 -4
  325. data/ext/pg_query/include/{storage → postgres/storage}/lwlock.h +21 -33
  326. data/ext/pg_query/include/{storage → postgres/storage}/lwlocknames.h +0 -1
  327. data/ext/pg_query/include/{storage → postgres/storage}/off.h +1 -1
  328. data/ext/pg_query/include/{storage → postgres/storage}/pg_sema.h +1 -1
  329. data/ext/pg_query/include/{storage → postgres/storage}/pg_shmem.h +9 -7
  330. data/ext/pg_query/include/{storage → postgres/storage}/pmsignal.h +15 -4
  331. data/ext/pg_query/include/{storage → postgres/storage}/predicate.h +5 -5
  332. data/ext/pg_query/include/{storage → postgres/storage}/proc.h +200 -67
  333. data/ext/pg_query/include/postgres/storage/procarray.h +99 -0
  334. data/ext/pg_query/include/{storage → postgres/storage}/proclist_types.h +1 -1
  335. data/ext/pg_query/include/{storage → postgres/storage}/procsignal.h +5 -7
  336. data/ext/pg_query/include/postgres/storage/relfilelocator.h +99 -0
  337. data/ext/pg_query/include/{storage → postgres/storage}/s_lock.h +118 -298
  338. data/ext/pg_query/include/{storage → postgres/storage}/sharedfileset.h +3 -11
  339. data/ext/pg_query/include/{storage → postgres/storage}/shm_mq.h +5 -4
  340. data/ext/pg_query/include/{storage → postgres/storage}/shm_toc.h +1 -1
  341. data/ext/pg_query/include/{storage → postgres/storage}/shmem.h +1 -23
  342. data/ext/pg_query/include/{storage → postgres/storage}/sinval.h +5 -5
  343. data/ext/pg_query/include/{storage → postgres/storage}/sinvaladt.h +4 -2
  344. data/ext/pg_query/include/{storage → postgres/storage}/smgr.h +21 -17
  345. data/ext/pg_query/include/{storage → postgres/storage}/spin.h +2 -2
  346. data/ext/pg_query/include/{storage → postgres/storage}/standby.h +17 -9
  347. data/ext/pg_query/include/{storage → postgres/storage}/standbydefs.h +2 -2
  348. data/ext/pg_query/include/{storage → postgres/storage}/sync.h +9 -5
  349. data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtag.h +7 -2
  350. data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtaglist.h +3 -2
  351. data/ext/pg_query/include/{tcop → postgres/tcop}/deparse_utility.h +1 -1
  352. data/ext/pg_query/include/{tcop → postgres/tcop}/dest.h +1 -3
  353. data/ext/pg_query/include/{tcop → postgres/tcop}/fastpath.h +1 -2
  354. data/ext/pg_query/include/{tcop → postgres/tcop}/pquery.h +7 -1
  355. data/ext/pg_query/include/{tcop → postgres/tcop}/tcopprot.h +19 -14
  356. data/ext/pg_query/include/{tcop → postgres/tcop}/utility.h +7 -3
  357. data/ext/pg_query/include/{tsearch → postgres/tsearch}/ts_cache.h +3 -5
  358. data/ext/pg_query/include/{utils → postgres/utils}/acl.h +37 -71
  359. data/ext/pg_query/include/{utils → postgres/utils}/aclchk_internal.h +1 -1
  360. data/ext/pg_query/include/{utils → postgres/utils}/array.h +26 -2
  361. data/ext/pg_query/include/postgres/utils/backend_progress.h +45 -0
  362. data/ext/pg_query/include/postgres/utils/backend_status.h +342 -0
  363. data/ext/pg_query/include/{utils → postgres/utils}/builtins.h +20 -11
  364. data/ext/pg_query/include/{utils → postgres/utils}/bytea.h +3 -2
  365. data/ext/pg_query/include/{utils → postgres/utils}/catcache.h +1 -1
  366. data/ext/pg_query/include/{utils → postgres/utils}/date.h +37 -9
  367. data/ext/pg_query/include/{utils → postgres/utils}/datetime.h +48 -27
  368. data/ext/pg_query/include/{utils → postgres/utils}/datum.h +9 -1
  369. data/ext/pg_query/include/{utils → postgres/utils}/dsa.h +5 -1
  370. data/ext/pg_query/include/{utils → postgres/utils}/elog.h +154 -48
  371. data/ext/pg_query/include/{utils → postgres/utils}/errcodes.h +2 -0
  372. data/ext/pg_query/include/{utils → postgres/utils}/expandeddatum.h +14 -3
  373. data/ext/pg_query/include/{utils → postgres/utils}/expandedrecord.h +14 -4
  374. data/ext/pg_query/include/{utils → postgres/utils}/float.h +13 -12
  375. data/ext/pg_query/include/{utils → postgres/utils}/fmgroids.h +1353 -696
  376. data/ext/pg_query/include/{utils → postgres/utils}/fmgrprotos.h +243 -18
  377. data/ext/pg_query/include/{utils → postgres/utils}/fmgrtab.h +6 -5
  378. data/ext/pg_query/include/{utils → postgres/utils}/guc.h +120 -121
  379. data/ext/pg_query/include/postgres/utils/guc_hooks.h +163 -0
  380. data/ext/pg_query/include/{utils → postgres/utils}/guc_tables.h +71 -21
  381. data/ext/pg_query/include/{utils → postgres/utils}/hsearch.h +15 -11
  382. data/ext/pg_query/include/{utils → postgres/utils}/inval.h +7 -3
  383. data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
  384. data/ext/pg_query/include/{utils → postgres/utils}/lsyscache.h +16 -1
  385. data/ext/pg_query/include/{utils → postgres/utils}/memdebug.h +1 -1
  386. data/ext/pg_query/include/{utils → postgres/utils}/memutils.h +14 -53
  387. data/ext/pg_query/include/postgres/utils/memutils_internal.h +136 -0
  388. data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +237 -0
  389. data/ext/pg_query/include/{utils → postgres/utils}/numeric.h +38 -9
  390. data/ext/pg_query/include/{utils → postgres/utils}/palloc.h +33 -4
  391. data/ext/pg_query/include/{utils → postgres/utils}/partcache.h +3 -2
  392. data/ext/pg_query/include/{utils → postgres/utils}/pg_locale.h +37 -21
  393. data/ext/pg_query/include/postgres/utils/pgstat_internal.h +814 -0
  394. data/ext/pg_query/include/{utils → postgres/utils}/plancache.h +6 -5
  395. data/ext/pg_query/include/{utils → postgres/utils}/portal.h +12 -1
  396. data/ext/pg_query/include/{utils → postgres/utils}/probes.h +59 -59
  397. data/ext/pg_query/include/postgres/utils/ps_status.h +47 -0
  398. data/ext/pg_query/include/{utils → postgres/utils}/queryenvironment.h +1 -1
  399. data/ext/pg_query/include/postgres/utils/regproc.h +39 -0
  400. data/ext/pg_query/include/{utils → postgres/utils}/rel.h +129 -61
  401. data/ext/pg_query/include/{utils → postgres/utils}/relcache.h +21 -14
  402. data/ext/pg_query/include/{utils → postgres/utils}/reltrigger.h +1 -1
  403. data/ext/pg_query/include/{utils → postgres/utils}/resowner.h +1 -1
  404. data/ext/pg_query/include/{utils → postgres/utils}/ruleutils.h +9 -1
  405. data/ext/pg_query/include/{utils → postgres/utils}/sharedtuplestore.h +1 -1
  406. data/ext/pg_query/include/{utils → postgres/utils}/snapmgr.h +38 -15
  407. data/ext/pg_query/include/{utils → postgres/utils}/snapshot.h +14 -1
  408. data/ext/pg_query/include/{utils → postgres/utils}/sortsupport.h +117 -2
  409. data/ext/pg_query/include/{utils → postgres/utils}/syscache.h +9 -1
  410. data/ext/pg_query/include/{utils → postgres/utils}/timeout.h +11 -4
  411. data/ext/pg_query/include/{utils → postgres/utils}/timestamp.h +46 -15
  412. data/ext/pg_query/include/{utils → postgres/utils}/tuplesort.h +209 -41
  413. data/ext/pg_query/include/{utils → postgres/utils}/tuplestore.h +2 -2
  414. data/ext/pg_query/include/{utils → postgres/utils}/typcache.h +24 -17
  415. data/ext/pg_query/include/{utils → postgres/utils}/varlena.h +17 -3
  416. data/ext/pg_query/include/postgres/utils/wait_event.h +294 -0
  417. data/ext/pg_query/include/{utils → postgres/utils}/xml.h +18 -8
  418. data/ext/pg_query/include/{postgres.h → postgres/varatt.h} +65 -471
  419. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +7494 -6382
  420. data/ext/pg_query/include/protobuf/pg_query.pb.h +116922 -84792
  421. data/ext/pg_query/include/protobuf-c/protobuf-c.h +7 -3
  422. data/ext/pg_query/include/protobuf-c.h +7 -3
  423. data/ext/pg_query/pg_query.c +10 -1
  424. data/ext/pg_query/pg_query.pb-c.c +21026 -17002
  425. data/ext/pg_query/pg_query_deparse.c +1 -9896
  426. data/ext/pg_query/pg_query_fingerprint.c +162 -50
  427. data/ext/pg_query/pg_query_fingerprint.h +3 -1
  428. data/ext/pg_query/pg_query_internal.h +1 -1
  429. data/ext/pg_query/pg_query_json_plpgsql.c +56 -12
  430. data/ext/pg_query/pg_query_normalize.c +259 -64
  431. data/ext/pg_query/pg_query_outfuncs.h +1 -0
  432. data/ext/pg_query/pg_query_outfuncs_json.c +71 -16
  433. data/ext/pg_query/pg_query_outfuncs_protobuf.c +73 -12
  434. data/ext/pg_query/pg_query_parse.c +47 -5
  435. data/ext/pg_query/pg_query_parse_plpgsql.c +86 -21
  436. data/ext/pg_query/pg_query_readfuncs_protobuf.c +43 -8
  437. data/ext/pg_query/pg_query_ruby.c +6 -1
  438. data/ext/pg_query/pg_query_ruby_freebsd.sym +2 -0
  439. data/ext/pg_query/pg_query_scan.c +3 -2
  440. data/ext/pg_query/pg_query_split.c +6 -5
  441. data/ext/pg_query/postgres_deparse.c +11067 -0
  442. data/ext/pg_query/postgres_deparse.h +9 -0
  443. data/ext/pg_query/protobuf-c.c +34 -27
  444. data/ext/pg_query/src_backend_catalog_namespace.c +27 -10
  445. data/ext/pg_query/src_backend_catalog_pg_proc.c +4 -1
  446. data/ext/pg_query/src_backend_commands_define.c +11 -1
  447. data/ext/pg_query/src_backend_nodes_bitmapset.c +13 -70
  448. data/ext/pg_query/src_backend_nodes_copyfuncs.c +103 -5894
  449. data/ext/pg_query/src_backend_nodes_equalfuncs.c +102 -3830
  450. data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
  451. data/ext/pg_query/src_backend_nodes_list.c +99 -12
  452. data/ext/pg_query/src_backend_nodes_makefuncs.c +99 -4
  453. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +325 -131
  454. data/ext/pg_query/src_backend_nodes_nodes.c +38 -0
  455. data/ext/pg_query/src_backend_nodes_value.c +28 -19
  456. data/ext/pg_query/src_backend_parser_gram.c +36104 -32074
  457. data/ext/pg_query/src_backend_parser_parser.c +53 -8
  458. data/ext/pg_query/src_backend_parser_scan.c +4893 -3701
  459. data/ext/pg_query/src_backend_parser_scansup.c +4 -28
  460. data/ext/pg_query/src_backend_storage_ipc_ipc.c +13 -4
  461. data/ext/pg_query/src_backend_tcop_postgres.c +133 -105
  462. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +140 -0
  463. data/ext/pg_query/src_backend_utils_adt_datum.c +17 -7
  464. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  465. data/ext/pg_query/src_backend_utils_adt_format_type.c +6 -2
  466. data/ext/pg_query/src_backend_utils_adt_numutils.c +489 -0
  467. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +187 -19
  468. data/ext/pg_query/src_backend_utils_error_assert.c +17 -18
  469. data/ext/pg_query/src_backend_utils_error_elog.c +513 -318
  470. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +44 -17
  471. data/ext/pg_query/src_backend_utils_init_globals.c +9 -6
  472. data/ext/pg_query/src_backend_utils_mb_mbutils.c +74 -131
  473. data/ext/pg_query/src_backend_utils_misc_guc_tables.c +492 -0
  474. data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +163 -0
  475. data/ext/pg_query/src_backend_utils_mmgr_aset.c +453 -314
  476. data/ext/pg_query/src_backend_utils_mmgr_generation.c +1039 -0
  477. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +549 -76
  478. data/ext/pg_query/src_backend_utils_mmgr_slab.c +1021 -0
  479. data/ext/pg_query/src_common_encnames.c +4 -1
  480. data/ext/pg_query/src_common_hashfn.c +420 -0
  481. data/ext/pg_query/src_common_keywords.c +15 -2
  482. data/ext/pg_query/src_common_kwlist_d.h +545 -498
  483. data/ext/pg_query/src_common_kwlookup.c +1 -1
  484. data/ext/pg_query/src_common_psprintf.c +1 -1
  485. data/ext/pg_query/src_common_stringinfo.c +4 -4
  486. data/ext/pg_query/src_common_wchar.c +717 -113
  487. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +49 -22
  488. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -18
  489. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1136 -1195
  490. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  491. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +10 -10
  492. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +2 -2
  493. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +60 -60
  494. data/ext/pg_query/src_port_pg_bitutils.c +103 -40
  495. data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
  496. data/ext/pg_query/src_port_qsort.c +12 -224
  497. data/ext/pg_query/src_port_snprintf.c +51 -29
  498. data/ext/pg_query/src_port_strerror.c +9 -19
  499. data/ext/pg_query/src_port_strlcpy.c +79 -0
  500. data/lib/pg_query/deparse.rb +7 -1
  501. data/lib/pg_query/filter_columns.rb +7 -5
  502. data/lib/pg_query/fingerprint.rb +21 -9
  503. data/lib/pg_query/node.rb +18 -13
  504. data/lib/pg_query/param_refs.rb +1 -1
  505. data/lib/pg_query/parse.rb +141 -50
  506. data/lib/pg_query/pg_query_pb.rb +175 -3031
  507. data/lib/pg_query/treewalker.rb +26 -2
  508. data/lib/pg_query/truncate.rb +54 -8
  509. data/lib/pg_query/version.rb +1 -1
  510. data/lib/pg_query.rb +0 -1
  511. metadata +443 -380
  512. data/ext/pg_query/guc-file.c +0 -0
  513. data/ext/pg_query/include/access/rmgr.h +0 -35
  514. data/ext/pg_query/include/access/xloginsert.h +0 -64
  515. data/ext/pg_query/include/bootstrap/bootstrap.h +0 -62
  516. data/ext/pg_query/include/catalog/genbki.h +0 -64
  517. data/ext/pg_query/include/catalog/indexing.h +0 -366
  518. data/ext/pg_query/include/commands/variable.h +0 -38
  519. data/ext/pg_query/include/common/ip.h +0 -37
  520. data/ext/pg_query/include/common/string.h +0 -19
  521. data/ext/pg_query/include/getaddrinfo.h +0 -162
  522. data/ext/pg_query/include/kwlist_d.h +0 -1072
  523. data/ext/pg_query/include/nodes/value.h +0 -61
  524. data/ext/pg_query/include/parser/gram.h +0 -1067
  525. data/ext/pg_query/include/parser/kwlist.h +0 -477
  526. data/ext/pg_query/include/parser/parse_clause.h +0 -54
  527. data/ext/pg_query/include/parser/parse_collate.h +0 -27
  528. data/ext/pg_query/include/parser/parse_target.h +0 -46
  529. data/ext/pg_query/include/parser/parser.h +0 -41
  530. data/ext/pg_query/include/pg_config_os.h +0 -8
  531. data/ext/pg_query/include/pgstat.h +0 -1487
  532. data/ext/pg_query/include/portability/instr_time.h +0 -256
  533. data/ext/pg_query/include/postmaster/fork_process.h +0 -17
  534. data/ext/pg_query/include/replication/logicalproto.h +0 -110
  535. data/ext/pg_query/include/replication/logicalworker.h +0 -19
  536. data/ext/pg_query/include/replication/reorderbuffer.h +0 -467
  537. data/ext/pg_query/include/storage/relfilenode.h +0 -99
  538. data/ext/pg_query/include/utils/dynahash.h +0 -19
  539. data/ext/pg_query/include/utils/pg_lsn.h +0 -29
  540. data/ext/pg_query/include/utils/pidfile.h +0 -56
  541. data/ext/pg_query/include/utils/ps_status.h +0 -25
  542. data/ext/pg_query/include/utils/regproc.h +0 -28
  543. data/ext/pg_query/include/utils/rls.h +0 -50
  544. data/ext/pg_query/include/utils/tzparser.h +0 -39
  545. data/ext/pg_query/src_backend_libpq_pqcomm.c +0 -651
  546. data/ext/pg_query/src_backend_parser_parse_expr.c +0 -313
  547. data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2230
  548. data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -370
  549. data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1086
  550. data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1831
  551. data/ext/pg_query/src_common_string.c +0 -86
  552. data/ext/pg_query/src_port_erand48.c +0 -127
  553. data/ext/pg_query/src_port_pgsleep.c +0 -69
  554. data/ext/pg_query/src_port_random.c +0 -31
  555. data/ext/pg_query/src_port_strnlen.c +0 -39
  556. data/lib/pg_query/json_field_names.rb +0 -1402
  557. /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
@@ -1,5 +1,3 @@
1
- // Ensure we have asprintf's definition on glibc-based platforms to avoid compiler warnings
2
- #define _GNU_SOURCE
3
1
  #include <stdio.h>
4
2
 
5
3
  #include "pg_query.h"
@@ -17,6 +15,8 @@
17
15
  #include "nodes/parsenodes.h"
18
16
  #include "nodes/value.h"
19
17
 
18
+ #include "common/hashfn.h"
19
+
20
20
  #include <unistd.h>
21
21
  #include <fcntl.h>
22
22
 
@@ -26,15 +26,41 @@ typedef struct FingerprintContext
26
26
  {
27
27
  XXH3_state_t *xxh_state;
28
28
 
29
+ struct listsort_cache_hash *listsort_cache;
30
+
29
31
  bool write_tokens;
30
32
  dlist_head tokens;
31
33
  } FingerprintContext;
32
34
 
33
- typedef struct FingerprintListContext
35
+ typedef struct FingerprintListsortItem
34
36
  {
35
37
  XXH64_hash_t hash;
36
38
  size_t list_pos;
37
- } FingerprintListContext;
39
+ } FingerprintListsortItem;
40
+
41
+ typedef struct FingerprintListsortItemCacheEntry
42
+ {
43
+ /* List node this cache entry is for */
44
+ uintptr_t node;
45
+
46
+ /* Hashes of all list items -- this is expensive to calculate */
47
+ FingerprintListsortItem **listsort_items;
48
+ size_t listsort_items_size;
49
+
50
+ /* hash entry status */
51
+ char status;
52
+ } FingerprintListsortItemCacheEntry;
53
+
54
+ #define SH_PREFIX listsort_cache
55
+ #define SH_ELEMENT_TYPE FingerprintListsortItemCacheEntry
56
+ #define SH_KEY_TYPE uintptr_t
57
+ #define SH_KEY node
58
+ #define SH_HASH_KEY(tb, key) hash_bytes((const unsigned char *) &key, sizeof(uintptr_t))
59
+ #define SH_EQUAL(tb, a, b) a == b
60
+ #define SH_SCOPE static inline
61
+ #define SH_DEFINE
62
+ #define SH_DECLARE
63
+ #include "lib/simplehash.h"
38
64
 
39
65
  typedef struct FingerprintToken
40
66
  {
@@ -43,7 +69,7 @@ typedef struct FingerprintToken
43
69
  } FingerprintToken;
44
70
 
45
71
  static void _fingerprintNode(FingerprintContext *ctx, const void *obj, const void *parent, char *parent_field_name, unsigned int depth);
46
- static void _fingerprintInitContext(FingerprintContext *ctx, bool write_tokens);
72
+ static void _fingerprintInitContext(FingerprintContext *ctx, FingerprintContext *parent, bool write_tokens);
47
73
  static void _fingerprintFreeContext(FingerprintContext *ctx);
48
74
 
49
75
  #define PG_QUERY_FINGERPRINT_VERSION 3
@@ -65,41 +91,55 @@ _fingerprintString(FingerprintContext *ctx, const char *str)
65
91
  }
66
92
 
67
93
  static void
68
- _fingerprintInteger(FingerprintContext *ctx, const Value *node)
94
+ _fingerprintInteger(FingerprintContext *ctx, const union ValUnion *value)
69
95
  {
70
- if (node->val.ival != 0) {
96
+ if (value->ival.ival != 0) {
71
97
  _fingerprintString(ctx, "Integer");
72
98
  _fingerprintString(ctx, "ival");
73
99
  char buffer[50];
74
- sprintf(buffer, "%d", node->val.ival);
100
+ sprintf(buffer, "%d", value->ival.ival);
75
101
  _fingerprintString(ctx, buffer);
76
102
  }
77
103
  }
78
104
 
79
105
  static void
80
- _fingerprintFloat(FingerprintContext *ctx, const Value *node)
106
+ _fingerprintFloat(FingerprintContext *ctx, const union ValUnion *value)
81
107
  {
82
- if (node->val.str != NULL) {
108
+ if (value->fval.fval != NULL) {
109
+ // NB: We output `str` here intentionally, to match the output format from libpg_query 14
110
+ // and below. This results in stable fingerprints, despite the field name being changed in
111
+ // PG15 to `fval`.
83
112
  _fingerprintString(ctx, "Float");
84
113
  _fingerprintString(ctx, "str");
85
- _fingerprintString(ctx, node->val.str);
114
+ _fingerprintString(ctx, value->fval.fval);
86
115
  }
87
116
  }
88
117
 
89
118
  static void
90
- _fingerprintBitString(FingerprintContext *ctx, const Value *node)
119
+ _fingerprintBoolean(FingerprintContext *ctx, const union ValUnion *value)
91
120
  {
92
- if (node->val.str != NULL) {
121
+ _fingerprintString(ctx, "Boolean");
122
+ _fingerprintString(ctx, "boolval");
123
+ _fingerprintString(ctx, value->boolval.boolval ? "true" : "false");
124
+ }
125
+
126
+ static void
127
+ _fingerprintBitString(FingerprintContext *ctx, const union ValUnion *value)
128
+ {
129
+ if (value->bsval.bsval != NULL) {
130
+ // NB: We output `str` here intentionally, to match the output format from libpg_query 14
131
+ // and below. This results in stable fingerprints, despite the field name being changed in
132
+ // PG15 to `bsval`.
93
133
  _fingerprintString(ctx, "BitString");
94
134
  _fingerprintString(ctx, "str");
95
- _fingerprintString(ctx, node->val.str);
135
+ _fingerprintString(ctx, value->bsval.bsval);
96
136
  }
97
137
  }
98
138
 
99
- static int compareFingerprintListContext(const void *a, const void *b)
139
+ static int compareFingerprintListsortItem(const void *a, const void *b)
100
140
  {
101
- FingerprintListContext *ca = *(FingerprintListContext**) a;
102
- FingerprintListContext *cb = *(FingerprintListContext**) b;
141
+ FingerprintListsortItem *ca = *(FingerprintListsortItem**) a;
142
+ FingerprintListsortItem *cb = *(FingerprintListsortItem**) b;
103
143
  if (ca->hash > cb->hash)
104
144
  return 1;
105
145
  else if (ca->hash < cb->hash)
@@ -111,38 +151,69 @@ static void
111
151
  _fingerprintList(FingerprintContext *ctx, const List *node, const void *parent, char *field_name, unsigned int depth)
112
152
  {
113
153
  if (field_name != NULL && (strcmp(field_name, "fromClause") == 0 || strcmp(field_name, "targetList") == 0 ||
114
- strcmp(field_name, "cols") == 0 || strcmp(field_name, "rexpr") == 0 || strcmp(field_name, "valuesLists") == 0 ||
115
- strcmp(field_name, "args") == 0)) {
154
+ strcmp(field_name, "cols") == 0 || strcmp(field_name, "rexpr") == 0 || strcmp(field_name, "valuesLists") == 0 ||
155
+ strcmp(field_name, "args") == 0))
156
+ {
157
+ /*
158
+ * Check for cached values for the hashes of subnodes
159
+ *
160
+ * Note this cache is important so we avoid exponential runtime behavior,
161
+ * which would be the case if we fingerprinted each node twice, which
162
+ * then would also again have to fingerprint each of its subnodes twice,
163
+ * etc., leading to deep nodes to be fingerprinted many many times over.
164
+ *
165
+ * We have seen real-world problems with this logic here without
166
+ * a cache in place.
167
+ */
168
+ FingerprintListsortItem** listsort_items = NULL;
169
+ size_t listsort_items_size = 0;
170
+ FingerprintListsortItemCacheEntry *entry = listsort_cache_lookup(ctx->listsort_cache, (uintptr_t) node);
171
+ if (entry != NULL)
172
+ {
173
+ listsort_items = entry->listsort_items;
174
+ listsort_items_size = entry->listsort_items_size;
175
+ }
176
+ else
177
+ {
178
+ listsort_items = palloc0(node->length * sizeof(FingerprintListsortItem*));
179
+ listsort_items_size = 0;
180
+ ListCell *lc;
181
+ bool found;
116
182
 
117
- FingerprintListContext** listCtxArr = palloc0(node->length * sizeof(FingerprintListContext*));
118
- size_t listCtxCount = 0;
119
- const ListCell *lc;
183
+ foreach(lc, node)
184
+ {
185
+ FingerprintContext fctx;
186
+ FingerprintListsortItem* lctx = palloc0(sizeof(FingerprintListsortItem));
120
187
 
121
- foreach(lc, node)
122
- {
123
- FingerprintContext subCtx;
124
- FingerprintListContext* listCtx = palloc0(sizeof(FingerprintListContext));
188
+ _fingerprintInitContext(&fctx, ctx, false);
189
+ _fingerprintNode(&fctx, lfirst(lc), parent, field_name, depth + 1);
190
+ lctx->hash = XXH3_64bits_digest(fctx.xxh_state);
191
+ lctx->list_pos = listsort_items_size;
192
+ _fingerprintFreeContext(&fctx);
125
193
 
126
- _fingerprintInitContext(&subCtx, false);
127
- _fingerprintNode(&subCtx, lfirst(lc), parent, field_name, depth + 1);
128
- listCtx->hash = XXH3_64bits_digest(subCtx.xxh_state);
129
- listCtx->list_pos = listCtxCount;
130
- _fingerprintFreeContext(&subCtx);
194
+ listsort_items[listsort_items_size] = lctx;
195
+ listsort_items_size += 1;
196
+ }
131
197
 
132
- listCtxArr[listCtxCount] = listCtx;
133
- listCtxCount += 1;
134
- }
198
+ pg_qsort(listsort_items, listsort_items_size, sizeof(FingerprintListsortItem*), compareFingerprintListsortItem);
199
+
200
+ FingerprintListsortItemCacheEntry *entry = listsort_cache_insert(ctx->listsort_cache, (uintptr_t) node, &found);
201
+ Assert(!found);
135
202
 
136
- pg_qsort(listCtxArr, listCtxCount, sizeof(FingerprintListContext*), compareFingerprintListContext);
203
+ entry->listsort_items = listsort_items;
204
+ entry->listsort_items_size = listsort_items_size;
205
+ }
137
206
 
138
- for (size_t i = 0; i < listCtxCount; i++)
207
+ for (size_t i = 0; i < listsort_items_size; i++)
139
208
  {
140
- if (i > 0 && listCtxArr[i - 1]->hash == listCtxArr[i]->hash)
209
+ if (i > 0 && listsort_items[i - 1]->hash == listsort_items[i]->hash)
141
210
  continue; // Ignore duplicates
142
211
 
143
- _fingerprintNode(ctx, lfirst(list_nth_cell(node, listCtxArr[i]->list_pos)), parent, field_name, depth + 1);
212
+ _fingerprintNode(ctx, lfirst(list_nth_cell(node, listsort_items[i]->list_pos)), parent, field_name, depth + 1);
144
213
  }
145
- } else {
214
+ }
215
+ else
216
+ {
146
217
  const ListCell *lc;
147
218
 
148
219
  foreach(lc, node)
@@ -155,15 +226,28 @@ _fingerprintList(FingerprintContext *ctx, const List *node, const void *parent,
155
226
  }
156
227
 
157
228
  static void
158
- _fingerprintInitContext(FingerprintContext *ctx, bool write_tokens) {
229
+ _fingerprintInitContext(FingerprintContext *ctx, FingerprintContext *parent, bool write_tokens)
230
+ {
159
231
  ctx->xxh_state = XXH3_createState();
160
232
  if (ctx->xxh_state == NULL) abort();
161
233
  if (XXH3_64bits_reset_withSeed(ctx->xxh_state, PG_QUERY_FINGERPRINT_VERSION) == XXH_ERROR) abort();
162
234
 
163
- if (write_tokens) {
235
+ if (parent != NULL)
236
+ {
237
+ ctx->listsort_cache = parent->listsort_cache;
238
+ }
239
+ else
240
+ {
241
+ ctx->listsort_cache = listsort_cache_create(CurrentMemoryContext, 128, NULL);
242
+ }
243
+
244
+ if (write_tokens)
245
+ {
164
246
  ctx->write_tokens = true;
165
247
  dlist_init(&ctx->tokens);
166
- } else {
248
+ }
249
+ else
250
+ {
167
251
  ctx->write_tokens = false;
168
252
  }
169
253
  }
@@ -200,10 +284,16 @@ _fingerprintNode(FingerprintContext *ctx, const void *obj, const void *parent, c
200
284
  case T_Float:
201
285
  _fingerprintFloat(ctx, obj);
202
286
  break;
287
+ case T_Boolean:
288
+ _fingerprintBoolean(ctx, obj);
289
+ break;
203
290
  case T_String:
291
+ // NB: We output `str` here intentionally, to match the output format from libpg_query
292
+ // 14 and below. This results in stable fingerprints, despite the field name being
293
+ // changed in PG15 to `sval`.
204
294
  _fingerprintString(ctx, "String");
205
295
  _fingerprintString(ctx, "str");
206
- _fingerprintString(ctx, ((Value*) obj)->val.str);
296
+ _fingerprintString(ctx, ((union ValUnion*) obj)->sval.sval);
207
297
  break;
208
298
  case T_BitString:
209
299
  _fingerprintBitString(ctx, obj);
@@ -219,7 +309,22 @@ _fingerprintNode(FingerprintContext *ctx, const void *obj, const void *parent, c
219
309
  }
220
310
  }
221
311
 
222
- PgQueryFingerprintResult pg_query_fingerprint_with_opts(const char* input, bool printTokens)
312
+ uint64_t pg_query_fingerprint_node(const void *node)
313
+ {
314
+ FingerprintContext ctx;
315
+ uint64 result;
316
+
317
+ _fingerprintInitContext(&ctx, NULL, false);
318
+ _fingerprintNode(&ctx, node, NULL, NULL, 0);
319
+
320
+ result = XXH3_64bits_digest(ctx.xxh_state);
321
+
322
+ _fingerprintFreeContext(&ctx);
323
+
324
+ return result;
325
+ }
326
+
327
+ PgQueryFingerprintResult pg_query_fingerprint_with_opts(const char* input, int parser_options, bool printTokens)
223
328
  {
224
329
  MemoryContext ctx = NULL;
225
330
  PgQueryInternalParsetreeAndError parsetree_and_error;
@@ -227,7 +332,7 @@ PgQueryFingerprintResult pg_query_fingerprint_with_opts(const char* input, bool
227
332
 
228
333
  ctx = pg_query_enter_memory_context();
229
334
 
230
- parsetree_and_error = pg_query_raw_parse(input);
335
+ parsetree_and_error = pg_query_raw_parse(input, parser_options);
231
336
 
232
337
  // These are all malloc-ed and will survive exiting the memory context, the caller is responsible to free them now
233
338
  result.stderr_buffer = parsetree_and_error.stderr_buffer;
@@ -237,7 +342,7 @@ PgQueryFingerprintResult pg_query_fingerprint_with_opts(const char* input, bool
237
342
  FingerprintContext ctx;
238
343
  XXH64_canonical_t chash;
239
344
 
240
- _fingerprintInitContext(&ctx, printTokens);
345
+ _fingerprintInitContext(&ctx, NULL, printTokens);
241
346
 
242
347
  if (parsetree_and_error.tree != NULL) {
243
348
  _fingerprintNode(&ctx, parsetree_and_error.tree, NULL, NULL, 0);
@@ -262,12 +367,13 @@ PgQueryFingerprintResult pg_query_fingerprint_with_opts(const char* input, bool
262
367
  _fingerprintFreeContext(&ctx);
263
368
 
264
369
  XXH64_canonicalFromHash(&chash, result.fingerprint);
265
- int err = asprintf(&result.fingerprint_str, "%02x%02x%02x%02x%02x%02x%02x%02x",
370
+ result.fingerprint_str = malloc(17 * sizeof(char));
371
+ int n = snprintf(result.fingerprint_str, 17, "%02x%02x%02x%02x%02x%02x%02x%02x",
266
372
  chash.digest[0], chash.digest[1], chash.digest[2], chash.digest[3],
267
373
  chash.digest[4], chash.digest[5], chash.digest[6], chash.digest[7]);
268
- if (err == -1) {
374
+ if (n < 0 || n >= 17) {
269
375
  PgQueryError* error = malloc(sizeof(PgQueryError));
270
- error->message = strdup("Failed to output fingerprint string due to asprintf failure");
376
+ error->message = strdup("Failed to output fingerprint string due to snprintf failure");
271
377
  result.error = error;
272
378
  }
273
379
  }
@@ -279,7 +385,12 @@ PgQueryFingerprintResult pg_query_fingerprint_with_opts(const char* input, bool
279
385
 
280
386
  PgQueryFingerprintResult pg_query_fingerprint(const char* input)
281
387
  {
282
- return pg_query_fingerprint_with_opts(input, false);
388
+ return pg_query_fingerprint_with_opts(input, PG_QUERY_PARSE_DEFAULT, false);
389
+ }
390
+
391
+ PgQueryFingerprintResult pg_query_fingerprint_opts(const char* input, int parser_options)
392
+ {
393
+ return pg_query_fingerprint_with_opts(input, parser_options, false);
283
394
  }
284
395
 
285
396
  void pg_query_free_fingerprint_result(PgQueryFingerprintResult result)
@@ -287,6 +398,7 @@ void pg_query_free_fingerprint_result(PgQueryFingerprintResult result)
287
398
  if (result.error) {
288
399
  free(result.error->message);
289
400
  free(result.error->filename);
401
+ free(result.error->funcname);
290
402
  free(result.error);
291
403
  }
292
404
 
@@ -3,6 +3,8 @@
3
3
 
4
4
  #include <stdbool.h>
5
5
 
6
- PgQueryFingerprintResult pg_query_fingerprint_with_opts(const char* input, bool printTokens);
6
+ extern PgQueryFingerprintResult pg_query_fingerprint_with_opts(const char* input, int parser_options, bool printTokens);
7
+
8
+ extern uint64_t pg_query_fingerprint_node(const void * node);
7
9
 
8
10
  #endif
@@ -14,7 +14,7 @@ typedef struct {
14
14
  PgQueryError* error;
15
15
  } PgQueryInternalParsetreeAndError;
16
16
 
17
- PgQueryInternalParsetreeAndError pg_query_raw_parse(const char* input);
17
+ PgQueryInternalParsetreeAndError pg_query_raw_parse(const char* input, int parser_options);
18
18
 
19
19
  void pg_query_free_error(PgQueryError *error);
20
20
 
@@ -96,7 +96,6 @@ static void dump_row(StringInfo out, PLpgSQL_row *stmt);
96
96
  static void dump_var(StringInfo out, PLpgSQL_var *stmt);
97
97
  static void dump_variable(StringInfo out, PLpgSQL_variable *stmt);
98
98
  static void dump_record_field(StringInfo out, PLpgSQL_recfield *node);
99
- static void dump_array_elem(StringInfo out, PLpgSQL_arrayelem *node);
100
99
  static void dump_stmt(StringInfo out, PLpgSQL_stmt *stmt);
101
100
  static void dump_block(StringInfo out, PLpgSQL_stmt_block *block);
102
101
  static void dump_exception_block(StringInfo out, PLpgSQL_exception_block *node);
@@ -117,6 +116,7 @@ static void dump_return_next(StringInfo out, PLpgSQL_stmt_return_next *stmt);
117
116
  static void dump_return_query(StringInfo out, PLpgSQL_stmt_return_query *stmt);
118
117
  static void dump_raise(StringInfo out, PLpgSQL_stmt_raise *stmt);
119
118
  static void dump_raise_option(StringInfo out, PLpgSQL_raise_option *node);
119
+ static void dump_assert(StringInfo out, PLpgSQL_stmt_assert *stmt);
120
120
  static void dump_execsql(StringInfo out, PLpgSQL_stmt_execsql *stmt);
121
121
  static void dump_dynexecute(StringInfo out, PLpgSQL_stmt_dynexecute *stmt);
122
122
  static void dump_dynfors(StringInfo out, PLpgSQL_stmt_dynfors *stmt);
@@ -126,6 +126,9 @@ static void dump_open(StringInfo out, PLpgSQL_stmt_open *stmt);
126
126
  static void dump_fetch(StringInfo out, PLpgSQL_stmt_fetch *stmt);
127
127
  static void dump_close(StringInfo out, PLpgSQL_stmt_close *stmt);
128
128
  static void dump_perform(StringInfo out, PLpgSQL_stmt_perform *stmt);
129
+ static void dump_call(StringInfo out, PLpgSQL_stmt_call *stmt);
130
+ static void dump_commit(StringInfo out, PLpgSQL_stmt_commit *stmt);
131
+ static void dump_rollback(StringInfo out, PLpgSQL_stmt_rollback *stmt);
129
132
  static void dump_expr(StringInfo out, PLpgSQL_expr *expr);
130
133
  static void dump_function(StringInfo out, PLpgSQL_function *func);
131
134
  static void dump_exception(StringInfo out, PLpgSQL_exception *node);
@@ -183,6 +186,9 @@ dump_stmt(StringInfo out, PLpgSQL_stmt *node)
183
186
  case PLPGSQL_STMT_RAISE:
184
187
  dump_raise(out, (PLpgSQL_stmt_raise *) node);
185
188
  break;
189
+ case PLPGSQL_STMT_ASSERT:
190
+ dump_assert(out, (PLpgSQL_stmt_assert *) node);
191
+ break;
186
192
  case PLPGSQL_STMT_EXECSQL:
187
193
  dump_execsql(out, (PLpgSQL_stmt_execsql *) node);
188
194
  break;
@@ -207,6 +213,15 @@ dump_stmt(StringInfo out, PLpgSQL_stmt *node)
207
213
  case PLPGSQL_STMT_PERFORM:
208
214
  dump_perform(out, (PLpgSQL_stmt_perform *) node);
209
215
  break;
216
+ case PLPGSQL_STMT_CALL:
217
+ dump_call(out, (PLpgSQL_stmt_call *) node);
218
+ break;
219
+ case PLPGSQL_STMT_COMMIT:
220
+ dump_commit(out, (PLpgSQL_stmt_commit *) node);
221
+ break;
222
+ case PLPGSQL_STMT_ROLLBACK:
223
+ dump_rollback(out, (PLpgSQL_stmt_rollback *) node);
224
+ break;
210
225
  default:
211
226
  elog(ERROR, "unrecognized cmd_type: %d", node->cmd_type);
212
227
  break;
@@ -444,6 +459,35 @@ dump_perform(StringInfo out, PLpgSQL_stmt_perform *node)
444
459
  WRITE_EXPR_FIELD(expr);
445
460
  }
446
461
 
462
+ static void
463
+ dump_call(StringInfo out, PLpgSQL_stmt_call *node)
464
+ {
465
+ WRITE_NODE_TYPE("PLpgSQL_stmt_call");
466
+
467
+ WRITE_INT_FIELD(lineno, lineno, lineno);
468
+ WRITE_EXPR_FIELD(expr);
469
+ WRITE_BOOL_FIELD(is_call, is_call, is_call);
470
+ WRITE_VARIABLE_FIELD(target);
471
+ }
472
+
473
+ static void
474
+ dump_commit(StringInfo out, PLpgSQL_stmt_commit *node)
475
+ {
476
+ WRITE_NODE_TYPE("PLpgSQL_stmt_commit");
477
+
478
+ WRITE_INT_FIELD(lineno, lineno, lineno);
479
+ WRITE_BOOL_FIELD(chain, chain, chain);
480
+ }
481
+
482
+ static void
483
+ dump_rollback(StringInfo out, PLpgSQL_stmt_rollback *node)
484
+ {
485
+ WRITE_NODE_TYPE("PLpgSQL_stmt_rollback");
486
+
487
+ WRITE_INT_FIELD(lineno, lineno, lineno);
488
+ WRITE_BOOL_FIELD(chain, chain, chain);
489
+ }
490
+
447
491
  static void
448
492
  dump_exit(StringInfo out, PLpgSQL_stmt_exit *node)
449
493
  {
@@ -508,6 +552,16 @@ dump_raise_option(StringInfo out, PLpgSQL_raise_option *node)
508
552
  WRITE_EXPR_FIELD(expr);
509
553
  }
510
554
 
555
+ static void
556
+ dump_assert(StringInfo out, PLpgSQL_stmt_assert *node)
557
+ {
558
+ WRITE_NODE_TYPE("PLpgSQL_stmt_assert");
559
+
560
+ WRITE_INT_FIELD(lineno, lineno, lineno);
561
+ WRITE_EXPR_FIELD(cond);
562
+ WRITE_EXPR_FIELD(message);
563
+ }
564
+
511
565
  static void
512
566
  dump_execsql(StringInfo out, PLpgSQL_stmt_execsql *node)
513
567
  {
@@ -572,6 +626,7 @@ dump_expr(StringInfo out, PLpgSQL_expr *node)
572
626
  WRITE_NODE_TYPE("PLpgSQL_expr");
573
627
 
574
628
  WRITE_STRING_FIELD(query, query, query);
629
+ WRITE_ENUM_FIELD(parseMode, parseMode, parseMode);
575
630
  }
576
631
 
577
632
  static void
@@ -605,9 +660,6 @@ dump_function(StringInfo out, PLpgSQL_function *node)
605
660
  case PLPGSQL_DTYPE_RECFIELD:
606
661
  dump_record_field(out, (PLpgSQL_recfield *) d);
607
662
  break;
608
- case PLPGSQL_DTYPE_ARRAYELEM:
609
- dump_array_elem(out, (PLpgSQL_arrayelem *) d);
610
- break;
611
663
  default:
612
664
  elog(WARNING, "could not dump unrecognized dtype: %d",
613
665
  (int) d->dtype);
@@ -712,14 +764,6 @@ dump_record_field(StringInfo out, PLpgSQL_recfield *node) {
712
764
  WRITE_INT_FIELD(recparentno, recparentno, recparentno);
713
765
  }
714
766
 
715
- static void
716
- dump_array_elem(StringInfo out, PLpgSQL_arrayelem *node) {
717
- WRITE_NODE_TYPE("PLpgSQL_arrayelem");
718
-
719
- WRITE_EXPR_FIELD(subscript);
720
- WRITE_INT_FIELD(arrayparentno, arrayparentno, arrayparentno);
721
- }
722
-
723
767
  char *
724
768
  plpgsqlToJSON(PLpgSQL_function *func)
725
769
  {