pg_query 5.0.0 → 6.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (898) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +27 -0
  3. data/README.md +1 -1
  4. data/Rakefile +3 -4
  5. data/ext/pg_query/extconf.rb +14 -4
  6. data/ext/pg_query/include/pg_query.h +4 -3
  7. data/ext/pg_query/include/pg_query_enum_defs.c +424 -154
  8. data/ext/pg_query/include/pg_query_fingerprint_conds.c +68 -4
  9. data/ext/pg_query/include/pg_query_fingerprint_defs.c +2901 -1794
  10. data/ext/pg_query/include/pg_query_outfuncs_conds.c +51 -3
  11. data/ext/pg_query/include/pg_query_outfuncs_defs.c +211 -24
  12. data/ext/pg_query/include/pg_query_readfuncs_conds.c +17 -1
  13. data/ext/pg_query/include/pg_query_readfuncs_defs.c +272 -53
  14. data/ext/pg_query/include/postgres/access/amapi.h +299 -0
  15. data/ext/pg_query/include/postgres/access/attmap.h +54 -0
  16. data/ext/pg_query/include/postgres/access/attnum.h +64 -0
  17. data/ext/pg_query/include/postgres/access/brin_internal.h +116 -0
  18. data/ext/pg_query/include/postgres/access/brin_tuple.h +112 -0
  19. data/ext/pg_query/include/postgres/access/clog.h +62 -0
  20. data/ext/pg_query/include/postgres/access/commit_ts.h +73 -0
  21. data/ext/pg_query/include/postgres/access/detoast.h +82 -0
  22. data/ext/pg_query/include/postgres/access/genam.h +237 -0
  23. data/ext/pg_query/include/postgres/access/gin.h +91 -0
  24. data/ext/pg_query/include/postgres/access/htup.h +89 -0
  25. data/ext/pg_query/include/postgres/access/htup_details.h +811 -0
  26. data/ext/pg_query/include/postgres/access/itup.h +170 -0
  27. data/ext/pg_query/include/postgres/access/parallel.h +81 -0
  28. data/ext/pg_query/include/postgres/access/printtup.h +35 -0
  29. data/ext/pg_query/include/postgres/access/relation.h +28 -0
  30. data/ext/pg_query/include/postgres/access/relscan.h +191 -0
  31. data/ext/pg_query/include/postgres/access/rmgrlist.h +49 -0
  32. data/ext/pg_query/include/postgres/access/sdir.h +67 -0
  33. data/ext/pg_query/include/postgres/access/skey.h +151 -0
  34. data/ext/pg_query/include/postgres/access/slru.h +221 -0
  35. data/ext/pg_query/include/postgres/access/stratnum.h +85 -0
  36. data/ext/pg_query/include/postgres/access/sysattr.h +29 -0
  37. data/ext/pg_query/include/postgres/access/table.h +28 -0
  38. data/ext/pg_query/include/postgres/access/tableam.h +2109 -0
  39. data/ext/pg_query/include/postgres/access/tidstore.h +50 -0
  40. data/ext/pg_query/include/postgres/access/toast_compression.h +73 -0
  41. data/ext/pg_query/include/postgres/access/transam.h +375 -0
  42. data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
  43. data/ext/pg_query/include/postgres/access/tupconvert.h +54 -0
  44. data/ext/pg_query/include/postgres/access/tupdesc.h +154 -0
  45. data/ext/pg_query/include/postgres/access/tupmacs.h +207 -0
  46. data/ext/pg_query/include/postgres/access/twophase.h +65 -0
  47. data/ext/pg_query/include/postgres/access/xact.h +530 -0
  48. data/ext/pg_query/include/postgres/access/xlog.h +310 -0
  49. data/ext/pg_query/include/postgres/access/xlog_internal.h +405 -0
  50. data/ext/pg_query/include/postgres/access/xlogbackup.h +43 -0
  51. data/ext/pg_query/include/postgres/access/xlogdefs.h +82 -0
  52. data/ext/pg_query/include/postgres/access/xlogprefetcher.h +55 -0
  53. data/ext/pg_query/include/postgres/access/xlogreader.h +444 -0
  54. data/ext/pg_query/include/postgres/access/xlogrecord.h +248 -0
  55. data/ext/pg_query/include/postgres/access/xlogrecovery.h +158 -0
  56. data/ext/pg_query/include/postgres/archive/archive_module.h +67 -0
  57. data/ext/pg_query/include/postgres/c.h +1374 -0
  58. data/ext/pg_query/include/postgres/catalog/catalog.h +47 -0
  59. data/ext/pg_query/include/postgres/catalog/catversion.h +62 -0
  60. data/ext/pg_query/include/postgres/catalog/dependency.h +228 -0
  61. data/ext/pg_query/include/postgres/catalog/genbki.h +149 -0
  62. data/ext/pg_query/include/postgres/catalog/index.h +218 -0
  63. data/ext/pg_query/include/postgres/catalog/indexing.h +54 -0
  64. data/ext/pg_query/include/postgres/catalog/namespace.h +189 -0
  65. data/ext/pg_query/include/postgres/catalog/objectaccess.h +267 -0
  66. data/ext/pg_query/include/postgres/catalog/objectaddress.h +89 -0
  67. data/ext/pg_query/include/postgres/catalog/pg_aggregate.h +182 -0
  68. data/ext/pg_query/include/postgres/catalog/pg_aggregate_d.h +78 -0
  69. data/ext/pg_query/include/postgres/catalog/pg_am.h +66 -0
  70. data/ext/pg_query/include/postgres/catalog/pg_am_d.h +47 -0
  71. data/ext/pg_query/include/postgres/catalog/pg_attribute.h +240 -0
  72. data/ext/pg_query/include/postgres/catalog/pg_attribute_d.h +62 -0
  73. data/ext/pg_query/include/postgres/catalog/pg_authid.h +66 -0
  74. data/ext/pg_query/include/postgres/catalog/pg_authid_d.h +60 -0
  75. data/ext/pg_query/include/postgres/catalog/pg_class.h +235 -0
  76. data/ext/pg_query/include/postgres/catalog/pg_class_d.h +134 -0
  77. data/ext/pg_query/include/postgres/catalog/pg_collation.h +106 -0
  78. data/ext/pg_query/include/postgres/catalog/pg_collation_d.h +66 -0
  79. data/ext/pg_query/include/postgres/catalog/pg_constraint.h +278 -0
  80. data/ext/pg_query/include/postgres/catalog/pg_constraint_d.h +74 -0
  81. data/ext/pg_query/include/postgres/catalog/pg_control.h +260 -0
  82. data/ext/pg_query/include/postgres/catalog/pg_conversion.h +79 -0
  83. data/ext/pg_query/include/postgres/catalog/pg_conversion_d.h +38 -0
  84. data/ext/pg_query/include/postgres/catalog/pg_database.h +129 -0
  85. data/ext/pg_query/include/postgres/catalog/pg_database_d.h +53 -0
  86. data/ext/pg_query/include/postgres/catalog/pg_depend.h +77 -0
  87. data/ext/pg_query/include/postgres/catalog/pg_depend_d.h +36 -0
  88. data/ext/pg_query/include/postgres/catalog/pg_event_trigger.h +60 -0
  89. data/ext/pg_query/include/postgres/catalog/pg_event_trigger_d.h +36 -0
  90. data/ext/pg_query/include/postgres/catalog/pg_index.h +92 -0
  91. data/ext/pg_query/include/postgres/catalog/pg_index_d.h +59 -0
  92. data/ext/pg_query/include/postgres/catalog/pg_language.h +75 -0
  93. data/ext/pg_query/include/postgres/catalog/pg_language_d.h +41 -0
  94. data/ext/pg_query/include/postgres/catalog/pg_namespace.h +67 -0
  95. data/ext/pg_query/include/postgres/catalog/pg_namespace_d.h +36 -0
  96. data/ext/pg_query/include/postgres/catalog/pg_opclass.h +91 -0
  97. data/ext/pg_query/include/postgres/catalog/pg_opclass_d.h +51 -0
  98. data/ext/pg_query/include/postgres/catalog/pg_operator.h +124 -0
  99. data/ext/pg_query/include/postgres/catalog/pg_operator_d.h +142 -0
  100. data/ext/pg_query/include/postgres/catalog/pg_opfamily.h +67 -0
  101. data/ext/pg_query/include/postgres/catalog/pg_opfamily_d.h +51 -0
  102. data/ext/pg_query/include/postgres/catalog/pg_partitioned_table.h +76 -0
  103. data/ext/pg_query/include/postgres/catalog/pg_partitioned_table_d.h +36 -0
  104. data/ext/pg_query/include/postgres/catalog/pg_proc.h +223 -0
  105. data/ext/pg_query/include/postgres/catalog/pg_proc_d.h +101 -0
  106. data/ext/pg_query/include/postgres/catalog/pg_publication.h +161 -0
  107. data/ext/pg_query/include/postgres/catalog/pg_publication_d.h +38 -0
  108. data/ext/pg_query/include/postgres/catalog/pg_replication_origin.h +65 -0
  109. data/ext/pg_query/include/postgres/catalog/pg_replication_origin_d.h +33 -0
  110. data/ext/pg_query/include/postgres/catalog/pg_statistic.h +288 -0
  111. data/ext/pg_query/include/postgres/catalog/pg_statistic_d.h +199 -0
  112. data/ext/pg_query/include/postgres/catalog/pg_statistic_ext.h +91 -0
  113. data/ext/pg_query/include/postgres/catalog/pg_statistic_ext_d.h +45 -0
  114. data/ext/pg_query/include/postgres/catalog/pg_transform.h +51 -0
  115. data/ext/pg_query/include/postgres/catalog/pg_transform_d.h +34 -0
  116. data/ext/pg_query/include/postgres/catalog/pg_trigger.h +153 -0
  117. data/ext/pg_query/include/postgres/catalog/pg_trigger_d.h +109 -0
  118. data/ext/pg_query/include/postgres/catalog/pg_ts_config.h +56 -0
  119. data/ext/pg_query/include/postgres/catalog/pg_ts_config_d.h +34 -0
  120. data/ext/pg_query/include/postgres/catalog/pg_ts_dict.h +62 -0
  121. data/ext/pg_query/include/postgres/catalog/pg_ts_dict_d.h +35 -0
  122. data/ext/pg_query/include/postgres/catalog/pg_ts_parser.h +63 -0
  123. data/ext/pg_query/include/postgres/catalog/pg_ts_parser_d.h +37 -0
  124. data/ext/pg_query/include/postgres/catalog/pg_ts_template.h +54 -0
  125. data/ext/pg_query/include/postgres/catalog/pg_ts_template_d.h +34 -0
  126. data/ext/pg_query/include/postgres/catalog/pg_type.h +407 -0
  127. data/ext/pg_query/include/postgres/catalog/pg_type_d.h +324 -0
  128. data/ext/pg_query/include/postgres/catalog/storage.h +50 -0
  129. data/ext/pg_query/include/postgres/catalog/syscache_ids.h +104 -0
  130. data/ext/pg_query/include/postgres/commands/async.h +49 -0
  131. data/ext/pg_query/include/postgres/commands/dbcommands.h +37 -0
  132. data/ext/pg_query/include/postgres/commands/defrem.h +161 -0
  133. data/ext/pg_query/include/postgres/commands/event_trigger.h +91 -0
  134. data/ext/pg_query/include/postgres/commands/explain.h +145 -0
  135. data/ext/pg_query/include/postgres/commands/prepare.h +61 -0
  136. data/ext/pg_query/include/postgres/commands/tablespace.h +69 -0
  137. data/ext/pg_query/include/postgres/commands/trigger.h +288 -0
  138. data/ext/pg_query/include/postgres/commands/vacuum.h +388 -0
  139. data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
  140. data/ext/pg_query/include/postgres/common/file_perm.h +56 -0
  141. data/ext/pg_query/include/postgres/common/file_utils.h +65 -0
  142. data/ext/pg_query/include/postgres/common/hashfn.h +119 -0
  143. data/ext/pg_query/include/postgres/common/hashfn_unstable.h +453 -0
  144. data/ext/pg_query/include/postgres/common/int.h +512 -0
  145. data/ext/pg_query/include/postgres/common/keywords.h +29 -0
  146. data/ext/pg_query/include/postgres/common/kwlookup.h +44 -0
  147. data/ext/pg_query/include/postgres/common/pg_prng.h +62 -0
  148. data/ext/pg_query/include/postgres/common/relpath.h +97 -0
  149. data/ext/pg_query/include/postgres/common/scram-common.h +70 -0
  150. data/ext/pg_query/include/postgres/common/sha2.h +32 -0
  151. data/ext/pg_query/include/postgres/common/string.h +44 -0
  152. data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +124 -0
  153. data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5261 -0
  154. data/ext/pg_query/include/postgres/copyfuncs.switch.c +989 -0
  155. data/ext/pg_query/include/postgres/datatype/timestamp.h +269 -0
  156. data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3310 -0
  157. data/ext/pg_query/include/postgres/equalfuncs.switch.c +836 -0
  158. data/ext/pg_query/include/postgres/executor/execdesc.h +70 -0
  159. data/ext/pg_query/include/postgres/executor/executor.h +681 -0
  160. data/ext/pg_query/include/postgres/executor/functions.h +56 -0
  161. data/ext/pg_query/include/postgres/executor/instrument.h +120 -0
  162. data/ext/pg_query/include/postgres/executor/spi.h +207 -0
  163. data/ext/pg_query/include/postgres/executor/tablefunc.h +67 -0
  164. data/ext/pg_query/include/postgres/executor/tuptable.h +523 -0
  165. data/ext/pg_query/include/postgres/fmgr.h +800 -0
  166. data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
  167. data/ext/pg_query/include/postgres/funcapi.h +360 -0
  168. data/ext/pg_query/include/postgres/gram.h +1168 -0
  169. data/ext/pg_query/include/postgres/gramparse.h +75 -0
  170. data/ext/pg_query/include/postgres/jit/jit.h +106 -0
  171. data/ext/pg_query/include/postgres/kwlist_d.h +1164 -0
  172. data/ext/pg_query/include/postgres/lib/dshash.h +130 -0
  173. data/ext/pg_query/include/postgres/lib/ilist.h +1159 -0
  174. data/ext/pg_query/include/postgres/lib/pairingheap.h +102 -0
  175. data/ext/pg_query/include/postgres/lib/simplehash.h +1206 -0
  176. data/ext/pg_query/include/postgres/lib/sort_template.h +445 -0
  177. data/ext/pg_query/include/postgres/lib/stringinfo.h +243 -0
  178. data/ext/pg_query/include/postgres/libpq/auth.h +37 -0
  179. data/ext/pg_query/include/postgres/libpq/crypt.h +47 -0
  180. data/ext/pg_query/include/postgres/libpq/hba.h +186 -0
  181. data/ext/pg_query/include/postgres/libpq/libpq-be.h +358 -0
  182. data/ext/pg_query/include/postgres/libpq/libpq.h +143 -0
  183. data/ext/pg_query/include/postgres/libpq/pqcomm.h +169 -0
  184. data/ext/pg_query/include/postgres/libpq/pqformat.h +209 -0
  185. data/ext/pg_query/include/postgres/libpq/pqsignal.h +54 -0
  186. data/ext/pg_query/include/postgres/libpq/protocol.h +89 -0
  187. data/ext/pg_query/include/postgres/libpq/sasl.h +136 -0
  188. data/ext/pg_query/include/postgres/libpq/scram.h +37 -0
  189. data/ext/pg_query/include/postgres/mb/pg_wchar.h +792 -0
  190. data/ext/pg_query/include/postgres/mb/stringinfo_mb.h +24 -0
  191. data/ext/pg_query/include/postgres/miscadmin.h +519 -0
  192. data/ext/pg_query/include/postgres/nodes/bitmapset.h +140 -0
  193. data/ext/pg_query/include/postgres/nodes/execnodes.h +2852 -0
  194. data/ext/pg_query/include/postgres/nodes/extensible.h +164 -0
  195. data/ext/pg_query/include/postgres/nodes/lockoptions.h +61 -0
  196. data/ext/pg_query/include/postgres/nodes/makefuncs.h +127 -0
  197. data/ext/pg_query/include/postgres/nodes/memnodes.h +152 -0
  198. data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
  199. data/ext/pg_query/include/postgres/nodes/nodeFuncs.h +222 -0
  200. data/ext/pg_query/include/postgres/nodes/nodes.h +435 -0
  201. data/ext/pg_query/include/postgres/nodes/nodetags.h +491 -0
  202. data/ext/pg_query/include/postgres/nodes/params.h +170 -0
  203. data/ext/pg_query/include/postgres/nodes/parsenodes.h +4233 -0
  204. data/ext/pg_query/include/postgres/nodes/pathnodes.h +3435 -0
  205. data/ext/pg_query/include/postgres/nodes/pg_list.h +686 -0
  206. data/ext/pg_query/include/postgres/nodes/plannodes.h +1593 -0
  207. data/ext/pg_query/include/postgres/nodes/primnodes.h +2335 -0
  208. data/ext/pg_query/include/postgres/nodes/print.h +34 -0
  209. data/ext/pg_query/include/postgres/nodes/queryjumble.h +86 -0
  210. data/ext/pg_query/include/postgres/nodes/replnodes.h +132 -0
  211. data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
  212. data/ext/pg_query/include/postgres/nodes/tidbitmap.h +75 -0
  213. data/ext/pg_query/include/postgres/nodes/value.h +90 -0
  214. data/ext/pg_query/include/postgres/optimizer/cost.h +216 -0
  215. data/ext/pg_query/include/postgres/optimizer/geqo.h +90 -0
  216. data/ext/pg_query/include/postgres/optimizer/geqo_gene.h +45 -0
  217. data/ext/pg_query/include/postgres/optimizer/optimizer.h +205 -0
  218. data/ext/pg_query/include/postgres/optimizer/paths.h +271 -0
  219. data/ext/pg_query/include/postgres/optimizer/planmain.h +123 -0
  220. data/ext/pg_query/include/postgres/parser/analyze.h +66 -0
  221. data/ext/pg_query/include/postgres/parser/kwlist.h +518 -0
  222. data/ext/pg_query/include/postgres/parser/parse_agg.h +65 -0
  223. data/ext/pg_query/include/postgres/parser/parse_coerce.h +102 -0
  224. data/ext/pg_query/include/postgres/parser/parse_expr.h +25 -0
  225. data/ext/pg_query/include/postgres/parser/parse_func.h +74 -0
  226. data/ext/pg_query/include/postgres/parser/parse_node.h +358 -0
  227. data/ext/pg_query/include/postgres/parser/parse_oper.h +68 -0
  228. data/ext/pg_query/include/postgres/parser/parse_relation.h +129 -0
  229. data/ext/pg_query/include/postgres/parser/parse_type.h +61 -0
  230. data/ext/pg_query/include/postgres/parser/parser.h +68 -0
  231. data/ext/pg_query/include/postgres/parser/parsetree.h +61 -0
  232. data/ext/pg_query/include/postgres/parser/scanner.h +152 -0
  233. data/ext/pg_query/include/postgres/parser/scansup.h +27 -0
  234. data/ext/pg_query/include/postgres/partitioning/partdefs.h +26 -0
  235. data/ext/pg_query/include/postgres/pg_config.h +977 -0
  236. data/ext/pg_query/include/postgres/pg_config_manual.h +385 -0
  237. data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
  238. data/ext/pg_query/include/postgres/pg_getopt.h +56 -0
  239. data/ext/pg_query/include/postgres/pg_trace.h +17 -0
  240. data/ext/pg_query/include/postgres/pgstat.h +780 -0
  241. data/ext/pg_query/include/postgres/pgtime.h +94 -0
  242. data/ext/pg_query/include/postgres/pl_gram.h +385 -0
  243. data/ext/pg_query/include/postgres/pl_reserved_kwlist.h +52 -0
  244. data/ext/pg_query/include/postgres/pl_reserved_kwlist_d.h +114 -0
  245. data/ext/pg_query/include/postgres/pl_unreserved_kwlist.h +112 -0
  246. data/ext/pg_query/include/postgres/pl_unreserved_kwlist_d.h +246 -0
  247. data/ext/pg_query/include/postgres/plerrcodes.h +998 -0
  248. data/ext/pg_query/include/postgres/plpgsql.h +1342 -0
  249. data/ext/pg_query/include/postgres/port/atomics/arch-arm.h +32 -0
  250. data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
  251. data/ext/pg_query/include/postgres/port/atomics/arch-ppc.h +256 -0
  252. data/ext/pg_query/include/postgres/port/atomics/arch-x86.h +254 -0
  253. data/ext/pg_query/include/postgres/port/atomics/fallback.h +170 -0
  254. data/ext/pg_query/include/postgres/port/atomics/generic-gcc.h +323 -0
  255. data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +119 -0
  256. data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +121 -0
  257. data/ext/pg_query/include/postgres/port/atomics/generic.h +437 -0
  258. data/ext/pg_query/include/postgres/port/atomics.h +606 -0
  259. data/ext/pg_query/include/postgres/port/pg_bitutils.h +421 -0
  260. data/ext/pg_query/include/postgres/port/pg_bswap.h +161 -0
  261. data/ext/pg_query/include/postgres/port/pg_crc32c.h +110 -0
  262. data/ext/pg_query/include/postgres/port/pg_iovec.h +117 -0
  263. data/ext/pg_query/include/postgres/port/simd.h +422 -0
  264. data/ext/pg_query/include/postgres/port/win32/arpa/inet.h +3 -0
  265. data/ext/pg_query/include/postgres/port/win32/dlfcn.h +1 -0
  266. data/ext/pg_query/include/postgres/port/win32/grp.h +1 -0
  267. data/ext/pg_query/include/postgres/port/win32/netdb.h +7 -0
  268. data/ext/pg_query/include/postgres/port/win32/netinet/in.h +3 -0
  269. data/ext/pg_query/include/postgres/port/win32/netinet/tcp.h +7 -0
  270. data/ext/pg_query/include/postgres/port/win32/pwd.h +3 -0
  271. data/ext/pg_query/include/postgres/port/win32/sys/resource.h +20 -0
  272. data/ext/pg_query/include/postgres/port/win32/sys/select.h +3 -0
  273. data/ext/pg_query/include/postgres/port/win32/sys/socket.h +34 -0
  274. data/ext/pg_query/include/postgres/port/win32/sys/un.h +17 -0
  275. data/ext/pg_query/include/postgres/port/win32/sys/wait.h +3 -0
  276. data/ext/pg_query/include/postgres/port/win32.h +59 -0
  277. data/ext/pg_query/include/postgres/port/win32_msvc/dirent.h +34 -0
  278. data/ext/pg_query/include/postgres/port/win32_msvc/sys/file.h +1 -0
  279. data/ext/pg_query/include/postgres/port/win32_msvc/sys/param.h +1 -0
  280. data/ext/pg_query/include/postgres/port/win32_msvc/sys/time.h +1 -0
  281. data/ext/pg_query/include/postgres/port/win32_msvc/unistd.h +9 -0
  282. data/ext/pg_query/include/postgres/port/win32_msvc/utime.h +3 -0
  283. data/ext/pg_query/include/postgres/port/win32_port.h +584 -0
  284. data/ext/pg_query/include/postgres/port.h +524 -0
  285. data/ext/pg_query/include/postgres/portability/instr_time.h +197 -0
  286. data/ext/pg_query/include/postgres/postgres.h +579 -0
  287. data/ext/pg_query/include/postgres/postmaster/autovacuum.h +69 -0
  288. data/ext/pg_query/include/postgres/postmaster/bgworker.h +164 -0
  289. data/ext/pg_query/include/postgres/postmaster/bgworker_internals.h +60 -0
  290. data/ext/pg_query/include/postgres/postmaster/bgwriter.h +45 -0
  291. data/ext/pg_query/include/postgres/postmaster/interrupt.h +32 -0
  292. data/ext/pg_query/include/postgres/postmaster/pgarch.h +36 -0
  293. data/ext/pg_query/include/postgres/postmaster/postmaster.h +101 -0
  294. data/ext/pg_query/include/postgres/postmaster/startup.h +41 -0
  295. data/ext/pg_query/include/postgres/postmaster/syslogger.h +101 -0
  296. data/ext/pg_query/include/postgres/postmaster/walsummarizer.h +35 -0
  297. data/ext/pg_query/include/postgres/postmaster/walwriter.h +23 -0
  298. data/ext/pg_query/include/postgres/regex/regex.h +272 -0
  299. data/ext/pg_query/include/postgres/replication/logicallauncher.h +34 -0
  300. data/ext/pg_query/include/postgres/replication/logicalproto.h +274 -0
  301. data/ext/pg_query/include/postgres/replication/logicalworker.h +33 -0
  302. data/ext/pg_query/include/postgres/replication/origin.h +73 -0
  303. data/ext/pg_query/include/postgres/replication/reorderbuffer.h +743 -0
  304. data/ext/pg_query/include/postgres/replication/slot.h +285 -0
  305. data/ext/pg_query/include/postgres/replication/slotsync.h +38 -0
  306. data/ext/pg_query/include/postgres/replication/syncrep.h +109 -0
  307. data/ext/pg_query/include/postgres/replication/walreceiver.h +504 -0
  308. data/ext/pg_query/include/postgres/replication/walsender.h +76 -0
  309. data/ext/pg_query/include/postgres/rewrite/prs2lock.h +46 -0
  310. data/ext/pg_query/include/postgres/rewrite/rewriteHandler.h +41 -0
  311. data/ext/pg_query/include/postgres/rewrite/rewriteManip.h +96 -0
  312. data/ext/pg_query/include/postgres/rewrite/rewriteSupport.h +26 -0
  313. data/ext/pg_query/include/postgres/storage/block.h +108 -0
  314. data/ext/pg_query/include/postgres/storage/buf.h +46 -0
  315. data/ext/pg_query/include/postgres/storage/bufmgr.h +411 -0
  316. data/ext/pg_query/include/postgres/storage/bufpage.h +510 -0
  317. data/ext/pg_query/include/postgres/storage/condition_variable.h +73 -0
  318. data/ext/pg_query/include/postgres/storage/dsm.h +61 -0
  319. data/ext/pg_query/include/postgres/storage/dsm_impl.h +79 -0
  320. data/ext/pg_query/include/postgres/storage/fd.h +219 -0
  321. data/ext/pg_query/include/postgres/storage/fileset.h +40 -0
  322. data/ext/pg_query/include/postgres/storage/ipc.h +87 -0
  323. data/ext/pg_query/include/postgres/storage/item.h +19 -0
  324. data/ext/pg_query/include/postgres/storage/itemid.h +184 -0
  325. data/ext/pg_query/include/postgres/storage/itemptr.h +245 -0
  326. data/ext/pg_query/include/postgres/storage/large_object.h +100 -0
  327. data/ext/pg_query/include/postgres/storage/latch.h +196 -0
  328. data/ext/pg_query/include/postgres/storage/lmgr.h +126 -0
  329. data/ext/pg_query/include/postgres/storage/lock.h +624 -0
  330. data/ext/pg_query/include/postgres/storage/lockdefs.h +59 -0
  331. data/ext/pg_query/include/postgres/storage/lwlock.h +228 -0
  332. data/ext/pg_query/include/postgres/storage/lwlocknames.h +47 -0
  333. data/ext/pg_query/include/postgres/storage/off.h +57 -0
  334. data/ext/pg_query/include/postgres/storage/pg_sema.h +61 -0
  335. data/ext/pg_query/include/postgres/storage/pg_shmem.h +93 -0
  336. data/ext/pg_query/include/postgres/storage/pmsignal.h +105 -0
  337. data/ext/pg_query/include/postgres/storage/predicate.h +83 -0
  338. data/ext/pg_query/include/postgres/storage/proc.h +491 -0
  339. data/ext/pg_query/include/postgres/storage/procarray.h +103 -0
  340. data/ext/pg_query/include/postgres/storage/proclist_types.h +53 -0
  341. data/ext/pg_query/include/postgres/storage/procnumber.h +43 -0
  342. data/ext/pg_query/include/postgres/storage/procsignal.h +75 -0
  343. data/ext/pg_query/include/postgres/storage/read_stream.h +65 -0
  344. data/ext/pg_query/include/postgres/storage/relfilelocator.h +100 -0
  345. data/ext/pg_query/include/postgres/storage/s_lock.h +847 -0
  346. data/ext/pg_query/include/postgres/storage/sharedfileset.h +37 -0
  347. data/ext/pg_query/include/postgres/storage/shm_mq.h +86 -0
  348. data/ext/pg_query/include/postgres/storage/shm_toc.h +58 -0
  349. data/ext/pg_query/include/postgres/storage/shmem.h +59 -0
  350. data/ext/pg_query/include/postgres/storage/sinval.h +153 -0
  351. data/ext/pg_query/include/postgres/storage/smgr.h +127 -0
  352. data/ext/pg_query/include/postgres/storage/spin.h +77 -0
  353. data/ext/pg_query/include/postgres/storage/standby.h +109 -0
  354. data/ext/pg_query/include/postgres/storage/standbydefs.h +74 -0
  355. data/ext/pg_query/include/postgres/storage/sync.h +66 -0
  356. data/ext/pg_query/include/postgres/tcop/cmdtag.h +62 -0
  357. data/ext/pg_query/include/postgres/tcop/cmdtaglist.h +219 -0
  358. data/ext/pg_query/include/postgres/tcop/deparse_utility.h +108 -0
  359. data/ext/pg_query/include/postgres/tcop/dest.h +148 -0
  360. data/ext/pg_query/include/postgres/tcop/fastpath.h +20 -0
  361. data/ext/pg_query/include/postgres/tcop/pquery.h +51 -0
  362. data/ext/pg_query/include/postgres/tcop/tcopprot.h +98 -0
  363. data/ext/pg_query/include/postgres/tcop/utility.h +112 -0
  364. data/ext/pg_query/include/postgres/tsearch/ts_cache.h +96 -0
  365. data/ext/pg_query/include/postgres/utils/acl.h +290 -0
  366. data/ext/pg_query/include/postgres/utils/aclchk_internal.h +45 -0
  367. data/ext/pg_query/include/postgres/utils/array.h +481 -0
  368. data/ext/pg_query/include/postgres/utils/ascii.h +84 -0
  369. data/ext/pg_query/include/postgres/utils/backend_progress.h +46 -0
  370. data/ext/pg_query/include/postgres/utils/backend_status.h +340 -0
  371. data/ext/pg_query/include/postgres/utils/builtins.h +139 -0
  372. data/ext/pg_query/include/postgres/utils/bytea.h +28 -0
  373. data/ext/pg_query/include/postgres/utils/catcache.h +230 -0
  374. data/ext/pg_query/include/postgres/utils/date.h +118 -0
  375. data/ext/pg_query/include/postgres/utils/datetime.h +367 -0
  376. data/ext/pg_query/include/postgres/utils/datum.h +76 -0
  377. data/ext/pg_query/include/postgres/utils/dsa.h +166 -0
  378. data/ext/pg_query/include/postgres/utils/elog.h +540 -0
  379. data/ext/pg_query/include/postgres/utils/errcodes.h +352 -0
  380. data/ext/pg_query/include/postgres/utils/expandeddatum.h +170 -0
  381. data/ext/pg_query/include/postgres/utils/expandedrecord.h +241 -0
  382. data/ext/pg_query/include/postgres/utils/float.h +357 -0
  383. data/ext/pg_query/include/postgres/utils/fmgroids.h +3347 -0
  384. data/ext/pg_query/include/postgres/utils/fmgrprotos.h +2904 -0
  385. data/ext/pg_query/include/postgres/utils/fmgrtab.h +49 -0
  386. data/ext/pg_query/include/postgres/utils/guc.h +456 -0
  387. data/ext/pg_query/include/postgres/utils/guc_hooks.h +184 -0
  388. data/ext/pg_query/include/postgres/utils/guc_tables.h +323 -0
  389. data/ext/pg_query/include/postgres/utils/hsearch.h +153 -0
  390. data/ext/pg_query/include/postgres/utils/injection_point.h +44 -0
  391. data/ext/pg_query/include/postgres/utils/inval.h +68 -0
  392. data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
  393. data/ext/pg_query/include/postgres/utils/lsyscache.h +215 -0
  394. data/ext/pg_query/include/postgres/utils/memdebug.h +82 -0
  395. data/ext/pg_query/include/postgres/utils/memutils.h +193 -0
  396. data/ext/pg_query/include/postgres/utils/memutils_internal.h +176 -0
  397. data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +253 -0
  398. data/ext/pg_query/include/postgres/utils/numeric.h +110 -0
  399. data/ext/pg_query/include/postgres/utils/palloc.h +151 -0
  400. data/ext/pg_query/include/postgres/utils/partcache.h +103 -0
  401. data/ext/pg_query/include/postgres/utils/pg_locale.h +136 -0
  402. data/ext/pg_query/include/postgres/utils/pgstat_internal.h +808 -0
  403. data/ext/pg_query/include/postgres/utils/plancache.h +238 -0
  404. data/ext/pg_query/include/postgres/utils/portal.h +252 -0
  405. data/ext/pg_query/include/postgres/utils/queryenvironment.h +74 -0
  406. data/ext/pg_query/include/postgres/utils/regproc.h +39 -0
  407. data/ext/pg_query/include/postgres/utils/rel.h +711 -0
  408. data/ext/pg_query/include/postgres/utils/relcache.h +155 -0
  409. data/ext/pg_query/include/postgres/utils/reltrigger.h +81 -0
  410. data/ext/pg_query/include/postgres/utils/resowner.h +167 -0
  411. data/ext/pg_query/include/postgres/utils/ruleutils.h +52 -0
  412. data/ext/pg_query/include/postgres/utils/sharedtuplestore.h +61 -0
  413. data/ext/pg_query/include/postgres/utils/snapmgr.h +130 -0
  414. data/ext/pg_query/include/postgres/utils/snapshot.h +219 -0
  415. data/ext/pg_query/include/postgres/utils/sortsupport.h +391 -0
  416. data/ext/pg_query/include/postgres/utils/syscache.h +131 -0
  417. data/ext/pg_query/include/postgres/utils/timeout.h +96 -0
  418. data/ext/pg_query/include/postgres/utils/timestamp.h +147 -0
  419. data/ext/pg_query/include/postgres/utils/tuplesort.h +472 -0
  420. data/ext/pg_query/include/postgres/utils/tuplestore.h +88 -0
  421. data/ext/pg_query/include/postgres/utils/typcache.h +210 -0
  422. data/ext/pg_query/include/postgres/utils/varlena.h +53 -0
  423. data/ext/pg_query/include/postgres/utils/wait_event.h +108 -0
  424. data/ext/pg_query/include/postgres/utils/wait_event_types.h +218 -0
  425. data/ext/pg_query/include/postgres/utils/xml.h +94 -0
  426. data/ext/pg_query/include/postgres/varatt.h +358 -0
  427. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +1546 -792
  428. data/ext/pg_query/include/protobuf/pg_query.pb.h +58365 -46595
  429. data/ext/pg_query/pg_query.c +9 -0
  430. data/ext/pg_query/pg_query.pb-c.c +6598 -3739
  431. data/ext/pg_query/pg_query_fingerprint.c +4 -5
  432. data/ext/pg_query/pg_query_normalize.c +42 -1
  433. data/ext/pg_query/pg_query_outfuncs_json.c +9 -1
  434. data/ext/pg_query/pg_query_outfuncs_protobuf.c +1 -0
  435. data/ext/pg_query/pg_query_parse.c +1 -1
  436. data/ext/pg_query/pg_query_parse_plpgsql.c +18 -17
  437. data/ext/pg_query/pg_query_readfuncs_protobuf.c +3 -2
  438. data/ext/pg_query/pg_query_ruby.c +5 -0
  439. data/ext/pg_query/pg_query_ruby_freebsd.sym +0 -1
  440. data/ext/pg_query/pg_query_scan.c +1 -1
  441. data/ext/pg_query/pg_query_split.c +1 -1
  442. data/ext/pg_query/postgres_deparse.c +409 -21
  443. data/ext/pg_query/src_backend_catalog_namespace.c +241 -66
  444. data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -3
  445. data/ext/pg_query/src_backend_commands_define.c +2 -3
  446. data/ext/pg_query/src_backend_nodes_bitmapset.c +137 -94
  447. data/ext/pg_query/src_backend_nodes_copyfuncs.c +1 -1
  448. data/ext/pg_query/src_backend_nodes_equalfuncs.c +1 -1
  449. data/ext/pg_query/src_backend_nodes_extensible.c +1 -1
  450. data/ext/pg_query/src_backend_nodes_list.c +3 -7
  451. data/ext/pg_query/src_backend_nodes_makefuncs.c +59 -20
  452. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +109 -2
  453. data/ext/pg_query/src_backend_nodes_value.c +1 -1
  454. data/ext/pg_query/src_backend_parser_gram.c +34490 -32135
  455. data/ext/pg_query/src_backend_parser_parser.c +8 -8
  456. data/ext/pg_query/src_backend_parser_scan.c +5637 -3028
  457. data/ext/pg_query/src_backend_parser_scansup.c +2 -1
  458. data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
  459. data/ext/pg_query/src_backend_tcop_postgres.c +34 -10
  460. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +2 -2
  461. data/ext/pg_query/src_backend_utils_adt_datum.c +8 -6
  462. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  463. data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
  464. data/ext/pg_query/src_backend_utils_adt_numutils.c +4 -5
  465. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +101 -28
  466. data/ext/pg_query/src_backend_utils_error_assert.c +1 -1
  467. data/ext/pg_query/src_backend_utils_error_elog.c +60 -190
  468. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +4 -2
  469. data/ext/pg_query/src_backend_utils_init_globals.c +16 -4
  470. data/ext/pg_query/src_backend_utils_mb_mbutils.c +19 -81
  471. data/ext/pg_query/src_backend_utils_misc_guc_tables.c +16 -8
  472. data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +8 -5
  473. data/ext/pg_query/src_backend_utils_mmgr_aset.c +308 -238
  474. data/ext/pg_query/src_backend_utils_mmgr_bump.c +728 -0
  475. data/ext/pg_query/src_backend_utils_mmgr_generation.c +273 -197
  476. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +270 -215
  477. data/ext/pg_query/src_backend_utils_mmgr_slab.c +154 -96
  478. data/ext/pg_query/src_common_encnames.c +43 -44
  479. data/ext/pg_query/src_common_hashfn.c +1 -1
  480. data/ext/pg_query/src_common_keywords.c +1 -1
  481. data/ext/pg_query/src_common_kwlist_d.h +511 -466
  482. data/ext/pg_query/src_common_kwlookup.c +1 -1
  483. data/ext/pg_query/src_common_psprintf.c +3 -3
  484. data/ext/pg_query/src_common_stringinfo.c +18 -1
  485. data/ext/pg_query/src_common_wchar.c +45 -108
  486. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +99 -5
  487. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +1 -1
  488. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +242 -143
  489. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  490. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
  491. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +19 -1
  492. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +1 -1
  493. data/ext/pg_query/src_port_pg_bitutils.c +251 -32
  494. data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
  495. data/ext/pg_query/src_port_snprintf.c +4 -4
  496. data/ext/pg_query/src_port_strerror.c +1 -3
  497. data/ext/pg_query/src_port_strlcpy.c +79 -0
  498. data/lib/pg_query/fingerprint.rb +2 -3
  499. data/lib/pg_query/node.rb +16 -11
  500. data/lib/pg_query/param_refs.rb +1 -1
  501. data/lib/pg_query/parse.rb +1 -1
  502. data/lib/pg_query/pg_query_pb.rb +26 -3
  503. data/lib/pg_query/treewalker.rb +52 -12
  504. data/lib/pg_query/truncate.rb +1 -1
  505. data/lib/pg_query/version.rb +1 -1
  506. metadata +444 -400
  507. data/ext/pg_query/guc-file.c +0 -0
  508. data/ext/pg_query/include/access/amapi.h +0 -292
  509. data/ext/pg_query/include/access/attmap.h +0 -54
  510. data/ext/pg_query/include/access/attnum.h +0 -64
  511. data/ext/pg_query/include/access/clog.h +0 -63
  512. data/ext/pg_query/include/access/commit_ts.h +0 -74
  513. data/ext/pg_query/include/access/detoast.h +0 -82
  514. data/ext/pg_query/include/access/genam.h +0 -233
  515. data/ext/pg_query/include/access/gin.h +0 -91
  516. data/ext/pg_query/include/access/htup.h +0 -89
  517. data/ext/pg_query/include/access/htup_details.h +0 -811
  518. data/ext/pg_query/include/access/itup.h +0 -170
  519. data/ext/pg_query/include/access/parallel.h +0 -82
  520. data/ext/pg_query/include/access/printtup.h +0 -35
  521. data/ext/pg_query/include/access/relation.h +0 -28
  522. data/ext/pg_query/include/access/relscan.h +0 -191
  523. data/ext/pg_query/include/access/rmgrlist.h +0 -49
  524. data/ext/pg_query/include/access/sdir.h +0 -67
  525. data/ext/pg_query/include/access/skey.h +0 -151
  526. data/ext/pg_query/include/access/stratnum.h +0 -85
  527. data/ext/pg_query/include/access/sysattr.h +0 -29
  528. data/ext/pg_query/include/access/table.h +0 -28
  529. data/ext/pg_query/include/access/tableam.h +0 -2100
  530. data/ext/pg_query/include/access/toast_compression.h +0 -73
  531. data/ext/pg_query/include/access/transam.h +0 -375
  532. data/ext/pg_query/include/access/tsmapi.h +0 -82
  533. data/ext/pg_query/include/access/tupconvert.h +0 -54
  534. data/ext/pg_query/include/access/tupdesc.h +0 -154
  535. data/ext/pg_query/include/access/tupmacs.h +0 -207
  536. data/ext/pg_query/include/access/twophase.h +0 -65
  537. data/ext/pg_query/include/access/xact.h +0 -530
  538. data/ext/pg_query/include/access/xlog.h +0 -302
  539. data/ext/pg_query/include/access/xlog_internal.h +0 -404
  540. data/ext/pg_query/include/access/xlogbackup.h +0 -41
  541. data/ext/pg_query/include/access/xlogdefs.h +0 -82
  542. data/ext/pg_query/include/access/xlogprefetcher.h +0 -55
  543. data/ext/pg_query/include/access/xlogreader.h +0 -444
  544. data/ext/pg_query/include/access/xlogrecord.h +0 -248
  545. data/ext/pg_query/include/access/xlogrecovery.h +0 -158
  546. data/ext/pg_query/include/archive/archive_module.h +0 -59
  547. data/ext/pg_query/include/c.h +0 -1379
  548. data/ext/pg_query/include/catalog/catalog.h +0 -45
  549. data/ext/pg_query/include/catalog/catversion.h +0 -62
  550. data/ext/pg_query/include/catalog/dependency.h +0 -270
  551. data/ext/pg_query/include/catalog/genbki.h +0 -143
  552. data/ext/pg_query/include/catalog/index.h +0 -214
  553. data/ext/pg_query/include/catalog/indexing.h +0 -54
  554. data/ext/pg_query/include/catalog/namespace.h +0 -190
  555. data/ext/pg_query/include/catalog/objectaccess.h +0 -267
  556. data/ext/pg_query/include/catalog/objectaddress.h +0 -89
  557. data/ext/pg_query/include/catalog/pg_aggregate.h +0 -180
  558. data/ext/pg_query/include/catalog/pg_aggregate_d.h +0 -78
  559. data/ext/pg_query/include/catalog/pg_am.h +0 -63
  560. data/ext/pg_query/include/catalog/pg_am_d.h +0 -47
  561. data/ext/pg_query/include/catalog/pg_attribute.h +0 -223
  562. data/ext/pg_query/include/catalog/pg_attribute_d.h +0 -62
  563. data/ext/pg_query/include/catalog/pg_authid.h +0 -63
  564. data/ext/pg_query/include/catalog/pg_authid_d.h +0 -59
  565. data/ext/pg_query/include/catalog/pg_class.h +0 -230
  566. data/ext/pg_query/include/catalog/pg_class_d.h +0 -132
  567. data/ext/pg_query/include/catalog/pg_collation.h +0 -100
  568. data/ext/pg_query/include/catalog/pg_collation_d.h +0 -63
  569. data/ext/pg_query/include/catalog/pg_constraint.h +0 -273
  570. data/ext/pg_query/include/catalog/pg_constraint_d.h +0 -73
  571. data/ext/pg_query/include/catalog/pg_control.h +0 -258
  572. data/ext/pg_query/include/catalog/pg_conversion.h +0 -75
  573. data/ext/pg_query/include/catalog/pg_conversion_d.h +0 -38
  574. data/ext/pg_query/include/catalog/pg_database.h +0 -124
  575. data/ext/pg_query/include/catalog/pg_database_d.h +0 -52
  576. data/ext/pg_query/include/catalog/pg_depend.h +0 -77
  577. data/ext/pg_query/include/catalog/pg_depend_d.h +0 -36
  578. data/ext/pg_query/include/catalog/pg_event_trigger.h +0 -57
  579. data/ext/pg_query/include/catalog/pg_event_trigger_d.h +0 -36
  580. data/ext/pg_query/include/catalog/pg_index.h +0 -90
  581. data/ext/pg_query/include/catalog/pg_index_d.h +0 -59
  582. data/ext/pg_query/include/catalog/pg_language.h +0 -72
  583. data/ext/pg_query/include/catalog/pg_language_d.h +0 -41
  584. data/ext/pg_query/include/catalog/pg_namespace.h +0 -64
  585. data/ext/pg_query/include/catalog/pg_namespace_d.h +0 -36
  586. data/ext/pg_query/include/catalog/pg_opclass.h +0 -88
  587. data/ext/pg_query/include/catalog/pg_opclass_d.h +0 -51
  588. data/ext/pg_query/include/catalog/pg_operator.h +0 -107
  589. data/ext/pg_query/include/catalog/pg_operator_d.h +0 -142
  590. data/ext/pg_query/include/catalog/pg_opfamily.h +0 -64
  591. data/ext/pg_query/include/catalog/pg_opfamily_d.h +0 -51
  592. data/ext/pg_query/include/catalog/pg_partitioned_table.h +0 -74
  593. data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +0 -36
  594. data/ext/pg_query/include/catalog/pg_proc.h +0 -220
  595. data/ext/pg_query/include/catalog/pg_proc_d.h +0 -101
  596. data/ext/pg_query/include/catalog/pg_publication.h +0 -158
  597. data/ext/pg_query/include/catalog/pg_publication_d.h +0 -38
  598. data/ext/pg_query/include/catalog/pg_replication_origin.h +0 -62
  599. data/ext/pg_query/include/catalog/pg_replication_origin_d.h +0 -33
  600. data/ext/pg_query/include/catalog/pg_statistic.h +0 -282
  601. data/ext/pg_query/include/catalog/pg_statistic_d.h +0 -195
  602. data/ext/pg_query/include/catalog/pg_statistic_ext.h +0 -88
  603. data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +0 -45
  604. data/ext/pg_query/include/catalog/pg_transform.h +0 -48
  605. data/ext/pg_query/include/catalog/pg_transform_d.h +0 -34
  606. data/ext/pg_query/include/catalog/pg_trigger.h +0 -153
  607. data/ext/pg_query/include/catalog/pg_trigger_d.h +0 -109
  608. data/ext/pg_query/include/catalog/pg_ts_config.h +0 -53
  609. data/ext/pg_query/include/catalog/pg_ts_config_d.h +0 -34
  610. data/ext/pg_query/include/catalog/pg_ts_dict.h +0 -59
  611. data/ext/pg_query/include/catalog/pg_ts_dict_d.h +0 -35
  612. data/ext/pg_query/include/catalog/pg_ts_parser.h +0 -60
  613. data/ext/pg_query/include/catalog/pg_ts_parser_d.h +0 -37
  614. data/ext/pg_query/include/catalog/pg_ts_template.h +0 -51
  615. data/ext/pg_query/include/catalog/pg_ts_template_d.h +0 -34
  616. data/ext/pg_query/include/catalog/pg_type.h +0 -404
  617. data/ext/pg_query/include/catalog/pg_type_d.h +0 -324
  618. data/ext/pg_query/include/catalog/storage.h +0 -50
  619. data/ext/pg_query/include/commands/async.h +0 -53
  620. data/ext/pg_query/include/commands/dbcommands.h +0 -37
  621. data/ext/pg_query/include/commands/defrem.h +0 -161
  622. data/ext/pg_query/include/commands/event_trigger.h +0 -88
  623. data/ext/pg_query/include/commands/explain.h +0 -129
  624. data/ext/pg_query/include/commands/prepare.h +0 -61
  625. data/ext/pg_query/include/commands/tablespace.h +0 -69
  626. data/ext/pg_query/include/commands/trigger.h +0 -288
  627. data/ext/pg_query/include/commands/vacuum.h +0 -386
  628. data/ext/pg_query/include/common/cryptohash.h +0 -39
  629. data/ext/pg_query/include/common/file_perm.h +0 -56
  630. data/ext/pg_query/include/common/hashfn.h +0 -104
  631. data/ext/pg_query/include/common/int.h +0 -437
  632. data/ext/pg_query/include/common/ip.h +0 -33
  633. data/ext/pg_query/include/common/keywords.h +0 -29
  634. data/ext/pg_query/include/common/kwlookup.h +0 -44
  635. data/ext/pg_query/include/common/pg_prng.h +0 -61
  636. data/ext/pg_query/include/common/relpath.h +0 -97
  637. data/ext/pg_query/include/common/scram-common.h +0 -70
  638. data/ext/pg_query/include/common/sha2.h +0 -32
  639. data/ext/pg_query/include/common/string.h +0 -44
  640. data/ext/pg_query/include/common/unicode_east_asian_fw_table.h +0 -125
  641. data/ext/pg_query/include/copyfuncs.funcs.c +0 -5013
  642. data/ext/pg_query/include/copyfuncs.switch.c +0 -938
  643. data/ext/pg_query/include/datatype/timestamp.h +0 -243
  644. data/ext/pg_query/include/equalfuncs.funcs.c +0 -3097
  645. data/ext/pg_query/include/equalfuncs.switch.c +0 -785
  646. data/ext/pg_query/include/executor/execdesc.h +0 -70
  647. data/ext/pg_query/include/executor/executor.h +0 -680
  648. data/ext/pg_query/include/executor/functions.h +0 -55
  649. data/ext/pg_query/include/executor/instrument.h +0 -118
  650. data/ext/pg_query/include/executor/spi.h +0 -213
  651. data/ext/pg_query/include/executor/tablefunc.h +0 -67
  652. data/ext/pg_query/include/executor/tuptable.h +0 -494
  653. data/ext/pg_query/include/fmgr.h +0 -800
  654. data/ext/pg_query/include/foreign/fdwapi.h +0 -294
  655. data/ext/pg_query/include/funcapi.h +0 -360
  656. data/ext/pg_query/include/gram.h +0 -1127
  657. data/ext/pg_query/include/gramparse.h +0 -75
  658. data/ext/pg_query/include/jit/jit.h +0 -105
  659. data/ext/pg_query/include/kwlist_d.h +0 -1119
  660. data/ext/pg_query/include/lib/dshash.h +0 -115
  661. data/ext/pg_query/include/lib/ilist.h +0 -1159
  662. data/ext/pg_query/include/lib/pairingheap.h +0 -102
  663. data/ext/pg_query/include/lib/simplehash.h +0 -1184
  664. data/ext/pg_query/include/lib/sort_template.h +0 -432
  665. data/ext/pg_query/include/lib/stringinfo.h +0 -161
  666. data/ext/pg_query/include/libpq/auth.h +0 -37
  667. data/ext/pg_query/include/libpq/crypt.h +0 -47
  668. data/ext/pg_query/include/libpq/hba.h +0 -186
  669. data/ext/pg_query/include/libpq/libpq-be.h +0 -354
  670. data/ext/pg_query/include/libpq/libpq.h +0 -144
  671. data/ext/pg_query/include/libpq/pqcomm.h +0 -163
  672. data/ext/pg_query/include/libpq/pqformat.h +0 -210
  673. data/ext/pg_query/include/libpq/pqsignal.h +0 -54
  674. data/ext/pg_query/include/libpq/sasl.h +0 -136
  675. data/ext/pg_query/include/libpq/scram.h +0 -37
  676. data/ext/pg_query/include/mb/pg_wchar.h +0 -772
  677. data/ext/pg_query/include/mb/stringinfo_mb.h +0 -24
  678. data/ext/pg_query/include/miscadmin.h +0 -507
  679. data/ext/pg_query/include/nodes/bitmapset.h +0 -126
  680. data/ext/pg_query/include/nodes/execnodes.h +0 -2768
  681. data/ext/pg_query/include/nodes/extensible.h +0 -164
  682. data/ext/pg_query/include/nodes/lockoptions.h +0 -61
  683. data/ext/pg_query/include/nodes/makefuncs.h +0 -121
  684. data/ext/pg_query/include/nodes/memnodes.h +0 -113
  685. data/ext/pg_query/include/nodes/miscnodes.h +0 -56
  686. data/ext/pg_query/include/nodes/nodeFuncs.h +0 -222
  687. data/ext/pg_query/include/nodes/nodes.h +0 -446
  688. data/ext/pg_query/include/nodes/nodetags.h +0 -471
  689. data/ext/pg_query/include/nodes/params.h +0 -170
  690. data/ext/pg_query/include/nodes/parsenodes.h +0 -4050
  691. data/ext/pg_query/include/nodes/pathnodes.h +0 -3384
  692. data/ext/pg_query/include/nodes/pg_list.h +0 -635
  693. data/ext/pg_query/include/nodes/plannodes.h +0 -1592
  694. data/ext/pg_query/include/nodes/primnodes.h +0 -2041
  695. data/ext/pg_query/include/nodes/print.h +0 -34
  696. data/ext/pg_query/include/nodes/queryjumble.h +0 -86
  697. data/ext/pg_query/include/nodes/replnodes.h +0 -111
  698. data/ext/pg_query/include/nodes/supportnodes.h +0 -346
  699. data/ext/pg_query/include/nodes/tidbitmap.h +0 -75
  700. data/ext/pg_query/include/nodes/value.h +0 -90
  701. data/ext/pg_query/include/optimizer/cost.h +0 -215
  702. data/ext/pg_query/include/optimizer/geqo.h +0 -90
  703. data/ext/pg_query/include/optimizer/geqo_gene.h +0 -45
  704. data/ext/pg_query/include/optimizer/optimizer.h +0 -202
  705. data/ext/pg_query/include/optimizer/paths.h +0 -266
  706. data/ext/pg_query/include/optimizer/planmain.h +0 -117
  707. data/ext/pg_query/include/parser/analyze.h +0 -64
  708. data/ext/pg_query/include/parser/kwlist.h +0 -498
  709. data/ext/pg_query/include/parser/parse_agg.h +0 -65
  710. data/ext/pg_query/include/parser/parse_coerce.h +0 -102
  711. data/ext/pg_query/include/parser/parse_expr.h +0 -25
  712. data/ext/pg_query/include/parser/parse_func.h +0 -74
  713. data/ext/pg_query/include/parser/parse_node.h +0 -357
  714. data/ext/pg_query/include/parser/parse_oper.h +0 -65
  715. data/ext/pg_query/include/parser/parse_relation.h +0 -129
  716. data/ext/pg_query/include/parser/parse_type.h +0 -61
  717. data/ext/pg_query/include/parser/parser.h +0 -68
  718. data/ext/pg_query/include/parser/parsetree.h +0 -61
  719. data/ext/pg_query/include/parser/scanner.h +0 -152
  720. data/ext/pg_query/include/parser/scansup.h +0 -27
  721. data/ext/pg_query/include/partitioning/partdefs.h +0 -26
  722. data/ext/pg_query/include/pg_config.h +0 -843
  723. data/ext/pg_query/include/pg_config_manual.h +0 -372
  724. data/ext/pg_query/include/pg_config_os.h +0 -8
  725. data/ext/pg_query/include/pg_getopt.h +0 -56
  726. data/ext/pg_query/include/pg_trace.h +0 -17
  727. data/ext/pg_query/include/pgstat.h +0 -778
  728. data/ext/pg_query/include/pgtime.h +0 -94
  729. data/ext/pg_query/include/pl_gram.h +0 -385
  730. data/ext/pg_query/include/pl_reserved_kwlist.h +0 -52
  731. data/ext/pg_query/include/pl_reserved_kwlist_d.h +0 -114
  732. data/ext/pg_query/include/pl_unreserved_kwlist.h +0 -112
  733. data/ext/pg_query/include/pl_unreserved_kwlist_d.h +0 -246
  734. data/ext/pg_query/include/plerrcodes.h +0 -998
  735. data/ext/pg_query/include/plpgsql.h +0 -1340
  736. data/ext/pg_query/include/port/atomics/arch-arm.h +0 -32
  737. data/ext/pg_query/include/port/atomics/arch-ppc.h +0 -254
  738. data/ext/pg_query/include/port/atomics/arch-x86.h +0 -252
  739. data/ext/pg_query/include/port/atomics/fallback.h +0 -170
  740. data/ext/pg_query/include/port/atomics/generic-gcc.h +0 -286
  741. data/ext/pg_query/include/port/atomics/generic.h +0 -401
  742. data/ext/pg_query/include/port/atomics.h +0 -519
  743. data/ext/pg_query/include/port/pg_bitutils.h +0 -339
  744. data/ext/pg_query/include/port/pg_bswap.h +0 -161
  745. data/ext/pg_query/include/port/pg_crc32c.h +0 -101
  746. data/ext/pg_query/include/port/simd.h +0 -375
  747. data/ext/pg_query/include/port.h +0 -520
  748. data/ext/pg_query/include/portability/instr_time.h +0 -197
  749. data/ext/pg_query/include/postgres.h +0 -579
  750. data/ext/pg_query/include/postmaster/autovacuum.h +0 -80
  751. data/ext/pg_query/include/postmaster/auxprocess.h +0 -20
  752. data/ext/pg_query/include/postmaster/bgworker.h +0 -162
  753. data/ext/pg_query/include/postmaster/bgworker_internals.h +0 -64
  754. data/ext/pg_query/include/postmaster/bgwriter.h +0 -45
  755. data/ext/pg_query/include/postmaster/fork_process.h +0 -17
  756. data/ext/pg_query/include/postmaster/interrupt.h +0 -32
  757. data/ext/pg_query/include/postmaster/pgarch.h +0 -36
  758. data/ext/pg_query/include/postmaster/postmaster.h +0 -81
  759. data/ext/pg_query/include/postmaster/startup.h +0 -41
  760. data/ext/pg_query/include/postmaster/syslogger.h +0 -103
  761. data/ext/pg_query/include/postmaster/walwriter.h +0 -23
  762. data/ext/pg_query/include/regex/regex.h +0 -189
  763. data/ext/pg_query/include/replication/logicallauncher.h +0 -34
  764. data/ext/pg_query/include/replication/logicalproto.h +0 -274
  765. data/ext/pg_query/include/replication/logicalworker.h +0 -32
  766. data/ext/pg_query/include/replication/origin.h +0 -73
  767. data/ext/pg_query/include/replication/reorderbuffer.h +0 -753
  768. data/ext/pg_query/include/replication/slot.h +0 -249
  769. data/ext/pg_query/include/replication/syncrep.h +0 -109
  770. data/ext/pg_query/include/replication/walreceiver.h +0 -478
  771. data/ext/pg_query/include/replication/walsender.h +0 -74
  772. data/ext/pg_query/include/rewrite/prs2lock.h +0 -46
  773. data/ext/pg_query/include/rewrite/rewriteHandler.h +0 -35
  774. data/ext/pg_query/include/rewrite/rewriteManip.h +0 -96
  775. data/ext/pg_query/include/rewrite/rewriteSupport.h +0 -26
  776. data/ext/pg_query/include/src_backend_nodes_copyfuncs.funcs.c +0 -5321
  777. data/ext/pg_query/include/src_backend_nodes_equalfuncs.funcs.c +0 -3354
  778. data/ext/pg_query/include/storage/backendid.h +0 -37
  779. data/ext/pg_query/include/storage/block.h +0 -108
  780. data/ext/pg_query/include/storage/buf.h +0 -46
  781. data/ext/pg_query/include/storage/bufmgr.h +0 -393
  782. data/ext/pg_query/include/storage/bufpage.h +0 -510
  783. data/ext/pg_query/include/storage/condition_variable.h +0 -73
  784. data/ext/pg_query/include/storage/dsm.h +0 -61
  785. data/ext/pg_query/include/storage/dsm_impl.h +0 -79
  786. data/ext/pg_query/include/storage/fd.h +0 -202
  787. data/ext/pg_query/include/storage/fileset.h +0 -40
  788. data/ext/pg_query/include/storage/ipc.h +0 -84
  789. data/ext/pg_query/include/storage/item.h +0 -19
  790. data/ext/pg_query/include/storage/itemid.h +0 -184
  791. data/ext/pg_query/include/storage/itemptr.h +0 -245
  792. data/ext/pg_query/include/storage/large_object.h +0 -100
  793. data/ext/pg_query/include/storage/latch.h +0 -194
  794. data/ext/pg_query/include/storage/lmgr.h +0 -120
  795. data/ext/pg_query/include/storage/lock.h +0 -624
  796. data/ext/pg_query/include/storage/lockdefs.h +0 -59
  797. data/ext/pg_query/include/storage/lwlock.h +0 -220
  798. data/ext/pg_query/include/storage/lwlocknames.h +0 -50
  799. data/ext/pg_query/include/storage/off.h +0 -57
  800. data/ext/pg_query/include/storage/pg_sema.h +0 -61
  801. data/ext/pg_query/include/storage/pg_shmem.h +0 -92
  802. data/ext/pg_query/include/storage/pmsignal.h +0 -105
  803. data/ext/pg_query/include/storage/predicate.h +0 -87
  804. data/ext/pg_query/include/storage/proc.h +0 -466
  805. data/ext/pg_query/include/storage/procarray.h +0 -99
  806. data/ext/pg_query/include/storage/proclist_types.h +0 -51
  807. data/ext/pg_query/include/storage/procsignal.h +0 -73
  808. data/ext/pg_query/include/storage/relfilelocator.h +0 -99
  809. data/ext/pg_query/include/storage/s_lock.h +0 -867
  810. data/ext/pg_query/include/storage/sharedfileset.h +0 -37
  811. data/ext/pg_query/include/storage/shm_mq.h +0 -86
  812. data/ext/pg_query/include/storage/shm_toc.h +0 -58
  813. data/ext/pg_query/include/storage/shmem.h +0 -59
  814. data/ext/pg_query/include/storage/sinval.h +0 -153
  815. data/ext/pg_query/include/storage/sinvaladt.h +0 -45
  816. data/ext/pg_query/include/storage/smgr.h +0 -113
  817. data/ext/pg_query/include/storage/spin.h +0 -77
  818. data/ext/pg_query/include/storage/standby.h +0 -99
  819. data/ext/pg_query/include/storage/standbydefs.h +0 -74
  820. data/ext/pg_query/include/storage/sync.h +0 -66
  821. data/ext/pg_query/include/tcop/cmdtag.h +0 -63
  822. data/ext/pg_query/include/tcop/cmdtaglist.h +0 -218
  823. data/ext/pg_query/include/tcop/deparse_utility.h +0 -108
  824. data/ext/pg_query/include/tcop/dest.h +0 -147
  825. data/ext/pg_query/include/tcop/fastpath.h +0 -20
  826. data/ext/pg_query/include/tcop/pquery.h +0 -51
  827. data/ext/pg_query/include/tcop/tcopprot.h +0 -94
  828. data/ext/pg_query/include/tcop/utility.h +0 -112
  829. data/ext/pg_query/include/tsearch/ts_cache.h +0 -96
  830. data/ext/pg_query/include/utils/acl.h +0 -278
  831. data/ext/pg_query/include/utils/aclchk_internal.h +0 -45
  832. data/ext/pg_query/include/utils/array.h +0 -482
  833. data/ext/pg_query/include/utils/backend_progress.h +0 -45
  834. data/ext/pg_query/include/utils/backend_status.h +0 -342
  835. data/ext/pg_query/include/utils/builtins.h +0 -136
  836. data/ext/pg_query/include/utils/bytea.h +0 -28
  837. data/ext/pg_query/include/utils/catcache.h +0 -231
  838. data/ext/pg_query/include/utils/date.h +0 -118
  839. data/ext/pg_query/include/utils/datetime.h +0 -364
  840. data/ext/pg_query/include/utils/datum.h +0 -76
  841. data/ext/pg_query/include/utils/dsa.h +0 -127
  842. data/ext/pg_query/include/utils/elog.h +0 -545
  843. data/ext/pg_query/include/utils/errcodes.h +0 -354
  844. data/ext/pg_query/include/utils/expandeddatum.h +0 -170
  845. data/ext/pg_query/include/utils/expandedrecord.h +0 -241
  846. data/ext/pg_query/include/utils/float.h +0 -357
  847. data/ext/pg_query/include/utils/fmgroids.h +0 -3314
  848. data/ext/pg_query/include/utils/fmgrprotos.h +0 -2871
  849. data/ext/pg_query/include/utils/fmgrtab.h +0 -49
  850. data/ext/pg_query/include/utils/guc.h +0 -442
  851. data/ext/pg_query/include/utils/guc_hooks.h +0 -163
  852. data/ext/pg_query/include/utils/guc_tables.h +0 -322
  853. data/ext/pg_query/include/utils/hsearch.h +0 -153
  854. data/ext/pg_query/include/utils/inval.h +0 -68
  855. data/ext/pg_query/include/utils/logtape.h +0 -77
  856. data/ext/pg_query/include/utils/lsyscache.h +0 -212
  857. data/ext/pg_query/include/utils/memdebug.h +0 -82
  858. data/ext/pg_query/include/utils/memutils.h +0 -186
  859. data/ext/pg_query/include/utils/memutils_internal.h +0 -136
  860. data/ext/pg_query/include/utils/memutils_memorychunk.h +0 -237
  861. data/ext/pg_query/include/utils/numeric.h +0 -105
  862. data/ext/pg_query/include/utils/palloc.h +0 -165
  863. data/ext/pg_query/include/utils/partcache.h +0 -103
  864. data/ext/pg_query/include/utils/pg_locale.h +0 -135
  865. data/ext/pg_query/include/utils/pgstat_internal.h +0 -814
  866. data/ext/pg_query/include/utils/pidfile.h +0 -56
  867. data/ext/pg_query/include/utils/plancache.h +0 -236
  868. data/ext/pg_query/include/utils/portal.h +0 -252
  869. data/ext/pg_query/include/utils/queryenvironment.h +0 -74
  870. data/ext/pg_query/include/utils/regproc.h +0 -39
  871. data/ext/pg_query/include/utils/rel.h +0 -712
  872. data/ext/pg_query/include/utils/relcache.h +0 -158
  873. data/ext/pg_query/include/utils/reltrigger.h +0 -81
  874. data/ext/pg_query/include/utils/resowner.h +0 -86
  875. data/ext/pg_query/include/utils/ruleutils.h +0 -52
  876. data/ext/pg_query/include/utils/sharedtuplestore.h +0 -61
  877. data/ext/pg_query/include/utils/snapmgr.h +0 -181
  878. data/ext/pg_query/include/utils/snapshot.h +0 -219
  879. data/ext/pg_query/include/utils/sortsupport.h +0 -391
  880. data/ext/pg_query/include/utils/syscache.h +0 -227
  881. data/ext/pg_query/include/utils/timeout.h +0 -95
  882. data/ext/pg_query/include/utils/timestamp.h +0 -147
  883. data/ext/pg_query/include/utils/tuplesort.h +0 -445
  884. data/ext/pg_query/include/utils/tuplestore.h +0 -91
  885. data/ext/pg_query/include/utils/typcache.h +0 -209
  886. data/ext/pg_query/include/utils/varlena.h +0 -53
  887. data/ext/pg_query/include/utils/wait_event.h +0 -294
  888. data/ext/pg_query/include/utils/xml.h +0 -94
  889. data/ext/pg_query/include/varatt.h +0 -358
  890. data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2220
  891. data/ext/pg_query/src_port_strnlen.c +0 -39
  892. /data/ext/pg_query/include/{access → postgres/access}/rmgr.h +0 -0
  893. /data/ext/pg_query/include/{commands → postgres/commands}/user.h +0 -0
  894. /data/ext/pg_query/include/{common → postgres/common}/unicode_nonspacing_table.h +0 -0
  895. /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
  896. /data/ext/pg_query/include/{postgres_ext.h → postgres/postgres_ext.h} +0 -0
  897. /data/ext/pg_query/include/{utils → postgres/utils}/probes.h +0 -0
  898. /data/ext/pg_query/include/{utils → postgres/utils}/ps_status.h +0 -0
@@ -397,7 +397,7 @@
397
397
  *
398
398
  * pl_gram.y - Parser for the PL/pgSQL procedural language
399
399
  *
400
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
400
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
401
401
  * Portions Copyright (c) 1994, Regents of the University of California
402
402
  *
403
403
  *
@@ -460,7 +460,6 @@ static PLpgSQL_expr *read_sql_construct(int until,
460
460
  RawParseMode parsemode,
461
461
  bool isexpression,
462
462
  bool valid_sql,
463
- bool trim,
464
463
  int *startloc,
465
464
  int *endtoken);
466
465
  static PLpgSQL_expr *read_sql_expression(int until,
@@ -470,7 +469,8 @@ static PLpgSQL_expr *read_sql_expression2(int until, int until2,
470
469
  int *endtoken);
471
470
  static PLpgSQL_expr *read_sql_stmt(void);
472
471
  static PLpgSQL_type *read_datatype(int tok);
473
- static PLpgSQL_stmt *make_execsql_stmt(int firsttoken, int location);
472
+ static PLpgSQL_stmt *make_execsql_stmt(int firsttoken, int location,
473
+ PLword *word);
474
474
  static PLpgSQL_stmt_fetch *read_fetch_direction(void);
475
475
  static void complete_direction(PLpgSQL_stmt_fetch *fetch,
476
476
  bool *check_FROM);
@@ -986,14 +986,14 @@ static const yytype_uint16 yyrline[] =
986
986
  397, 401, 406, 407, 410, 433, 441, 448, 457, 469,
987
987
  470, 473, 474, 478, 491, 529, 535, 534, 561, 564,
988
988
  568, 575, 581, 584, 615, 619, 625, 633, 634, 636,
989
- 651, 666, 694, 722, 753, 754, 759, 770, 771, 776,
990
- 781, 788, 789, 793, 795, 801, 802, 810, 811, 815,
991
- 816, 826, 828, 830, 832, 834, 836, 838, 840, 842,
992
- 844, 846, 848, 850, 852, 854, 856, 858, 860, 862,
993
- 864, 866, 868, 870, 872, 876, 912, 930, 951, 990,
994
- 1054, 1057, 1061, 1067, 1071, 1077, 1090, 1137, 1155, 1160,
995
- 1167, 1185, 1188, 1202, 1205, 1211, 1218, 1232, 1236, 1242,
996
- 1254, 1257, 1272, 1290, 1309, 1343, 1602, 1628, 1642, 1649,
989
+ 651, 666, 694, 722, 753, 754, 759, 771, 772, 777,
990
+ 782, 789, 790, 794, 796, 802, 803, 811, 812, 816,
991
+ 817, 827, 829, 831, 833, 835, 837, 839, 841, 843,
992
+ 845, 847, 849, 851, 853, 855, 857, 859, 861, 863,
993
+ 865, 867, 869, 871, 873, 877, 913, 931, 952, 991,
994
+ 1055, 1058, 1062, 1068, 1072, 1078, 1091, 1138, 1156, 1161,
995
+ 1168, 1186, 1189, 1203, 1206, 1212, 1219, 1233, 1237, 1243,
996
+ 1255, 1258, 1273, 1291, 1310, 1344, 1602, 1628, 1642, 1649,
997
997
  1688, 1691, 1697, 1750, 1754, 1760, 1786, 1931, 1955, 1973,
998
998
  1977, 1981, 1985, 1996, 2009, 2073, 2151, 2181, 2194, 2199,
999
999
  2213, 2220, 2234, 2249, 2250, 2251, 2255, 2277, 2282, 2290,
@@ -2877,8 +2877,9 @@ yyreduce:
2877
2877
  #line 759 "pl_gram.y"
2878
2878
  {
2879
2879
  /*
2880
- * If there's a lookahead token, read_datatype
2881
- * should consume it.
2880
+ * If there's a lookahead token, read_datatype() will
2881
+ * consume it, and then we must tell bison to forget
2882
+ * it.
2882
2883
  */
2883
2884
  (yyval.dtype) = read_datatype(yychar);
2884
2885
  yyclearin;
@@ -2886,12 +2887,12 @@ yyreduce:
2886
2887
  break;
2887
2888
 
2888
2889
  case 47:
2889
- #line 770 "pl_gram.y"
2890
+ #line 771 "pl_gram.y"
2890
2891
  { (yyval.oid) = InvalidOid; ;}
2891
2892
  break;
2892
2893
 
2893
2894
  case 48:
2894
- #line 772 "pl_gram.y"
2895
+ #line 773 "pl_gram.y"
2895
2896
  {
2896
2897
  (yyval.oid) = get_collation_oid(list_make1(makeString((yyvsp[(2) - (2)].word).ident)),
2897
2898
  false);
@@ -2899,7 +2900,7 @@ yyreduce:
2899
2900
  break;
2900
2901
 
2901
2902
  case 49:
2902
- #line 777 "pl_gram.y"
2903
+ #line 778 "pl_gram.y"
2903
2904
  {
2904
2905
  (yyval.oid) = get_collation_oid(list_make1(makeString(pstrdup((yyvsp[(2) - (2)].keyword)))),
2905
2906
  false);
@@ -2907,41 +2908,41 @@ yyreduce:
2907
2908
  break;
2908
2909
 
2909
2910
  case 50:
2910
- #line 782 "pl_gram.y"
2911
+ #line 783 "pl_gram.y"
2911
2912
  {
2912
2913
  (yyval.oid) = get_collation_oid((yyvsp[(2) - (2)].cword).idents, false);
2913
2914
  ;}
2914
2915
  break;
2915
2916
 
2916
2917
  case 51:
2917
- #line 788 "pl_gram.y"
2918
+ #line 789 "pl_gram.y"
2918
2919
  { (yyval.boolean) = false; ;}
2919
2920
  break;
2920
2921
 
2921
2922
  case 52:
2922
- #line 790 "pl_gram.y"
2923
+ #line 791 "pl_gram.y"
2923
2924
  { (yyval.boolean) = true; ;}
2924
2925
  break;
2925
2926
 
2926
2927
  case 53:
2927
- #line 794 "pl_gram.y"
2928
+ #line 795 "pl_gram.y"
2928
2929
  { (yyval.expr) = NULL; ;}
2929
2930
  break;
2930
2931
 
2931
2932
  case 54:
2932
- #line 796 "pl_gram.y"
2933
+ #line 797 "pl_gram.y"
2933
2934
  {
2934
2935
  (yyval.expr) = read_sql_expression(';', ";");
2935
2936
  ;}
2936
2937
  break;
2937
2938
 
2938
2939
  case 59:
2939
- #line 815 "pl_gram.y"
2940
+ #line 816 "pl_gram.y"
2940
2941
  { (yyval.list) = NIL; ;}
2941
2942
  break;
2942
2943
 
2943
2944
  case 60:
2944
- #line 817 "pl_gram.y"
2945
+ #line 818 "pl_gram.y"
2945
2946
  {
2946
2947
  /* don't bother linking null statements into list */
2947
2948
  if ((yyvsp[(2) - (2)].stmt) == NULL)
@@ -2952,127 +2953,127 @@ yyreduce:
2952
2953
  break;
2953
2954
 
2954
2955
  case 61:
2955
- #line 827 "pl_gram.y"
2956
+ #line 828 "pl_gram.y"
2956
2957
  { (yyval.stmt) = (yyvsp[(1) - (2)].stmt); ;}
2957
2958
  break;
2958
2959
 
2959
2960
  case 62:
2960
- #line 829 "pl_gram.y"
2961
+ #line 830 "pl_gram.y"
2961
2962
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
2962
2963
  break;
2963
2964
 
2964
2965
  case 63:
2965
- #line 831 "pl_gram.y"
2966
+ #line 832 "pl_gram.y"
2966
2967
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
2967
2968
  break;
2968
2969
 
2969
2970
  case 64:
2970
- #line 833 "pl_gram.y"
2971
+ #line 834 "pl_gram.y"
2971
2972
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
2972
2973
  break;
2973
2974
 
2974
2975
  case 65:
2975
- #line 835 "pl_gram.y"
2976
+ #line 836 "pl_gram.y"
2976
2977
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
2977
2978
  break;
2978
2979
 
2979
2980
  case 66:
2980
- #line 837 "pl_gram.y"
2981
+ #line 838 "pl_gram.y"
2981
2982
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
2982
2983
  break;
2983
2984
 
2984
2985
  case 67:
2985
- #line 839 "pl_gram.y"
2986
+ #line 840 "pl_gram.y"
2986
2987
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
2987
2988
  break;
2988
2989
 
2989
2990
  case 68:
2990
- #line 841 "pl_gram.y"
2991
+ #line 842 "pl_gram.y"
2991
2992
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
2992
2993
  break;
2993
2994
 
2994
2995
  case 69:
2995
- #line 843 "pl_gram.y"
2996
+ #line 844 "pl_gram.y"
2996
2997
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
2997
2998
  break;
2998
2999
 
2999
3000
  case 70:
3000
- #line 845 "pl_gram.y"
3001
+ #line 846 "pl_gram.y"
3001
3002
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3002
3003
  break;
3003
3004
 
3004
3005
  case 71:
3005
- #line 847 "pl_gram.y"
3006
+ #line 848 "pl_gram.y"
3006
3007
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3007
3008
  break;
3008
3009
 
3009
3010
  case 72:
3010
- #line 849 "pl_gram.y"
3011
+ #line 850 "pl_gram.y"
3011
3012
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3012
3013
  break;
3013
3014
 
3014
3015
  case 73:
3015
- #line 851 "pl_gram.y"
3016
+ #line 852 "pl_gram.y"
3016
3017
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3017
3018
  break;
3018
3019
 
3019
3020
  case 74:
3020
- #line 853 "pl_gram.y"
3021
+ #line 854 "pl_gram.y"
3021
3022
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3022
3023
  break;
3023
3024
 
3024
3025
  case 75:
3025
- #line 855 "pl_gram.y"
3026
+ #line 856 "pl_gram.y"
3026
3027
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3027
3028
  break;
3028
3029
 
3029
3030
  case 76:
3030
- #line 857 "pl_gram.y"
3031
+ #line 858 "pl_gram.y"
3031
3032
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3032
3033
  break;
3033
3034
 
3034
3035
  case 77:
3035
- #line 859 "pl_gram.y"
3036
+ #line 860 "pl_gram.y"
3036
3037
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3037
3038
  break;
3038
3039
 
3039
3040
  case 78:
3040
- #line 861 "pl_gram.y"
3041
+ #line 862 "pl_gram.y"
3041
3042
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3042
3043
  break;
3043
3044
 
3044
3045
  case 79:
3045
- #line 863 "pl_gram.y"
3046
+ #line 864 "pl_gram.y"
3046
3047
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3047
3048
  break;
3048
3049
 
3049
3050
  case 80:
3050
- #line 865 "pl_gram.y"
3051
+ #line 866 "pl_gram.y"
3051
3052
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3052
3053
  break;
3053
3054
 
3054
3055
  case 81:
3055
- #line 867 "pl_gram.y"
3056
+ #line 868 "pl_gram.y"
3056
3057
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3057
3058
  break;
3058
3059
 
3059
3060
  case 82:
3060
- #line 869 "pl_gram.y"
3061
+ #line 870 "pl_gram.y"
3061
3062
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3062
3063
  break;
3063
3064
 
3064
3065
  case 83:
3065
- #line 871 "pl_gram.y"
3066
+ #line 872 "pl_gram.y"
3066
3067
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3067
3068
  break;
3068
3069
 
3069
3070
  case 84:
3070
- #line 873 "pl_gram.y"
3071
+ #line 874 "pl_gram.y"
3071
3072
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3072
3073
  break;
3073
3074
 
3074
3075
  case 85:
3075
- #line 877 "pl_gram.y"
3076
+ #line 878 "pl_gram.y"
3076
3077
  {
3077
3078
  PLpgSQL_stmt_perform *new;
3078
3079
  int startloc;
@@ -3093,7 +3094,7 @@ yyreduce:
3093
3094
  */
3094
3095
  new->expr = read_sql_construct(';', 0, 0, ";",
3095
3096
  RAW_PARSE_DEFAULT,
3096
- false, false, true,
3097
+ false, false,
3097
3098
  &startloc, NULL);
3098
3099
  /* overwrite "perform" ... */
3099
3100
  memcpy(new->expr->query, " SELECT", 7);
@@ -3109,7 +3110,7 @@ yyreduce:
3109
3110
  break;
3110
3111
 
3111
3112
  case 86:
3112
- #line 913 "pl_gram.y"
3113
+ #line 914 "pl_gram.y"
3113
3114
  {
3114
3115
  PLpgSQL_stmt_call *new;
3115
3116
 
@@ -3130,7 +3131,7 @@ yyreduce:
3130
3131
  break;
3131
3132
 
3132
3133
  case 87:
3133
- #line 931 "pl_gram.y"
3134
+ #line 932 "pl_gram.y"
3134
3135
  {
3135
3136
  /* use the same structures as for CALL, for simplicity */
3136
3137
  PLpgSQL_stmt_call *new;
@@ -3152,7 +3153,7 @@ yyreduce:
3152
3153
  break;
3153
3154
 
3154
3155
  case 88:
3155
- #line 952 "pl_gram.y"
3156
+ #line 953 "pl_gram.y"
3156
3157
  {
3157
3158
  PLpgSQL_stmt_assign *new;
3158
3159
  RawParseMode pmode;
@@ -3184,7 +3185,7 @@ yyreduce:
3184
3185
  plpgsql_push_back_token(T_DATUM);
3185
3186
  new->expr = read_sql_construct(';', 0, 0, ";",
3186
3187
  pmode,
3187
- false, true, true,
3188
+ false, true,
3188
3189
  NULL, NULL);
3189
3190
 
3190
3191
  (yyval.stmt) = (PLpgSQL_stmt *) new;
@@ -3192,7 +3193,7 @@ yyreduce:
3192
3193
  break;
3193
3194
 
3194
3195
  case 89:
3195
- #line 991 "pl_gram.y"
3196
+ #line 992 "pl_gram.y"
3196
3197
  {
3197
3198
  PLpgSQL_stmt_getdiag *new;
3198
3199
  ListCell *lc;
@@ -3256,42 +3257,42 @@ yyreduce:
3256
3257
  break;
3257
3258
 
3258
3259
  case 90:
3259
- #line 1054 "pl_gram.y"
3260
+ #line 1055 "pl_gram.y"
3260
3261
  {
3261
3262
  (yyval.boolean) = false;
3262
3263
  ;}
3263
3264
  break;
3264
3265
 
3265
3266
  case 91:
3266
- #line 1058 "pl_gram.y"
3267
+ #line 1059 "pl_gram.y"
3267
3268
  {
3268
3269
  (yyval.boolean) = false;
3269
3270
  ;}
3270
3271
  break;
3271
3272
 
3272
3273
  case 92:
3273
- #line 1062 "pl_gram.y"
3274
+ #line 1063 "pl_gram.y"
3274
3275
  {
3275
3276
  (yyval.boolean) = true;
3276
3277
  ;}
3277
3278
  break;
3278
3279
 
3279
3280
  case 93:
3280
- #line 1068 "pl_gram.y"
3281
+ #line 1069 "pl_gram.y"
3281
3282
  {
3282
3283
  (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].diagitem));
3283
3284
  ;}
3284
3285
  break;
3285
3286
 
3286
3287
  case 94:
3287
- #line 1072 "pl_gram.y"
3288
+ #line 1073 "pl_gram.y"
3288
3289
  {
3289
3290
  (yyval.list) = list_make1((yyvsp[(1) - (1)].diagitem));
3290
3291
  ;}
3291
3292
  break;
3292
3293
 
3293
3294
  case 95:
3294
- #line 1078 "pl_gram.y"
3295
+ #line 1079 "pl_gram.y"
3295
3296
  {
3296
3297
  PLpgSQL_diag_item *new;
3297
3298
 
@@ -3304,7 +3305,7 @@ yyreduce:
3304
3305
  break;
3305
3306
 
3306
3307
  case 96:
3307
- #line 1090 "pl_gram.y"
3308
+ #line 1091 "pl_gram.y"
3308
3309
  {
3309
3310
  int tok = yylex();
3310
3311
 
@@ -3353,7 +3354,7 @@ yyreduce:
3353
3354
  break;
3354
3355
 
3355
3356
  case 97:
3356
- #line 1138 "pl_gram.y"
3357
+ #line 1139 "pl_gram.y"
3357
3358
  {
3358
3359
  /*
3359
3360
  * In principle we should support a getdiag_target
@@ -3374,7 +3375,7 @@ yyreduce:
3374
3375
  break;
3375
3376
 
3376
3377
  case 98:
3377
- #line 1156 "pl_gram.y"
3378
+ #line 1157 "pl_gram.y"
3378
3379
  {
3379
3380
  /* just to give a better message than "syntax error" */
3380
3381
  word_is_not_variable(&((yyvsp[(1) - (1)].word)), (yylsp[(1) - (1)]));
@@ -3382,7 +3383,7 @@ yyreduce:
3382
3383
  break;
3383
3384
 
3384
3385
  case 99:
3385
- #line 1161 "pl_gram.y"
3386
+ #line 1162 "pl_gram.y"
3386
3387
  {
3387
3388
  /* just to give a better message than "syntax error" */
3388
3389
  cword_is_not_variable(&((yyvsp[(1) - (1)].cword)), (yylsp[(1) - (1)]));
@@ -3390,7 +3391,7 @@ yyreduce:
3390
3391
  break;
3391
3392
 
3392
3393
  case 100:
3393
- #line 1168 "pl_gram.y"
3394
+ #line 1169 "pl_gram.y"
3394
3395
  {
3395
3396
  PLpgSQL_stmt_if *new;
3396
3397
 
@@ -3408,14 +3409,14 @@ yyreduce:
3408
3409
  break;
3409
3410
 
3410
3411
  case 101:
3411
- #line 1185 "pl_gram.y"
3412
+ #line 1186 "pl_gram.y"
3412
3413
  {
3413
3414
  (yyval.list) = NIL;
3414
3415
  ;}
3415
3416
  break;
3416
3417
 
3417
3418
  case 102:
3418
- #line 1189 "pl_gram.y"
3419
+ #line 1190 "pl_gram.y"
3419
3420
  {
3420
3421
  PLpgSQL_if_elsif *new;
3421
3422
 
@@ -3429,28 +3430,28 @@ yyreduce:
3429
3430
  break;
3430
3431
 
3431
3432
  case 103:
3432
- #line 1202 "pl_gram.y"
3433
+ #line 1203 "pl_gram.y"
3433
3434
  {
3434
3435
  (yyval.list) = NIL;
3435
3436
  ;}
3436
3437
  break;
3437
3438
 
3438
3439
  case 104:
3439
- #line 1206 "pl_gram.y"
3440
+ #line 1207 "pl_gram.y"
3440
3441
  {
3441
3442
  (yyval.list) = (yyvsp[(2) - (2)].list);
3442
3443
  ;}
3443
3444
  break;
3444
3445
 
3445
3446
  case 105:
3446
- #line 1212 "pl_gram.y"
3447
+ #line 1213 "pl_gram.y"
3447
3448
  {
3448
3449
  (yyval.stmt) = make_case((yylsp[(1) - (7)]), (yyvsp[(2) - (7)].expr), (yyvsp[(3) - (7)].list), (yyvsp[(4) - (7)].list));
3449
3450
  ;}
3450
3451
  break;
3451
3452
 
3452
3453
  case 106:
3453
- #line 1218 "pl_gram.y"
3454
+ #line 1219 "pl_gram.y"
3454
3455
  {
3455
3456
  PLpgSQL_expr *expr = NULL;
3456
3457
  int tok = yylex();
@@ -3466,21 +3467,21 @@ yyreduce:
3466
3467
  break;
3467
3468
 
3468
3469
  case 107:
3469
- #line 1233 "pl_gram.y"
3470
+ #line 1234 "pl_gram.y"
3470
3471
  {
3471
3472
  (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].casewhen));
3472
3473
  ;}
3473
3474
  break;
3474
3475
 
3475
3476
  case 108:
3476
- #line 1237 "pl_gram.y"
3477
+ #line 1238 "pl_gram.y"
3477
3478
  {
3478
3479
  (yyval.list) = list_make1((yyvsp[(1) - (1)].casewhen));
3479
3480
  ;}
3480
3481
  break;
3481
3482
 
3482
3483
  case 109:
3483
- #line 1243 "pl_gram.y"
3484
+ #line 1244 "pl_gram.y"
3484
3485
  {
3485
3486
  PLpgSQL_case_when *new = palloc(sizeof(PLpgSQL_case_when));
3486
3487
 
@@ -3492,14 +3493,14 @@ yyreduce:
3492
3493
  break;
3493
3494
 
3494
3495
  case 110:
3495
- #line 1254 "pl_gram.y"
3496
+ #line 1255 "pl_gram.y"
3496
3497
  {
3497
3498
  (yyval.list) = NIL;
3498
3499
  ;}
3499
3500
  break;
3500
3501
 
3501
3502
  case 111:
3502
- #line 1258 "pl_gram.y"
3503
+ #line 1259 "pl_gram.y"
3503
3504
  {
3504
3505
  /*
3505
3506
  * proc_sect could return an empty list, but we
@@ -3515,7 +3516,7 @@ yyreduce:
3515
3516
  break;
3516
3517
 
3517
3518
  case 112:
3518
- #line 1273 "pl_gram.y"
3519
+ #line 1274 "pl_gram.y"
3519
3520
  {
3520
3521
  PLpgSQL_stmt_loop *new;
3521
3522
 
@@ -3534,7 +3535,7 @@ yyreduce:
3534
3535
  break;
3535
3536
 
3536
3537
  case 113:
3537
- #line 1291 "pl_gram.y"
3538
+ #line 1292 "pl_gram.y"
3538
3539
  {
3539
3540
  PLpgSQL_stmt_while *new;
3540
3541
 
@@ -3554,7 +3555,7 @@ yyreduce:
3554
3555
  break;
3555
3556
 
3556
3557
  case 114:
3557
- #line 1310 "pl_gram.y"
3558
+ #line 1311 "pl_gram.y"
3558
3559
  {
3559
3560
  /* This runs after we've scanned the loop body */
3560
3561
  if ((yyvsp[(3) - (4)].stmt)->cmd_type == PLPGSQL_STMT_FORI)
@@ -3589,7 +3590,7 @@ yyreduce:
3589
3590
  break;
3590
3591
 
3591
3592
  case 115:
3592
- #line 1344 "pl_gram.y"
3593
+ #line 1345 "pl_gram.y"
3593
3594
  {
3594
3595
  int tok = yylex();
3595
3596
  int tokloc = yylloc;
@@ -3722,7 +3723,6 @@ yyreduce:
3722
3723
  RAW_PARSE_DEFAULT,
3723
3724
  true,
3724
3725
  false,
3725
- true,
3726
3726
  &expr1loc,
3727
3727
  &tok);
3728
3728
 
@@ -4128,7 +4128,7 @@ yyreduce:
4128
4128
  expr = read_sql_construct(',', ';', K_USING,
4129
4129
  ", or ; or USING",
4130
4130
  RAW_PARSE_PLPGSQL_EXPR,
4131
- true, true, true,
4131
+ true, true,
4132
4132
  NULL, &tok);
4133
4133
  new->params = lappend(new->params, expr);
4134
4134
  }
@@ -4215,21 +4215,21 @@ yyreduce:
4215
4215
  case 129:
4216
4216
  #line 1974 "pl_gram.y"
4217
4217
  {
4218
- (yyval.stmt) = make_execsql_stmt(K_IMPORT, (yylsp[(1) - (1)]));
4218
+ (yyval.stmt) = make_execsql_stmt(K_IMPORT, (yylsp[(1) - (1)]), NULL);
4219
4219
  ;}
4220
4220
  break;
4221
4221
 
4222
4222
  case 130:
4223
4223
  #line 1978 "pl_gram.y"
4224
4224
  {
4225
- (yyval.stmt) = make_execsql_stmt(K_INSERT, (yylsp[(1) - (1)]));
4225
+ (yyval.stmt) = make_execsql_stmt(K_INSERT, (yylsp[(1) - (1)]), NULL);
4226
4226
  ;}
4227
4227
  break;
4228
4228
 
4229
4229
  case 131:
4230
4230
  #line 1982 "pl_gram.y"
4231
4231
  {
4232
- (yyval.stmt) = make_execsql_stmt(K_MERGE, (yylsp[(1) - (1)]));
4232
+ (yyval.stmt) = make_execsql_stmt(K_MERGE, (yylsp[(1) - (1)]), NULL);
4233
4233
  ;}
4234
4234
  break;
4235
4235
 
@@ -4243,7 +4243,7 @@ yyreduce:
4243
4243
  if (tok == '=' || tok == COLON_EQUALS ||
4244
4244
  tok == '[' || tok == '.')
4245
4245
  word_is_not_variable(&((yyvsp[(1) - (1)].word)), (yylsp[(1) - (1)]));
4246
- (yyval.stmt) = make_execsql_stmt(T_WORD, (yylsp[(1) - (1)]));
4246
+ (yyval.stmt) = make_execsql_stmt(T_WORD, (yylsp[(1) - (1)]), &((yyvsp[(1) - (1)].word)));
4247
4247
  ;}
4248
4248
  break;
4249
4249
 
@@ -4257,7 +4257,7 @@ yyreduce:
4257
4257
  if (tok == '=' || tok == COLON_EQUALS ||
4258
4258
  tok == '[' || tok == '.')
4259
4259
  cword_is_not_variable(&((yyvsp[(1) - (1)].cword)), (yylsp[(1) - (1)]));
4260
- (yyval.stmt) = make_execsql_stmt(T_CWORD, (yylsp[(1) - (1)]));
4260
+ (yyval.stmt) = make_execsql_stmt(T_CWORD, (yylsp[(1) - (1)]), NULL);
4261
4261
  ;}
4262
4262
  break;
4263
4263
 
@@ -4271,7 +4271,7 @@ yyreduce:
4271
4271
  expr = read_sql_construct(K_INTO, K_USING, ';',
4272
4272
  "INTO or USING or ;",
4273
4273
  RAW_PARSE_PLPGSQL_EXPR,
4274
- true, true, true,
4274
+ true, true,
4275
4275
  NULL, &endtoken);
4276
4276
 
4277
4277
  new = palloc(sizeof(PLpgSQL_stmt_dynexecute));
@@ -4310,7 +4310,7 @@ yyreduce:
4310
4310
  expr = read_sql_construct(',', ';', K_INTO,
4311
4311
  ", or ; or INTO",
4312
4312
  RAW_PARSE_PLPGSQL_EXPR,
4313
- true, true, true,
4313
+ true, true,
4314
4314
  NULL, &endtoken);
4315
4315
  new->params = lappend(new->params, expr);
4316
4316
  } while (endtoken == ',');
@@ -5095,7 +5095,7 @@ read_sql_expression(int until, const char *expected)
5095
5095
  {
5096
5096
  return read_sql_construct(until, 0, 0, expected,
5097
5097
  RAW_PARSE_PLPGSQL_EXPR,
5098
- true, true, true, NULL, NULL);
5098
+ true, true, NULL, NULL);
5099
5099
  }
5100
5100
 
5101
5101
  /* Convenience routine to read an expression with two possible terminators */
@@ -5105,7 +5105,7 @@ read_sql_expression2(int until, int until2, const char *expected,
5105
5105
  {
5106
5106
  return read_sql_construct(until, until2, 0, expected,
5107
5107
  RAW_PARSE_PLPGSQL_EXPR,
5108
- true, true, true, NULL, endtoken);
5108
+ true, true, NULL, endtoken);
5109
5109
  }
5110
5110
 
5111
5111
  /* Convenience routine to read a SQL statement that must end with ';' */
@@ -5114,7 +5114,7 @@ read_sql_stmt(void)
5114
5114
  {
5115
5115
  return read_sql_construct(';', 0, 0, ";",
5116
5116
  RAW_PARSE_DEFAULT,
5117
- false, true, true, NULL, NULL);
5117
+ false, true, NULL, NULL);
5118
5118
  }
5119
5119
 
5120
5120
  /*
@@ -5127,7 +5127,6 @@ read_sql_stmt(void)
5127
5127
  * parsemode: raw_parser() mode to use
5128
5128
  * isexpression: whether to say we're reading an "expression" or a "statement"
5129
5129
  * valid_sql: whether to check the syntax of the expr
5130
- * trim: trim trailing whitespace
5131
5130
  * startloc: if not NULL, location of first token is stored at *startloc
5132
5131
  * endtoken: if not NULL, ending token is stored at *endtoken
5133
5132
  * (this is only interesting if until2 or until3 isn't zero)
@@ -5140,7 +5139,6 @@ read_sql_construct(int until,
5140
5139
  RawParseMode parsemode,
5141
5140
  bool isexpression,
5142
5141
  bool valid_sql,
5143
- bool trim,
5144
5142
  int *startloc,
5145
5143
  int *endtoken)
5146
5144
  {
@@ -5148,6 +5146,7 @@ read_sql_construct(int until,
5148
5146
  StringInfoData ds;
5149
5147
  IdentifierLookup save_IdentifierLookup;
5150
5148
  int startlocation = -1;
5149
+ int endlocation = -1;
5151
5150
  int parenlevel = 0;
5152
5151
  PLpgSQL_expr *expr;
5153
5152
 
@@ -5198,6 +5197,8 @@ read_sql_construct(int until,
5198
5197
  expected),
5199
5198
  parser_errposition(yylloc)));
5200
5199
  }
5200
+ /* Remember end+1 location of last accepted token */
5201
+ endlocation = yylloc + plpgsql_token_length();
5201
5202
  }
5202
5203
 
5203
5204
  plpgsql_IdentifierLookup = save_IdentifierLookup;
@@ -5208,7 +5209,7 @@ read_sql_construct(int until,
5208
5209
  *endtoken = tok;
5209
5210
 
5210
5211
  /* give helpful complaint about empty input */
5211
- if (startlocation >= yylloc)
5212
+ if (startlocation >= endlocation)
5212
5213
  {
5213
5214
  if (isexpression)
5214
5215
  yyerror("missing expression");
@@ -5216,14 +5217,14 @@ read_sql_construct(int until,
5216
5217
  yyerror("missing SQL statement");
5217
5218
  }
5218
5219
 
5219
- plpgsql_append_source_text(&ds, startlocation, yylloc);
5220
-
5221
- /* trim any trailing whitespace, for neatness */
5222
- if (trim)
5223
- {
5224
- while (ds.len > 0 && scanner_isspace(ds.data[ds.len - 1]))
5225
- ds.data[--ds.len] = '\0';
5226
- }
5220
+ /*
5221
+ * We save only the text from startlocation to endlocation-1. This
5222
+ * suppresses the "until" token as well as any whitespace or comments
5223
+ * following the last accepted token. (We used to strip such trailing
5224
+ * whitespace by hand, but that causes problems if there's a "-- comment"
5225
+ * in front of said whitespace.)
5226
+ */
5227
+ plpgsql_append_source_text(&ds, startlocation, endlocation);
5227
5228
 
5228
5229
  expr = palloc0(sizeof(PLpgSQL_expr));
5229
5230
  expr->query = pstrdup(ds.data);
@@ -5240,13 +5241,17 @@ read_sql_construct(int until,
5240
5241
  return expr;
5241
5242
  }
5242
5243
 
5244
+ /*
5245
+ * Read a datatype declaration, consuming the current lookahead token if any.
5246
+ * Returns a PLpgSQL_type struct.
5247
+ */
5243
5248
  static PLpgSQL_type *
5244
5249
  read_datatype(int tok)
5245
5250
  {
5246
5251
  StringInfoData ds;
5247
5252
  char *type_name;
5248
5253
  int startlocation;
5249
- PLpgSQL_type *result;
5254
+ PLpgSQL_type *result = NULL;
5250
5255
  int parenlevel = 0;
5251
5256
 
5252
5257
  /* Should only be called while parsing DECLARE sections */
@@ -5256,11 +5261,12 @@ read_datatype(int tok)
5256
5261
  if (tok == YYEMPTY)
5257
5262
  tok = yylex();
5258
5263
 
5264
+ /* The current token is the start of what we'll pass to parse_datatype */
5259
5265
  startlocation = yylloc;
5260
5266
 
5261
5267
  /*
5262
- * If we have a simple or composite identifier, check for %TYPE
5263
- * and %ROWTYPE constructs.
5268
+ * If we have a simple or composite identifier, check for %TYPE and
5269
+ * %ROWTYPE constructs.
5264
5270
  */
5265
5271
  if (tok == T_WORD)
5266
5272
  {
@@ -5272,18 +5278,10 @@ read_datatype(int tok)
5272
5278
  tok = yylex();
5273
5279
  if (tok_is_keyword(tok, &yylval,
5274
5280
  K_TYPE, "type"))
5275
- {
5276
5281
  result = plpgsql_parse_wordtype(dtname);
5277
- if (result)
5278
- return result;
5279
- }
5280
5282
  else if (tok_is_keyword(tok, &yylval,
5281
5283
  K_ROWTYPE, "rowtype"))
5282
- {
5283
5284
  result = plpgsql_parse_wordrowtype(dtname);
5284
- if (result)
5285
- return result;
5286
- }
5287
5285
  }
5288
5286
  }
5289
5287
  else if (plpgsql_token_is_unreserved_keyword(tok))
@@ -5296,18 +5294,10 @@ read_datatype(int tok)
5296
5294
  tok = yylex();
5297
5295
  if (tok_is_keyword(tok, &yylval,
5298
5296
  K_TYPE, "type"))
5299
- {
5300
5297
  result = plpgsql_parse_wordtype(dtname);
5301
- if (result)
5302
- return result;
5303
- }
5304
5298
  else if (tok_is_keyword(tok, &yylval,
5305
5299
  K_ROWTYPE, "rowtype"))
5306
- {
5307
5300
  result = plpgsql_parse_wordrowtype(dtname);
5308
- if (result)
5309
- return result;
5310
- }
5311
5301
  }
5312
5302
  }
5313
5303
  else if (tok == T_CWORD)
@@ -5320,21 +5310,56 @@ read_datatype(int tok)
5320
5310
  tok = yylex();
5321
5311
  if (tok_is_keyword(tok, &yylval,
5322
5312
  K_TYPE, "type"))
5323
- {
5324
5313
  result = plpgsql_parse_cwordtype(dtnames);
5325
- if (result)
5326
- return result;
5327
- }
5328
5314
  else if (tok_is_keyword(tok, &yylval,
5329
5315
  K_ROWTYPE, "rowtype"))
5330
- {
5331
5316
  result = plpgsql_parse_cwordrowtype(dtnames);
5332
- if (result)
5333
- return result;
5334
- }
5335
5317
  }
5336
5318
  }
5337
5319
 
5320
+ /*
5321
+ * If we recognized a %TYPE or %ROWTYPE construct, see if it is followed
5322
+ * by array decoration: [ ARRAY ] [ '[' [ iconst ] ']' [ ... ] ]
5323
+ *
5324
+ * Like the core parser, we ignore the specific numbers and sizes of
5325
+ * dimensions; arrays of different dimensionality are still the same type
5326
+ * in Postgres.
5327
+ */
5328
+ if (result)
5329
+ {
5330
+ bool is_array = false;
5331
+
5332
+ tok = yylex();
5333
+ if (tok_is_keyword(tok, &yylval,
5334
+ K_ARRAY, "array"))
5335
+ {
5336
+ is_array = true;
5337
+ tok = yylex();
5338
+ }
5339
+ while (tok == '[')
5340
+ {
5341
+ is_array = true;
5342
+ tok = yylex();
5343
+ if (tok == ICONST)
5344
+ tok = yylex();
5345
+ if (tok != ']')
5346
+ yyerror("syntax error, expected \"]\"");
5347
+ tok = yylex();
5348
+ }
5349
+ plpgsql_push_back_token(tok);
5350
+
5351
+ if (is_array)
5352
+ result = plpgsql_build_datatype_arrayof(result);
5353
+
5354
+ return result;
5355
+ }
5356
+
5357
+ /*
5358
+ * Not %TYPE or %ROWTYPE, so scan to the end of the datatype declaration,
5359
+ * which could include typmod or array decoration. We are not very picky
5360
+ * here, instead relying on parse_datatype to complain about garbage. But
5361
+ * we must count parens to handle typmods within cursor_arg correctly.
5362
+ */
5338
5363
  while (tok != ';')
5339
5364
  {
5340
5365
  if (tok == 0)
@@ -5376,8 +5401,13 @@ read_datatype(int tok)
5376
5401
  return result;
5377
5402
  }
5378
5403
 
5404
+ /*
5405
+ * Read a generic SQL statement. We have already read its first token;
5406
+ * firsttoken is that token's code and location its starting location.
5407
+ * If firsttoken == T_WORD, pass its yylval value as "word", else pass NULL.
5408
+ */
5379
5409
  static PLpgSQL_stmt *
5380
- make_execsql_stmt(int firsttoken, int location)
5410
+ make_execsql_stmt(int firsttoken, int location, PLword *word)
5381
5411
  {
5382
5412
  StringInfoData ds;
5383
5413
  IdentifierLookup save_IdentifierLookup;
@@ -5390,9 +5420,16 @@ make_execsql_stmt(int firsttoken, int location)
5390
5420
  bool have_strict = false;
5391
5421
  int into_start_loc = -1;
5392
5422
  int into_end_loc = -1;
5423
+ int paren_depth = 0;
5424
+ int begin_depth = 0;
5425
+ bool in_routine_definition = false;
5426
+ int token_count = 0;
5427
+ char tokens[4]; /* records the first few tokens */
5393
5428
 
5394
5429
  initStringInfo(&ds);
5395
5430
 
5431
+ memset(tokens, 0, sizeof(tokens));
5432
+
5396
5433
  /* special lookup mode for identifiers within the SQL text */
5397
5434
  save_IdentifierLookup = plpgsql_IdentifierLookup;
5398
5435
  plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_EXPR;
@@ -5401,6 +5438,12 @@ make_execsql_stmt(int firsttoken, int location)
5401
5438
  * Scan to the end of the SQL command. Identify any INTO-variables
5402
5439
  * clause lurking within it, and parse that via read_into_target().
5403
5440
  *
5441
+ * The end of the statement is defined by a semicolon ... except that
5442
+ * semicolons within parentheses or BEGIN/END blocks don't terminate a
5443
+ * statement. We follow psql's lead in not recognizing BEGIN/END except
5444
+ * after CREATE [OR REPLACE] {FUNCTION|PROCEDURE}. END can also appear
5445
+ * within a CASE construct, so we treat CASE/END like BEGIN/END.
5446
+ *
5404
5447
  * Because INTO is sometimes used in the main SQL grammar, we have to be
5405
5448
  * careful not to take any such usage of INTO as a PL/pgSQL INTO clause.
5406
5449
  * There are currently three such cases:
@@ -5426,13 +5469,50 @@ make_execsql_stmt(int firsttoken, int location)
5426
5469
  * break this logic again ... beware!
5427
5470
  */
5428
5471
  tok = firsttoken;
5472
+ if (tok == T_WORD && strcmp(word->ident, "create") == 0)
5473
+ tokens[token_count] = 'c';
5474
+ token_count++;
5475
+
5429
5476
  for (;;)
5430
5477
  {
5431
5478
  prev_tok = tok;
5432
5479
  tok = yylex();
5433
5480
  if (have_into && into_end_loc < 0)
5434
5481
  into_end_loc = yylloc; /* token after the INTO part */
5435
- if (tok == ';')
5482
+ /* Detect CREATE [OR REPLACE] {FUNCTION|PROCEDURE} */
5483
+ if (tokens[0] == 'c' && token_count < sizeof(tokens))
5484
+ {
5485
+ if (tok == K_OR)
5486
+ tokens[token_count] = 'o';
5487
+ else if (tok == T_WORD &&
5488
+ strcmp(yylval.word.ident, "replace") == 0)
5489
+ tokens[token_count] = 'r';
5490
+ else if (tok == T_WORD &&
5491
+ strcmp(yylval.word.ident, "function") == 0)
5492
+ tokens[token_count] = 'f';
5493
+ else if (tok == T_WORD &&
5494
+ strcmp(yylval.word.ident, "procedure") == 0)
5495
+ tokens[token_count] = 'f'; /* treat same as "function" */
5496
+ if (tokens[1] == 'f' ||
5497
+ (tokens[1] == 'o' && tokens[2] == 'r' && tokens[3] == 'f'))
5498
+ in_routine_definition = true;
5499
+ token_count++;
5500
+ }
5501
+ /* Track paren nesting (needed for CREATE RULE syntax) */
5502
+ if (tok == '(')
5503
+ paren_depth++;
5504
+ else if (tok == ')' && paren_depth > 0)
5505
+ paren_depth--;
5506
+ /* We need track BEGIN/END nesting only in a routine definition */
5507
+ if (in_routine_definition && paren_depth == 0)
5508
+ {
5509
+ if (tok == K_BEGIN || tok == K_CASE)
5510
+ begin_depth++;
5511
+ else if (tok == K_END && begin_depth > 0)
5512
+ begin_depth--;
5513
+ }
5514
+ /* Command-ending semicolon? */
5515
+ if (tok == ';' && paren_depth == 0 && begin_depth == 0)
5436
5516
  break;
5437
5517
  if (tok == 0)
5438
5518
  yyerror("unexpected end of function definition");
@@ -5596,11 +5676,11 @@ read_fetch_direction(void)
5596
5676
  {
5597
5677
  /*
5598
5678
  * Assume it's a count expression with no preceding keyword.
5599
- * Note: we allow this syntax because core SQL does, but we don't
5600
- * document it because of the ambiguity with the omitted-direction
5601
- * case. For instance, "MOVE n IN c" will fail if n is a variable.
5602
- * Perhaps this can be improved someday, but it's hardly worth a
5603
- * lot of work.
5679
+ * Note: we allow this syntax because core SQL does, but it's
5680
+ * ambiguous with the case of an omitted direction clause; for
5681
+ * instance, "MOVE n IN c" will fail if n is a variable, because the
5682
+ * preceding else-arm will trigger. Perhaps this can be improved
5683
+ * someday, but it hardly seems worth a lot of work.
5604
5684
  */
5605
5685
  plpgsql_push_back_token(tok);
5606
5686
  fetch->expr = read_sql_expression2(K_FROM, K_IN,
@@ -6090,7 +6170,30 @@ plpgsql_sql_error_callback(void *arg)
6090
6170
  * This is handled the same as in check_sql_expr(), and we likewise
6091
6171
  * expect that the given string is a copy from the source text.
6092
6172
  */
6093
- static PLpgSQL_type * parse_datatype(const char *string, int location) { PLpgSQL_type *typ; typ = (PLpgSQL_type *) palloc0(sizeof(PLpgSQL_type)); typ->typname = pstrdup(string); typ->ttype = strcmp(string, "RECORD") == 0 ? PLPGSQL_TTYPE_REC : PLPGSQL_TTYPE_SCALAR; return typ; }
6173
+
6174
+ #include "catalog/pg_collation_d.h"
6175
+ static PLpgSQL_type * parse_datatype(const char *string, int location) {
6176
+ PLpgSQL_type *typ;
6177
+
6178
+ /* Ignore trailing spaces */
6179
+ size_t len = strlen(string);
6180
+ while (len > 0 && scanner_isspace(string[len - 1])) --len;
6181
+
6182
+ typ = (PLpgSQL_type *) palloc0(sizeof(PLpgSQL_type));
6183
+ typ->typname = pstrdup(string);
6184
+ typ->ttype = pg_strncasecmp(string, "RECORD", len) == 0 ? PLPGSQL_TTYPE_REC : PLPGSQL_TTYPE_SCALAR;
6185
+ if (pg_strncasecmp(string, "REFCURSOR", len) == 0 || pg_strncasecmp(string, "CURSOR", len) == 0)
6186
+ {
6187
+ typ->typoid = REFCURSOROID;
6188
+ }
6189
+ else if (pg_strncasecmp(string, "TEXT", len) == 0)
6190
+ {
6191
+ typ->typoid = TEXTOID;
6192
+ typ->collation = DEFAULT_COLLATION_OID;
6193
+ }
6194
+ return typ;
6195
+ }
6196
+
6094
6197
 
6095
6198
 
6096
6199
  /*
@@ -6229,16 +6332,12 @@ read_cursor_args(PLpgSQL_var *cursor, int until)
6229
6332
  * Read the value expression. To provide the user with meaningful
6230
6333
  * parse error positions, we check the syntax immediately, instead of
6231
6334
  * checking the final expression that may have the arguments
6232
- * reordered. Trailing whitespace must not be trimmed, because
6233
- * otherwise input of the form (param -- comment\n, param) would be
6234
- * translated into a form where the second parameter is commented
6235
- * out.
6335
+ * reordered.
6236
6336
  */
6237
6337
  item = read_sql_construct(',', ')', 0,
6238
6338
  ",\" or \")",
6239
6339
  RAW_PARSE_PLPGSQL_EXPR,
6240
6340
  true, true,
6241
- false, /* do not trim */
6242
6341
  NULL, &endtoken);
6243
6342
 
6244
6343
  argv[argpos] = item->query;