pg_query 4.2.1 → 6.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (901) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +61 -0
  3. data/README.md +7 -9
  4. data/Rakefile +5 -6
  5. data/ext/pg_query/ext_symbols_freebsd.sym +1 -0
  6. data/ext/pg_query/ext_symbols_freebsd_with_ruby_abi_version.sym +2 -0
  7. data/ext/pg_query/ext_symbols_openbsd.sym +1 -0
  8. data/ext/pg_query/ext_symbols_openbsd_with_ruby_abi_version.sym +2 -0
  9. data/ext/pg_query/ext_symbols_with_ruby_abi_version.sym +2 -0
  10. data/ext/pg_query/extconf.rb +33 -9
  11. data/ext/pg_query/include/pg_query.h +28 -3
  12. data/ext/pg_query/include/pg_query_enum_defs.c +599 -167
  13. data/ext/pg_query/include/pg_query_fingerprint_conds.c +640 -520
  14. data/ext/pg_query/include/pg_query_fingerprint_defs.c +6400 -4633
  15. data/ext/pg_query/include/pg_query_outfuncs_conds.c +433 -343
  16. data/ext/pg_query/include/pg_query_outfuncs_defs.c +1472 -1152
  17. data/ext/pg_query/include/pg_query_readfuncs_conds.c +154 -124
  18. data/ext/pg_query/include/pg_query_readfuncs_defs.c +1886 -1506
  19. data/ext/pg_query/include/postgres/access/amapi.h +303 -0
  20. data/ext/pg_query/include/postgres/access/attmap.h +54 -0
  21. data/ext/pg_query/include/postgres/access/attnum.h +64 -0
  22. data/ext/pg_query/include/postgres/access/brin_internal.h +116 -0
  23. data/ext/pg_query/include/postgres/access/brin_tuple.h +112 -0
  24. data/ext/pg_query/include/postgres/access/clog.h +62 -0
  25. data/ext/pg_query/include/postgres/access/commit_ts.h +73 -0
  26. data/ext/pg_query/include/postgres/access/detoast.h +82 -0
  27. data/ext/pg_query/include/postgres/access/genam.h +246 -0
  28. data/ext/pg_query/include/postgres/access/gin.h +91 -0
  29. data/ext/pg_query/include/postgres/access/htup.h +89 -0
  30. data/ext/pg_query/include/postgres/access/htup_details.h +811 -0
  31. data/ext/pg_query/include/postgres/access/itup.h +170 -0
  32. data/ext/pg_query/include/postgres/access/parallel.h +81 -0
  33. data/ext/pg_query/include/postgres/access/printtup.h +35 -0
  34. data/ext/pg_query/include/postgres/access/relation.h +28 -0
  35. data/ext/pg_query/include/postgres/access/relscan.h +191 -0
  36. data/ext/pg_query/include/postgres/access/rmgrlist.h +49 -0
  37. data/ext/pg_query/include/postgres/access/sdir.h +67 -0
  38. data/ext/pg_query/include/postgres/access/skey.h +151 -0
  39. data/ext/pg_query/include/postgres/access/slru.h +218 -0
  40. data/ext/pg_query/include/postgres/access/stratnum.h +85 -0
  41. data/ext/pg_query/include/postgres/access/sysattr.h +29 -0
  42. data/ext/pg_query/include/postgres/access/table.h +28 -0
  43. data/ext/pg_query/include/postgres/access/tableam.h +2110 -0
  44. data/ext/pg_query/include/postgres/access/tidstore.h +50 -0
  45. data/ext/pg_query/include/postgres/access/toast_compression.h +73 -0
  46. data/ext/pg_query/include/postgres/access/transam.h +418 -0
  47. data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
  48. data/ext/pg_query/include/postgres/access/tupconvert.h +54 -0
  49. data/ext/pg_query/include/postgres/access/tupdesc.h +154 -0
  50. data/ext/pg_query/include/postgres/access/tupmacs.h +207 -0
  51. data/ext/pg_query/include/postgres/access/twophase.h +65 -0
  52. data/ext/pg_query/include/postgres/access/xact.h +530 -0
  53. data/ext/pg_query/include/postgres/access/xlog.h +310 -0
  54. data/ext/pg_query/include/postgres/access/xlog_internal.h +405 -0
  55. data/ext/pg_query/include/postgres/access/xlogbackup.h +43 -0
  56. data/ext/pg_query/include/postgres/access/xlogdefs.h +82 -0
  57. data/ext/pg_query/include/postgres/access/xlogprefetcher.h +55 -0
  58. data/ext/pg_query/include/postgres/access/xlogreader.h +444 -0
  59. data/ext/pg_query/include/postgres/access/xlogrecord.h +248 -0
  60. data/ext/pg_query/include/postgres/access/xlogrecovery.h +158 -0
  61. data/ext/pg_query/include/postgres/archive/archive_module.h +67 -0
  62. data/ext/pg_query/include/postgres/c.h +1374 -0
  63. data/ext/pg_query/include/postgres/catalog/catalog.h +47 -0
  64. data/ext/pg_query/include/postgres/catalog/catversion.h +62 -0
  65. data/ext/pg_query/include/postgres/catalog/dependency.h +228 -0
  66. data/ext/pg_query/include/postgres/catalog/genbki.h +149 -0
  67. data/ext/pg_query/include/postgres/catalog/index.h +218 -0
  68. data/ext/pg_query/include/postgres/catalog/indexing.h +54 -0
  69. data/ext/pg_query/include/postgres/catalog/namespace.h +189 -0
  70. data/ext/pg_query/include/postgres/catalog/objectaccess.h +267 -0
  71. data/ext/pg_query/include/postgres/catalog/objectaddress.h +93 -0
  72. data/ext/pg_query/include/postgres/catalog/pg_aggregate.h +182 -0
  73. data/ext/pg_query/include/postgres/catalog/pg_aggregate_d.h +78 -0
  74. data/ext/pg_query/include/postgres/catalog/pg_am.h +66 -0
  75. data/ext/pg_query/include/postgres/catalog/pg_am_d.h +47 -0
  76. data/ext/pg_query/include/postgres/catalog/pg_attribute.h +240 -0
  77. data/ext/pg_query/include/postgres/catalog/pg_attribute_d.h +62 -0
  78. data/ext/pg_query/include/postgres/catalog/pg_authid.h +66 -0
  79. data/ext/pg_query/include/postgres/catalog/pg_authid_d.h +60 -0
  80. data/ext/pg_query/include/postgres/catalog/pg_class.h +235 -0
  81. data/ext/pg_query/include/postgres/catalog/pg_class_d.h +134 -0
  82. data/ext/pg_query/include/postgres/catalog/pg_collation.h +106 -0
  83. data/ext/pg_query/include/postgres/catalog/pg_collation_d.h +66 -0
  84. data/ext/pg_query/include/postgres/catalog/pg_constraint.h +278 -0
  85. data/ext/pg_query/include/postgres/catalog/pg_constraint_d.h +74 -0
  86. data/ext/pg_query/include/postgres/catalog/pg_control.h +260 -0
  87. data/ext/pg_query/include/postgres/catalog/pg_conversion.h +79 -0
  88. data/ext/pg_query/include/postgres/catalog/pg_conversion_d.h +38 -0
  89. data/ext/pg_query/include/postgres/catalog/pg_database.h +129 -0
  90. data/ext/pg_query/include/postgres/catalog/pg_database_d.h +53 -0
  91. data/ext/pg_query/include/postgres/catalog/pg_depend.h +77 -0
  92. data/ext/pg_query/include/postgres/catalog/pg_depend_d.h +36 -0
  93. data/ext/pg_query/include/postgres/catalog/pg_event_trigger.h +60 -0
  94. data/ext/pg_query/include/postgres/catalog/pg_event_trigger_d.h +36 -0
  95. data/ext/pg_query/include/postgres/catalog/pg_index.h +92 -0
  96. data/ext/pg_query/include/postgres/catalog/pg_index_d.h +59 -0
  97. data/ext/pg_query/include/postgres/catalog/pg_language.h +75 -0
  98. data/ext/pg_query/include/postgres/catalog/pg_language_d.h +41 -0
  99. data/ext/pg_query/include/postgres/catalog/pg_namespace.h +67 -0
  100. data/ext/pg_query/include/postgres/catalog/pg_namespace_d.h +36 -0
  101. data/ext/pg_query/include/postgres/catalog/pg_opclass.h +91 -0
  102. data/ext/pg_query/include/postgres/catalog/pg_opclass_d.h +51 -0
  103. data/ext/pg_query/include/postgres/catalog/pg_operator.h +124 -0
  104. data/ext/pg_query/include/postgres/catalog/pg_operator_d.h +142 -0
  105. data/ext/pg_query/include/postgres/catalog/pg_opfamily.h +67 -0
  106. data/ext/pg_query/include/postgres/catalog/pg_opfamily_d.h +51 -0
  107. data/ext/pg_query/include/postgres/catalog/pg_partitioned_table.h +76 -0
  108. data/ext/pg_query/include/postgres/catalog/pg_partitioned_table_d.h +36 -0
  109. data/ext/pg_query/include/postgres/catalog/pg_proc.h +223 -0
  110. data/ext/pg_query/include/postgres/catalog/pg_proc_d.h +101 -0
  111. data/ext/pg_query/include/postgres/catalog/pg_publication.h +161 -0
  112. data/ext/pg_query/include/postgres/catalog/pg_publication_d.h +38 -0
  113. data/ext/pg_query/include/postgres/catalog/pg_replication_origin.h +65 -0
  114. data/ext/pg_query/include/postgres/catalog/pg_replication_origin_d.h +33 -0
  115. data/ext/pg_query/include/postgres/catalog/pg_statistic.h +288 -0
  116. data/ext/pg_query/include/postgres/catalog/pg_statistic_d.h +199 -0
  117. data/ext/pg_query/include/postgres/catalog/pg_statistic_ext.h +91 -0
  118. data/ext/pg_query/include/postgres/catalog/pg_statistic_ext_d.h +45 -0
  119. data/ext/pg_query/include/postgres/catalog/pg_transform.h +51 -0
  120. data/ext/pg_query/include/postgres/catalog/pg_transform_d.h +34 -0
  121. data/ext/pg_query/include/postgres/catalog/pg_trigger.h +153 -0
  122. data/ext/pg_query/include/postgres/catalog/pg_trigger_d.h +109 -0
  123. data/ext/pg_query/include/postgres/catalog/pg_ts_config.h +56 -0
  124. data/ext/pg_query/include/postgres/catalog/pg_ts_config_d.h +34 -0
  125. data/ext/pg_query/include/postgres/catalog/pg_ts_dict.h +62 -0
  126. data/ext/pg_query/include/postgres/catalog/pg_ts_dict_d.h +35 -0
  127. data/ext/pg_query/include/postgres/catalog/pg_ts_parser.h +63 -0
  128. data/ext/pg_query/include/postgres/catalog/pg_ts_parser_d.h +37 -0
  129. data/ext/pg_query/include/postgres/catalog/pg_ts_template.h +54 -0
  130. data/ext/pg_query/include/postgres/catalog/pg_ts_template_d.h +34 -0
  131. data/ext/pg_query/include/postgres/catalog/pg_type.h +407 -0
  132. data/ext/pg_query/include/postgres/catalog/pg_type_d.h +324 -0
  133. data/ext/pg_query/include/postgres/catalog/storage.h +50 -0
  134. data/ext/pg_query/include/postgres/catalog/syscache_ids.h +104 -0
  135. data/ext/pg_query/include/postgres/commands/async.h +49 -0
  136. data/ext/pg_query/include/postgres/commands/dbcommands.h +37 -0
  137. data/ext/pg_query/include/postgres/commands/defrem.h +161 -0
  138. data/ext/pg_query/include/postgres/commands/event_trigger.h +97 -0
  139. data/ext/pg_query/include/postgres/commands/explain.h +145 -0
  140. data/ext/pg_query/include/postgres/commands/prepare.h +61 -0
  141. data/ext/pg_query/include/postgres/commands/tablespace.h +69 -0
  142. data/ext/pg_query/include/postgres/commands/trigger.h +288 -0
  143. data/ext/pg_query/include/postgres/commands/user.h +43 -0
  144. data/ext/pg_query/include/postgres/commands/vacuum.h +388 -0
  145. data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
  146. data/ext/pg_query/include/postgres/common/file_perm.h +56 -0
  147. data/ext/pg_query/include/postgres/common/file_utils.h +65 -0
  148. data/ext/pg_query/include/postgres/common/hashfn.h +119 -0
  149. data/ext/pg_query/include/postgres/common/hashfn_unstable.h +407 -0
  150. data/ext/pg_query/include/postgres/common/int.h +512 -0
  151. data/ext/pg_query/include/postgres/common/keywords.h +29 -0
  152. data/ext/pg_query/include/postgres/common/kwlookup.h +44 -0
  153. data/ext/pg_query/include/postgres/common/pg_prng.h +62 -0
  154. data/ext/pg_query/include/postgres/common/relpath.h +97 -0
  155. data/ext/pg_query/include/postgres/common/scram-common.h +70 -0
  156. data/ext/pg_query/include/postgres/common/sha2.h +32 -0
  157. data/ext/pg_query/include/postgres/common/string.h +44 -0
  158. data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +124 -0
  159. data/ext/pg_query/include/postgres/common/unicode_nonspacing_table.h +326 -0
  160. data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5261 -0
  161. data/ext/pg_query/include/postgres/copyfuncs.switch.c +989 -0
  162. data/ext/pg_query/include/postgres/datatype/timestamp.h +269 -0
  163. data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3310 -0
  164. data/ext/pg_query/include/postgres/equalfuncs.switch.c +836 -0
  165. data/ext/pg_query/include/postgres/executor/execdesc.h +70 -0
  166. data/ext/pg_query/include/postgres/executor/executor.h +681 -0
  167. data/ext/pg_query/include/postgres/executor/functions.h +56 -0
  168. data/ext/pg_query/include/postgres/executor/instrument.h +120 -0
  169. data/ext/pg_query/include/postgres/executor/spi.h +207 -0
  170. data/ext/pg_query/include/postgres/executor/tablefunc.h +67 -0
  171. data/ext/pg_query/include/postgres/executor/tuptable.h +523 -0
  172. data/ext/pg_query/include/postgres/fmgr.h +800 -0
  173. data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
  174. data/ext/pg_query/include/postgres/funcapi.h +360 -0
  175. data/ext/pg_query/include/postgres/gram.h +1168 -0
  176. data/ext/pg_query/include/postgres/gramparse.h +75 -0
  177. data/ext/pg_query/include/postgres/jit/jit.h +106 -0
  178. data/ext/pg_query/include/postgres/kwlist_d.h +1164 -0
  179. data/ext/pg_query/include/postgres/lib/dshash.h +130 -0
  180. data/ext/pg_query/include/postgres/lib/ilist.h +1159 -0
  181. data/ext/pg_query/include/postgres/lib/pairingheap.h +102 -0
  182. data/ext/pg_query/include/postgres/lib/simplehash.h +1206 -0
  183. data/ext/pg_query/include/postgres/lib/sort_template.h +445 -0
  184. data/ext/pg_query/include/postgres/lib/stringinfo.h +243 -0
  185. data/ext/pg_query/include/postgres/libpq/auth.h +37 -0
  186. data/ext/pg_query/include/postgres/libpq/crypt.h +47 -0
  187. data/ext/pg_query/include/postgres/libpq/hba.h +186 -0
  188. data/ext/pg_query/include/postgres/libpq/libpq-be.h +361 -0
  189. data/ext/pg_query/include/postgres/libpq/libpq.h +143 -0
  190. data/ext/pg_query/include/postgres/libpq/pqcomm.h +169 -0
  191. data/ext/pg_query/include/postgres/libpq/pqformat.h +209 -0
  192. data/ext/pg_query/include/postgres/libpq/pqsignal.h +54 -0
  193. data/ext/pg_query/include/postgres/libpq/protocol.h +89 -0
  194. data/ext/pg_query/include/postgres/libpq/sasl.h +136 -0
  195. data/ext/pg_query/include/postgres/libpq/scram.h +37 -0
  196. data/ext/pg_query/include/postgres/mb/pg_wchar.h +793 -0
  197. data/ext/pg_query/include/postgres/mb/stringinfo_mb.h +24 -0
  198. data/ext/pg_query/include/postgres/miscadmin.h +527 -0
  199. data/ext/pg_query/include/postgres/nodes/bitmapset.h +140 -0
  200. data/ext/pg_query/include/postgres/nodes/execnodes.h +2855 -0
  201. data/ext/pg_query/include/postgres/nodes/extensible.h +164 -0
  202. data/ext/pg_query/include/postgres/nodes/lockoptions.h +61 -0
  203. data/ext/pg_query/include/postgres/nodes/makefuncs.h +127 -0
  204. data/ext/pg_query/include/postgres/nodes/memnodes.h +152 -0
  205. data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
  206. data/ext/pg_query/include/postgres/nodes/nodeFuncs.h +222 -0
  207. data/ext/pg_query/include/postgres/nodes/nodes.h +435 -0
  208. data/ext/pg_query/include/postgres/nodes/nodetags.h +491 -0
  209. data/ext/pg_query/include/postgres/nodes/params.h +170 -0
  210. data/ext/pg_query/include/postgres/nodes/parsenodes.h +4233 -0
  211. data/ext/pg_query/include/postgres/nodes/pathnodes.h +3438 -0
  212. data/ext/pg_query/include/postgres/nodes/pg_list.h +686 -0
  213. data/ext/pg_query/include/postgres/nodes/plannodes.h +1593 -0
  214. data/ext/pg_query/include/postgres/nodes/primnodes.h +2339 -0
  215. data/ext/pg_query/include/postgres/nodes/print.h +34 -0
  216. data/ext/pg_query/include/postgres/nodes/queryjumble.h +86 -0
  217. data/ext/pg_query/include/postgres/nodes/replnodes.h +132 -0
  218. data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
  219. data/ext/pg_query/include/postgres/nodes/tidbitmap.h +75 -0
  220. data/ext/pg_query/include/postgres/nodes/value.h +90 -0
  221. data/ext/pg_query/include/postgres/optimizer/cost.h +216 -0
  222. data/ext/pg_query/include/postgres/optimizer/geqo.h +90 -0
  223. data/ext/pg_query/include/postgres/optimizer/geqo_gene.h +45 -0
  224. data/ext/pg_query/include/postgres/optimizer/optimizer.h +205 -0
  225. data/ext/pg_query/include/postgres/optimizer/paths.h +271 -0
  226. data/ext/pg_query/include/postgres/optimizer/planmain.h +123 -0
  227. data/ext/pg_query/include/postgres/parser/analyze.h +66 -0
  228. data/ext/pg_query/include/postgres/parser/kwlist.h +518 -0
  229. data/ext/pg_query/include/postgres/parser/parse_agg.h +65 -0
  230. data/ext/pg_query/include/postgres/parser/parse_coerce.h +105 -0
  231. data/ext/pg_query/include/postgres/parser/parse_expr.h +25 -0
  232. data/ext/pg_query/include/postgres/parser/parse_func.h +74 -0
  233. data/ext/pg_query/include/postgres/parser/parse_node.h +358 -0
  234. data/ext/pg_query/include/postgres/parser/parse_oper.h +68 -0
  235. data/ext/pg_query/include/postgres/parser/parse_relation.h +129 -0
  236. data/ext/pg_query/include/postgres/parser/parse_type.h +61 -0
  237. data/ext/pg_query/include/postgres/parser/parser.h +68 -0
  238. data/ext/pg_query/include/postgres/parser/parsetree.h +61 -0
  239. data/ext/pg_query/include/postgres/parser/scanner.h +152 -0
  240. data/ext/pg_query/include/postgres/parser/scansup.h +27 -0
  241. data/ext/pg_query/include/postgres/partitioning/partdefs.h +26 -0
  242. data/ext/pg_query/include/postgres/pg_config.h +985 -0
  243. data/ext/pg_query/include/postgres/pg_config_manual.h +385 -0
  244. data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
  245. data/ext/pg_query/include/postgres/pg_getopt.h +56 -0
  246. data/ext/pg_query/include/postgres/pg_trace.h +17 -0
  247. data/ext/pg_query/include/postgres/pgstat.h +780 -0
  248. data/ext/pg_query/include/postgres/pgtime.h +94 -0
  249. data/ext/pg_query/include/postgres/pl_gram.h +385 -0
  250. data/ext/pg_query/include/postgres/pl_reserved_kwlist.h +52 -0
  251. data/ext/pg_query/include/postgres/pl_reserved_kwlist_d.h +114 -0
  252. data/ext/pg_query/include/postgres/pl_unreserved_kwlist.h +112 -0
  253. data/ext/pg_query/include/postgres/pl_unreserved_kwlist_d.h +246 -0
  254. data/ext/pg_query/include/postgres/plerrcodes.h +998 -0
  255. data/ext/pg_query/include/postgres/plpgsql.h +1342 -0
  256. data/ext/pg_query/include/postgres/port/atomics/arch-arm.h +32 -0
  257. data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
  258. data/ext/pg_query/include/postgres/port/atomics/arch-ppc.h +256 -0
  259. data/ext/pg_query/include/postgres/port/atomics/arch-x86.h +254 -0
  260. data/ext/pg_query/include/postgres/port/atomics/fallback.h +170 -0
  261. data/ext/pg_query/include/postgres/port/atomics/generic-gcc.h +323 -0
  262. data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +119 -0
  263. data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +121 -0
  264. data/ext/pg_query/include/postgres/port/atomics/generic.h +437 -0
  265. data/ext/pg_query/include/postgres/port/atomics.h +606 -0
  266. data/ext/pg_query/include/postgres/port/pg_bitutils.h +421 -0
  267. data/ext/pg_query/include/postgres/port/pg_bswap.h +161 -0
  268. data/ext/pg_query/include/postgres/port/pg_crc32c.h +110 -0
  269. data/ext/pg_query/include/postgres/port/pg_iovec.h +117 -0
  270. data/ext/pg_query/include/postgres/port/simd.h +422 -0
  271. data/ext/pg_query/include/postgres/port/win32/arpa/inet.h +3 -0
  272. data/ext/pg_query/include/postgres/port/win32/dlfcn.h +1 -0
  273. data/ext/pg_query/include/postgres/port/win32/grp.h +1 -0
  274. data/ext/pg_query/include/postgres/port/win32/netdb.h +7 -0
  275. data/ext/pg_query/include/postgres/port/win32/netinet/in.h +3 -0
  276. data/ext/pg_query/include/postgres/port/win32/netinet/tcp.h +7 -0
  277. data/ext/pg_query/include/postgres/port/win32/pwd.h +3 -0
  278. data/ext/pg_query/include/postgres/port/win32/sys/resource.h +20 -0
  279. data/ext/pg_query/include/postgres/port/win32/sys/select.h +3 -0
  280. data/ext/pg_query/include/postgres/port/win32/sys/socket.h +34 -0
  281. data/ext/pg_query/include/postgres/port/win32/sys/un.h +17 -0
  282. data/ext/pg_query/include/postgres/port/win32/sys/wait.h +3 -0
  283. data/ext/pg_query/include/postgres/port/win32.h +59 -0
  284. data/ext/pg_query/include/postgres/port/win32_msvc/dirent.h +34 -0
  285. data/ext/pg_query/include/postgres/port/win32_msvc/sys/file.h +1 -0
  286. data/ext/pg_query/include/postgres/port/win32_msvc/sys/param.h +1 -0
  287. data/ext/pg_query/include/postgres/port/win32_msvc/sys/time.h +1 -0
  288. data/ext/pg_query/include/postgres/port/win32_msvc/unistd.h +9 -0
  289. data/ext/pg_query/include/postgres/port/win32_msvc/utime.h +3 -0
  290. data/ext/pg_query/include/postgres/port/win32_port.h +582 -0
  291. data/ext/pg_query/include/postgres/port.h +555 -0
  292. data/ext/pg_query/include/postgres/portability/instr_time.h +197 -0
  293. data/ext/pg_query/include/postgres/postgres.h +579 -0
  294. data/ext/pg_query/include/postgres/postgres_ext.h +73 -0
  295. data/ext/pg_query/include/postgres/postmaster/autovacuum.h +69 -0
  296. data/ext/pg_query/include/postgres/postmaster/bgworker.h +164 -0
  297. data/ext/pg_query/include/postgres/postmaster/bgworker_internals.h +60 -0
  298. data/ext/pg_query/include/postgres/postmaster/bgwriter.h +45 -0
  299. data/ext/pg_query/include/postgres/postmaster/interrupt.h +32 -0
  300. data/ext/pg_query/include/postgres/postmaster/pgarch.h +36 -0
  301. data/ext/pg_query/include/postgres/postmaster/postmaster.h +101 -0
  302. data/ext/pg_query/include/postgres/postmaster/startup.h +41 -0
  303. data/ext/pg_query/include/postgres/postmaster/syslogger.h +101 -0
  304. data/ext/pg_query/include/postgres/postmaster/walsummarizer.h +35 -0
  305. data/ext/pg_query/include/postgres/postmaster/walwriter.h +23 -0
  306. data/ext/pg_query/include/postgres/regex/regex.h +272 -0
  307. data/ext/pg_query/include/postgres/replication/logicallauncher.h +34 -0
  308. data/ext/pg_query/include/postgres/replication/logicalproto.h +274 -0
  309. data/ext/pg_query/include/postgres/replication/logicalworker.h +33 -0
  310. data/ext/pg_query/include/postgres/replication/origin.h +73 -0
  311. data/ext/pg_query/include/postgres/replication/reorderbuffer.h +734 -0
  312. data/ext/pg_query/include/postgres/replication/slot.h +289 -0
  313. data/ext/pg_query/include/postgres/replication/slotsync.h +38 -0
  314. data/ext/pg_query/include/postgres/replication/syncrep.h +109 -0
  315. data/ext/pg_query/include/postgres/replication/walreceiver.h +504 -0
  316. data/ext/pg_query/include/postgres/replication/walsender.h +76 -0
  317. data/ext/pg_query/include/postgres/rewrite/prs2lock.h +46 -0
  318. data/ext/pg_query/include/postgres/rewrite/rewriteHandler.h +41 -0
  319. data/ext/pg_query/include/postgres/rewrite/rewriteManip.h +96 -0
  320. data/ext/pg_query/include/postgres/rewrite/rewriteSupport.h +26 -0
  321. data/ext/pg_query/include/postgres/storage/block.h +108 -0
  322. data/ext/pg_query/include/postgres/storage/buf.h +46 -0
  323. data/ext/pg_query/include/postgres/storage/bufmgr.h +411 -0
  324. data/ext/pg_query/include/postgres/storage/bufpage.h +510 -0
  325. data/ext/pg_query/include/postgres/storage/condition_variable.h +73 -0
  326. data/ext/pg_query/include/postgres/storage/dsm.h +61 -0
  327. data/ext/pg_query/include/postgres/storage/dsm_impl.h +79 -0
  328. data/ext/pg_query/include/postgres/storage/fd.h +219 -0
  329. data/ext/pg_query/include/postgres/storage/fileset.h +40 -0
  330. data/ext/pg_query/include/postgres/storage/ipc.h +87 -0
  331. data/ext/pg_query/include/postgres/storage/item.h +19 -0
  332. data/ext/pg_query/include/postgres/storage/itemid.h +184 -0
  333. data/ext/pg_query/include/postgres/storage/itemptr.h +245 -0
  334. data/ext/pg_query/include/postgres/storage/large_object.h +100 -0
  335. data/ext/pg_query/include/postgres/storage/latch.h +196 -0
  336. data/ext/pg_query/include/postgres/storage/lmgr.h +126 -0
  337. data/ext/pg_query/include/postgres/storage/lock.h +624 -0
  338. data/ext/pg_query/include/postgres/storage/lockdefs.h +61 -0
  339. data/ext/pg_query/include/postgres/storage/lwlock.h +228 -0
  340. data/ext/pg_query/include/postgres/storage/lwlocknames.h +47 -0
  341. data/ext/pg_query/include/postgres/storage/off.h +57 -0
  342. data/ext/pg_query/include/postgres/storage/pg_sema.h +61 -0
  343. data/ext/pg_query/include/postgres/storage/pg_shmem.h +93 -0
  344. data/ext/pg_query/include/postgres/storage/pmsignal.h +105 -0
  345. data/ext/pg_query/include/postgres/storage/predicate.h +83 -0
  346. data/ext/pg_query/include/postgres/storage/proc.h +488 -0
  347. data/ext/pg_query/include/postgres/storage/procarray.h +103 -0
  348. data/ext/pg_query/include/postgres/storage/proclist_types.h +53 -0
  349. data/ext/pg_query/include/postgres/storage/procnumber.h +43 -0
  350. data/ext/pg_query/include/postgres/storage/procsignal.h +75 -0
  351. data/ext/pg_query/include/postgres/storage/read_stream.h +65 -0
  352. data/ext/pg_query/include/postgres/storage/relfilelocator.h +100 -0
  353. data/ext/pg_query/include/postgres/storage/s_lock.h +847 -0
  354. data/ext/pg_query/include/postgres/storage/sharedfileset.h +37 -0
  355. data/ext/pg_query/include/postgres/storage/shm_mq.h +86 -0
  356. data/ext/pg_query/include/postgres/storage/shm_toc.h +58 -0
  357. data/ext/pg_query/include/postgres/storage/shmem.h +59 -0
  358. data/ext/pg_query/include/postgres/storage/sinval.h +153 -0
  359. data/ext/pg_query/include/postgres/storage/smgr.h +130 -0
  360. data/ext/pg_query/include/postgres/storage/spin.h +77 -0
  361. data/ext/pg_query/include/postgres/storage/standby.h +109 -0
  362. data/ext/pg_query/include/postgres/storage/standbydefs.h +74 -0
  363. data/ext/pg_query/include/postgres/storage/sync.h +66 -0
  364. data/ext/pg_query/include/postgres/tcop/cmdtag.h +62 -0
  365. data/ext/pg_query/include/postgres/tcop/cmdtaglist.h +219 -0
  366. data/ext/pg_query/include/postgres/tcop/deparse_utility.h +108 -0
  367. data/ext/pg_query/include/postgres/tcop/dest.h +148 -0
  368. data/ext/pg_query/include/postgres/tcop/fastpath.h +20 -0
  369. data/ext/pg_query/include/postgres/tcop/pquery.h +51 -0
  370. data/ext/pg_query/include/postgres/tcop/tcopprot.h +98 -0
  371. data/ext/pg_query/include/postgres/tcop/utility.h +112 -0
  372. data/ext/pg_query/include/postgres/tsearch/ts_cache.h +96 -0
  373. data/ext/pg_query/include/postgres/utils/acl.h +290 -0
  374. data/ext/pg_query/include/postgres/utils/aclchk_internal.h +45 -0
  375. data/ext/pg_query/include/postgres/utils/array.h +481 -0
  376. data/ext/pg_query/include/postgres/utils/ascii.h +84 -0
  377. data/ext/pg_query/include/postgres/utils/backend_progress.h +46 -0
  378. data/ext/pg_query/include/postgres/utils/backend_status.h +340 -0
  379. data/ext/pg_query/include/postgres/utils/builtins.h +139 -0
  380. data/ext/pg_query/include/postgres/utils/bytea.h +28 -0
  381. data/ext/pg_query/include/postgres/utils/catcache.h +231 -0
  382. data/ext/pg_query/include/postgres/utils/date.h +118 -0
  383. data/ext/pg_query/include/postgres/utils/datetime.h +367 -0
  384. data/ext/pg_query/include/postgres/utils/datum.h +76 -0
  385. data/ext/pg_query/include/postgres/utils/dsa.h +166 -0
  386. data/ext/pg_query/include/postgres/utils/elog.h +540 -0
  387. data/ext/pg_query/include/postgres/utils/errcodes.h +352 -0
  388. data/ext/pg_query/include/postgres/utils/expandeddatum.h +170 -0
  389. data/ext/pg_query/include/postgres/utils/expandedrecord.h +241 -0
  390. data/ext/pg_query/include/postgres/utils/float.h +357 -0
  391. data/ext/pg_query/include/postgres/utils/fmgroids.h +3347 -0
  392. data/ext/pg_query/include/postgres/utils/fmgrprotos.h +2904 -0
  393. data/ext/pg_query/include/postgres/utils/fmgrtab.h +49 -0
  394. data/ext/pg_query/include/postgres/utils/guc.h +456 -0
  395. data/ext/pg_query/include/postgres/utils/guc_hooks.h +184 -0
  396. data/ext/pg_query/include/postgres/utils/guc_tables.h +323 -0
  397. data/ext/pg_query/include/postgres/utils/hsearch.h +153 -0
  398. data/ext/pg_query/include/postgres/utils/injection_point.h +44 -0
  399. data/ext/pg_query/include/postgres/utils/inval.h +68 -0
  400. data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
  401. data/ext/pg_query/include/postgres/utils/lsyscache.h +215 -0
  402. data/ext/pg_query/include/postgres/utils/memdebug.h +82 -0
  403. data/ext/pg_query/include/postgres/utils/memutils.h +193 -0
  404. data/ext/pg_query/include/postgres/utils/memutils_internal.h +176 -0
  405. data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +253 -0
  406. data/ext/pg_query/include/postgres/utils/numeric.h +110 -0
  407. data/ext/pg_query/include/postgres/utils/palloc.h +151 -0
  408. data/ext/pg_query/include/postgres/utils/partcache.h +103 -0
  409. data/ext/pg_query/include/postgres/utils/pg_locale.h +136 -0
  410. data/ext/pg_query/include/postgres/utils/pgstat_internal.h +827 -0
  411. data/ext/pg_query/include/postgres/utils/plancache.h +238 -0
  412. data/ext/pg_query/include/postgres/utils/portal.h +252 -0
  413. data/ext/pg_query/include/postgres/utils/probes.h +114 -0
  414. data/ext/pg_query/include/postgres/utils/ps_status.h +47 -0
  415. data/ext/pg_query/include/postgres/utils/queryenvironment.h +74 -0
  416. data/ext/pg_query/include/postgres/utils/regproc.h +39 -0
  417. data/ext/pg_query/include/postgres/utils/rel.h +711 -0
  418. data/ext/pg_query/include/postgres/utils/relcache.h +155 -0
  419. data/ext/pg_query/include/postgres/utils/reltrigger.h +81 -0
  420. data/ext/pg_query/include/postgres/utils/resowner.h +167 -0
  421. data/ext/pg_query/include/postgres/utils/ruleutils.h +52 -0
  422. data/ext/pg_query/include/postgres/utils/sharedtuplestore.h +61 -0
  423. data/ext/pg_query/include/postgres/utils/snapmgr.h +130 -0
  424. data/ext/pg_query/include/postgres/utils/snapshot.h +219 -0
  425. data/ext/pg_query/include/postgres/utils/sortsupport.h +391 -0
  426. data/ext/pg_query/include/postgres/utils/syscache.h +136 -0
  427. data/ext/pg_query/include/postgres/utils/timeout.h +96 -0
  428. data/ext/pg_query/include/postgres/utils/timestamp.h +147 -0
  429. data/ext/pg_query/include/postgres/utils/tuplesort.h +472 -0
  430. data/ext/pg_query/include/postgres/utils/tuplestore.h +88 -0
  431. data/ext/pg_query/include/postgres/utils/typcache.h +210 -0
  432. data/ext/pg_query/include/postgres/utils/varlena.h +53 -0
  433. data/ext/pg_query/include/postgres/utils/wait_event.h +108 -0
  434. data/ext/pg_query/include/postgres/utils/wait_event_types.h +218 -0
  435. data/ext/pg_query/include/postgres/utils/xml.h +94 -0
  436. data/ext/pg_query/include/postgres/varatt.h +358 -0
  437. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +7723 -6368
  438. data/ext/pg_query/include/protobuf/pg_query.pb.h +120022 -87031
  439. data/ext/pg_query/pg_query.c +10 -1
  440. data/ext/pg_query/pg_query.pb-c.c +22595 -17738
  441. data/ext/pg_query/pg_query_deparse.c +1 -10635
  442. data/ext/pg_query/pg_query_fingerprint.c +12 -8
  443. data/ext/pg_query/pg_query_fingerprint.h +1 -1
  444. data/ext/pg_query/pg_query_internal.h +1 -1
  445. data/ext/pg_query/pg_query_json_plpgsql.c +1 -0
  446. data/ext/pg_query/pg_query_normalize.c +43 -2
  447. data/ext/pg_query/pg_query_outfuncs_json.c +9 -1
  448. data/ext/pg_query/pg_query_outfuncs_protobuf.c +3 -2
  449. data/ext/pg_query/pg_query_parse.c +47 -5
  450. data/ext/pg_query/pg_query_parse_plpgsql.c +19 -18
  451. data/ext/pg_query/pg_query_readfuncs_protobuf.c +3 -2
  452. data/ext/pg_query/pg_query_ruby.c +5 -0
  453. data/ext/pg_query/pg_query_scan.c +2 -2
  454. data/ext/pg_query/pg_query_split.c +3 -3
  455. data/ext/pg_query/postgres_deparse.c +11496 -0
  456. data/ext/pg_query/postgres_deparse.h +9 -0
  457. data/ext/pg_query/src_backend_catalog_namespace.c +243 -63
  458. data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -3
  459. data/ext/pg_query/src_backend_commands_define.c +2 -3
  460. data/ext/pg_query/src_backend_nodes_bitmapset.c +140 -156
  461. data/ext/pg_query/src_backend_nodes_copyfuncs.c +96 -6202
  462. data/ext/pg_query/src_backend_nodes_equalfuncs.c +95 -4068
  463. data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
  464. data/ext/pg_query/src_backend_nodes_list.c +16 -8
  465. data/ext/pg_query/src_backend_nodes_makefuncs.c +134 -1
  466. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +391 -133
  467. data/ext/pg_query/src_backend_nodes_value.c +1 -1
  468. data/ext/pg_query/src_backend_parser_gram.c +43710 -39953
  469. data/ext/pg_query/src_backend_parser_parser.c +34 -8
  470. data/ext/pg_query/src_backend_parser_scan.c +6971 -3373
  471. data/ext/pg_query/src_backend_parser_scansup.c +2 -1
  472. data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
  473. data/ext/pg_query/src_backend_tcop_postgres.c +99 -96
  474. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +2 -2
  475. data/ext/pg_query/src_backend_utils_adt_datum.c +2 -2
  476. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  477. data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
  478. data/ext/pg_query/src_backend_utils_adt_numutils.c +488 -0
  479. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +177 -30
  480. data/ext/pg_query/src_backend_utils_error_assert.c +4 -7
  481. data/ext/pg_query/src_backend_utils_error_elog.c +397 -270
  482. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +36 -2
  483. data/ext/pg_query/src_backend_utils_init_globals.c +20 -5
  484. data/ext/pg_query/src_backend_utils_mb_mbutils.c +31 -84
  485. data/ext/pg_query/src_backend_utils_misc_guc_tables.c +502 -0
  486. data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +166 -0
  487. data/ext/pg_query/src_backend_utils_mmgr_aset.c +704 -497
  488. data/ext/pg_query/src_backend_utils_mmgr_bump.c +728 -0
  489. data/ext/pg_query/src_backend_utils_mmgr_generation.c +1115 -0
  490. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +637 -233
  491. data/ext/pg_query/src_backend_utils_mmgr_slab.c +1079 -0
  492. data/ext/pg_query/src_common_encnames.c +46 -44
  493. data/ext/pg_query/src_common_hashfn.c +1 -1
  494. data/ext/pg_query/src_common_keywords.c +1 -1
  495. data/ext/pg_query/src_common_kwlist_d.h +586 -517
  496. data/ext/pg_query/src_common_kwlookup.c +1 -1
  497. data/ext/pg_query/src_common_psprintf.c +3 -3
  498. data/ext/pg_query/src_common_stringinfo.c +21 -4
  499. data/ext/pg_query/src_common_wchar.c +100 -116
  500. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +99 -5
  501. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -1
  502. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +829 -763
  503. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  504. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
  505. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +19 -1
  506. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +48 -46
  507. data/ext/pg_query/src_port_pg_bitutils.c +251 -32
  508. data/ext/pg_query/src_port_pgstrcasecmp.c +57 -1
  509. data/ext/pg_query/src_port_snprintf.c +20 -27
  510. data/ext/pg_query/src_port_strerror.c +1 -3
  511. data/ext/pg_query/src_port_strlcpy.c +79 -0
  512. data/lib/pg_query/fingerprint.rb +5 -8
  513. data/lib/pg_query/node.rb +16 -11
  514. data/lib/pg_query/param_refs.rb +2 -2
  515. data/lib/pg_query/parse.rb +6 -8
  516. data/lib/pg_query/parse_error.rb +1 -0
  517. data/lib/pg_query/pg_query_pb.rb +173 -3196
  518. data/lib/pg_query/scan.rb +1 -0
  519. data/lib/pg_query/treewalker.rb +52 -11
  520. data/lib/pg_query/truncate.rb +18 -20
  521. data/lib/pg_query/version.rb +1 -1
  522. metadata +443 -442
  523. data/ext/pg_query/guc-file.c +0 -0
  524. data/ext/pg_query/include/access/amapi.h +0 -290
  525. data/ext/pg_query/include/access/attmap.h +0 -52
  526. data/ext/pg_query/include/access/attnum.h +0 -64
  527. data/ext/pg_query/include/access/clog.h +0 -63
  528. data/ext/pg_query/include/access/commit_ts.h +0 -74
  529. data/ext/pg_query/include/access/detoast.h +0 -82
  530. data/ext/pg_query/include/access/genam.h +0 -231
  531. data/ext/pg_query/include/access/gin.h +0 -78
  532. data/ext/pg_query/include/access/htup.h +0 -89
  533. data/ext/pg_query/include/access/htup_details.h +0 -807
  534. data/ext/pg_query/include/access/itup.h +0 -167
  535. data/ext/pg_query/include/access/parallel.h +0 -82
  536. data/ext/pg_query/include/access/printtup.h +0 -35
  537. data/ext/pg_query/include/access/relation.h +0 -28
  538. data/ext/pg_query/include/access/relscan.h +0 -191
  539. data/ext/pg_query/include/access/rmgrlist.h +0 -49
  540. data/ext/pg_query/include/access/sdir.h +0 -58
  541. data/ext/pg_query/include/access/skey.h +0 -151
  542. data/ext/pg_query/include/access/stratnum.h +0 -85
  543. data/ext/pg_query/include/access/sysattr.h +0 -29
  544. data/ext/pg_query/include/access/table.h +0 -28
  545. data/ext/pg_query/include/access/tableam.h +0 -2077
  546. data/ext/pg_query/include/access/toast_compression.h +0 -73
  547. data/ext/pg_query/include/access/transam.h +0 -375
  548. data/ext/pg_query/include/access/tupconvert.h +0 -51
  549. data/ext/pg_query/include/access/tupdesc.h +0 -154
  550. data/ext/pg_query/include/access/tupmacs.h +0 -247
  551. data/ext/pg_query/include/access/twophase.h +0 -65
  552. data/ext/pg_query/include/access/xact.h +0 -523
  553. data/ext/pg_query/include/access/xlog.h +0 -303
  554. data/ext/pg_query/include/access/xlog_internal.h +0 -366
  555. data/ext/pg_query/include/access/xlogdefs.h +0 -101
  556. data/ext/pg_query/include/access/xlogprefetcher.h +0 -55
  557. data/ext/pg_query/include/access/xlogreader.h +0 -443
  558. data/ext/pg_query/include/access/xlogrecord.h +0 -236
  559. data/ext/pg_query/include/access/xlogrecovery.h +0 -157
  560. data/ext/pg_query/include/c.h +0 -1391
  561. data/ext/pg_query/include/catalog/catalog.h +0 -44
  562. data/ext/pg_query/include/catalog/catversion.h +0 -58
  563. data/ext/pg_query/include/catalog/dependency.h +0 -269
  564. data/ext/pg_query/include/catalog/genbki.h +0 -142
  565. data/ext/pg_query/include/catalog/index.h +0 -214
  566. data/ext/pg_query/include/catalog/indexing.h +0 -54
  567. data/ext/pg_query/include/catalog/namespace.h +0 -190
  568. data/ext/pg_query/include/catalog/objectaccess.h +0 -265
  569. data/ext/pg_query/include/catalog/objectaddress.h +0 -89
  570. data/ext/pg_query/include/catalog/pg_aggregate.h +0 -180
  571. data/ext/pg_query/include/catalog/pg_aggregate_d.h +0 -78
  572. data/ext/pg_query/include/catalog/pg_am.h +0 -63
  573. data/ext/pg_query/include/catalog/pg_am_d.h +0 -47
  574. data/ext/pg_query/include/catalog/pg_attribute.h +0 -221
  575. data/ext/pg_query/include/catalog/pg_attribute_d.h +0 -62
  576. data/ext/pg_query/include/catalog/pg_authid.h +0 -63
  577. data/ext/pg_query/include/catalog/pg_authid_d.h +0 -57
  578. data/ext/pg_query/include/catalog/pg_class.h +0 -230
  579. data/ext/pg_query/include/catalog/pg_class_d.h +0 -132
  580. data/ext/pg_query/include/catalog/pg_collation.h +0 -98
  581. data/ext/pg_query/include/catalog/pg_collation_d.h +0 -62
  582. data/ext/pg_query/include/catalog/pg_constraint.h +0 -273
  583. data/ext/pg_query/include/catalog/pg_constraint_d.h +0 -73
  584. data/ext/pg_query/include/catalog/pg_control.h +0 -250
  585. data/ext/pg_query/include/catalog/pg_conversion.h +0 -75
  586. data/ext/pg_query/include/catalog/pg_conversion_d.h +0 -38
  587. data/ext/pg_query/include/catalog/pg_depend.h +0 -77
  588. data/ext/pg_query/include/catalog/pg_depend_d.h +0 -36
  589. data/ext/pg_query/include/catalog/pg_event_trigger.h +0 -57
  590. data/ext/pg_query/include/catalog/pg_event_trigger_d.h +0 -36
  591. data/ext/pg_query/include/catalog/pg_index.h +0 -90
  592. data/ext/pg_query/include/catalog/pg_index_d.h +0 -59
  593. data/ext/pg_query/include/catalog/pg_language.h +0 -72
  594. data/ext/pg_query/include/catalog/pg_language_d.h +0 -41
  595. data/ext/pg_query/include/catalog/pg_namespace.h +0 -64
  596. data/ext/pg_query/include/catalog/pg_namespace_d.h +0 -36
  597. data/ext/pg_query/include/catalog/pg_opclass.h +0 -88
  598. data/ext/pg_query/include/catalog/pg_opclass_d.h +0 -51
  599. data/ext/pg_query/include/catalog/pg_operator.h +0 -107
  600. data/ext/pg_query/include/catalog/pg_operator_d.h +0 -142
  601. data/ext/pg_query/include/catalog/pg_opfamily.h +0 -63
  602. data/ext/pg_query/include/catalog/pg_opfamily_d.h +0 -49
  603. data/ext/pg_query/include/catalog/pg_parameter_acl.h +0 -60
  604. data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +0 -34
  605. data/ext/pg_query/include/catalog/pg_partitioned_table.h +0 -74
  606. data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +0 -36
  607. data/ext/pg_query/include/catalog/pg_proc.h +0 -220
  608. data/ext/pg_query/include/catalog/pg_proc_d.h +0 -101
  609. data/ext/pg_query/include/catalog/pg_publication.h +0 -161
  610. data/ext/pg_query/include/catalog/pg_publication_d.h +0 -38
  611. data/ext/pg_query/include/catalog/pg_replication_origin.h +0 -62
  612. data/ext/pg_query/include/catalog/pg_replication_origin_d.h +0 -33
  613. data/ext/pg_query/include/catalog/pg_statistic.h +0 -282
  614. data/ext/pg_query/include/catalog/pg_statistic_d.h +0 -195
  615. data/ext/pg_query/include/catalog/pg_statistic_ext.h +0 -88
  616. data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +0 -45
  617. data/ext/pg_query/include/catalog/pg_transform.h +0 -48
  618. data/ext/pg_query/include/catalog/pg_transform_d.h +0 -34
  619. data/ext/pg_query/include/catalog/pg_trigger.h +0 -153
  620. data/ext/pg_query/include/catalog/pg_trigger_d.h +0 -109
  621. data/ext/pg_query/include/catalog/pg_ts_config.h +0 -53
  622. data/ext/pg_query/include/catalog/pg_ts_config_d.h +0 -34
  623. data/ext/pg_query/include/catalog/pg_ts_dict.h +0 -59
  624. data/ext/pg_query/include/catalog/pg_ts_dict_d.h +0 -35
  625. data/ext/pg_query/include/catalog/pg_ts_parser.h +0 -60
  626. data/ext/pg_query/include/catalog/pg_ts_parser_d.h +0 -37
  627. data/ext/pg_query/include/catalog/pg_ts_template.h +0 -51
  628. data/ext/pg_query/include/catalog/pg_ts_template_d.h +0 -34
  629. data/ext/pg_query/include/catalog/pg_type.h +0 -404
  630. data/ext/pg_query/include/catalog/pg_type_d.h +0 -324
  631. data/ext/pg_query/include/catalog/storage.h +0 -50
  632. data/ext/pg_query/include/commands/async.h +0 -53
  633. data/ext/pg_query/include/commands/dbcommands.h +0 -36
  634. data/ext/pg_query/include/commands/defrem.h +0 -160
  635. data/ext/pg_query/include/commands/event_trigger.h +0 -88
  636. data/ext/pg_query/include/commands/explain.h +0 -127
  637. data/ext/pg_query/include/commands/prepare.h +0 -61
  638. data/ext/pg_query/include/commands/tablespace.h +0 -69
  639. data/ext/pg_query/include/commands/trigger.h +0 -287
  640. data/ext/pg_query/include/commands/user.h +0 -37
  641. data/ext/pg_query/include/commands/vacuum.h +0 -340
  642. data/ext/pg_query/include/commands/variable.h +0 -38
  643. data/ext/pg_query/include/common/file_perm.h +0 -56
  644. data/ext/pg_query/include/common/hashfn.h +0 -104
  645. data/ext/pg_query/include/common/ip.h +0 -31
  646. data/ext/pg_query/include/common/keywords.h +0 -29
  647. data/ext/pg_query/include/common/kwlookup.h +0 -44
  648. data/ext/pg_query/include/common/pg_prng.h +0 -60
  649. data/ext/pg_query/include/common/relpath.h +0 -90
  650. data/ext/pg_query/include/common/string.h +0 -42
  651. data/ext/pg_query/include/common/unicode_combining_table.h +0 -308
  652. data/ext/pg_query/include/common/unicode_east_asian_fw_table.h +0 -125
  653. data/ext/pg_query/include/datatype/timestamp.h +0 -236
  654. data/ext/pg_query/include/executor/execdesc.h +0 -70
  655. data/ext/pg_query/include/executor/executor.h +0 -663
  656. data/ext/pg_query/include/executor/functions.h +0 -55
  657. data/ext/pg_query/include/executor/instrument.h +0 -118
  658. data/ext/pg_query/include/executor/spi.h +0 -213
  659. data/ext/pg_query/include/executor/tablefunc.h +0 -67
  660. data/ext/pg_query/include/executor/tuptable.h +0 -487
  661. data/ext/pg_query/include/fmgr.h +0 -781
  662. data/ext/pg_query/include/funcapi.h +0 -360
  663. data/ext/pg_query/include/getaddrinfo.h +0 -162
  664. data/ext/pg_query/include/jit/jit.h +0 -105
  665. data/ext/pg_query/include/kwlist_d.h +0 -1095
  666. data/ext/pg_query/include/lib/dshash.h +0 -112
  667. data/ext/pg_query/include/lib/ilist.h +0 -746
  668. data/ext/pg_query/include/lib/pairingheap.h +0 -102
  669. data/ext/pg_query/include/lib/simplehash.h +0 -1184
  670. data/ext/pg_query/include/lib/sort_template.h +0 -432
  671. data/ext/pg_query/include/lib/stringinfo.h +0 -161
  672. data/ext/pg_query/include/libpq/auth.h +0 -31
  673. data/ext/pg_query/include/libpq/crypt.h +0 -47
  674. data/ext/pg_query/include/libpq/hba.h +0 -179
  675. data/ext/pg_query/include/libpq/libpq-be.h +0 -343
  676. data/ext/pg_query/include/libpq/libpq.h +0 -144
  677. data/ext/pg_query/include/libpq/pqcomm.h +0 -194
  678. data/ext/pg_query/include/libpq/pqformat.h +0 -210
  679. data/ext/pg_query/include/libpq/pqsignal.h +0 -42
  680. data/ext/pg_query/include/mb/pg_wchar.h +0 -755
  681. data/ext/pg_query/include/mb/stringinfo_mb.h +0 -24
  682. data/ext/pg_query/include/miscadmin.h +0 -495
  683. data/ext/pg_query/include/nodes/bitmapset.h +0 -122
  684. data/ext/pg_query/include/nodes/execnodes.h +0 -2715
  685. data/ext/pg_query/include/nodes/extensible.h +0 -162
  686. data/ext/pg_query/include/nodes/lockoptions.h +0 -61
  687. data/ext/pg_query/include/nodes/makefuncs.h +0 -109
  688. data/ext/pg_query/include/nodes/memnodes.h +0 -110
  689. data/ext/pg_query/include/nodes/nodeFuncs.h +0 -162
  690. data/ext/pg_query/include/nodes/nodes.h +0 -861
  691. data/ext/pg_query/include/nodes/params.h +0 -170
  692. data/ext/pg_query/include/nodes/parsenodes.h +0 -3812
  693. data/ext/pg_query/include/nodes/pathnodes.h +0 -2734
  694. data/ext/pg_query/include/nodes/pg_list.h +0 -612
  695. data/ext/pg_query/include/nodes/plannodes.h +0 -1349
  696. data/ext/pg_query/include/nodes/primnodes.h +0 -1593
  697. data/ext/pg_query/include/nodes/print.h +0 -34
  698. data/ext/pg_query/include/nodes/tidbitmap.h +0 -75
  699. data/ext/pg_query/include/nodes/value.h +0 -80
  700. data/ext/pg_query/include/optimizer/cost.h +0 -213
  701. data/ext/pg_query/include/optimizer/geqo.h +0 -90
  702. data/ext/pg_query/include/optimizer/geqo_gene.h +0 -45
  703. data/ext/pg_query/include/optimizer/optimizer.h +0 -202
  704. data/ext/pg_query/include/optimizer/paths.h +0 -257
  705. data/ext/pg_query/include/optimizer/planmain.h +0 -120
  706. data/ext/pg_query/include/parser/analyze.h +0 -63
  707. data/ext/pg_query/include/parser/gram.h +0 -1101
  708. data/ext/pg_query/include/parser/gramparse.h +0 -75
  709. data/ext/pg_query/include/parser/kwlist.h +0 -487
  710. data/ext/pg_query/include/parser/parse_agg.h +0 -63
  711. data/ext/pg_query/include/parser/parse_coerce.h +0 -100
  712. data/ext/pg_query/include/parser/parse_expr.h +0 -25
  713. data/ext/pg_query/include/parser/parse_func.h +0 -74
  714. data/ext/pg_query/include/parser/parse_node.h +0 -339
  715. data/ext/pg_query/include/parser/parse_oper.h +0 -65
  716. data/ext/pg_query/include/parser/parse_relation.h +0 -124
  717. data/ext/pg_query/include/parser/parse_type.h +0 -60
  718. data/ext/pg_query/include/parser/parser.h +0 -68
  719. data/ext/pg_query/include/parser/parsetree.h +0 -61
  720. data/ext/pg_query/include/parser/scanner.h +0 -152
  721. data/ext/pg_query/include/parser/scansup.h +0 -27
  722. data/ext/pg_query/include/partitioning/partdefs.h +0 -26
  723. data/ext/pg_query/include/pg_config.h +0 -1037
  724. data/ext/pg_query/include/pg_config_manual.h +0 -410
  725. data/ext/pg_query/include/pg_config_os.h +0 -8
  726. data/ext/pg_query/include/pg_getopt.h +0 -56
  727. data/ext/pg_query/include/pg_trace.h +0 -17
  728. data/ext/pg_query/include/pgstat.h +0 -699
  729. data/ext/pg_query/include/pgtime.h +0 -94
  730. data/ext/pg_query/include/pl_gram.h +0 -383
  731. data/ext/pg_query/include/pl_reserved_kwlist.h +0 -52
  732. data/ext/pg_query/include/pl_reserved_kwlist_d.h +0 -114
  733. data/ext/pg_query/include/pl_unreserved_kwlist.h +0 -111
  734. data/ext/pg_query/include/pl_unreserved_kwlist_d.h +0 -244
  735. data/ext/pg_query/include/plerrcodes.h +0 -998
  736. data/ext/pg_query/include/plpgsql.h +0 -1345
  737. data/ext/pg_query/include/port/atomics/arch-arm.h +0 -32
  738. data/ext/pg_query/include/port/atomics/arch-ppc.h +0 -254
  739. data/ext/pg_query/include/port/atomics/arch-x86.h +0 -252
  740. data/ext/pg_query/include/port/atomics/fallback.h +0 -170
  741. data/ext/pg_query/include/port/atomics/generic-gcc.h +0 -286
  742. data/ext/pg_query/include/port/atomics/generic.h +0 -401
  743. data/ext/pg_query/include/port/atomics.h +0 -524
  744. data/ext/pg_query/include/port/pg_bitutils.h +0 -302
  745. data/ext/pg_query/include/port/pg_bswap.h +0 -161
  746. data/ext/pg_query/include/port/pg_crc32c.h +0 -101
  747. data/ext/pg_query/include/port.h +0 -553
  748. data/ext/pg_query/include/portability/instr_time.h +0 -256
  749. data/ext/pg_query/include/postgres.h +0 -808
  750. data/ext/pg_query/include/postgres_ext.h +0 -74
  751. data/ext/pg_query/include/postmaster/autovacuum.h +0 -83
  752. data/ext/pg_query/include/postmaster/auxprocess.h +0 -20
  753. data/ext/pg_query/include/postmaster/bgworker.h +0 -162
  754. data/ext/pg_query/include/postmaster/bgworker_internals.h +0 -64
  755. data/ext/pg_query/include/postmaster/bgwriter.h +0 -45
  756. data/ext/pg_query/include/postmaster/fork_process.h +0 -17
  757. data/ext/pg_query/include/postmaster/interrupt.h +0 -32
  758. data/ext/pg_query/include/postmaster/pgarch.h +0 -73
  759. data/ext/pg_query/include/postmaster/postmaster.h +0 -78
  760. data/ext/pg_query/include/postmaster/startup.h +0 -39
  761. data/ext/pg_query/include/postmaster/syslogger.h +0 -103
  762. data/ext/pg_query/include/postmaster/walwriter.h +0 -21
  763. data/ext/pg_query/include/regex/regex.h +0 -186
  764. data/ext/pg_query/include/replication/logicallauncher.h +0 -29
  765. data/ext/pg_query/include/replication/logicalproto.h +0 -254
  766. data/ext/pg_query/include/replication/logicalworker.h +0 -19
  767. data/ext/pg_query/include/replication/origin.h +0 -73
  768. data/ext/pg_query/include/replication/reorderbuffer.h +0 -685
  769. data/ext/pg_query/include/replication/slot.h +0 -230
  770. data/ext/pg_query/include/replication/syncrep.h +0 -115
  771. data/ext/pg_query/include/replication/walreceiver.h +0 -472
  772. data/ext/pg_query/include/replication/walsender.h +0 -74
  773. data/ext/pg_query/include/rewrite/prs2lock.h +0 -46
  774. data/ext/pg_query/include/rewrite/rewriteHandler.h +0 -38
  775. data/ext/pg_query/include/rewrite/rewriteManip.h +0 -87
  776. data/ext/pg_query/include/rewrite/rewriteSupport.h +0 -26
  777. data/ext/pg_query/include/storage/backendid.h +0 -37
  778. data/ext/pg_query/include/storage/block.h +0 -115
  779. data/ext/pg_query/include/storage/buf.h +0 -46
  780. data/ext/pg_query/include/storage/bufmgr.h +0 -297
  781. data/ext/pg_query/include/storage/bufpage.h +0 -457
  782. data/ext/pg_query/include/storage/condition_variable.h +0 -73
  783. data/ext/pg_query/include/storage/dsm.h +0 -64
  784. data/ext/pg_query/include/storage/dsm_impl.h +0 -76
  785. data/ext/pg_query/include/storage/fd.h +0 -198
  786. data/ext/pg_query/include/storage/fileset.h +0 -40
  787. data/ext/pg_query/include/storage/ipc.h +0 -84
  788. data/ext/pg_query/include/storage/item.h +0 -19
  789. data/ext/pg_query/include/storage/itemid.h +0 -184
  790. data/ext/pg_query/include/storage/itemptr.h +0 -208
  791. data/ext/pg_query/include/storage/large_object.h +0 -100
  792. data/ext/pg_query/include/storage/latch.h +0 -186
  793. data/ext/pg_query/include/storage/lmgr.h +0 -115
  794. data/ext/pg_query/include/storage/lock.h +0 -616
  795. data/ext/pg_query/include/storage/lockdefs.h +0 -59
  796. data/ext/pg_query/include/storage/lwlock.h +0 -206
  797. data/ext/pg_query/include/storage/lwlocknames.h +0 -50
  798. data/ext/pg_query/include/storage/off.h +0 -57
  799. data/ext/pg_query/include/storage/pg_sema.h +0 -61
  800. data/ext/pg_query/include/storage/pg_shmem.h +0 -92
  801. data/ext/pg_query/include/storage/pmsignal.h +0 -105
  802. data/ext/pg_query/include/storage/predicate.h +0 -87
  803. data/ext/pg_query/include/storage/proc.h +0 -461
  804. data/ext/pg_query/include/storage/procarray.h +0 -98
  805. data/ext/pg_query/include/storage/proclist_types.h +0 -51
  806. data/ext/pg_query/include/storage/procsignal.h +0 -71
  807. data/ext/pg_query/include/storage/relfilenode.h +0 -99
  808. data/ext/pg_query/include/storage/s_lock.h +0 -1110
  809. data/ext/pg_query/include/storage/sharedfileset.h +0 -37
  810. data/ext/pg_query/include/storage/shm_mq.h +0 -86
  811. data/ext/pg_query/include/storage/shm_toc.h +0 -58
  812. data/ext/pg_query/include/storage/shmem.h +0 -81
  813. data/ext/pg_query/include/storage/sinval.h +0 -153
  814. data/ext/pg_query/include/storage/sinvaladt.h +0 -43
  815. data/ext/pg_query/include/storage/smgr.h +0 -111
  816. data/ext/pg_query/include/storage/spin.h +0 -77
  817. data/ext/pg_query/include/storage/standby.h +0 -98
  818. data/ext/pg_query/include/storage/standbydefs.h +0 -74
  819. data/ext/pg_query/include/storage/sync.h +0 -66
  820. data/ext/pg_query/include/tcop/cmdtag.h +0 -58
  821. data/ext/pg_query/include/tcop/cmdtaglist.h +0 -218
  822. data/ext/pg_query/include/tcop/deparse_utility.h +0 -108
  823. data/ext/pg_query/include/tcop/dest.h +0 -149
  824. data/ext/pg_query/include/tcop/fastpath.h +0 -20
  825. data/ext/pg_query/include/tcop/pquery.h +0 -51
  826. data/ext/pg_query/include/tcop/tcopprot.h +0 -97
  827. data/ext/pg_query/include/tcop/utility.h +0 -112
  828. data/ext/pg_query/include/tsearch/ts_cache.h +0 -98
  829. data/ext/pg_query/include/utils/acl.h +0 -333
  830. data/ext/pg_query/include/utils/aclchk_internal.h +0 -45
  831. data/ext/pg_query/include/utils/array.h +0 -464
  832. data/ext/pg_query/include/utils/backend_progress.h +0 -44
  833. data/ext/pg_query/include/utils/backend_status.h +0 -321
  834. data/ext/pg_query/include/utils/builtins.h +0 -127
  835. data/ext/pg_query/include/utils/bytea.h +0 -28
  836. data/ext/pg_query/include/utils/catcache.h +0 -231
  837. data/ext/pg_query/include/utils/date.h +0 -90
  838. data/ext/pg_query/include/utils/datetime.h +0 -344
  839. data/ext/pg_query/include/utils/datum.h +0 -76
  840. data/ext/pg_query/include/utils/dsa.h +0 -123
  841. data/ext/pg_query/include/utils/dynahash.h +0 -20
  842. data/ext/pg_query/include/utils/elog.h +0 -470
  843. data/ext/pg_query/include/utils/errcodes.h +0 -354
  844. data/ext/pg_query/include/utils/expandeddatum.h +0 -159
  845. data/ext/pg_query/include/utils/expandedrecord.h +0 -231
  846. data/ext/pg_query/include/utils/float.h +0 -356
  847. data/ext/pg_query/include/utils/fmgroids.h +0 -3261
  848. data/ext/pg_query/include/utils/fmgrprotos.h +0 -2829
  849. data/ext/pg_query/include/utils/fmgrtab.h +0 -49
  850. data/ext/pg_query/include/utils/guc.h +0 -469
  851. data/ext/pg_query/include/utils/guc_tables.h +0 -276
  852. data/ext/pg_query/include/utils/hsearch.h +0 -153
  853. data/ext/pg_query/include/utils/inval.h +0 -68
  854. data/ext/pg_query/include/utils/lsyscache.h +0 -208
  855. data/ext/pg_query/include/utils/memdebug.h +0 -82
  856. data/ext/pg_query/include/utils/memutils.h +0 -230
  857. data/ext/pg_query/include/utils/numeric.h +0 -90
  858. data/ext/pg_query/include/utils/palloc.h +0 -158
  859. data/ext/pg_query/include/utils/partcache.h +0 -102
  860. data/ext/pg_query/include/utils/pg_locale.h +0 -127
  861. data/ext/pg_query/include/utils/pg_lsn.h +0 -29
  862. data/ext/pg_query/include/utils/pgstat_internal.h +0 -784
  863. data/ext/pg_query/include/utils/pidfile.h +0 -56
  864. data/ext/pg_query/include/utils/plancache.h +0 -236
  865. data/ext/pg_query/include/utils/portal.h +0 -252
  866. data/ext/pg_query/include/utils/probes.h +0 -114
  867. data/ext/pg_query/include/utils/ps_status.h +0 -25
  868. data/ext/pg_query/include/utils/queryenvironment.h +0 -74
  869. data/ext/pg_query/include/utils/queryjumble.h +0 -88
  870. data/ext/pg_query/include/utils/regproc.h +0 -39
  871. data/ext/pg_query/include/utils/rel.h +0 -695
  872. data/ext/pg_query/include/utils/relcache.h +0 -153
  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/rls.h +0 -50
  876. data/ext/pg_query/include/utils/ruleutils.h +0 -47
  877. data/ext/pg_query/include/utils/sharedtuplestore.h +0 -61
  878. data/ext/pg_query/include/utils/snapmgr.h +0 -179
  879. data/ext/pg_query/include/utils/snapshot.h +0 -219
  880. data/ext/pg_query/include/utils/sortsupport.h +0 -391
  881. data/ext/pg_query/include/utils/syscache.h +0 -224
  882. data/ext/pg_query/include/utils/timeout.h +0 -95
  883. data/ext/pg_query/include/utils/timestamp.h +0 -117
  884. data/ext/pg_query/include/utils/tuplesort.h +0 -291
  885. data/ext/pg_query/include/utils/tuplestore.h +0 -91
  886. data/ext/pg_query/include/utils/typcache.h +0 -209
  887. data/ext/pg_query/include/utils/tzparser.h +0 -39
  888. data/ext/pg_query/include/utils/varlena.h +0 -41
  889. data/ext/pg_query/include/utils/wait_event.h +0 -289
  890. data/ext/pg_query/include/utils/xml.h +0 -84
  891. data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2201
  892. data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -371
  893. data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1116
  894. data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1993
  895. data/ext/pg_query/src_common_pg_prng.c +0 -152
  896. data/ext/pg_query/src_common_string.c +0 -92
  897. data/ext/pg_query/src_port_pgsleep.c +0 -69
  898. data/ext/pg_query/src_port_strnlen.c +0 -39
  899. /data/ext/pg_query/{pg_query_ruby.sym → ext_symbols.sym} +0 -0
  900. /data/ext/pg_query/include/{access → postgres/access}/rmgr.h +0 -0
  901. /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
@@ -222,36 +222,37 @@
222
222
  K_PG_EXCEPTION_CONTEXT = 354,
223
223
  K_PG_EXCEPTION_DETAIL = 355,
224
224
  K_PG_EXCEPTION_HINT = 356,
225
- K_PRINT_STRICT_PARAMS = 357,
226
- K_PRIOR = 358,
227
- K_QUERY = 359,
228
- K_RAISE = 360,
229
- K_RELATIVE = 361,
230
- K_RETURN = 362,
231
- K_RETURNED_SQLSTATE = 363,
232
- K_REVERSE = 364,
233
- K_ROLLBACK = 365,
234
- K_ROW_COUNT = 366,
235
- K_ROWTYPE = 367,
236
- K_SCHEMA = 368,
237
- K_SCHEMA_NAME = 369,
238
- K_SCROLL = 370,
239
- K_SLICE = 371,
240
- K_SQLSTATE = 372,
241
- K_STACKED = 373,
242
- K_STRICT = 374,
243
- K_TABLE = 375,
244
- K_TABLE_NAME = 376,
245
- K_THEN = 377,
246
- K_TO = 378,
247
- K_TYPE = 379,
248
- K_USE_COLUMN = 380,
249
- K_USE_VARIABLE = 381,
250
- K_USING = 382,
251
- K_VARIABLE_CONFLICT = 383,
252
- K_WARNING = 384,
253
- K_WHEN = 385,
254
- K_WHILE = 386
225
+ K_PG_ROUTINE_OID = 357,
226
+ K_PRINT_STRICT_PARAMS = 358,
227
+ K_PRIOR = 359,
228
+ K_QUERY = 360,
229
+ K_RAISE = 361,
230
+ K_RELATIVE = 362,
231
+ K_RETURN = 363,
232
+ K_RETURNED_SQLSTATE = 364,
233
+ K_REVERSE = 365,
234
+ K_ROLLBACK = 366,
235
+ K_ROW_COUNT = 367,
236
+ K_ROWTYPE = 368,
237
+ K_SCHEMA = 369,
238
+ K_SCHEMA_NAME = 370,
239
+ K_SCROLL = 371,
240
+ K_SLICE = 372,
241
+ K_SQLSTATE = 373,
242
+ K_STACKED = 374,
243
+ K_STRICT = 375,
244
+ K_TABLE = 376,
245
+ K_TABLE_NAME = 377,
246
+ K_THEN = 378,
247
+ K_TO = 379,
248
+ K_TYPE = 380,
249
+ K_USE_COLUMN = 381,
250
+ K_USE_VARIABLE = 382,
251
+ K_USING = 383,
252
+ K_VARIABLE_CONFLICT = 384,
253
+ K_WARNING = 385,
254
+ K_WHEN = 386,
255
+ K_WHILE = 387
255
256
  };
256
257
  #endif
257
258
  /* Tokens. */
@@ -354,36 +355,37 @@
354
355
  #define K_PG_EXCEPTION_CONTEXT 354
355
356
  #define K_PG_EXCEPTION_DETAIL 355
356
357
  #define K_PG_EXCEPTION_HINT 356
357
- #define K_PRINT_STRICT_PARAMS 357
358
- #define K_PRIOR 358
359
- #define K_QUERY 359
360
- #define K_RAISE 360
361
- #define K_RELATIVE 361
362
- #define K_RETURN 362
363
- #define K_RETURNED_SQLSTATE 363
364
- #define K_REVERSE 364
365
- #define K_ROLLBACK 365
366
- #define K_ROW_COUNT 366
367
- #define K_ROWTYPE 367
368
- #define K_SCHEMA 368
369
- #define K_SCHEMA_NAME 369
370
- #define K_SCROLL 370
371
- #define K_SLICE 371
372
- #define K_SQLSTATE 372
373
- #define K_STACKED 373
374
- #define K_STRICT 374
375
- #define K_TABLE 375
376
- #define K_TABLE_NAME 376
377
- #define K_THEN 377
378
- #define K_TO 378
379
- #define K_TYPE 379
380
- #define K_USE_COLUMN 380
381
- #define K_USE_VARIABLE 381
382
- #define K_USING 382
383
- #define K_VARIABLE_CONFLICT 383
384
- #define K_WARNING 384
385
- #define K_WHEN 385
386
- #define K_WHILE 386
358
+ #define K_PG_ROUTINE_OID 357
359
+ #define K_PRINT_STRICT_PARAMS 358
360
+ #define K_PRIOR 359
361
+ #define K_QUERY 360
362
+ #define K_RAISE 361
363
+ #define K_RELATIVE 362
364
+ #define K_RETURN 363
365
+ #define K_RETURNED_SQLSTATE 364
366
+ #define K_REVERSE 365
367
+ #define K_ROLLBACK 366
368
+ #define K_ROW_COUNT 367
369
+ #define K_ROWTYPE 368
370
+ #define K_SCHEMA 369
371
+ #define K_SCHEMA_NAME 370
372
+ #define K_SCROLL 371
373
+ #define K_SLICE 372
374
+ #define K_SQLSTATE 373
375
+ #define K_STACKED 374
376
+ #define K_STRICT 375
377
+ #define K_TABLE 376
378
+ #define K_TABLE_NAME 377
379
+ #define K_THEN 378
380
+ #define K_TO 379
381
+ #define K_TYPE 380
382
+ #define K_USE_COLUMN 381
383
+ #define K_USE_VARIABLE 382
384
+ #define K_USING 383
385
+ #define K_VARIABLE_CONFLICT 384
386
+ #define K_WARNING 385
387
+ #define K_WHEN 386
388
+ #define K_WHILE 387
387
389
 
388
390
 
389
391
 
@@ -395,7 +397,7 @@
395
397
  *
396
398
  * pl_gram.y - Parser for the PL/pgSQL procedural language
397
399
  *
398
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
400
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
399
401
  * Portions Copyright (c) 1994, Regents of the University of California
400
402
  *
401
403
  *
@@ -431,10 +433,7 @@
431
433
  /*
432
434
  * Bison doesn't allocate anything that needs to live across parser calls,
433
435
  * so we can easily have it use palloc instead of malloc. This prevents
434
- * memory leaks if we error out during parsing. Note this only works with
435
- * bison >= 2.0. However, in bison 1.875 the default is to use alloca()
436
- * if possible, so there's not really much problem anyhow, at least if
437
- * you're building with gcc.
436
+ * memory leaks if we error out during parsing.
438
437
  */
439
438
  #define YYMALLOC palloc
440
439
  #define YYFREE pfree
@@ -461,7 +460,6 @@ static PLpgSQL_expr *read_sql_construct(int until,
461
460
  RawParseMode parsemode,
462
461
  bool isexpression,
463
462
  bool valid_sql,
464
- bool trim,
465
463
  int *startloc,
466
464
  int *endtoken);
467
465
  static PLpgSQL_expr *read_sql_expression(int until,
@@ -471,7 +469,8 @@ static PLpgSQL_expr *read_sql_expression2(int until, int until2,
471
469
  int *endtoken);
472
470
  static PLpgSQL_expr *read_sql_stmt(void);
473
471
  static PLpgSQL_type *read_datatype(int tok);
474
- static PLpgSQL_stmt *make_execsql_stmt(int firsttoken, int location);
472
+ static PLpgSQL_stmt *make_execsql_stmt(int firsttoken, int location,
473
+ PLword *word);
475
474
  static PLpgSQL_stmt_fetch *read_fetch_direction(void);
476
475
  static void complete_direction(PLpgSQL_stmt_fetch *fetch,
477
476
  bool *check_FROM);
@@ -524,7 +523,7 @@ static void check_raise_parameters(PLpgSQL_stmt_raise *stmt);
524
523
 
525
524
  #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
526
525
  typedef union YYSTYPE
527
- #line 120 "pl_gram.y"
526
+ #line 117 "pl_gram.y"
528
527
  {
529
528
  core_YYSTYPE core_yystype;
530
529
  /* these fields must match core_YYSTYPE: */
@@ -576,7 +575,7 @@ typedef union YYSTYPE
576
575
  PLpgSQL_case_when *casewhen;
577
576
  }
578
577
  /* Line 193 of yacc.c. */
579
- #line 531 "pl_gram.c"
578
+ #line 530 "pl_gram.c"
580
579
  YYSTYPE;
581
580
  # define yystype YYSTYPE /* obsolescent; will be withdrawn */
582
581
  # define YYSTYPE_IS_DECLARED 1
@@ -601,7 +600,7 @@ typedef struct YYLTYPE
601
600
 
602
601
 
603
602
  /* Line 216 of yacc.c. */
604
- #line 556 "pl_gram.c"
603
+ #line 555 "pl_gram.c"
605
604
 
606
605
  #ifdef short
607
606
  # undef short
@@ -818,20 +817,20 @@ union yyalloc
818
817
  /* YYFINAL -- State number of the termination state. */
819
818
  #define YYFINAL 3
820
819
  /* YYLAST -- Last index in YYTABLE. */
821
- #define YYLAST 1382
820
+ #define YYLAST 1335
822
821
 
823
822
  /* YYNTOKENS -- Number of terminals. */
824
- #define YYNTOKENS 138
823
+ #define YYNTOKENS 139
825
824
  /* YYNNTS -- Number of nonterminals. */
826
825
  #define YYNNTS 87
827
826
  /* YYNRULES -- Number of rules. */
828
- #define YYNRULES 252
827
+ #define YYNRULES 253
829
828
  /* YYNRULES -- Number of states. */
830
- #define YYNSTATES 333
829
+ #define YYNSTATES 334
831
830
 
832
831
  /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */
833
832
  #define YYUNDEFTOK 2
834
- #define YYMAXUTOK 386
833
+ #define YYMAXUTOK 387
835
834
 
836
835
  #define YYTRANSLATE(YYX) \
837
836
  ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
@@ -842,10 +841,10 @@ static const yytype_uint8 yytranslate[] =
842
841
  0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
843
842
  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
844
843
  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
845
- 2, 2, 2, 2, 2, 132, 2, 2, 2, 2,
846
- 134, 135, 2, 2, 136, 2, 2, 2, 2, 2,
847
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 133,
848
- 2, 137, 2, 2, 2, 2, 2, 2, 2, 2,
844
+ 2, 2, 2, 2, 2, 133, 2, 2, 2, 2,
845
+ 135, 136, 2, 2, 137, 2, 2, 2, 2, 2,
846
+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 134,
847
+ 2, 138, 2, 2, 2, 2, 2, 2, 2, 2,
849
848
  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
850
849
  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
851
850
  2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
@@ -877,7 +876,7 @@ static const yytype_uint8 yytranslate[] =
877
876
  95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
878
877
  105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
879
878
  115, 116, 117, 118, 119, 120, 121, 122, 123, 124,
880
- 125, 126, 127, 128, 129, 130, 131
879
+ 125, 126, 127, 128, 129, 130, 131, 132
881
880
  };
882
881
 
883
882
  #if YYDEBUG
@@ -910,57 +909,57 @@ static const yytype_uint16 yyprhs[] =
910
909
  544, 546, 548, 550, 552, 554, 556, 558, 560, 562,
911
910
  564, 566, 568, 570, 572, 574, 576, 578, 580, 582,
912
911
  584, 586, 588, 590, 592, 594, 596, 598, 600, 602,
913
- 604, 606, 608
912
+ 604, 606, 608, 610
914
913
  };
915
914
 
916
915
  /* YYRHS -- A `-1'-separated list of the rules' RHS. */
917
916
  static const yytype_int16 yyrhs[] =
918
917
  {
919
- 139, 0, -1, 140, 144, 143, -1, -1, 140, 141,
920
- -1, 132, 94, 57, -1, 132, 102, 142, -1, 132,
921
- 128, 62, -1, 132, 128, 126, -1, 132, 128, 125,
922
- -1, 22, -1, 224, -1, -1, 133, -1, 145, 34,
923
- 166, 210, 60, 221, -1, 219, -1, 219, 146, -1,
924
- 219, 146, 147, -1, 52, -1, 147, 148, -1, 148,
925
- -1, 149, -1, 52, -1, 25, 223, 26, -1, 158,
926
- 159, 160, 161, 162, 163, -1, 158, 28, 68, 157,
927
- 133, -1, -1, 158, 151, 49, 150, 153, 156, 152,
928
- -1, -1, 89, 115, -1, 115, -1, -1, -1, 134,
929
- 154, 135, -1, 155, -1, 154, 136, 155, -1, 158,
930
- 160, -1, 80, -1, 68, -1, 22, -1, 224, -1,
931
- 23, -1, 22, -1, 224, -1, -1, 44, -1, -1,
932
- -1, 40, 22, -1, 40, 224, -1, 40, 23, -1,
933
- -1, 90, 92, -1, 133, -1, 164, -1, 165, -1,
934
- 53, -1, 137, -1, 15, -1, -1, 166, 167, -1,
935
- 144, 133, -1, 170, -1, 177, -1, 180, -1, 185,
936
- -1, 186, -1, 187, -1, 190, -1, 192, -1, 194,
937
- -1, 195, -1, 196, -1, 198, -1, 199, -1, 168,
938
- -1, 169, -1, 171, -1, 200, -1, 201, -1, 202,
939
- -1, 204, -1, 205, -1, 206, -1, 207, -1, 96,
940
- -1, 36, -1, 56, -1, 24, -1, 72, 172, 55,
941
- 173, 133, -1, -1, 48, -1, 118, -1, 173, 136,
942
- 174, -1, 174, -1, 176, 165, 175, -1, -1, 24,
943
- -1, 22, -1, 23, -1, 74, 217, 166, 178, 179,
944
- 60, 74, 133, -1, -1, 178, 59, 217, 166, -1,
945
- -1, 58, 166, -1, 37, 181, 182, 184, 60, 37,
946
- 133, -1, -1, 182, 183, -1, 183, -1, 130, 217,
947
- 166, -1, -1, 58, 166, -1, 220, 83, 197, -1,
948
- 220, 131, 218, 197, -1, 220, 68, 188, 197, -1,
949
- 189, 76, -1, 24, -1, 22, -1, 23, -1, 220,
950
- 69, 189, 191, 76, 31, 218, 197, -1, -1, 116,
951
- 11, -1, 193, 221, 222, -1, 65, -1, 47, -1,
952
- 107, -1, 105, -1, 32, -1, 166, 60, 83, 221,
953
- 133, -1, 75, -1, 78, -1, 84, -1, 22, -1,
954
- 23, -1, 64, -1, 93, 209, -1, 66, 203, 209,
955
- 79, -1, 87, 203, 209, 133, -1, -1, 39, 209,
956
- 133, -1, 92, 133, -1, 43, 208, 133, -1, 110,
957
- 208, 133, -1, 30, 38, -1, 30, 89, 38, -1,
918
+ 140, 0, -1, 141, 145, 144, -1, -1, 141, 142,
919
+ -1, 133, 94, 57, -1, 133, 103, 143, -1, 133,
920
+ 129, 62, -1, 133, 129, 127, -1, 133, 129, 126,
921
+ -1, 22, -1, 225, -1, -1, 134, -1, 146, 34,
922
+ 167, 211, 60, 222, -1, 220, -1, 220, 147, -1,
923
+ 220, 147, 148, -1, 52, -1, 148, 149, -1, 149,
924
+ -1, 150, -1, 52, -1, 25, 224, 26, -1, 159,
925
+ 160, 161, 162, 163, 164, -1, 159, 28, 68, 158,
926
+ 134, -1, -1, 159, 152, 49, 151, 154, 157, 153,
927
+ -1, -1, 89, 116, -1, 116, -1, -1, -1, 135,
928
+ 155, 136, -1, 156, -1, 155, 137, 156, -1, 159,
929
+ 161, -1, 80, -1, 68, -1, 22, -1, 225, -1,
930
+ 23, -1, 22, -1, 225, -1, -1, 44, -1, -1,
931
+ -1, 40, 22, -1, 40, 225, -1, 40, 23, -1,
932
+ -1, 90, 92, -1, 134, -1, 165, -1, 166, -1,
933
+ 53, -1, 138, -1, 15, -1, -1, 167, 168, -1,
934
+ 145, 134, -1, 171, -1, 178, -1, 181, -1, 186,
935
+ -1, 187, -1, 188, -1, 191, -1, 193, -1, 195,
936
+ -1, 196, -1, 197, -1, 199, -1, 200, -1, 169,
937
+ -1, 170, -1, 172, -1, 201, -1, 202, -1, 203,
938
+ -1, 205, -1, 206, -1, 207, -1, 208, -1, 96,
939
+ -1, 36, -1, 56, -1, 24, -1, 72, 173, 55,
940
+ 174, 134, -1, -1, 48, -1, 119, -1, 174, 137,
941
+ 175, -1, 175, -1, 177, 166, 176, -1, -1, 24,
942
+ -1, 22, -1, 23, -1, 74, 218, 167, 179, 180,
943
+ 60, 74, 134, -1, -1, 179, 59, 218, 167, -1,
944
+ -1, 58, 167, -1, 37, 182, 183, 185, 60, 37,
945
+ 134, -1, -1, 183, 184, -1, 184, -1, 131, 218,
946
+ 167, -1, -1, 58, 167, -1, 221, 83, 198, -1,
947
+ 221, 132, 219, 198, -1, 221, 68, 189, 198, -1,
948
+ 190, 76, -1, 24, -1, 22, -1, 23, -1, 221,
949
+ 69, 190, 192, 76, 31, 219, 198, -1, -1, 117,
950
+ 11, -1, 194, 222, 223, -1, 65, -1, 47, -1,
951
+ 108, -1, 106, -1, 32, -1, 167, 60, 83, 222,
952
+ 134, -1, 75, -1, 78, -1, 84, -1, 22, -1,
953
+ 23, -1, 64, -1, 93, 210, -1, 66, 204, 210,
954
+ 79, -1, 87, 204, 210, 134, -1, -1, 39, 210,
955
+ 134, -1, 92, 134, -1, 43, 209, 134, -1, 111,
956
+ 209, 134, -1, 30, 38, -1, 30, 89, 38, -1,
958
957
  -1, 24, -1, 22, -1, 23, -1, -1, -1, 63,
959
- 211, 212, -1, 212, 213, -1, 213, -1, 130, 214,
960
- 122, 166, -1, 214, 95, 215, -1, 215, -1, 223,
961
- -1, -1, -1, -1, -1, 25, 223, 26, -1, -1,
962
- 25, 223, 26, -1, -1, 223, -1, 133, -1, 130,
963
- 216, -1, 22, -1, 224, -1, 24, -1, 27, -1,
958
+ 212, 213, -1, 213, 214, -1, 214, -1, 131, 215,
959
+ 123, 167, -1, 215, 95, 216, -1, 216, -1, 224,
960
+ -1, -1, -1, -1, -1, 25, 224, 26, -1, -1,
961
+ 25, 224, 26, -1, -1, 224, -1, 134, -1, 131,
962
+ 217, -1, 22, -1, 225, -1, 24, -1, 27, -1,
964
963
  28, -1, 30, -1, 31, -1, 32, -1, 33, -1,
965
964
  36, -1, 38, -1, 39, -1, 40, -1, 41, -1,
966
965
  42, -1, 43, -1, 44, -1, 45, -1, 46, -1,
@@ -975,39 +974,40 @@ static const yytype_int16 yyrhs[] =
975
974
  101, -1, 102, -1, 103, -1, 104, -1, 105, -1,
976
975
  106, -1, 107, -1, 108, -1, 109, -1, 110, -1,
977
976
  111, -1, 112, -1, 113, -1, 114, -1, 115, -1,
978
- 116, -1, 117, -1, 118, -1, 120, -1, 121, -1,
979
- 124, -1, 125, -1, 126, -1, 128, -1, 129, -1
977
+ 116, -1, 117, -1, 118, -1, 119, -1, 121, -1,
978
+ 122, -1, 125, -1, 126, -1, 127, -1, 129, -1,
979
+ 130, -1
980
980
  };
981
981
 
982
982
  /* YYRLINE[YYN] -- source line where rule number YYN was defined. */
983
983
  static const yytype_uint16 yyrline[] =
984
984
  {
985
- 0, 362, 362, 368, 369, 372, 376, 385, 389, 393,
986
- 399, 403, 408, 409, 412, 435, 443, 450, 459, 471,
987
- 472, 475, 476, 480, 493, 531, 537, 536, 590, 593,
988
- 597, 604, 610, 613, 644, 648, 654, 662, 663, 665,
989
- 680, 695, 723, 751, 782, 783, 788, 799, 800, 805,
990
- 810, 817, 818, 822, 824, 830, 831, 839, 840, 844,
991
- 845, 855, 857, 859, 861, 863, 865, 867, 869, 871,
992
- 873, 875, 877, 879, 881, 883, 885, 887, 889, 891,
993
- 893, 895, 897, 899, 901, 905, 941, 959, 980, 1019,
994
- 1082, 1085, 1089, 1095, 1099, 1105, 1118, 1162, 1180, 1185,
995
- 1192, 1210, 1213, 1227, 1230, 1236, 1243, 1257, 1261, 1267,
996
- 1279, 1282, 1297, 1315, 1334, 1368, 1627, 1653, 1667, 1674,
997
- 1713, 1716, 1722, 1775, 1779, 1785, 1811, 1956, 1980, 1998,
998
- 2002, 2006, 2010, 2021, 2034, 2098, 2176, 2206, 2219, 2224,
999
- 2238, 2245, 2259, 2274, 2275, 2276, 2280, 2302, 2307, 2315,
1000
- 2317, 2316, 2358, 2362, 2368, 2381, 2390, 2396, 2433, 2437,
1001
- 2441, 2445, 2449, 2457, 2461, 2469, 2472, 2479, 2481, 2488,
1002
- 2492, 2496, 2505, 2506, 2507, 2508, 2509, 2510, 2511, 2512,
1003
- 2513, 2514, 2515, 2516, 2517, 2518, 2519, 2520, 2521, 2522,
1004
- 2523, 2524, 2525, 2526, 2527, 2528, 2529, 2530, 2531, 2532,
1005
- 2533, 2534, 2535, 2536, 2537, 2538, 2539, 2540, 2541, 2542,
1006
- 2543, 2544, 2545, 2546, 2547, 2548, 2549, 2550, 2551, 2552,
1007
- 2553, 2554, 2555, 2556, 2557, 2558, 2559, 2560, 2561, 2562,
1008
- 2563, 2564, 2565, 2566, 2567, 2568, 2569, 2570, 2571, 2572,
1009
- 2573, 2574, 2575, 2576, 2577, 2578, 2579, 2580, 2581, 2582,
1010
- 2583, 2584, 2585
985
+ 0, 360, 360, 366, 367, 370, 374, 383, 387, 391,
986
+ 397, 401, 406, 407, 410, 433, 441, 448, 457, 469,
987
+ 470, 473, 474, 478, 491, 529, 535, 534, 561, 564,
988
+ 568, 575, 581, 584, 615, 619, 625, 633, 634, 636,
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
+ 1688, 1691, 1697, 1750, 1754, 1760, 1786, 1931, 1955, 1973,
998
+ 1977, 1981, 1985, 1996, 2009, 2073, 2151, 2181, 2194, 2199,
999
+ 2213, 2220, 2234, 2249, 2250, 2251, 2255, 2277, 2282, 2290,
1000
+ 2292, 2291, 2333, 2337, 2343, 2356, 2365, 2371, 2408, 2412,
1001
+ 2416, 2420, 2424, 2432, 2436, 2444, 2447, 2454, 2456, 2463,
1002
+ 2467, 2471, 2480, 2481, 2482, 2483, 2484, 2485, 2486, 2487,
1003
+ 2488, 2489, 2490, 2491, 2492, 2493, 2494, 2495, 2496, 2497,
1004
+ 2498, 2499, 2500, 2501, 2502, 2503, 2504, 2505, 2506, 2507,
1005
+ 2508, 2509, 2510, 2511, 2512, 2513, 2514, 2515, 2516, 2517,
1006
+ 2518, 2519, 2520, 2521, 2522, 2523, 2524, 2525, 2526, 2527,
1007
+ 2528, 2529, 2530, 2531, 2532, 2533, 2534, 2535, 2536, 2537,
1008
+ 2538, 2539, 2540, 2541, 2542, 2543, 2544, 2545, 2546, 2547,
1009
+ 2548, 2549, 2550, 2551, 2552, 2553, 2554, 2555, 2556, 2557,
1010
+ 2558, 2559, 2560, 2561
1011
1011
  };
1012
1012
  #endif
1013
1013
 
@@ -1034,10 +1034,10 @@ static const char *const yytname[] =
1034
1034
  "K_NEXT", "K_NO", "K_NOT", "K_NOTICE", "K_NULL", "K_OPEN", "K_OPTION",
1035
1035
  "K_OR", "K_PERFORM", "K_PG_CONTEXT", "K_PG_DATATYPE_NAME",
1036
1036
  "K_PG_EXCEPTION_CONTEXT", "K_PG_EXCEPTION_DETAIL", "K_PG_EXCEPTION_HINT",
1037
- "K_PRINT_STRICT_PARAMS", "K_PRIOR", "K_QUERY", "K_RAISE", "K_RELATIVE",
1038
- "K_RETURN", "K_RETURNED_SQLSTATE", "K_REVERSE", "K_ROLLBACK",
1039
- "K_ROW_COUNT", "K_ROWTYPE", "K_SCHEMA", "K_SCHEMA_NAME", "K_SCROLL",
1040
- "K_SLICE", "K_SQLSTATE", "K_STACKED", "K_STRICT", "K_TABLE",
1037
+ "K_PG_ROUTINE_OID", "K_PRINT_STRICT_PARAMS", "K_PRIOR", "K_QUERY",
1038
+ "K_RAISE", "K_RELATIVE", "K_RETURN", "K_RETURNED_SQLSTATE", "K_REVERSE",
1039
+ "K_ROLLBACK", "K_ROW_COUNT", "K_ROWTYPE", "K_SCHEMA", "K_SCHEMA_NAME",
1040
+ "K_SCROLL", "K_SLICE", "K_SQLSTATE", "K_STACKED", "K_STRICT", "K_TABLE",
1041
1041
  "K_TABLE_NAME", "K_THEN", "K_TO", "K_TYPE", "K_USE_COLUMN",
1042
1042
  "K_USE_VARIABLE", "K_USING", "K_VARIABLE_CONFLICT", "K_WARNING",
1043
1043
  "K_WHEN", "K_WHILE", "'#'", "';'", "'('", "')'", "','", "'='", "$accept",
@@ -1084,39 +1084,39 @@ static const yytype_uint16 yytoknum[] =
1084
1084
  355, 356, 357, 358, 359, 360, 361, 362, 363, 364,
1085
1085
  365, 366, 367, 368, 369, 370, 371, 372, 373, 374,
1086
1086
  375, 376, 377, 378, 379, 380, 381, 382, 383, 384,
1087
- 385, 386, 35, 59, 40, 41, 44, 61
1087
+ 385, 386, 387, 35, 59, 40, 41, 44, 61
1088
1088
  };
1089
1089
  # endif
1090
1090
 
1091
1091
  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */
1092
1092
  static const yytype_uint8 yyr1[] =
1093
1093
  {
1094
- 0, 138, 139, 140, 140, 141, 141, 141, 141, 141,
1095
- 142, 142, 143, 143, 144, 145, 145, 145, 146, 147,
1096
- 147, 148, 148, 148, 149, 149, 150, 149, 151, 151,
1097
- 151, 152, 153, 153, 154, 154, 155, 156, 156, 157,
1098
- 157, 157, 158, 158, 159, 159, 160, 161, 161, 161,
1099
- 161, 162, 162, 163, 163, 164, 164, 165, 165, 166,
1100
- 166, 167, 167, 167, 167, 167, 167, 167, 167, 167,
1101
- 167, 167, 167, 167, 167, 167, 167, 167, 167, 167,
1102
- 167, 167, 167, 167, 167, 168, 169, 169, 170, 171,
1103
- 172, 172, 172, 173, 173, 174, 175, 176, 176, 176,
1104
- 177, 178, 178, 179, 179, 180, 181, 182, 182, 183,
1105
- 184, 184, 185, 186, 187, 188, 189, 189, 189, 190,
1106
- 191, 191, 192, 193, 193, 194, 195, 196, 197, 198,
1107
- 198, 198, 198, 198, 199, 200, 201, 202, 203, 204,
1108
- 205, 206, 207, 208, 208, 208, 209, 209, 209, 210,
1109
- 211, 210, 212, 212, 213, 214, 214, 215, 216, 217,
1110
- 218, 219, 219, 220, 220, 221, 221, 222, 222, 223,
1111
- 223, 223, 224, 224, 224, 224, 224, 224, 224, 224,
1112
- 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
1113
- 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
1114
- 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
1115
- 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
1116
- 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
1117
- 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
1118
- 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
1119
- 224, 224, 224
1094
+ 0, 139, 140, 141, 141, 142, 142, 142, 142, 142,
1095
+ 143, 143, 144, 144, 145, 146, 146, 146, 147, 148,
1096
+ 148, 149, 149, 149, 150, 150, 151, 150, 152, 152,
1097
+ 152, 153, 154, 154, 155, 155, 156, 157, 157, 158,
1098
+ 158, 158, 159, 159, 160, 160, 161, 162, 162, 162,
1099
+ 162, 163, 163, 164, 164, 165, 165, 166, 166, 167,
1100
+ 167, 168, 168, 168, 168, 168, 168, 168, 168, 168,
1101
+ 168, 168, 168, 168, 168, 168, 168, 168, 168, 168,
1102
+ 168, 168, 168, 168, 168, 169, 170, 170, 171, 172,
1103
+ 173, 173, 173, 174, 174, 175, 176, 177, 177, 177,
1104
+ 178, 179, 179, 180, 180, 181, 182, 183, 183, 184,
1105
+ 185, 185, 186, 187, 188, 189, 190, 190, 190, 191,
1106
+ 192, 192, 193, 194, 194, 195, 196, 197, 198, 199,
1107
+ 199, 199, 199, 199, 200, 201, 202, 203, 204, 205,
1108
+ 206, 207, 208, 209, 209, 209, 210, 210, 210, 211,
1109
+ 212, 211, 213, 213, 214, 215, 215, 216, 217, 218,
1110
+ 219, 220, 220, 221, 221, 222, 222, 223, 223, 224,
1111
+ 224, 224, 225, 225, 225, 225, 225, 225, 225, 225,
1112
+ 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
1113
+ 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
1114
+ 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
1115
+ 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
1116
+ 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
1117
+ 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
1118
+ 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
1119
+ 225, 225, 225, 225
1120
1120
  };
1121
1121
 
1122
1122
  /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */
@@ -1147,7 +1147,7 @@ static const yytype_uint8 yyr2[] =
1147
1147
  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1148
1148
  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1149
1149
  1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1150
- 1, 1, 1
1150
+ 1, 1, 1, 1
1151
1151
  };
1152
1152
 
1153
1153
  /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
@@ -1164,100 +1164,100 @@ static const yytype_uint8 yydefact[] =
1164
1164
  220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
1165
1165
  230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
1166
1166
  240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
1167
- 250, 251, 252, 0, 170, 0, 0, 0, 13, 2,
1168
- 59, 18, 16, 162, 5, 10, 6, 11, 7, 9,
1169
- 8, 163, 42, 0, 22, 17, 20, 21, 44, 43,
1170
- 132, 133, 88, 0, 127, 86, 106, 0, 145, 124,
1171
- 87, 150, 134, 123, 138, 90, 159, 129, 130, 131,
1172
- 138, 0, 0, 85, 126, 125, 145, 0, 60, 75,
1173
- 76, 62, 77, 63, 64, 65, 66, 67, 68, 69,
1174
- 165, 70, 71, 72, 73, 74, 78, 79, 80, 81,
1175
- 82, 83, 84, 0, 0, 0, 19, 0, 45, 0,
1176
- 30, 0, 46, 0, 0, 147, 148, 146, 0, 0,
1177
- 0, 0, 0, 91, 92, 0, 59, 0, 140, 135,
1178
- 0, 61, 0, 166, 165, 0, 0, 59, 160, 23,
1179
- 0, 29, 26, 47, 164, 159, 110, 108, 139, 143,
1180
- 0, 141, 0, 151, 153, 0, 0, 163, 0, 142,
1181
- 158, 167, 122, 14, 117, 118, 116, 59, 0, 120,
1182
- 163, 112, 59, 39, 41, 0, 40, 32, 0, 51,
1183
- 59, 59, 107, 0, 144, 0, 156, 157, 152, 136,
1184
- 98, 99, 97, 0, 94, 0, 103, 137, 168, 114,
1185
- 115, 0, 0, 0, 113, 25, 0, 0, 48, 50,
1186
- 49, 0, 0, 163, 163, 0, 0, 59, 89, 0,
1187
- 58, 57, 96, 59, 159, 0, 121, 0, 165, 0,
1188
- 34, 46, 38, 37, 31, 52, 56, 53, 24, 54,
1189
- 55, 0, 155, 163, 93, 95, 163, 59, 0, 160,
1190
- 0, 33, 0, 36, 27, 105, 163, 0, 59, 128,
1191
- 35, 100, 119
1167
+ 250, 251, 252, 253, 0, 170, 0, 0, 0, 13,
1168
+ 2, 59, 18, 16, 162, 5, 10, 6, 11, 7,
1169
+ 9, 8, 163, 42, 0, 22, 17, 20, 21, 44,
1170
+ 43, 132, 133, 88, 0, 127, 86, 106, 0, 145,
1171
+ 124, 87, 150, 134, 123, 138, 90, 159, 129, 130,
1172
+ 131, 138, 0, 0, 85, 126, 125, 145, 0, 60,
1173
+ 75, 76, 62, 77, 63, 64, 65, 66, 67, 68,
1174
+ 69, 165, 70, 71, 72, 73, 74, 78, 79, 80,
1175
+ 81, 82, 83, 84, 0, 0, 0, 19, 0, 45,
1176
+ 0, 30, 0, 46, 0, 0, 147, 148, 146, 0,
1177
+ 0, 0, 0, 0, 91, 92, 0, 59, 0, 140,
1178
+ 135, 0, 61, 0, 166, 165, 0, 0, 59, 160,
1179
+ 23, 0, 29, 26, 47, 164, 159, 110, 108, 139,
1180
+ 143, 0, 141, 0, 151, 153, 0, 0, 163, 0,
1181
+ 142, 158, 167, 122, 14, 117, 118, 116, 59, 0,
1182
+ 120, 163, 112, 59, 39, 41, 0, 40, 32, 0,
1183
+ 51, 59, 59, 107, 0, 144, 0, 156, 157, 152,
1184
+ 136, 98, 99, 97, 0, 94, 0, 103, 137, 168,
1185
+ 114, 115, 0, 0, 0, 113, 25, 0, 0, 48,
1186
+ 50, 49, 0, 0, 163, 163, 0, 0, 59, 89,
1187
+ 0, 58, 57, 96, 59, 159, 0, 121, 0, 165,
1188
+ 0, 34, 46, 38, 37, 31, 52, 56, 53, 24,
1189
+ 54, 55, 0, 155, 163, 93, 95, 163, 59, 0,
1190
+ 160, 0, 33, 0, 36, 27, 105, 163, 0, 59,
1191
+ 128, 35, 100, 119
1192
1192
  };
1193
1193
 
1194
1194
  /* YYDEFGOTO[NTERM-NUM]. */
1195
1195
  static const yytype_int16 yydefgoto[] =
1196
1196
  {
1197
- -1, 1, 2, 6, 106, 99, 147, 8, 102, 115,
1198
- 116, 117, 247, 181, 324, 277, 299, 300, 304, 245,
1199
- 118, 182, 213, 249, 282, 308, 309, 292, 240, 148,
1200
- 149, 150, 151, 152, 195, 263, 264, 315, 265, 153,
1201
- 266, 295, 154, 184, 216, 217, 253, 155, 156, 157,
1202
- 237, 238, 158, 272, 159, 160, 161, 162, 163, 241,
1203
- 164, 165, 166, 167, 168, 192, 169, 170, 171, 172,
1204
- 190, 188, 173, 191, 223, 224, 255, 256, 268, 196,
1205
- 242, 9, 174, 202, 232, 203, 94
1197
+ -1, 1, 2, 6, 107, 100, 148, 8, 103, 116,
1198
+ 117, 118, 248, 182, 325, 278, 300, 301, 305, 246,
1199
+ 119, 183, 214, 250, 283, 309, 310, 293, 241, 149,
1200
+ 150, 151, 152, 153, 196, 264, 265, 316, 266, 154,
1201
+ 267, 296, 155, 185, 217, 218, 254, 156, 157, 158,
1202
+ 238, 239, 159, 273, 160, 161, 162, 163, 164, 242,
1203
+ 165, 166, 167, 168, 169, 193, 170, 171, 172, 173,
1204
+ 191, 189, 174, 192, 224, 225, 256, 257, 269, 197,
1205
+ 243, 9, 175, 203, 233, 204, 95
1206
1206
  };
1207
1207
 
1208
1208
  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1209
1209
  STATE-NUM. */
1210
- #define YYPACT_NINF -253
1210
+ #define YYPACT_NINF -260
1211
1211
  static const yytype_int16 yypact[] =
1212
1212
  {
1213
- -253, 36, -20, -253, 353, -49, -253, -87, 14, -2,
1214
- -253, -253, -253, -253, -253, -253, -253, -253, -253, -253,
1215
- -253, -253, -253, -253, -253, -253, -253, -253, -253, -253,
1216
- -253, -253, -253, -253, -253, -253, -253, -253, -253, -253,
1217
- -253, -253, -253, -253, -253, -253, -253, -253, -253, -253,
1218
- -253, -253, -253, -253, -253, -253, -253, -253, -253, -253,
1219
- -253, -253, -253, -253, -253, -253, -253, -253, -253, -253,
1220
- -253, -253, -253, -253, -253, -253, -253, -253, -253, -253,
1221
- -253, -253, -253, -253, -253, -253, -253, -253, -253, -253,
1222
- -253, -253, -253, 26, -253, -3, 674, -40, -253, -253,
1223
- -253, -253, 245, -253, -253, -253, -253, -253, -253, -253,
1224
- -253, 1041, -253, 353, -253, 245, -253, -253, -7, -253,
1225
- -253, -253, -253, 353, -253, -253, -253, 49, 38, -253,
1226
- -253, -253, -253, -253, -253, -38, -253, -253, -253, -253,
1227
- -253, -59, 49, -253, -253, -253, 38, -34, -253, -253,
1228
- -253, -253, -253, -253, -253, -253, -253, -253, -253, -253,
1229
- 353, -253, -253, -253, -253, -253, -253, -253, -253, -253,
1230
- -253, -253, -253, 34, -50, 80, -253, 27, -253, -5,
1231
- -253, 58, -253, 85, -17, -253, -253, -253, -19, 1,
1232
- -16, -14, 49, -253, -253, 63, -253, 49, -253, -253,
1233
- -11, -253, -98, -253, 353, 69, 69, -253, -253, -253,
1234
- 461, -253, -253, 83, -8, -253, -41, -253, -253, -253,
1235
- 88, -253, 353, -14, -253, 48, 81, 887, -1, -253,
1236
- -253, -253, -253, -253, -253, -253, -253, -253, 52, 13,
1237
- 1118, -253, -253, -253, -253, 0, -253, 2, 569, 40,
1238
- -253, -253, -253, 71, -253, -64, -253, -253, -253, -253,
1239
- -253, -253, -253, -72, -253, -12, 18, -253, -253, -253,
1240
- -253, 123, 59, 54, -253, -253, 779, -39, -253, -253,
1241
- -253, 46, -13, -9, 1195, 102, 353, -253, -253, 81,
1242
- -253, -253, -253, -253, -253, 82, -253, 109, 353, -76,
1243
- -253, -253, -253, -253, -253, -253, -253, -253, -253, -253,
1244
- -253, 8, -253, 124, -253, -253, 1272, -253, 70, -253,
1245
- 10, -253, 779, -253, -253, -253, 964, 12, -253, -253,
1246
- -253, -253, -253
1213
+ -260, 21, -20, -260, 355, -61, -260, -99, 3, 7,
1214
+ -260, -260, -260, -260, -260, -260, -260, -260, -260, -260,
1215
+ -260, -260, -260, -260, -260, -260, -260, -260, -260, -260,
1216
+ -260, -260, -260, -260, -260, -260, -260, -260, -260, -260,
1217
+ -260, -260, -260, -260, -260, -260, -260, -260, -260, -260,
1218
+ -260, -260, -260, -260, -260, -260, -260, -260, -260, -260,
1219
+ -260, -260, -260, -260, -260, -260, -260, -260, -260, -260,
1220
+ -260, -260, -260, -260, -260, -260, -260, -260, -260, -260,
1221
+ -260, -260, -260, -260, -260, -260, -260, -260, -260, -260,
1222
+ -260, -260, -260, -260, 22, -260, 23, 679, -38, -260,
1223
+ -260, -260, -260, 246, -260, -260, -260, -260, -260, -260,
1224
+ -260, -260, 1026, -260, 355, -260, 246, -260, -260, -18,
1225
+ -260, -260, -260, -260, 355, -260, -260, -260, 30, 49,
1226
+ -260, -260, -260, -260, -260, -260, -37, -260, -260, -260,
1227
+ -260, -260, -48, 30, -260, -260, -260, 49, -33, -260,
1228
+ -260, -260, -260, -260, -260, -260, -260, -260, -260, -260,
1229
+ -260, 355, -260, -260, -260, -260, -260, -260, -260, -260,
1230
+ -260, -260, -260, -260, 36, -23, 78, -260, 37, -260,
1231
+ -10, -260, 58, -260, 85, -17, -260, -260, -260, -22,
1232
+ -19, -16, -15, 30, -260, -260, 62, -260, 30, -260,
1233
+ -260, -11, -260, -95, -260, 355, 68, 68, -260, -260,
1234
+ -260, 464, -260, -260, 79, -2, -260, -50, -260, -260,
1235
+ -260, 86, -260, 355, -15, -260, 48, 71, 894, -6,
1236
+ -260, -260, -260, -260, -260, -260, -260, -260, -260, 53,
1237
+ 13, 1092, -260, -260, -260, -260, -3, -260, -1, 573,
1238
+ 42, -260, -260, -260, 73, -260, -51, -260, -260, -260,
1239
+ -260, -260, -260, -260, -76, -260, -12, 15, -260, -260,
1240
+ -260, -260, 125, 59, 54, -260, -260, 785, -39, -260,
1241
+ -260, -260, 46, -13, -9, 1158, 102, 355, -260, -260,
1242
+ 71, -260, -260, -260, -260, -260, 80, -260, 110, 355,
1243
+ -60, -260, -260, -260, -260, -260, -260, -260, -260, -260,
1244
+ -260, -260, 8, -260, 124, -260, -260, 1224, -260, 69,
1245
+ -260, 10, -260, 785, -260, -260, -260, 960, 11, -260,
1246
+ -260, -260, -260, -260
1247
1247
  };
1248
1248
 
1249
1249
  /* YYPGOTO[NTERM-NUM]. */
1250
1250
  static const yytype_int16 yypgoto[] =
1251
1251
  {
1252
- -253, -253, -253, -253, -253, -253, 148, -253, -253, -253,
1253
- 37, -253, -253, -253, -253, -253, -253, -171, -253, -253,
1254
- -252, -253, -144, -253, -253, -253, -253, -123, -96, -253,
1255
- -253, -253, -253, -253, -253, -253, -127, -253, -253, -253,
1256
- -253, -253, -253, -253, -253, -52, -253, -253, -253, -253,
1257
- -253, -37, -253, -253, -253, -253, -253, -253, -253, -231,
1258
- -253, -253, -253, -253, -253, 25, -253, -253, -253, -253,
1259
- 20, -130, -253, -253, -253, -55, -253, -116, -253, -206,
1260
- -147, -253, -253, -196, -253, -4, -95
1252
+ -260, -260, -260, -260, -260, -260, 148, -260, -260, -260,
1253
+ 35, -260, -260, -260, -260, -260, -260, -171, -260, -260,
1254
+ -259, -260, -145, -260, -260, -260, -260, -124, -97, -260,
1255
+ -260, -260, -260, -260, -260, -260, -128, -260, -260, -260,
1256
+ -260, -260, -260, -260, -260, -53, -260, -260, -260, -260,
1257
+ -260, -42, -260, -260, -260, -260, -260, -260, -260, -221,
1258
+ -260, -260, -260, -260, -260, 25, -260, -260, -260, -260,
1259
+ 26, -131, -260, -260, -260, -56, -260, -118, -260, -210,
1260
+ -150, -260, -260, -196, -260, -4, -96
1261
1261
  };
1262
1262
 
1263
1263
  /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If
@@ -1267,76 +1267,55 @@ static const yytype_int16 yypgoto[] =
1267
1267
  #define YYTABLE_NINF -163
1268
1268
  static const yytype_int16 yytable[] =
1269
1269
  {
1270
- 93, 107, 290, 290, 111, 4, 269, 119, 233, 250,
1271
- 193, 274, 199, 120, 121, 122, 123, 251, 205, 206,
1272
- 119, 177, 108, 124, 301, -161, -162, 125, 126, 302,
1273
- 127, 286, 230, 207, 128, 231, 3, 178, 129, 219,
1274
- 306, 303, -28, -161, -162, 95, 98, 130, 100, -109,
1275
- 101, -109, 103, 96, 104, 132, 133, 134, 287, 321,
1276
- 322, 288, 225, 135, 289, 136, 137, 228, 189, 138,
1277
- 301, 185, 186, 187, 198, 139, 293, 294, 140, 97,
1278
- 194, 208, 179, 141, 142, 109, 110, 143, 317, 215,
1279
- 220, 234, 235, 236, 204, 210, 144, 332, 145, 201,
1280
- 227, 146, 320, 260, 261, 262, 209, 212, 180, 175,
1281
- 211, 214, 5, 215, 218, 246, 222, 221, 226, 183,
1282
- 307, -109, 229, 248, 291, 291, 254, 259, 270, 271,
1283
- 281, 285, 267, 275, 296, 297, 276, 298, 305, 311,
1284
- 319, 325, 318, 329, 327, 331, 120, 121, 122, 123,
1285
- 7, 330, 176, 280, 283, 284, 124, 323, -161, 310,
1286
- 125, 126, 314, 127, 252, 197, 200, 128, 258, 239,
1287
- 312, 129, 328, 0, 0, 0, -161, 0, 0, 0,
1288
- 130, 119, 0, 0, -154, 0, 0, 0, 132, 133,
1289
- 134, 313, 0, 0, 0, 0, 135, 316, 136, 137,
1290
- 0, 0, 138, 0, 0, 0, 0, 0, 139, 0,
1291
- 0, 140, 0, 0, 0, 0, 141, 142, 257, 0,
1292
- 143, 326, 0, 0, 0, 0, 0, 119, 0, 144,
1293
- 0, 145, 0, 0, 146, 0, 0, 0, 0, 0,
1270
+ 94, 108, 291, 291, 112, 4, 251, 120, 252, 234,
1271
+ 178, 194, 200, 121, 122, 123, 124, 270, 302, 220,
1272
+ 120, 3, 275, 125, 109, -161, 179, 126, 127, 303,
1273
+ 128, -28, -162, 96, 129, 99, 231, 101, 130, 232,
1274
+ 307, 304, 97, -161, 287, 206, 207, 131, 104, -109,
1275
+ -162, -109, 186, 187, 188, 133, 134, 135, 289, 102,
1276
+ 208, 290, 226, 136, 302, 137, 138, 229, 98, 139,
1277
+ 221, 180, 288, 294, 295, 140, 322, 323, 141, 190,
1278
+ 105, 216, 195, 142, 143, 318, 199, 144, 110, 111,
1279
+ 235, 236, 237, 261, 262, 263, 205, 145, 181, 146,
1280
+ 228, 202, 147, 321, 210, 211, 212, 213, 333, 209,
1281
+ 176, 215, 219, 5, 216, 247, 223, 227, 222, 249,
1282
+ 184, 308, -109, 230, 255, 292, 292, 260, 268, 271,
1283
+ 272, 276, 282, 286, 277, 298, 297, 299, 306, 312,
1284
+ 319, 320, 326, 328, 330, 332, 121, 122, 123, 124,
1285
+ 7, 177, 331, 281, 284, 285, 125, 324, -161, 311,
1286
+ 126, 127, 315, 128, 253, 240, 198, 129, 259, 313,
1287
+ 329, 130, 0, 201, 0, 0, -161, 0, 0, 0,
1288
+ 131, 120, 0, 0, -154, 0, 0, 0, 133, 134,
1289
+ 135, 314, 0, 0, 0, 0, 136, 317, 137, 138,
1290
+ 0, 0, 139, 0, 0, 0, 0, 0, 140, 0,
1291
+ 0, 141, 0, 0, 0, 0, 142, 143, 0, 258,
1292
+ 144, 327, 0, 0, 0, 0, 0, 120, 0, 0,
1293
+ 145, 0, 146, 0, 0, 147, 0, 0, 0, 0,
1294
1294
  0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1295
- 0, 0, 0, 0, -154, 0, 0, 0, 0, 0,
1296
- 0, 0, 0, 0, 0, 0, 0, 112, 0, 0,
1297
- 113, 0, 12, 13, 0, 14, 15, 16, 17, 0,
1298
- 0, 18, 257, 19, 20, 21, 22, 23, 24, 25,
1299
- 26, 27, 28, 29, 30, 31, 32, 114, 33, 34,
1295
+ 0, 0, 0, 0, 0, -154, 0, 0, 0, 0,
1296
+ 0, 0, 0, 0, 0, 0, 0, 0, 113, 0,
1297
+ 0, 114, 0, 12, 13, 0, 14, 15, 16, 17,
1298
+ 0, 0, 18, 258, 19, 20, 21, 22, 23, 24,
1299
+ 25, 26, 27, 28, 29, 30, 31, 32, 115, 33,
1300
+ 34, 35, 36, 37, 0, 38, 0, 39, 40, 41,
1301
+ 0, 42, 43, 44, 0, 0, 45, 0, 46, 47,
1302
+ 0, 48, 0, 49, 50, 0, 51, 52, 53, 0,
1303
+ 54, 55, 56, 57, 58, 59, 0, 60, 0, 61,
1304
+ 62, 0, 63, 64, 65, 66, 67, 68, 69, 70,
1305
+ 71, 72, 73, 74, 75, 76, 77, 78, 79, 80,
1306
+ 81, 82, 83, 84, 85, 86, 0, 87, 88, 0,
1307
+ 0, 89, 90, 91, 0, 92, 93, 10, 0, 11,
1308
+ 0, 0, 12, 13, 0, 14, 15, 16, 17, 0,
1309
+ 0, 18, 0, 19, 20, 21, 22, 23, 24, 25,
1310
+ 26, 27, 28, 29, 30, 31, 32, 0, 33, 34,
1300
1311
  35, 36, 37, 0, 38, 0, 39, 40, 41, 0,
1301
1312
  42, 43, 44, 0, 0, 45, 0, 46, 47, 0,
1302
1313
  48, 0, 49, 50, 0, 51, 52, 53, 0, 54,
1303
1314
  55, 56, 57, 58, 59, 0, 60, 0, 61, 62,
1304
1315
  0, 63, 64, 65, 66, 67, 68, 69, 70, 71,
1305
1316
  72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
1306
- 82, 83, 84, 85, 0, 86, 87, 0, 0, 88,
1307
- 89, 90, 0, 91, 92, 10, 0, 11, 0, 0,
1308
- 12, 13, 0, 14, 15, 16, 17, 0, 0, 18,
1309
- 0, 19, 20, 21, 22, 23, 24, 25, 26, 27,
1310
- 28, 29, 30, 31, 32, 0, 33, 34, 35, 36,
1311
- 37, 0, 38, 0, 39, 40, 41, 0, 42, 43,
1312
- 44, 0, 0, 45, 0, 46, 47, 0, 48, 0,
1313
- 49, 50, 0, 51, 52, 53, 0, 54, 55, 56,
1314
- 57, 58, 59, 0, 60, 0, 61, 62, 0, 63,
1315
- 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
1316
- 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
1317
- 84, 85, 0, 86, 87, 0, 0, 88, 89, 90,
1318
- 0, 91, 92, 243, 244, 0, 0, 0, 12, 13,
1319
- 0, 14, 15, 16, 17, 0, 0, 18, 0, 19,
1320
- 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
1321
- 30, 31, 32, 0, 33, 34, 35, 36, 37, 0,
1322
- 38, 0, 39, 40, 41, 0, 42, 43, 44, 0,
1323
- 0, 45, 0, 46, 47, 0, 48, 0, 49, 50,
1324
- 0, 51, 52, 53, 0, 54, 55, 56, 57, 58,
1325
- 59, 0, 60, 0, 61, 62, 0, 63, 64, 65,
1326
- 66, 67, 68, 69, 70, 71, 72, 73, 74, 75,
1327
- 76, 77, 78, 79, 80, 81, 82, 83, 84, 85,
1328
- 0, 86, 87, 0, 0, 88, 89, 90, 0, 91,
1329
- 92, 278, 279, 0, 0, 0, 12, 13, 0, 14,
1330
- 15, 16, 17, 0, 0, 18, 0, 19, 20, 21,
1331
- 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
1332
- 32, 0, 33, 34, 35, 36, 37, 0, 38, 0,
1333
- 39, 40, 41, 0, 42, 43, 44, 0, 0, 45,
1334
- 0, 46, 47, 0, 48, 0, 49, 50, 0, 51,
1335
- 52, 53, 0, 54, 55, 56, 57, 58, 59, 0,
1336
- 60, 0, 61, 62, 0, 63, 64, 65, 66, 67,
1337
- 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
1338
- 78, 79, 80, 81, 82, 83, 84, 85, 0, 86,
1339
- 87, 0, 0, 88, 89, 90, 105, 91, 92, 0,
1317
+ 82, 83, 84, 85, 86, 0, 87, 88, 0, 0,
1318
+ 89, 90, 91, 0, 92, 93, 244, 245, 0, 0,
1340
1319
  0, 12, 13, 0, 14, 15, 16, 17, 0, 0,
1341
1320
  18, 0, 19, 20, 21, 22, 23, 24, 25, 26,
1342
1321
  27, 28, 29, 30, 31, 32, 0, 33, 34, 35,
@@ -1346,8 +1325,19 @@ static const yytype_int16 yytable[] =
1346
1325
  56, 57, 58, 59, 0, 60, 0, 61, 62, 0,
1347
1326
  63, 64, 65, 66, 67, 68, 69, 70, 71, 72,
1348
1327
  73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
1349
- 83, 84, 85, 0, 86, 87, 0, 0, 88, 89,
1350
- 90, 112, 91, 92, 0, 0, 12, 13, 0, 14,
1328
+ 83, 84, 85, 86, 0, 87, 88, 0, 0, 89,
1329
+ 90, 91, 0, 92, 93, 279, 280, 0, 0, 0,
1330
+ 12, 13, 0, 14, 15, 16, 17, 0, 0, 18,
1331
+ 0, 19, 20, 21, 22, 23, 24, 25, 26, 27,
1332
+ 28, 29, 30, 31, 32, 0, 33, 34, 35, 36,
1333
+ 37, 0, 38, 0, 39, 40, 41, 0, 42, 43,
1334
+ 44, 0, 0, 45, 0, 46, 47, 0, 48, 0,
1335
+ 49, 50, 0, 51, 52, 53, 0, 54, 55, 56,
1336
+ 57, 58, 59, 0, 60, 0, 61, 62, 0, 63,
1337
+ 64, 65, 66, 67, 68, 69, 70, 71, 72, 73,
1338
+ 74, 75, 76, 77, 78, 79, 80, 81, 82, 83,
1339
+ 84, 85, 86, 0, 87, 88, 0, 0, 89, 90,
1340
+ 91, 106, 92, 93, 0, 0, 12, 13, 0, 14,
1351
1341
  15, 16, 17, 0, 0, 18, 0, 19, 20, 21,
1352
1342
  22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
1353
1343
  32, 0, 33, 34, 35, 36, 37, 0, 38, 0,
@@ -1356,130 +1346,114 @@ static const yytype_int16 yytable[] =
1356
1346
  52, 53, 0, 54, 55, 56, 57, 58, 59, 0,
1357
1347
  60, 0, 61, 62, 0, 63, 64, 65, 66, 67,
1358
1348
  68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
1359
- 78, 79, 80, 81, 82, 83, 84, 85, 0, 86,
1360
- 87, 0, 0, 88, 89, 90, 0, 91, 92, 120,
1361
- 121, 122, 123, 0, 0, 0, 0, 0, 0, 124,
1362
- 0, -161, 0, 125, 126, 0, 127, 0, 0, 0,
1363
- 128, 0, 0, 0, 129, 0, 0, 0, 0, -161,
1364
- 0, 0, 0, 130, 0, -101, -101, -101, 0, 0,
1365
- 0, 132, 133, 134, 0, 0, 0, 0, 0, 135,
1366
- 0, 136, 137, 0, 0, 138, 0, 0, 0, 0,
1367
- 0, 139, 0, 0, 140, 0, 0, 0, 0, 141,
1368
- 142, 0, 0, 143, 0, 0, 120, 121, 122, 123,
1369
- 0, 0, 144, 0, 145, 0, 124, 146, -161, 0,
1370
- 125, 126, 0, 127, 0, 0, 0, 128, 0, 0,
1371
- 0, 129, 0, 0, 0, 0, -161, 0, 0, 0,
1372
- 130, 0, -102, -102, -102, 0, 0, 0, 132, 133,
1373
- 134, 0, 0, 0, 0, 0, 135, 0, 136, 137,
1374
- 0, 0, 138, 0, 0, 0, 0, 0, 139, 0,
1375
- 0, 140, 0, 0, 0, 0, 141, 142, 0, 0,
1376
- 143, 0, 0, 120, 121, 122, 123, 0, 0, 144,
1377
- 0, 145, 0, 124, 146, -161, 0, 125, 126, 0,
1378
- 127, 0, 0, 0, 128, 0, 0, 0, 129, 0,
1379
- 0, 0, 0, -161, 0, 0, 0, 130, 0, 0,
1380
- 0, -149, 0, 0, 131, 132, 133, 134, 0, 0,
1381
- 0, 0, 0, 135, 0, 136, 137, 0, 0, 138,
1382
- 0, 0, 0, 0, 0, 139, 0, 0, 140, 0,
1383
- 0, 0, 0, 141, 142, 0, 0, 143, 0, 0,
1384
- 120, 121, 122, 123, 0, 0, 144, 0, 145, 0,
1385
- 124, 146, -161, 0, 125, 126, 0, 127, 0, 0,
1386
- 0, 128, 0, 0, 0, 129, 0, 0, 0, 0,
1387
- -161, 0, 0, 0, 130, 0, 0, 0, 273, 0,
1388
- 0, 0, 132, 133, 134, 0, 0, 0, 0, 0,
1389
- 135, 0, 136, 137, 0, 0, 138, 0, 0, 0,
1390
- 0, 0, 139, 0, 0, 140, 0, 0, 0, 0,
1391
- 141, 142, 0, 0, 143, 0, 0, 120, 121, 122,
1392
- 123, 0, 0, 144, 0, 145, 0, 124, 146, -161,
1393
- 0, 125, 126, 0, 127, 0, 0, 0, 128, 0,
1394
- 0, 0, 129, 0, 0, 0, 0, -161, 0, 0,
1395
- 0, 130, 0, 0, 0, -111, 0, 0, 0, 132,
1396
- 133, 134, 0, 0, 0, 0, 0, 135, 0, 136,
1397
- 137, 0, 0, 138, 0, 0, 0, 0, 0, 139,
1398
- 0, 0, 140, 0, 0, 0, 0, 141, 142, 0,
1399
- 0, 143, 0, 0, 120, 121, 122, 123, 0, 0,
1400
- 144, 0, 145, 0, 124, 146, -161, 0, 125, 126,
1401
- 0, 127, 0, 0, 0, 128, 0, 0, 0, 129,
1402
- 0, 0, 0, 0, -161, 0, 0, 0, 130, 0,
1403
- 0, 0, -104, 0, 0, 0, 132, 133, 134, 0,
1404
- 0, 0, 0, 0, 135, 0, 136, 137, 0, 0,
1405
- 138, 0, 0, 0, 0, 0, 139, 0, 0, 140,
1406
- 0, 0, 0, 0, 141, 142, 0, 0, 143, 0,
1407
- 0, 0, 0, 0, 0, 0, 0, 144, 0, 145,
1408
- 0, 0, 146
1349
+ 78, 79, 80, 81, 82, 83, 84, 85, 86, 0,
1350
+ 87, 88, 0, 0, 89, 90, 91, 113, 92, 93,
1351
+ 0, 0, 12, 13, 0, 14, 15, 16, 17, 0,
1352
+ 0, 18, 0, 19, 20, 21, 22, 23, 24, 25,
1353
+ 26, 27, 28, 29, 30, 31, 32, 0, 33, 34,
1354
+ 35, 36, 37, 0, 38, 0, 39, 40, 41, 0,
1355
+ 42, 43, 44, 0, 0, 45, 0, 46, 47, 0,
1356
+ 48, 0, 49, 50, 0, 51, 52, 53, 0, 54,
1357
+ 55, 56, 57, 58, 59, 0, 60, 0, 61, 62,
1358
+ 0, 63, 64, 65, 66, 67, 68, 69, 70, 71,
1359
+ 72, 73, 74, 75, 76, 77, 78, 79, 80, 81,
1360
+ 82, 83, 84, 85, 86, 0, 87, 88, 0, 0,
1361
+ 89, 90, 91, 0, 92, 93, 121, 122, 123, 124,
1362
+ 0, 0, 0, 0, 0, 0, 125, 0, -161, 0,
1363
+ 126, 127, 0, 128, 0, 0, 0, 129, 0, 0,
1364
+ 0, 130, 0, 0, 0, 0, -161, 0, 0, 0,
1365
+ 131, 0, -101, -101, -101, 0, 0, 0, 133, 134,
1366
+ 135, 0, 0, 0, 0, 0, 136, 0, 137, 138,
1367
+ 0, 0, 139, 0, 0, 0, 0, 0, 140, 0,
1368
+ 0, 141, 121, 122, 123, 124, 142, 143, 0, 0,
1369
+ 144, 0, 125, 0, -161, 0, 126, 127, 0, 128,
1370
+ 145, 0, 146, 129, 0, 147, 0, 130, 0, 0,
1371
+ 0, 0, -161, 0, 0, 0, 131, 0, -102, -102,
1372
+ -102, 0, 0, 0, 133, 134, 135, 0, 0, 0,
1373
+ 0, 0, 136, 0, 137, 138, 0, 0, 139, 0,
1374
+ 0, 0, 0, 0, 140, 0, 0, 141, 121, 122,
1375
+ 123, 124, 142, 143, 0, 0, 144, 0, 125, 0,
1376
+ -161, 0, 126, 127, 0, 128, 145, 0, 146, 129,
1377
+ 0, 147, 0, 130, 0, 0, 0, 0, -161, 0,
1378
+ 0, 0, 131, 0, 0, 0, -149, 0, 0, 132,
1379
+ 133, 134, 135, 0, 0, 0, 0, 0, 136, 0,
1380
+ 137, 138, 0, 0, 139, 0, 0, 0, 0, 0,
1381
+ 140, 0, 0, 141, 121, 122, 123, 124, 142, 143,
1382
+ 0, 0, 144, 0, 125, 0, -161, 0, 126, 127,
1383
+ 0, 128, 145, 0, 146, 129, 0, 147, 0, 130,
1384
+ 0, 0, 0, 0, -161, 0, 0, 0, 131, 0,
1385
+ 0, 0, 274, 0, 0, 0, 133, 134, 135, 0,
1386
+ 0, 0, 0, 0, 136, 0, 137, 138, 0, 0,
1387
+ 139, 0, 0, 0, 0, 0, 140, 0, 0, 141,
1388
+ 121, 122, 123, 124, 142, 143, 0, 0, 144, 0,
1389
+ 125, 0, -161, 0, 126, 127, 0, 128, 145, 0,
1390
+ 146, 129, 0, 147, 0, 130, 0, 0, 0, 0,
1391
+ -161, 0, 0, 0, 131, 0, 0, 0, -111, 0,
1392
+ 0, 0, 133, 134, 135, 0, 0, 0, 0, 0,
1393
+ 136, 0, 137, 138, 0, 0, 139, 0, 0, 0,
1394
+ 0, 0, 140, 0, 0, 141, 121, 122, 123, 124,
1395
+ 142, 143, 0, 0, 144, 0, 125, 0, -161, 0,
1396
+ 126, 127, 0, 128, 145, 0, 146, 129, 0, 147,
1397
+ 0, 130, 0, 0, 0, 0, -161, 0, 0, 0,
1398
+ 131, 0, 0, 0, -104, 0, 0, 0, 133, 134,
1399
+ 135, 0, 0, 0, 0, 0, 136, 0, 137, 138,
1400
+ 0, 0, 139, 0, 0, 0, 0, 0, 140, 0,
1401
+ 0, 141, 0, 0, 0, 0, 142, 143, 0, 0,
1402
+ 144, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1403
+ 145, 0, 146, 0, 0, 147
1409
1404
  };
1410
1405
 
1411
1406
  static const yytype_int16 yycheck[] =
1412
1407
  {
1413
- 4, 96, 15, 15, 100, 25, 237, 102, 204, 215,
1414
- 48, 242, 142, 22, 23, 24, 25, 58, 68, 69,
1415
- 115, 28, 62, 32, 276, 34, 34, 36, 37, 68,
1416
- 39, 95, 130, 83, 43, 133, 0, 44, 47, 38,
1417
- 53, 80, 49, 52, 52, 94, 133, 56, 34, 58,
1418
- 52, 60, 26, 102, 57, 64, 65, 66, 122, 135,
1419
- 136, 133, 192, 72, 136, 74, 75, 197, 30, 78,
1420
- 322, 22, 23, 24, 133, 84, 58, 59, 87, 128,
1421
- 118, 131, 89, 92, 93, 125, 126, 96, 294, 130,
1422
- 89, 22, 23, 24, 60, 68, 105, 328, 107, 133,
1423
- 196, 110, 298, 22, 23, 24, 26, 49, 115, 113,
1424
- 115, 26, 132, 130, 133, 210, 130, 133, 55, 123,
1425
- 133, 130, 133, 40, 137, 137, 38, 79, 76, 116,
1426
- 90, 60, 133, 133, 11, 76, 134, 83, 92, 37,
1427
- 31, 133, 60, 133, 74, 133, 22, 23, 24, 25,
1428
- 2, 322, 115, 248, 250, 251, 32, 301, 34, 282,
1429
- 36, 37, 289, 39, 216, 140, 146, 43, 223, 206,
1430
- 286, 47, 319, -1, -1, -1, 52, -1, -1, -1,
1431
- 56, 276, -1, -1, 60, -1, -1, -1, 64, 65,
1432
- 66, 287, -1, -1, -1, -1, 72, 293, 74, 75,
1408
+ 4, 97, 15, 15, 101, 25, 216, 103, 58, 205,
1409
+ 28, 48, 143, 22, 23, 24, 25, 238, 277, 38,
1410
+ 116, 0, 243, 32, 62, 34, 44, 36, 37, 68,
1411
+ 39, 49, 34, 94, 43, 134, 131, 34, 47, 134,
1412
+ 53, 80, 103, 52, 95, 68, 69, 56, 26, 58,
1413
+ 52, 60, 22, 23, 24, 64, 65, 66, 134, 52,
1414
+ 83, 137, 193, 72, 323, 74, 75, 198, 129, 78,
1415
+ 89, 89, 123, 58, 59, 84, 136, 137, 87, 30,
1416
+ 57, 131, 119, 92, 93, 295, 134, 96, 126, 127,
1417
+ 22, 23, 24, 22, 23, 24, 60, 106, 116, 108,
1418
+ 197, 134, 111, 299, 26, 68, 116, 49, 329, 132,
1419
+ 114, 26, 134, 133, 131, 211, 131, 55, 134, 40,
1420
+ 124, 134, 131, 134, 38, 138, 138, 79, 134, 76,
1421
+ 117, 134, 90, 60, 135, 76, 11, 83, 92, 37,
1422
+ 60, 31, 134, 74, 134, 134, 22, 23, 24, 25,
1423
+ 2, 116, 323, 249, 251, 252, 32, 302, 34, 283,
1424
+ 36, 37, 290, 39, 217, 207, 141, 43, 224, 287,
1425
+ 320, 47, -1, 147, -1, -1, 52, -1, -1, -1,
1426
+ 56, 277, -1, -1, 60, -1, -1, -1, 64, 65,
1427
+ 66, 288, -1, -1, -1, -1, 72, 294, 74, 75,
1433
1428
  -1, -1, 78, -1, -1, -1, -1, -1, 84, -1,
1434
- -1, 87, -1, -1, -1, -1, 92, 93, 222, -1,
1435
- 96, 317, -1, -1, -1, -1, -1, 322, -1, 105,
1436
- -1, 107, -1, -1, 110, -1, -1, -1, -1, -1,
1429
+ -1, 87, -1, -1, -1, -1, 92, 93, -1, 223,
1430
+ 96, 318, -1, -1, -1, -1, -1, 323, -1, -1,
1431
+ 106, -1, 108, -1, -1, 111, -1, -1, -1, -1,
1437
1432
  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1438
- -1, -1, -1, -1, 130, -1, -1, -1, -1, -1,
1439
- -1, -1, -1, -1, -1, -1, -1, 22, -1, -1,
1440
- 25, -1, 27, 28, -1, 30, 31, 32, 33, -1,
1441
- -1, 36, 286, 38, 39, 40, 41, 42, 43, 44,
1442
- 45, 46, 47, 48, 49, 50, 51, 52, 53, 54,
1433
+ -1, -1, -1, -1, -1, 131, -1, -1, -1, -1,
1434
+ -1, -1, -1, -1, -1, -1, -1, -1, 22, -1,
1435
+ -1, 25, -1, 27, 28, -1, 30, 31, 32, 33,
1436
+ -1, -1, 36, 287, 38, 39, 40, 41, 42, 43,
1437
+ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53,
1438
+ 54, 55, 56, 57, -1, 59, -1, 61, 62, 63,
1439
+ -1, 65, 66, 67, -1, -1, 70, -1, 72, 73,
1440
+ -1, 75, -1, 77, 78, -1, 80, 81, 82, -1,
1441
+ 84, 85, 86, 87, 88, 89, -1, 91, -1, 93,
1442
+ 94, -1, 96, 97, 98, 99, 100, 101, 102, 103,
1443
+ 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
1444
+ 114, 115, 116, 117, 118, 119, -1, 121, 122, -1,
1445
+ -1, 125, 126, 127, -1, 129, 130, 22, -1, 24,
1446
+ -1, -1, 27, 28, -1, 30, 31, 32, 33, -1,
1447
+ -1, 36, -1, 38, 39, 40, 41, 42, 43, 44,
1448
+ 45, 46, 47, 48, 49, 50, 51, -1, 53, 54,
1443
1449
  55, 56, 57, -1, 59, -1, 61, 62, 63, -1,
1444
1450
  65, 66, 67, -1, -1, 70, -1, 72, 73, -1,
1445
1451
  75, -1, 77, 78, -1, 80, 81, 82, -1, 84,
1446
1452
  85, 86, 87, 88, 89, -1, 91, -1, 93, 94,
1447
1453
  -1, 96, 97, 98, 99, 100, 101, 102, 103, 104,
1448
1454
  105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
1449
- 115, 116, 117, 118, -1, 120, 121, -1, -1, 124,
1450
- 125, 126, -1, 128, 129, 22, -1, 24, -1, -1,
1451
- 27, 28, -1, 30, 31, 32, 33, -1, -1, 36,
1452
- -1, 38, 39, 40, 41, 42, 43, 44, 45, 46,
1453
- 47, 48, 49, 50, 51, -1, 53, 54, 55, 56,
1454
- 57, -1, 59, -1, 61, 62, 63, -1, 65, 66,
1455
- 67, -1, -1, 70, -1, 72, 73, -1, 75, -1,
1456
- 77, 78, -1, 80, 81, 82, -1, 84, 85, 86,
1457
- 87, 88, 89, -1, 91, -1, 93, 94, -1, 96,
1458
- 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
1459
- 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
1460
- 117, 118, -1, 120, 121, -1, -1, 124, 125, 126,
1461
- -1, 128, 129, 22, 23, -1, -1, -1, 27, 28,
1462
- -1, 30, 31, 32, 33, -1, -1, 36, -1, 38,
1463
- 39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
1464
- 49, 50, 51, -1, 53, 54, 55, 56, 57, -1,
1465
- 59, -1, 61, 62, 63, -1, 65, 66, 67, -1,
1466
- -1, 70, -1, 72, 73, -1, 75, -1, 77, 78,
1467
- -1, 80, 81, 82, -1, 84, 85, 86, 87, 88,
1468
- 89, -1, 91, -1, 93, 94, -1, 96, 97, 98,
1469
- 99, 100, 101, 102, 103, 104, 105, 106, 107, 108,
1470
- 109, 110, 111, 112, 113, 114, 115, 116, 117, 118,
1471
- -1, 120, 121, -1, -1, 124, 125, 126, -1, 128,
1472
- 129, 22, 23, -1, -1, -1, 27, 28, -1, 30,
1473
- 31, 32, 33, -1, -1, 36, -1, 38, 39, 40,
1474
- 41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
1475
- 51, -1, 53, 54, 55, 56, 57, -1, 59, -1,
1476
- 61, 62, 63, -1, 65, 66, 67, -1, -1, 70,
1477
- -1, 72, 73, -1, 75, -1, 77, 78, -1, 80,
1478
- 81, 82, -1, 84, 85, 86, 87, 88, 89, -1,
1479
- 91, -1, 93, 94, -1, 96, 97, 98, 99, 100,
1480
- 101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
1481
- 111, 112, 113, 114, 115, 116, 117, 118, -1, 120,
1482
- 121, -1, -1, 124, 125, 126, 22, 128, 129, -1,
1455
+ 115, 116, 117, 118, 119, -1, 121, 122, -1, -1,
1456
+ 125, 126, 127, -1, 129, 130, 22, 23, -1, -1,
1483
1457
  -1, 27, 28, -1, 30, 31, 32, 33, -1, -1,
1484
1458
  36, -1, 38, 39, 40, 41, 42, 43, 44, 45,
1485
1459
  46, 47, 48, 49, 50, 51, -1, 53, 54, 55,
@@ -1489,8 +1463,19 @@ static const yytype_int16 yycheck[] =
1489
1463
  86, 87, 88, 89, -1, 91, -1, 93, 94, -1,
1490
1464
  96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
1491
1465
  106, 107, 108, 109, 110, 111, 112, 113, 114, 115,
1492
- 116, 117, 118, -1, 120, 121, -1, -1, 124, 125,
1493
- 126, 22, 128, 129, -1, -1, 27, 28, -1, 30,
1466
+ 116, 117, 118, 119, -1, 121, 122, -1, -1, 125,
1467
+ 126, 127, -1, 129, 130, 22, 23, -1, -1, -1,
1468
+ 27, 28, -1, 30, 31, 32, 33, -1, -1, 36,
1469
+ -1, 38, 39, 40, 41, 42, 43, 44, 45, 46,
1470
+ 47, 48, 49, 50, 51, -1, 53, 54, 55, 56,
1471
+ 57, -1, 59, -1, 61, 62, 63, -1, 65, 66,
1472
+ 67, -1, -1, 70, -1, 72, 73, -1, 75, -1,
1473
+ 77, 78, -1, 80, 81, 82, -1, 84, 85, 86,
1474
+ 87, 88, 89, -1, 91, -1, 93, 94, -1, 96,
1475
+ 97, 98, 99, 100, 101, 102, 103, 104, 105, 106,
1476
+ 107, 108, 109, 110, 111, 112, 113, 114, 115, 116,
1477
+ 117, 118, 119, -1, 121, 122, -1, -1, 125, 126,
1478
+ 127, 22, 129, 130, -1, -1, 27, 28, -1, 30,
1494
1479
  31, 32, 33, -1, -1, 36, -1, 38, 39, 40,
1495
1480
  41, 42, 43, 44, 45, 46, 47, 48, 49, 50,
1496
1481
  51, -1, 53, 54, 55, 56, 57, -1, 59, -1,
@@ -1499,63 +1484,68 @@ static const yytype_int16 yycheck[] =
1499
1484
  81, 82, -1, 84, 85, 86, 87, 88, 89, -1,
1500
1485
  91, -1, 93, 94, -1, 96, 97, 98, 99, 100,
1501
1486
  101, 102, 103, 104, 105, 106, 107, 108, 109, 110,
1502
- 111, 112, 113, 114, 115, 116, 117, 118, -1, 120,
1503
- 121, -1, -1, 124, 125, 126, -1, 128, 129, 22,
1504
- 23, 24, 25, -1, -1, -1, -1, -1, -1, 32,
1505
- -1, 34, -1, 36, 37, -1, 39, -1, -1, -1,
1506
- 43, -1, -1, -1, 47, -1, -1, -1, -1, 52,
1507
- -1, -1, -1, 56, -1, 58, 59, 60, -1, -1,
1508
- -1, 64, 65, 66, -1, -1, -1, -1, -1, 72,
1509
- -1, 74, 75, -1, -1, 78, -1, -1, -1, -1,
1510
- -1, 84, -1, -1, 87, -1, -1, -1, -1, 92,
1511
- 93, -1, -1, 96, -1, -1, 22, 23, 24, 25,
1512
- -1, -1, 105, -1, 107, -1, 32, 110, 34, -1,
1487
+ 111, 112, 113, 114, 115, 116, 117, 118, 119, -1,
1488
+ 121, 122, -1, -1, 125, 126, 127, 22, 129, 130,
1489
+ -1, -1, 27, 28, -1, 30, 31, 32, 33, -1,
1490
+ -1, 36, -1, 38, 39, 40, 41, 42, 43, 44,
1491
+ 45, 46, 47, 48, 49, 50, 51, -1, 53, 54,
1492
+ 55, 56, 57, -1, 59, -1, 61, 62, 63, -1,
1493
+ 65, 66, 67, -1, -1, 70, -1, 72, 73, -1,
1494
+ 75, -1, 77, 78, -1, 80, 81, 82, -1, 84,
1495
+ 85, 86, 87, 88, 89, -1, 91, -1, 93, 94,
1496
+ -1, 96, 97, 98, 99, 100, 101, 102, 103, 104,
1497
+ 105, 106, 107, 108, 109, 110, 111, 112, 113, 114,
1498
+ 115, 116, 117, 118, 119, -1, 121, 122, -1, -1,
1499
+ 125, 126, 127, -1, 129, 130, 22, 23, 24, 25,
1500
+ -1, -1, -1, -1, -1, -1, 32, -1, 34, -1,
1513
1501
  36, 37, -1, 39, -1, -1, -1, 43, -1, -1,
1514
1502
  -1, 47, -1, -1, -1, -1, 52, -1, -1, -1,
1515
1503
  56, -1, 58, 59, 60, -1, -1, -1, 64, 65,
1516
1504
  66, -1, -1, -1, -1, -1, 72, -1, 74, 75,
1517
1505
  -1, -1, 78, -1, -1, -1, -1, -1, 84, -1,
1518
- -1, 87, -1, -1, -1, -1, 92, 93, -1, -1,
1519
- 96, -1, -1, 22, 23, 24, 25, -1, -1, 105,
1520
- -1, 107, -1, 32, 110, 34, -1, 36, 37, -1,
1521
- 39, -1, -1, -1, 43, -1, -1, -1, 47, -1,
1522
- -1, -1, -1, 52, -1, -1, -1, 56, -1, -1,
1523
- -1, 60, -1, -1, 63, 64, 65, 66, -1, -1,
1524
- -1, -1, -1, 72, -1, 74, 75, -1, -1, 78,
1525
- -1, -1, -1, -1, -1, 84, -1, -1, 87, -1,
1526
- -1, -1, -1, 92, 93, -1, -1, 96, -1, -1,
1527
- 22, 23, 24, 25, -1, -1, 105, -1, 107, -1,
1528
- 32, 110, 34, -1, 36, 37, -1, 39, -1, -1,
1529
- -1, 43, -1, -1, -1, 47, -1, -1, -1, -1,
1530
- 52, -1, -1, -1, 56, -1, -1, -1, 60, -1,
1531
- -1, -1, 64, 65, 66, -1, -1, -1, -1, -1,
1532
- 72, -1, 74, 75, -1, -1, 78, -1, -1, -1,
1533
- -1, -1, 84, -1, -1, 87, -1, -1, -1, -1,
1534
- 92, 93, -1, -1, 96, -1, -1, 22, 23, 24,
1535
- 25, -1, -1, 105, -1, 107, -1, 32, 110, 34,
1536
- -1, 36, 37, -1, 39, -1, -1, -1, 43, -1,
1537
- -1, -1, 47, -1, -1, -1, -1, 52, -1, -1,
1538
- -1, 56, -1, -1, -1, 60, -1, -1, -1, 64,
1539
- 65, 66, -1, -1, -1, -1, -1, 72, -1, 74,
1540
- 75, -1, -1, 78, -1, -1, -1, -1, -1, 84,
1541
- -1, -1, 87, -1, -1, -1, -1, 92, 93, -1,
1542
- -1, 96, -1, -1, 22, 23, 24, 25, -1, -1,
1543
- 105, -1, 107, -1, 32, 110, 34, -1, 36, 37,
1544
- -1, 39, -1, -1, -1, 43, -1, -1, -1, 47,
1506
+ -1, 87, 22, 23, 24, 25, 92, 93, -1, -1,
1507
+ 96, -1, 32, -1, 34, -1, 36, 37, -1, 39,
1508
+ 106, -1, 108, 43, -1, 111, -1, 47, -1, -1,
1509
+ -1, -1, 52, -1, -1, -1, 56, -1, 58, 59,
1510
+ 60, -1, -1, -1, 64, 65, 66, -1, -1, -1,
1511
+ -1, -1, 72, -1, 74, 75, -1, -1, 78, -1,
1512
+ -1, -1, -1, -1, 84, -1, -1, 87, 22, 23,
1513
+ 24, 25, 92, 93, -1, -1, 96, -1, 32, -1,
1514
+ 34, -1, 36, 37, -1, 39, 106, -1, 108, 43,
1515
+ -1, 111, -1, 47, -1, -1, -1, -1, 52, -1,
1516
+ -1, -1, 56, -1, -1, -1, 60, -1, -1, 63,
1517
+ 64, 65, 66, -1, -1, -1, -1, -1, 72, -1,
1518
+ 74, 75, -1, -1, 78, -1, -1, -1, -1, -1,
1519
+ 84, -1, -1, 87, 22, 23, 24, 25, 92, 93,
1520
+ -1, -1, 96, -1, 32, -1, 34, -1, 36, 37,
1521
+ -1, 39, 106, -1, 108, 43, -1, 111, -1, 47,
1545
1522
  -1, -1, -1, -1, 52, -1, -1, -1, 56, -1,
1546
1523
  -1, -1, 60, -1, -1, -1, 64, 65, 66, -1,
1547
1524
  -1, -1, -1, -1, 72, -1, 74, 75, -1, -1,
1548
1525
  78, -1, -1, -1, -1, -1, 84, -1, -1, 87,
1549
- -1, -1, -1, -1, 92, 93, -1, -1, 96, -1,
1550
- -1, -1, -1, -1, -1, -1, -1, 105, -1, 107,
1551
- -1, -1, 110
1526
+ 22, 23, 24, 25, 92, 93, -1, -1, 96, -1,
1527
+ 32, -1, 34, -1, 36, 37, -1, 39, 106, -1,
1528
+ 108, 43, -1, 111, -1, 47, -1, -1, -1, -1,
1529
+ 52, -1, -1, -1, 56, -1, -1, -1, 60, -1,
1530
+ -1, -1, 64, 65, 66, -1, -1, -1, -1, -1,
1531
+ 72, -1, 74, 75, -1, -1, 78, -1, -1, -1,
1532
+ -1, -1, 84, -1, -1, 87, 22, 23, 24, 25,
1533
+ 92, 93, -1, -1, 96, -1, 32, -1, 34, -1,
1534
+ 36, 37, -1, 39, 106, -1, 108, 43, -1, 111,
1535
+ -1, 47, -1, -1, -1, -1, 52, -1, -1, -1,
1536
+ 56, -1, -1, -1, 60, -1, -1, -1, 64, 65,
1537
+ 66, -1, -1, -1, -1, -1, 72, -1, 74, 75,
1538
+ -1, -1, 78, -1, -1, -1, -1, -1, 84, -1,
1539
+ -1, 87, -1, -1, -1, -1, 92, 93, -1, -1,
1540
+ 96, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1541
+ 106, -1, 108, -1, -1, 111
1552
1542
  };
1553
1543
 
1554
1544
  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
1555
1545
  symbol of state STATE-NUM. */
1556
1546
  static const yytype_uint8 yystos[] =
1557
1547
  {
1558
- 0, 139, 140, 0, 25, 132, 141, 144, 145, 219,
1548
+ 0, 140, 141, 0, 25, 133, 142, 145, 146, 220,
1559
1549
  22, 24, 27, 28, 30, 31, 32, 33, 36, 38,
1560
1550
  39, 40, 41, 42, 43, 44, 45, 46, 47, 48,
1561
1551
  49, 50, 51, 53, 54, 55, 56, 57, 59, 61,
@@ -1563,32 +1553,32 @@ static const yytype_uint8 yystos[] =
1563
1553
  78, 80, 81, 82, 84, 85, 86, 87, 88, 89,
1564
1554
  91, 93, 94, 96, 97, 98, 99, 100, 101, 102,
1565
1555
  103, 104, 105, 106, 107, 108, 109, 110, 111, 112,
1566
- 113, 114, 115, 116, 117, 118, 120, 121, 124, 125,
1567
- 126, 128, 129, 223, 224, 94, 102, 128, 133, 143,
1568
- 34, 52, 146, 26, 57, 22, 142, 224, 62, 125,
1569
- 126, 166, 22, 25, 52, 147, 148, 149, 158, 224,
1570
- 22, 23, 24, 25, 32, 36, 37, 39, 43, 47,
1571
- 56, 63, 64, 65, 66, 72, 74, 75, 78, 84,
1572
- 87, 92, 93, 96, 105, 107, 110, 144, 167, 168,
1573
- 169, 170, 171, 177, 180, 185, 186, 187, 190, 192,
1574
- 193, 194, 195, 196, 198, 199, 200, 201, 202, 204,
1575
- 205, 206, 207, 210, 220, 223, 148, 28, 44, 89,
1576
- 115, 151, 159, 223, 181, 22, 23, 24, 209, 30,
1577
- 208, 211, 203, 48, 118, 172, 217, 203, 133, 209,
1578
- 208, 133, 221, 223, 60, 68, 69, 83, 131, 26,
1579
- 68, 115, 49, 160, 26, 130, 182, 183, 133, 38,
1580
- 89, 133, 130, 212, 213, 209, 55, 166, 209, 133,
1581
- 130, 133, 222, 221, 22, 23, 24, 188, 189, 189,
1582
- 166, 197, 218, 22, 23, 157, 224, 150, 40, 161,
1583
- 217, 58, 183, 184, 38, 214, 215, 223, 213, 79,
1584
- 22, 23, 24, 173, 174, 176, 178, 133, 216, 197,
1585
- 76, 116, 191, 60, 197, 133, 134, 153, 22, 23,
1586
- 224, 90, 162, 166, 166, 60, 95, 122, 133, 136,
1587
- 15, 137, 165, 58, 59, 179, 11, 76, 83, 154,
1588
- 155, 158, 68, 80, 156, 92, 53, 133, 163, 164,
1589
- 165, 37, 215, 166, 174, 175, 166, 217, 60, 31,
1590
- 221, 135, 136, 160, 152, 133, 166, 74, 218, 133,
1591
- 155, 133, 197
1556
+ 113, 114, 115, 116, 117, 118, 119, 121, 122, 125,
1557
+ 126, 127, 129, 130, 224, 225, 94, 103, 129, 134,
1558
+ 144, 34, 52, 147, 26, 57, 22, 143, 225, 62,
1559
+ 126, 127, 167, 22, 25, 52, 148, 149, 150, 159,
1560
+ 225, 22, 23, 24, 25, 32, 36, 37, 39, 43,
1561
+ 47, 56, 63, 64, 65, 66, 72, 74, 75, 78,
1562
+ 84, 87, 92, 93, 96, 106, 108, 111, 145, 168,
1563
+ 169, 170, 171, 172, 178, 181, 186, 187, 188, 191,
1564
+ 193, 194, 195, 196, 197, 199, 200, 201, 202, 203,
1565
+ 205, 206, 207, 208, 211, 221, 224, 149, 28, 44,
1566
+ 89, 116, 152, 160, 224, 182, 22, 23, 24, 210,
1567
+ 30, 209, 212, 204, 48, 119, 173, 218, 204, 134,
1568
+ 210, 209, 134, 222, 224, 60, 68, 69, 83, 132,
1569
+ 26, 68, 116, 49, 161, 26, 131, 183, 184, 134,
1570
+ 38, 89, 134, 131, 213, 214, 210, 55, 167, 210,
1571
+ 134, 131, 134, 223, 222, 22, 23, 24, 189, 190,
1572
+ 190, 167, 198, 219, 22, 23, 158, 225, 151, 40,
1573
+ 162, 218, 58, 184, 185, 38, 215, 216, 224, 214,
1574
+ 79, 22, 23, 24, 174, 175, 177, 179, 134, 217,
1575
+ 198, 76, 117, 192, 60, 198, 134, 135, 154, 22,
1576
+ 23, 225, 90, 163, 167, 167, 60, 95, 123, 134,
1577
+ 137, 15, 138, 166, 58, 59, 180, 11, 76, 83,
1578
+ 155, 156, 159, 68, 80, 157, 92, 53, 134, 164,
1579
+ 165, 166, 37, 216, 167, 175, 176, 167, 218, 60,
1580
+ 31, 222, 136, 137, 161, 153, 134, 167, 74, 219,
1581
+ 134, 156, 134, 198
1592
1582
  };
1593
1583
 
1594
1584
  #define yyerrok (yyerrstatus = 0)
@@ -2429,21 +2419,21 @@ yyreduce:
2429
2419
  switch (yyn)
2430
2420
  {
2431
2421
  case 2:
2432
- #line 363 "pl_gram.y"
2422
+ #line 361 "pl_gram.y"
2433
2423
  {
2434
2424
  plpgsql_parse_result = (PLpgSQL_stmt_block *) (yyvsp[(2) - (3)].stmt);
2435
2425
  ;}
2436
2426
  break;
2437
2427
 
2438
2428
  case 5:
2439
- #line 373 "pl_gram.y"
2429
+ #line 371 "pl_gram.y"
2440
2430
  {
2441
2431
  plpgsql_DumpExecTree = true;
2442
2432
  ;}
2443
2433
  break;
2444
2434
 
2445
2435
  case 6:
2446
- #line 377 "pl_gram.y"
2436
+ #line 375 "pl_gram.y"
2447
2437
  {
2448
2438
  if (strcmp((yyvsp[(3) - (3)].str), "on") == 0)
2449
2439
  plpgsql_curr_compile->print_strict_params = true;
@@ -2455,42 +2445,42 @@ yyreduce:
2455
2445
  break;
2456
2446
 
2457
2447
  case 7:
2458
- #line 386 "pl_gram.y"
2448
+ #line 384 "pl_gram.y"
2459
2449
  {
2460
2450
  plpgsql_curr_compile->resolve_option = PLPGSQL_RESOLVE_ERROR;
2461
2451
  ;}
2462
2452
  break;
2463
2453
 
2464
2454
  case 8:
2465
- #line 390 "pl_gram.y"
2455
+ #line 388 "pl_gram.y"
2466
2456
  {
2467
2457
  plpgsql_curr_compile->resolve_option = PLPGSQL_RESOLVE_VARIABLE;
2468
2458
  ;}
2469
2459
  break;
2470
2460
 
2471
2461
  case 9:
2472
- #line 394 "pl_gram.y"
2462
+ #line 392 "pl_gram.y"
2473
2463
  {
2474
2464
  plpgsql_curr_compile->resolve_option = PLPGSQL_RESOLVE_COLUMN;
2475
2465
  ;}
2476
2466
  break;
2477
2467
 
2478
2468
  case 10:
2479
- #line 400 "pl_gram.y"
2469
+ #line 398 "pl_gram.y"
2480
2470
  {
2481
2471
  (yyval.str) = (yyvsp[(1) - (1)].word).ident;
2482
2472
  ;}
2483
2473
  break;
2484
2474
 
2485
2475
  case 11:
2486
- #line 404 "pl_gram.y"
2476
+ #line 402 "pl_gram.y"
2487
2477
  {
2488
2478
  (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword));
2489
2479
  ;}
2490
2480
  break;
2491
2481
 
2492
2482
  case 14:
2493
- #line 413 "pl_gram.y"
2483
+ #line 411 "pl_gram.y"
2494
2484
  {
2495
2485
  PLpgSQL_stmt_block *new;
2496
2486
 
@@ -2513,7 +2503,7 @@ yyreduce:
2513
2503
  break;
2514
2504
 
2515
2505
  case 15:
2516
- #line 436 "pl_gram.y"
2506
+ #line 434 "pl_gram.y"
2517
2507
  {
2518
2508
  /* done with decls, so resume identifier lookup */
2519
2509
  plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_NORMAL;
@@ -2524,7 +2514,7 @@ yyreduce:
2524
2514
  break;
2525
2515
 
2526
2516
  case 16:
2527
- #line 444 "pl_gram.y"
2517
+ #line 442 "pl_gram.y"
2528
2518
  {
2529
2519
  plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_NORMAL;
2530
2520
  (yyval.declhdr).label = (yyvsp[(1) - (2)].str);
@@ -2534,7 +2524,7 @@ yyreduce:
2534
2524
  break;
2535
2525
 
2536
2526
  case 17:
2537
- #line 451 "pl_gram.y"
2527
+ #line 449 "pl_gram.y"
2538
2528
  {
2539
2529
  plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_NORMAL;
2540
2530
  (yyval.declhdr).label = (yyvsp[(1) - (3)].str);
@@ -2544,7 +2534,7 @@ yyreduce:
2544
2534
  break;
2545
2535
 
2546
2536
  case 18:
2547
- #line 460 "pl_gram.y"
2537
+ #line 458 "pl_gram.y"
2548
2538
  {
2549
2539
  /* Forget any variables created before block */
2550
2540
  plpgsql_add_initdatums(NULL);
@@ -2557,14 +2547,14 @@ yyreduce:
2557
2547
  break;
2558
2548
 
2559
2549
  case 22:
2560
- #line 477 "pl_gram.y"
2550
+ #line 475 "pl_gram.y"
2561
2551
  {
2562
2552
  /* We allow useless extra DECLAREs */
2563
2553
  ;}
2564
2554
  break;
2565
2555
 
2566
2556
  case 23:
2567
- #line 481 "pl_gram.y"
2557
+ #line 479 "pl_gram.y"
2568
2558
  {
2569
2559
  /*
2570
2560
  * Throw a helpful error if user tries to put block
@@ -2578,7 +2568,7 @@ yyreduce:
2578
2568
  break;
2579
2569
 
2580
2570
  case 24:
2581
- #line 494 "pl_gram.y"
2571
+ #line 492 "pl_gram.y"
2582
2572
  {
2583
2573
  PLpgSQL_variable *var;
2584
2574
 
@@ -2619,7 +2609,7 @@ yyreduce:
2619
2609
  break;
2620
2610
 
2621
2611
  case 25:
2622
- #line 532 "pl_gram.y"
2612
+ #line 530 "pl_gram.y"
2623
2613
  {
2624
2614
  plpgsql_ns_additem((yyvsp[(4) - (5)].nsitem)->itemtype,
2625
2615
  (yyvsp[(4) - (5)].nsitem)->itemno, (yyvsp[(1) - (5)].varname).name);
@@ -2627,18 +2617,14 @@ yyreduce:
2627
2617
  break;
2628
2618
 
2629
2619
  case 26:
2630
- #line 537 "pl_gram.y"
2620
+ #line 535 "pl_gram.y"
2631
2621
  { plpgsql_ns_push((yyvsp[(1) - (3)].varname).name, PLPGSQL_LABEL_OTHER); ;}
2632
2622
  break;
2633
2623
 
2634
2624
  case 27:
2635
- #line 539 "pl_gram.y"
2625
+ #line 537 "pl_gram.y"
2636
2626
  {
2637
2627
  PLpgSQL_var *new;
2638
- PLpgSQL_expr *curname_def;
2639
- char buf[NAMEDATALEN * 2 + 64];
2640
- char *cp1;
2641
- char *cp2;
2642
2628
 
2643
2629
  /* pop local namespace for cursor args */
2644
2630
  plpgsql_ns_pop();
@@ -2651,29 +2637,6 @@ yyreduce:
2651
2637
  NULL),
2652
2638
  true);
2653
2639
 
2654
- curname_def = palloc0(sizeof(PLpgSQL_expr));
2655
-
2656
- /* Note: refname has been truncated to NAMEDATALEN */
2657
- cp1 = new->refname;
2658
- cp2 = buf;
2659
- /*
2660
- * Don't trust standard_conforming_strings here;
2661
- * it might change before we use the string.
2662
- */
2663
- if (strchr(cp1, '\\') != NULL)
2664
- *cp2++ = ESCAPE_STRING_SYNTAX;
2665
- *cp2++ = '\'';
2666
- while (*cp1)
2667
- {
2668
- if (SQL_STR_DOUBLE(*cp1, true))
2669
- *cp2++ = *cp1;
2670
- *cp2++ = *cp1++;
2671
- }
2672
- strcpy(cp2, "'::pg_catalog.refcursor");
2673
- curname_def->query = pstrdup(buf);
2674
- curname_def->parseMode = RAW_PARSE_PLPGSQL_EXPR;
2675
- new->default_val = curname_def;
2676
-
2677
2640
  new->cursor_explicit_expr = (yyvsp[(7) - (7)].expr);
2678
2641
  if ((yyvsp[(5) - (7)].datum) == NULL)
2679
2642
  new->cursor_explicit_argrow = -1;
@@ -2684,42 +2647,42 @@ yyreduce:
2684
2647
  break;
2685
2648
 
2686
2649
  case 28:
2687
- #line 590 "pl_gram.y"
2650
+ #line 561 "pl_gram.y"
2688
2651
  {
2689
2652
  (yyval.ival) = 0;
2690
2653
  ;}
2691
2654
  break;
2692
2655
 
2693
2656
  case 29:
2694
- #line 594 "pl_gram.y"
2657
+ #line 565 "pl_gram.y"
2695
2658
  {
2696
2659
  (yyval.ival) = CURSOR_OPT_NO_SCROLL;
2697
2660
  ;}
2698
2661
  break;
2699
2662
 
2700
2663
  case 30:
2701
- #line 598 "pl_gram.y"
2664
+ #line 569 "pl_gram.y"
2702
2665
  {
2703
2666
  (yyval.ival) = CURSOR_OPT_SCROLL;
2704
2667
  ;}
2705
2668
  break;
2706
2669
 
2707
2670
  case 31:
2708
- #line 604 "pl_gram.y"
2671
+ #line 575 "pl_gram.y"
2709
2672
  {
2710
2673
  (yyval.expr) = read_sql_stmt();
2711
2674
  ;}
2712
2675
  break;
2713
2676
 
2714
2677
  case 32:
2715
- #line 610 "pl_gram.y"
2678
+ #line 581 "pl_gram.y"
2716
2679
  {
2717
2680
  (yyval.datum) = NULL;
2718
2681
  ;}
2719
2682
  break;
2720
2683
 
2721
2684
  case 33:
2722
- #line 614 "pl_gram.y"
2685
+ #line 585 "pl_gram.y"
2723
2686
  {
2724
2687
  PLpgSQL_row *new;
2725
2688
  int i;
@@ -2751,21 +2714,21 @@ yyreduce:
2751
2714
  break;
2752
2715
 
2753
2716
  case 34:
2754
- #line 645 "pl_gram.y"
2717
+ #line 616 "pl_gram.y"
2755
2718
  {
2756
2719
  (yyval.list) = list_make1((yyvsp[(1) - (1)].datum));
2757
2720
  ;}
2758
2721
  break;
2759
2722
 
2760
2723
  case 35:
2761
- #line 649 "pl_gram.y"
2724
+ #line 620 "pl_gram.y"
2762
2725
  {
2763
2726
  (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].datum));
2764
2727
  ;}
2765
2728
  break;
2766
2729
 
2767
2730
  case 36:
2768
- #line 655 "pl_gram.y"
2731
+ #line 626 "pl_gram.y"
2769
2732
  {
2770
2733
  (yyval.datum) = (PLpgSQL_datum *)
2771
2734
  plpgsql_build_variable((yyvsp[(1) - (2)].varname).name, (yyvsp[(1) - (2)].varname).lineno,
@@ -2774,7 +2737,7 @@ yyreduce:
2774
2737
  break;
2775
2738
 
2776
2739
  case 39:
2777
- #line 666 "pl_gram.y"
2740
+ #line 637 "pl_gram.y"
2778
2741
  {
2779
2742
  PLpgSQL_nsitem *nsi;
2780
2743
 
@@ -2792,7 +2755,7 @@ yyreduce:
2792
2755
  break;
2793
2756
 
2794
2757
  case 40:
2795
- #line 681 "pl_gram.y"
2758
+ #line 652 "pl_gram.y"
2796
2759
  {
2797
2760
  PLpgSQL_nsitem *nsi;
2798
2761
 
@@ -2810,7 +2773,7 @@ yyreduce:
2810
2773
  break;
2811
2774
 
2812
2775
  case 41:
2813
- #line 696 "pl_gram.y"
2776
+ #line 667 "pl_gram.y"
2814
2777
  {
2815
2778
  PLpgSQL_nsitem *nsi;
2816
2779
 
@@ -2839,7 +2802,7 @@ yyreduce:
2839
2802
  break;
2840
2803
 
2841
2804
  case 42:
2842
- #line 724 "pl_gram.y"
2805
+ #line 695 "pl_gram.y"
2843
2806
  {
2844
2807
  (yyval.varname).name = (yyvsp[(1) - (1)].word).ident;
2845
2808
  (yyval.varname).lineno = plpgsql_location_to_lineno((yylsp[(1) - (1)]));
@@ -2870,7 +2833,7 @@ yyreduce:
2870
2833
  break;
2871
2834
 
2872
2835
  case 43:
2873
- #line 752 "pl_gram.y"
2836
+ #line 723 "pl_gram.y"
2874
2837
  {
2875
2838
  (yyval.varname).name = pstrdup((yyvsp[(1) - (1)].keyword));
2876
2839
  (yyval.varname).lineno = plpgsql_location_to_lineno((yylsp[(1) - (1)]));
@@ -2901,21 +2864,22 @@ yyreduce:
2901
2864
  break;
2902
2865
 
2903
2866
  case 44:
2904
- #line 782 "pl_gram.y"
2867
+ #line 753 "pl_gram.y"
2905
2868
  { (yyval.boolean) = false; ;}
2906
2869
  break;
2907
2870
 
2908
2871
  case 45:
2909
- #line 784 "pl_gram.y"
2872
+ #line 755 "pl_gram.y"
2910
2873
  { (yyval.boolean) = true; ;}
2911
2874
  break;
2912
2875
 
2913
2876
  case 46:
2914
- #line 788 "pl_gram.y"
2877
+ #line 759 "pl_gram.y"
2915
2878
  {
2916
2879
  /*
2917
- * If there's a lookahead token, read_datatype
2918
- * 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.
2919
2883
  */
2920
2884
  (yyval.dtype) = read_datatype(yychar);
2921
2885
  yyclearin;
@@ -2923,12 +2887,12 @@ yyreduce:
2923
2887
  break;
2924
2888
 
2925
2889
  case 47:
2926
- #line 799 "pl_gram.y"
2890
+ #line 771 "pl_gram.y"
2927
2891
  { (yyval.oid) = InvalidOid; ;}
2928
2892
  break;
2929
2893
 
2930
2894
  case 48:
2931
- #line 801 "pl_gram.y"
2895
+ #line 773 "pl_gram.y"
2932
2896
  {
2933
2897
  (yyval.oid) = get_collation_oid(list_make1(makeString((yyvsp[(2) - (2)].word).ident)),
2934
2898
  false);
@@ -2936,7 +2900,7 @@ yyreduce:
2936
2900
  break;
2937
2901
 
2938
2902
  case 49:
2939
- #line 806 "pl_gram.y"
2903
+ #line 778 "pl_gram.y"
2940
2904
  {
2941
2905
  (yyval.oid) = get_collation_oid(list_make1(makeString(pstrdup((yyvsp[(2) - (2)].keyword)))),
2942
2906
  false);
@@ -2944,41 +2908,41 @@ yyreduce:
2944
2908
  break;
2945
2909
 
2946
2910
  case 50:
2947
- #line 811 "pl_gram.y"
2911
+ #line 783 "pl_gram.y"
2948
2912
  {
2949
2913
  (yyval.oid) = get_collation_oid((yyvsp[(2) - (2)].cword).idents, false);
2950
2914
  ;}
2951
2915
  break;
2952
2916
 
2953
2917
  case 51:
2954
- #line 817 "pl_gram.y"
2918
+ #line 789 "pl_gram.y"
2955
2919
  { (yyval.boolean) = false; ;}
2956
2920
  break;
2957
2921
 
2958
2922
  case 52:
2959
- #line 819 "pl_gram.y"
2923
+ #line 791 "pl_gram.y"
2960
2924
  { (yyval.boolean) = true; ;}
2961
2925
  break;
2962
2926
 
2963
2927
  case 53:
2964
- #line 823 "pl_gram.y"
2928
+ #line 795 "pl_gram.y"
2965
2929
  { (yyval.expr) = NULL; ;}
2966
2930
  break;
2967
2931
 
2968
2932
  case 54:
2969
- #line 825 "pl_gram.y"
2933
+ #line 797 "pl_gram.y"
2970
2934
  {
2971
2935
  (yyval.expr) = read_sql_expression(';', ";");
2972
2936
  ;}
2973
2937
  break;
2974
2938
 
2975
2939
  case 59:
2976
- #line 844 "pl_gram.y"
2940
+ #line 816 "pl_gram.y"
2977
2941
  { (yyval.list) = NIL; ;}
2978
2942
  break;
2979
2943
 
2980
2944
  case 60:
2981
- #line 846 "pl_gram.y"
2945
+ #line 818 "pl_gram.y"
2982
2946
  {
2983
2947
  /* don't bother linking null statements into list */
2984
2948
  if ((yyvsp[(2) - (2)].stmt) == NULL)
@@ -2989,127 +2953,127 @@ yyreduce:
2989
2953
  break;
2990
2954
 
2991
2955
  case 61:
2992
- #line 856 "pl_gram.y"
2956
+ #line 828 "pl_gram.y"
2993
2957
  { (yyval.stmt) = (yyvsp[(1) - (2)].stmt); ;}
2994
2958
  break;
2995
2959
 
2996
2960
  case 62:
2997
- #line 858 "pl_gram.y"
2961
+ #line 830 "pl_gram.y"
2998
2962
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
2999
2963
  break;
3000
2964
 
3001
2965
  case 63:
3002
- #line 860 "pl_gram.y"
2966
+ #line 832 "pl_gram.y"
3003
2967
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3004
2968
  break;
3005
2969
 
3006
2970
  case 64:
3007
- #line 862 "pl_gram.y"
2971
+ #line 834 "pl_gram.y"
3008
2972
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3009
2973
  break;
3010
2974
 
3011
2975
  case 65:
3012
- #line 864 "pl_gram.y"
2976
+ #line 836 "pl_gram.y"
3013
2977
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3014
2978
  break;
3015
2979
 
3016
2980
  case 66:
3017
- #line 866 "pl_gram.y"
2981
+ #line 838 "pl_gram.y"
3018
2982
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3019
2983
  break;
3020
2984
 
3021
2985
  case 67:
3022
- #line 868 "pl_gram.y"
2986
+ #line 840 "pl_gram.y"
3023
2987
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3024
2988
  break;
3025
2989
 
3026
2990
  case 68:
3027
- #line 870 "pl_gram.y"
2991
+ #line 842 "pl_gram.y"
3028
2992
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3029
2993
  break;
3030
2994
 
3031
2995
  case 69:
3032
- #line 872 "pl_gram.y"
2996
+ #line 844 "pl_gram.y"
3033
2997
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3034
2998
  break;
3035
2999
 
3036
3000
  case 70:
3037
- #line 874 "pl_gram.y"
3001
+ #line 846 "pl_gram.y"
3038
3002
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3039
3003
  break;
3040
3004
 
3041
3005
  case 71:
3042
- #line 876 "pl_gram.y"
3006
+ #line 848 "pl_gram.y"
3043
3007
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3044
3008
  break;
3045
3009
 
3046
3010
  case 72:
3047
- #line 878 "pl_gram.y"
3011
+ #line 850 "pl_gram.y"
3048
3012
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3049
3013
  break;
3050
3014
 
3051
3015
  case 73:
3052
- #line 880 "pl_gram.y"
3016
+ #line 852 "pl_gram.y"
3053
3017
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3054
3018
  break;
3055
3019
 
3056
3020
  case 74:
3057
- #line 882 "pl_gram.y"
3021
+ #line 854 "pl_gram.y"
3058
3022
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3059
3023
  break;
3060
3024
 
3061
3025
  case 75:
3062
- #line 884 "pl_gram.y"
3026
+ #line 856 "pl_gram.y"
3063
3027
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3064
3028
  break;
3065
3029
 
3066
3030
  case 76:
3067
- #line 886 "pl_gram.y"
3031
+ #line 858 "pl_gram.y"
3068
3032
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3069
3033
  break;
3070
3034
 
3071
3035
  case 77:
3072
- #line 888 "pl_gram.y"
3036
+ #line 860 "pl_gram.y"
3073
3037
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3074
3038
  break;
3075
3039
 
3076
3040
  case 78:
3077
- #line 890 "pl_gram.y"
3041
+ #line 862 "pl_gram.y"
3078
3042
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3079
3043
  break;
3080
3044
 
3081
3045
  case 79:
3082
- #line 892 "pl_gram.y"
3046
+ #line 864 "pl_gram.y"
3083
3047
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3084
3048
  break;
3085
3049
 
3086
3050
  case 80:
3087
- #line 894 "pl_gram.y"
3051
+ #line 866 "pl_gram.y"
3088
3052
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3089
3053
  break;
3090
3054
 
3091
3055
  case 81:
3092
- #line 896 "pl_gram.y"
3056
+ #line 868 "pl_gram.y"
3093
3057
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3094
3058
  break;
3095
3059
 
3096
3060
  case 82:
3097
- #line 898 "pl_gram.y"
3061
+ #line 870 "pl_gram.y"
3098
3062
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3099
3063
  break;
3100
3064
 
3101
3065
  case 83:
3102
- #line 900 "pl_gram.y"
3066
+ #line 872 "pl_gram.y"
3103
3067
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3104
3068
  break;
3105
3069
 
3106
3070
  case 84:
3107
- #line 902 "pl_gram.y"
3071
+ #line 874 "pl_gram.y"
3108
3072
  { (yyval.stmt) = (yyvsp[(1) - (1)].stmt); ;}
3109
3073
  break;
3110
3074
 
3111
3075
  case 85:
3112
- #line 906 "pl_gram.y"
3076
+ #line 878 "pl_gram.y"
3113
3077
  {
3114
3078
  PLpgSQL_stmt_perform *new;
3115
3079
  int startloc;
@@ -3130,7 +3094,7 @@ yyreduce:
3130
3094
  */
3131
3095
  new->expr = read_sql_construct(';', 0, 0, ";",
3132
3096
  RAW_PARSE_DEFAULT,
3133
- false, false, true,
3097
+ false, false,
3134
3098
  &startloc, NULL);
3135
3099
  /* overwrite "perform" ... */
3136
3100
  memcpy(new->expr->query, " SELECT", 7);
@@ -3146,7 +3110,7 @@ yyreduce:
3146
3110
  break;
3147
3111
 
3148
3112
  case 86:
3149
- #line 942 "pl_gram.y"
3113
+ #line 914 "pl_gram.y"
3150
3114
  {
3151
3115
  PLpgSQL_stmt_call *new;
3152
3116
 
@@ -3167,7 +3131,7 @@ yyreduce:
3167
3131
  break;
3168
3132
 
3169
3133
  case 87:
3170
- #line 960 "pl_gram.y"
3134
+ #line 932 "pl_gram.y"
3171
3135
  {
3172
3136
  /* use the same structures as for CALL, for simplicity */
3173
3137
  PLpgSQL_stmt_call *new;
@@ -3189,7 +3153,7 @@ yyreduce:
3189
3153
  break;
3190
3154
 
3191
3155
  case 88:
3192
- #line 981 "pl_gram.y"
3156
+ #line 953 "pl_gram.y"
3193
3157
  {
3194
3158
  PLpgSQL_stmt_assign *new;
3195
3159
  RawParseMode pmode;
@@ -3221,7 +3185,7 @@ yyreduce:
3221
3185
  plpgsql_push_back_token(T_DATUM);
3222
3186
  new->expr = read_sql_construct(';', 0, 0, ";",
3223
3187
  pmode,
3224
- false, true, true,
3188
+ false, true,
3225
3189
  NULL, NULL);
3226
3190
 
3227
3191
  (yyval.stmt) = (PLpgSQL_stmt *) new;
@@ -3229,7 +3193,7 @@ yyreduce:
3229
3193
  break;
3230
3194
 
3231
3195
  case 89:
3232
- #line 1020 "pl_gram.y"
3196
+ #line 992 "pl_gram.y"
3233
3197
  {
3234
3198
  PLpgSQL_stmt_getdiag *new;
3235
3199
  ListCell *lc;
@@ -3252,6 +3216,7 @@ yyreduce:
3252
3216
  {
3253
3217
  /* these fields are disallowed in stacked case */
3254
3218
  case PLPGSQL_GETDIAG_ROW_COUNT:
3219
+ case PLPGSQL_GETDIAG_ROUTINE_OID:
3255
3220
  if (new->is_stacked)
3256
3221
  ereport(ERROR,
3257
3222
  (errcode(ERRCODE_SYNTAX_ERROR),
@@ -3292,42 +3257,42 @@ yyreduce:
3292
3257
  break;
3293
3258
 
3294
3259
  case 90:
3295
- #line 1082 "pl_gram.y"
3260
+ #line 1055 "pl_gram.y"
3296
3261
  {
3297
3262
  (yyval.boolean) = false;
3298
3263
  ;}
3299
3264
  break;
3300
3265
 
3301
3266
  case 91:
3302
- #line 1086 "pl_gram.y"
3267
+ #line 1059 "pl_gram.y"
3303
3268
  {
3304
3269
  (yyval.boolean) = false;
3305
3270
  ;}
3306
3271
  break;
3307
3272
 
3308
3273
  case 92:
3309
- #line 1090 "pl_gram.y"
3274
+ #line 1063 "pl_gram.y"
3310
3275
  {
3311
3276
  (yyval.boolean) = true;
3312
3277
  ;}
3313
3278
  break;
3314
3279
 
3315
3280
  case 93:
3316
- #line 1096 "pl_gram.y"
3281
+ #line 1069 "pl_gram.y"
3317
3282
  {
3318
3283
  (yyval.list) = lappend((yyvsp[(1) - (3)].list), (yyvsp[(3) - (3)].diagitem));
3319
3284
  ;}
3320
3285
  break;
3321
3286
 
3322
3287
  case 94:
3323
- #line 1100 "pl_gram.y"
3288
+ #line 1073 "pl_gram.y"
3324
3289
  {
3325
3290
  (yyval.list) = list_make1((yyvsp[(1) - (1)].diagitem));
3326
3291
  ;}
3327
3292
  break;
3328
3293
 
3329
3294
  case 95:
3330
- #line 1106 "pl_gram.y"
3295
+ #line 1079 "pl_gram.y"
3331
3296
  {
3332
3297
  PLpgSQL_diag_item *new;
3333
3298
 
@@ -3340,13 +3305,16 @@ yyreduce:
3340
3305
  break;
3341
3306
 
3342
3307
  case 96:
3343
- #line 1118 "pl_gram.y"
3308
+ #line 1091 "pl_gram.y"
3344
3309
  {
3345
3310
  int tok = yylex();
3346
3311
 
3347
3312
  if (tok_is_keyword(tok, &yylval,
3348
3313
  K_ROW_COUNT, "row_count"))
3349
3314
  (yyval.ival) = PLPGSQL_GETDIAG_ROW_COUNT;
3315
+ else if (tok_is_keyword(tok, &yylval,
3316
+ K_PG_ROUTINE_OID, "pg_routine_oid"))
3317
+ (yyval.ival) = PLPGSQL_GETDIAG_ROUTINE_OID;
3350
3318
  else if (tok_is_keyword(tok, &yylval,
3351
3319
  K_PG_CONTEXT, "pg_context"))
3352
3320
  (yyval.ival) = PLPGSQL_GETDIAG_CONTEXT;
@@ -3386,7 +3354,7 @@ yyreduce:
3386
3354
  break;
3387
3355
 
3388
3356
  case 97:
3389
- #line 1163 "pl_gram.y"
3357
+ #line 1139 "pl_gram.y"
3390
3358
  {
3391
3359
  /*
3392
3360
  * In principle we should support a getdiag_target
@@ -3407,7 +3375,7 @@ yyreduce:
3407
3375
  break;
3408
3376
 
3409
3377
  case 98:
3410
- #line 1181 "pl_gram.y"
3378
+ #line 1157 "pl_gram.y"
3411
3379
  {
3412
3380
  /* just to give a better message than "syntax error" */
3413
3381
  word_is_not_variable(&((yyvsp[(1) - (1)].word)), (yylsp[(1) - (1)]));
@@ -3415,7 +3383,7 @@ yyreduce:
3415
3383
  break;
3416
3384
 
3417
3385
  case 99:
3418
- #line 1186 "pl_gram.y"
3386
+ #line 1162 "pl_gram.y"
3419
3387
  {
3420
3388
  /* just to give a better message than "syntax error" */
3421
3389
  cword_is_not_variable(&((yyvsp[(1) - (1)].cword)), (yylsp[(1) - (1)]));
@@ -3423,7 +3391,7 @@ yyreduce:
3423
3391
  break;
3424
3392
 
3425
3393
  case 100:
3426
- #line 1193 "pl_gram.y"
3394
+ #line 1169 "pl_gram.y"
3427
3395
  {
3428
3396
  PLpgSQL_stmt_if *new;
3429
3397
 
@@ -3441,14 +3409,14 @@ yyreduce:
3441
3409
  break;
3442
3410
 
3443
3411
  case 101:
3444
- #line 1210 "pl_gram.y"
3412
+ #line 1186 "pl_gram.y"
3445
3413
  {
3446
3414
  (yyval.list) = NIL;
3447
3415
  ;}
3448
3416
  break;
3449
3417
 
3450
3418
  case 102:
3451
- #line 1214 "pl_gram.y"
3419
+ #line 1190 "pl_gram.y"
3452
3420
  {
3453
3421
  PLpgSQL_if_elsif *new;
3454
3422
 
@@ -3462,28 +3430,28 @@ yyreduce:
3462
3430
  break;
3463
3431
 
3464
3432
  case 103:
3465
- #line 1227 "pl_gram.y"
3433
+ #line 1203 "pl_gram.y"
3466
3434
  {
3467
3435
  (yyval.list) = NIL;
3468
3436
  ;}
3469
3437
  break;
3470
3438
 
3471
3439
  case 104:
3472
- #line 1231 "pl_gram.y"
3440
+ #line 1207 "pl_gram.y"
3473
3441
  {
3474
3442
  (yyval.list) = (yyvsp[(2) - (2)].list);
3475
3443
  ;}
3476
3444
  break;
3477
3445
 
3478
3446
  case 105:
3479
- #line 1237 "pl_gram.y"
3447
+ #line 1213 "pl_gram.y"
3480
3448
  {
3481
3449
  (yyval.stmt) = make_case((yylsp[(1) - (7)]), (yyvsp[(2) - (7)].expr), (yyvsp[(3) - (7)].list), (yyvsp[(4) - (7)].list));
3482
3450
  ;}
3483
3451
  break;
3484
3452
 
3485
3453
  case 106:
3486
- #line 1243 "pl_gram.y"
3454
+ #line 1219 "pl_gram.y"
3487
3455
  {
3488
3456
  PLpgSQL_expr *expr = NULL;
3489
3457
  int tok = yylex();
@@ -3499,21 +3467,21 @@ yyreduce:
3499
3467
  break;
3500
3468
 
3501
3469
  case 107:
3502
- #line 1258 "pl_gram.y"
3470
+ #line 1234 "pl_gram.y"
3503
3471
  {
3504
3472
  (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].casewhen));
3505
3473
  ;}
3506
3474
  break;
3507
3475
 
3508
3476
  case 108:
3509
- #line 1262 "pl_gram.y"
3477
+ #line 1238 "pl_gram.y"
3510
3478
  {
3511
3479
  (yyval.list) = list_make1((yyvsp[(1) - (1)].casewhen));
3512
3480
  ;}
3513
3481
  break;
3514
3482
 
3515
3483
  case 109:
3516
- #line 1268 "pl_gram.y"
3484
+ #line 1244 "pl_gram.y"
3517
3485
  {
3518
3486
  PLpgSQL_case_when *new = palloc(sizeof(PLpgSQL_case_when));
3519
3487
 
@@ -3525,14 +3493,14 @@ yyreduce:
3525
3493
  break;
3526
3494
 
3527
3495
  case 110:
3528
- #line 1279 "pl_gram.y"
3496
+ #line 1255 "pl_gram.y"
3529
3497
  {
3530
3498
  (yyval.list) = NIL;
3531
3499
  ;}
3532
3500
  break;
3533
3501
 
3534
3502
  case 111:
3535
- #line 1283 "pl_gram.y"
3503
+ #line 1259 "pl_gram.y"
3536
3504
  {
3537
3505
  /*
3538
3506
  * proc_sect could return an empty list, but we
@@ -3548,7 +3516,7 @@ yyreduce:
3548
3516
  break;
3549
3517
 
3550
3518
  case 112:
3551
- #line 1298 "pl_gram.y"
3519
+ #line 1274 "pl_gram.y"
3552
3520
  {
3553
3521
  PLpgSQL_stmt_loop *new;
3554
3522
 
@@ -3567,7 +3535,7 @@ yyreduce:
3567
3535
  break;
3568
3536
 
3569
3537
  case 113:
3570
- #line 1316 "pl_gram.y"
3538
+ #line 1292 "pl_gram.y"
3571
3539
  {
3572
3540
  PLpgSQL_stmt_while *new;
3573
3541
 
@@ -3587,7 +3555,7 @@ yyreduce:
3587
3555
  break;
3588
3556
 
3589
3557
  case 114:
3590
- #line 1335 "pl_gram.y"
3558
+ #line 1311 "pl_gram.y"
3591
3559
  {
3592
3560
  /* This runs after we've scanned the loop body */
3593
3561
  if ((yyvsp[(3) - (4)].stmt)->cmd_type == PLPGSQL_STMT_FORI)
@@ -3622,7 +3590,7 @@ yyreduce:
3622
3590
  break;
3623
3591
 
3624
3592
  case 115:
3625
- #line 1369 "pl_gram.y"
3593
+ #line 1345 "pl_gram.y"
3626
3594
  {
3627
3595
  int tok = yylex();
3628
3596
  int tokloc = yylloc;
@@ -3755,7 +3723,6 @@ yyreduce:
3755
3723
  RAW_PARSE_DEFAULT,
3756
3724
  true,
3757
3725
  false,
3758
- true,
3759
3726
  &expr1loc,
3760
3727
  &tok);
3761
3728
 
@@ -3864,7 +3831,7 @@ yyreduce:
3864
3831
  break;
3865
3832
 
3866
3833
  case 116:
3867
- #line 1628 "pl_gram.y"
3834
+ #line 1603 "pl_gram.y"
3868
3835
  {
3869
3836
  (yyval.forvariable).name = NameOfDatum(&((yyvsp[(1) - (1)].wdatum)));
3870
3837
  (yyval.forvariable).lineno = plpgsql_location_to_lineno((yylsp[(1) - (1)]));
@@ -3893,7 +3860,7 @@ yyreduce:
3893
3860
  break;
3894
3861
 
3895
3862
  case 117:
3896
- #line 1654 "pl_gram.y"
3863
+ #line 1629 "pl_gram.y"
3897
3864
  {
3898
3865
  int tok;
3899
3866
 
@@ -3910,7 +3877,7 @@ yyreduce:
3910
3877
  break;
3911
3878
 
3912
3879
  case 118:
3913
- #line 1668 "pl_gram.y"
3880
+ #line 1643 "pl_gram.y"
3914
3881
  {
3915
3882
  /* just to give a better message than "syntax error" */
3916
3883
  cword_is_not_variable(&((yyvsp[(1) - (1)].cword)), (yylsp[(1) - (1)]));
@@ -3918,7 +3885,7 @@ yyreduce:
3918
3885
  break;
3919
3886
 
3920
3887
  case 119:
3921
- #line 1675 "pl_gram.y"
3888
+ #line 1650 "pl_gram.y"
3922
3889
  {
3923
3890
  PLpgSQL_stmt_foreach_a *new;
3924
3891
 
@@ -3957,21 +3924,21 @@ yyreduce:
3957
3924
  break;
3958
3925
 
3959
3926
  case 120:
3960
- #line 1713 "pl_gram.y"
3927
+ #line 1688 "pl_gram.y"
3961
3928
  {
3962
3929
  (yyval.ival) = 0;
3963
3930
  ;}
3964
3931
  break;
3965
3932
 
3966
3933
  case 121:
3967
- #line 1717 "pl_gram.y"
3934
+ #line 1692 "pl_gram.y"
3968
3935
  {
3969
3936
  (yyval.ival) = (yyvsp[(2) - (2)].ival);
3970
3937
  ;}
3971
3938
  break;
3972
3939
 
3973
3940
  case 122:
3974
- #line 1723 "pl_gram.y"
3941
+ #line 1698 "pl_gram.y"
3975
3942
  {
3976
3943
  PLpgSQL_stmt_exit *new;
3977
3944
 
@@ -4025,21 +3992,21 @@ yyreduce:
4025
3992
  break;
4026
3993
 
4027
3994
  case 123:
4028
- #line 1776 "pl_gram.y"
3995
+ #line 1751 "pl_gram.y"
4029
3996
  {
4030
3997
  (yyval.boolean) = true;
4031
3998
  ;}
4032
3999
  break;
4033
4000
 
4034
4001
  case 124:
4035
- #line 1780 "pl_gram.y"
4002
+ #line 1755 "pl_gram.y"
4036
4003
  {
4037
4004
  (yyval.boolean) = false;
4038
4005
  ;}
4039
4006
  break;
4040
4007
 
4041
4008
  case 125:
4042
- #line 1786 "pl_gram.y"
4009
+ #line 1761 "pl_gram.y"
4043
4010
  {
4044
4011
  int tok;
4045
4012
 
@@ -4066,7 +4033,7 @@ yyreduce:
4066
4033
  break;
4067
4034
 
4068
4035
  case 126:
4069
- #line 1812 "pl_gram.y"
4036
+ #line 1787 "pl_gram.y"
4070
4037
  {
4071
4038
  PLpgSQL_stmt_raise *new;
4072
4039
  int tok;
@@ -4161,7 +4128,7 @@ yyreduce:
4161
4128
  expr = read_sql_construct(',', ';', K_USING,
4162
4129
  ", or ; or USING",
4163
4130
  RAW_PARSE_PLPGSQL_EXPR,
4164
- true, true, true,
4131
+ true, true,
4165
4132
  NULL, &tok);
4166
4133
  new->params = lappend(new->params, expr);
4167
4134
  }
@@ -4212,7 +4179,7 @@ yyreduce:
4212
4179
  break;
4213
4180
 
4214
4181
  case 127:
4215
- #line 1957 "pl_gram.y"
4182
+ #line 1932 "pl_gram.y"
4216
4183
  {
4217
4184
  PLpgSQL_stmt_assert *new;
4218
4185
  int tok;
@@ -4237,7 +4204,7 @@ yyreduce:
4237
4204
  break;
4238
4205
 
4239
4206
  case 128:
4240
- #line 1981 "pl_gram.y"
4207
+ #line 1956 "pl_gram.y"
4241
4208
  {
4242
4209
  (yyval.loop_body).stmts = (yyvsp[(1) - (5)].list);
4243
4210
  (yyval.loop_body).end_label = (yyvsp[(4) - (5)].str);
@@ -4246,28 +4213,28 @@ yyreduce:
4246
4213
  break;
4247
4214
 
4248
4215
  case 129:
4249
- #line 1999 "pl_gram.y"
4216
+ #line 1974 "pl_gram.y"
4250
4217
  {
4251
- (yyval.stmt) = make_execsql_stmt(K_IMPORT, (yylsp[(1) - (1)]));
4218
+ (yyval.stmt) = make_execsql_stmt(K_IMPORT, (yylsp[(1) - (1)]), NULL);
4252
4219
  ;}
4253
4220
  break;
4254
4221
 
4255
4222
  case 130:
4256
- #line 2003 "pl_gram.y"
4223
+ #line 1978 "pl_gram.y"
4257
4224
  {
4258
- (yyval.stmt) = make_execsql_stmt(K_INSERT, (yylsp[(1) - (1)]));
4225
+ (yyval.stmt) = make_execsql_stmt(K_INSERT, (yylsp[(1) - (1)]), NULL);
4259
4226
  ;}
4260
4227
  break;
4261
4228
 
4262
4229
  case 131:
4263
- #line 2007 "pl_gram.y"
4230
+ #line 1982 "pl_gram.y"
4264
4231
  {
4265
- (yyval.stmt) = make_execsql_stmt(K_MERGE, (yylsp[(1) - (1)]));
4232
+ (yyval.stmt) = make_execsql_stmt(K_MERGE, (yylsp[(1) - (1)]), NULL);
4266
4233
  ;}
4267
4234
  break;
4268
4235
 
4269
4236
  case 132:
4270
- #line 2011 "pl_gram.y"
4237
+ #line 1986 "pl_gram.y"
4271
4238
  {
4272
4239
  int tok;
4273
4240
 
@@ -4276,12 +4243,12 @@ yyreduce:
4276
4243
  if (tok == '=' || tok == COLON_EQUALS ||
4277
4244
  tok == '[' || tok == '.')
4278
4245
  word_is_not_variable(&((yyvsp[(1) - (1)].word)), (yylsp[(1) - (1)]));
4279
- (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)));
4280
4247
  ;}
4281
4248
  break;
4282
4249
 
4283
4250
  case 133:
4284
- #line 2022 "pl_gram.y"
4251
+ #line 1997 "pl_gram.y"
4285
4252
  {
4286
4253
  int tok;
4287
4254
 
@@ -4290,12 +4257,12 @@ yyreduce:
4290
4257
  if (tok == '=' || tok == COLON_EQUALS ||
4291
4258
  tok == '[' || tok == '.')
4292
4259
  cword_is_not_variable(&((yyvsp[(1) - (1)].cword)), (yylsp[(1) - (1)]));
4293
- (yyval.stmt) = make_execsql_stmt(T_CWORD, (yylsp[(1) - (1)]));
4260
+ (yyval.stmt) = make_execsql_stmt(T_CWORD, (yylsp[(1) - (1)]), NULL);
4294
4261
  ;}
4295
4262
  break;
4296
4263
 
4297
4264
  case 134:
4298
- #line 2035 "pl_gram.y"
4265
+ #line 2010 "pl_gram.y"
4299
4266
  {
4300
4267
  PLpgSQL_stmt_dynexecute *new;
4301
4268
  PLpgSQL_expr *expr;
@@ -4304,7 +4271,7 @@ yyreduce:
4304
4271
  expr = read_sql_construct(K_INTO, K_USING, ';',
4305
4272
  "INTO or USING or ;",
4306
4273
  RAW_PARSE_PLPGSQL_EXPR,
4307
- true, true, true,
4274
+ true, true,
4308
4275
  NULL, &endtoken);
4309
4276
 
4310
4277
  new = palloc(sizeof(PLpgSQL_stmt_dynexecute));
@@ -4343,7 +4310,7 @@ yyreduce:
4343
4310
  expr = read_sql_construct(',', ';', K_INTO,
4344
4311
  ", or ; or INTO",
4345
4312
  RAW_PARSE_PLPGSQL_EXPR,
4346
- true, true, true,
4313
+ true, true,
4347
4314
  NULL, &endtoken);
4348
4315
  new->params = lappend(new->params, expr);
4349
4316
  } while (endtoken == ',');
@@ -4359,7 +4326,7 @@ yyreduce:
4359
4326
  break;
4360
4327
 
4361
4328
  case 135:
4362
- #line 2099 "pl_gram.y"
4329
+ #line 2074 "pl_gram.y"
4363
4330
  {
4364
4331
  PLpgSQL_stmt_open *new;
4365
4332
  int tok;
@@ -4438,7 +4405,7 @@ yyreduce:
4438
4405
  break;
4439
4406
 
4440
4407
  case 136:
4441
- #line 2177 "pl_gram.y"
4408
+ #line 2152 "pl_gram.y"
4442
4409
  {
4443
4410
  PLpgSQL_stmt_fetch *fetch = (yyvsp[(2) - (4)].fetch);
4444
4411
  PLpgSQL_variable *target;
@@ -4469,7 +4436,7 @@ yyreduce:
4469
4436
  break;
4470
4437
 
4471
4438
  case 137:
4472
- #line 2207 "pl_gram.y"
4439
+ #line 2182 "pl_gram.y"
4473
4440
  {
4474
4441
  PLpgSQL_stmt_fetch *fetch = (yyvsp[(2) - (4)].fetch);
4475
4442
 
@@ -4482,14 +4449,14 @@ yyreduce:
4482
4449
  break;
4483
4450
 
4484
4451
  case 138:
4485
- #line 2219 "pl_gram.y"
4452
+ #line 2194 "pl_gram.y"
4486
4453
  {
4487
4454
  (yyval.fetch) = read_fetch_direction();
4488
4455
  ;}
4489
4456
  break;
4490
4457
 
4491
4458
  case 139:
4492
- #line 2225 "pl_gram.y"
4459
+ #line 2200 "pl_gram.y"
4493
4460
  {
4494
4461
  PLpgSQL_stmt_close *new;
4495
4462
 
@@ -4504,7 +4471,7 @@ yyreduce:
4504
4471
  break;
4505
4472
 
4506
4473
  case 140:
4507
- #line 2239 "pl_gram.y"
4474
+ #line 2214 "pl_gram.y"
4508
4475
  {
4509
4476
  /* We do not bother building a node for NULL */
4510
4477
  (yyval.stmt) = NULL;
@@ -4512,7 +4479,7 @@ yyreduce:
4512
4479
  break;
4513
4480
 
4514
4481
  case 141:
4515
- #line 2246 "pl_gram.y"
4482
+ #line 2221 "pl_gram.y"
4516
4483
  {
4517
4484
  PLpgSQL_stmt_commit *new;
4518
4485
 
@@ -4527,7 +4494,7 @@ yyreduce:
4527
4494
  break;
4528
4495
 
4529
4496
  case 142:
4530
- #line 2260 "pl_gram.y"
4497
+ #line 2235 "pl_gram.y"
4531
4498
  {
4532
4499
  PLpgSQL_stmt_rollback *new;
4533
4500
 
@@ -4542,22 +4509,22 @@ yyreduce:
4542
4509
  break;
4543
4510
 
4544
4511
  case 143:
4545
- #line 2274 "pl_gram.y"
4512
+ #line 2249 "pl_gram.y"
4546
4513
  { (yyval.ival) = true; ;}
4547
4514
  break;
4548
4515
 
4549
4516
  case 144:
4550
- #line 2275 "pl_gram.y"
4517
+ #line 2250 "pl_gram.y"
4551
4518
  { (yyval.ival) = false; ;}
4552
4519
  break;
4553
4520
 
4554
4521
  case 145:
4555
- #line 2276 "pl_gram.y"
4522
+ #line 2251 "pl_gram.y"
4556
4523
  { (yyval.ival) = false; ;}
4557
4524
  break;
4558
4525
 
4559
4526
  case 146:
4560
- #line 2281 "pl_gram.y"
4527
+ #line 2256 "pl_gram.y"
4561
4528
  {
4562
4529
  /*
4563
4530
  * In principle we should support a cursor_variable
@@ -4582,7 +4549,7 @@ yyreduce:
4582
4549
  break;
4583
4550
 
4584
4551
  case 147:
4585
- #line 2303 "pl_gram.y"
4552
+ #line 2278 "pl_gram.y"
4586
4553
  {
4587
4554
  /* just to give a better message than "syntax error" */
4588
4555
  word_is_not_variable(&((yyvsp[(1) - (1)].word)), (yylsp[(1) - (1)]));
@@ -4590,7 +4557,7 @@ yyreduce:
4590
4557
  break;
4591
4558
 
4592
4559
  case 148:
4593
- #line 2308 "pl_gram.y"
4560
+ #line 2283 "pl_gram.y"
4594
4561
  {
4595
4562
  /* just to give a better message than "syntax error" */
4596
4563
  cword_is_not_variable(&((yyvsp[(1) - (1)].cword)), (yylsp[(1) - (1)]));
@@ -4598,12 +4565,12 @@ yyreduce:
4598
4565
  break;
4599
4566
 
4600
4567
  case 149:
4601
- #line 2315 "pl_gram.y"
4568
+ #line 2290 "pl_gram.y"
4602
4569
  { (yyval.exception_block) = NULL; ;}
4603
4570
  break;
4604
4571
 
4605
4572
  case 150:
4606
- #line 2317 "pl_gram.y"
4573
+ #line 2292 "pl_gram.y"
4607
4574
  {
4608
4575
  /*
4609
4576
  * We use a mid-rule action to add these
@@ -4639,7 +4606,7 @@ yyreduce:
4639
4606
  break;
4640
4607
 
4641
4608
  case 151:
4642
- #line 2350 "pl_gram.y"
4609
+ #line 2325 "pl_gram.y"
4643
4610
  {
4644
4611
  PLpgSQL_exception_block *new = (yyvsp[(2) - (3)].exception_block);
4645
4612
  new->exc_list = (yyvsp[(3) - (3)].list);
@@ -4649,21 +4616,21 @@ yyreduce:
4649
4616
  break;
4650
4617
 
4651
4618
  case 152:
4652
- #line 2359 "pl_gram.y"
4619
+ #line 2334 "pl_gram.y"
4653
4620
  {
4654
4621
  (yyval.list) = lappend((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].exception));
4655
4622
  ;}
4656
4623
  break;
4657
4624
 
4658
4625
  case 153:
4659
- #line 2363 "pl_gram.y"
4626
+ #line 2338 "pl_gram.y"
4660
4627
  {
4661
4628
  (yyval.list) = list_make1((yyvsp[(1) - (1)].exception));
4662
4629
  ;}
4663
4630
  break;
4664
4631
 
4665
4632
  case 154:
4666
- #line 2369 "pl_gram.y"
4633
+ #line 2344 "pl_gram.y"
4667
4634
  {
4668
4635
  PLpgSQL_exception *new;
4669
4636
 
@@ -4677,7 +4644,7 @@ yyreduce:
4677
4644
  break;
4678
4645
 
4679
4646
  case 155:
4680
- #line 2382 "pl_gram.y"
4647
+ #line 2357 "pl_gram.y"
4681
4648
  {
4682
4649
  PLpgSQL_condition *old;
4683
4650
 
@@ -4689,14 +4656,14 @@ yyreduce:
4689
4656
  break;
4690
4657
 
4691
4658
  case 156:
4692
- #line 2391 "pl_gram.y"
4659
+ #line 2366 "pl_gram.y"
4693
4660
  {
4694
4661
  (yyval.condition) = (yyvsp[(1) - (1)].condition);
4695
4662
  ;}
4696
4663
  break;
4697
4664
 
4698
4665
  case 157:
4699
- #line 2397 "pl_gram.y"
4666
+ #line 2372 "pl_gram.y"
4700
4667
  {
4701
4668
  if (strcmp((yyvsp[(1) - (1)].str), "sqlstate") != 0)
4702
4669
  {
@@ -4733,22 +4700,22 @@ yyreduce:
4733
4700
  break;
4734
4701
 
4735
4702
  case 158:
4736
- #line 2433 "pl_gram.y"
4703
+ #line 2408 "pl_gram.y"
4737
4704
  { (yyval.expr) = read_sql_expression(';', ";"); ;}
4738
4705
  break;
4739
4706
 
4740
4707
  case 159:
4741
- #line 2437 "pl_gram.y"
4708
+ #line 2412 "pl_gram.y"
4742
4709
  { (yyval.expr) = read_sql_expression(K_THEN, "THEN"); ;}
4743
4710
  break;
4744
4711
 
4745
4712
  case 160:
4746
- #line 2441 "pl_gram.y"
4713
+ #line 2416 "pl_gram.y"
4747
4714
  { (yyval.expr) = read_sql_expression(K_LOOP, "LOOP"); ;}
4748
4715
  break;
4749
4716
 
4750
4717
  case 161:
4751
- #line 2445 "pl_gram.y"
4718
+ #line 2420 "pl_gram.y"
4752
4719
  {
4753
4720
  plpgsql_ns_push(NULL, PLPGSQL_LABEL_BLOCK);
4754
4721
  (yyval.str) = NULL;
@@ -4756,7 +4723,7 @@ yyreduce:
4756
4723
  break;
4757
4724
 
4758
4725
  case 162:
4759
- #line 2450 "pl_gram.y"
4726
+ #line 2425 "pl_gram.y"
4760
4727
  {
4761
4728
  plpgsql_ns_push((yyvsp[(2) - (3)].str), PLPGSQL_LABEL_BLOCK);
4762
4729
  (yyval.str) = (yyvsp[(2) - (3)].str);
@@ -4764,7 +4731,7 @@ yyreduce:
4764
4731
  break;
4765
4732
 
4766
4733
  case 163:
4767
- #line 2457 "pl_gram.y"
4734
+ #line 2432 "pl_gram.y"
4768
4735
  {
4769
4736
  plpgsql_ns_push(NULL, PLPGSQL_LABEL_LOOP);
4770
4737
  (yyval.str) = NULL;
@@ -4772,7 +4739,7 @@ yyreduce:
4772
4739
  break;
4773
4740
 
4774
4741
  case 164:
4775
- #line 2462 "pl_gram.y"
4742
+ #line 2437 "pl_gram.y"
4776
4743
  {
4777
4744
  plpgsql_ns_push((yyvsp[(2) - (3)].str), PLPGSQL_LABEL_LOOP);
4778
4745
  (yyval.str) = (yyvsp[(2) - (3)].str);
@@ -4780,14 +4747,14 @@ yyreduce:
4780
4747
  break;
4781
4748
 
4782
4749
  case 165:
4783
- #line 2469 "pl_gram.y"
4750
+ #line 2444 "pl_gram.y"
4784
4751
  {
4785
4752
  (yyval.str) = NULL;
4786
4753
  ;}
4787
4754
  break;
4788
4755
 
4789
4756
  case 166:
4790
- #line 2473 "pl_gram.y"
4757
+ #line 2448 "pl_gram.y"
4791
4758
  {
4792
4759
  /* label validity will be checked by outer production */
4793
4760
  (yyval.str) = (yyvsp[(1) - (1)].str);
@@ -4795,31 +4762,31 @@ yyreduce:
4795
4762
  break;
4796
4763
 
4797
4764
  case 167:
4798
- #line 2480 "pl_gram.y"
4765
+ #line 2455 "pl_gram.y"
4799
4766
  { (yyval.expr) = NULL; ;}
4800
4767
  break;
4801
4768
 
4802
4769
  case 168:
4803
- #line 2482 "pl_gram.y"
4770
+ #line 2457 "pl_gram.y"
4804
4771
  { (yyval.expr) = (yyvsp[(2) - (2)].expr); ;}
4805
4772
  break;
4806
4773
 
4807
4774
  case 169:
4808
- #line 2489 "pl_gram.y"
4775
+ #line 2464 "pl_gram.y"
4809
4776
  {
4810
4777
  (yyval.str) = (yyvsp[(1) - (1)].word).ident;
4811
4778
  ;}
4812
4779
  break;
4813
4780
 
4814
4781
  case 170:
4815
- #line 2493 "pl_gram.y"
4782
+ #line 2468 "pl_gram.y"
4816
4783
  {
4817
4784
  (yyval.str) = pstrdup((yyvsp[(1) - (1)].keyword));
4818
4785
  ;}
4819
4786
  break;
4820
4787
 
4821
4788
  case 171:
4822
- #line 2497 "pl_gram.y"
4789
+ #line 2472 "pl_gram.y"
4823
4790
  {
4824
4791
  if ((yyvsp[(1) - (1)].wdatum).ident == NULL) /* composite name not OK */
4825
4792
  yyerror("syntax error");
@@ -4829,7 +4796,7 @@ yyreduce:
4829
4796
 
4830
4797
 
4831
4798
  /* Line 1267 of yacc.c. */
4832
- #line 4780 "pl_gram.c"
4799
+ #line 4747 "pl_gram.c"
4833
4800
  default: break;
4834
4801
  }
4835
4802
  YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc);
@@ -5049,7 +5016,7 @@ yyreturn:
5049
5016
  }
5050
5017
 
5051
5018
 
5052
- #line 2588 "pl_gram.y"
5019
+ #line 2564 "pl_gram.y"
5053
5020
 
5054
5021
 
5055
5022
  /*
@@ -5128,7 +5095,7 @@ read_sql_expression(int until, const char *expected)
5128
5095
  {
5129
5096
  return read_sql_construct(until, 0, 0, expected,
5130
5097
  RAW_PARSE_PLPGSQL_EXPR,
5131
- true, true, true, NULL, NULL);
5098
+ true, true, NULL, NULL);
5132
5099
  }
5133
5100
 
5134
5101
  /* Convenience routine to read an expression with two possible terminators */
@@ -5138,7 +5105,7 @@ read_sql_expression2(int until, int until2, const char *expected,
5138
5105
  {
5139
5106
  return read_sql_construct(until, until2, 0, expected,
5140
5107
  RAW_PARSE_PLPGSQL_EXPR,
5141
- true, true, true, NULL, endtoken);
5108
+ true, true, NULL, endtoken);
5142
5109
  }
5143
5110
 
5144
5111
  /* Convenience routine to read a SQL statement that must end with ';' */
@@ -5147,7 +5114,7 @@ read_sql_stmt(void)
5147
5114
  {
5148
5115
  return read_sql_construct(';', 0, 0, ";",
5149
5116
  RAW_PARSE_DEFAULT,
5150
- false, true, true, NULL, NULL);
5117
+ false, true, NULL, NULL);
5151
5118
  }
5152
5119
 
5153
5120
  /*
@@ -5160,7 +5127,6 @@ read_sql_stmt(void)
5160
5127
  * parsemode: raw_parser() mode to use
5161
5128
  * isexpression: whether to say we're reading an "expression" or a "statement"
5162
5129
  * valid_sql: whether to check the syntax of the expr
5163
- * trim: trim trailing whitespace
5164
5130
  * startloc: if not NULL, location of first token is stored at *startloc
5165
5131
  * endtoken: if not NULL, ending token is stored at *endtoken
5166
5132
  * (this is only interesting if until2 or until3 isn't zero)
@@ -5173,7 +5139,6 @@ read_sql_construct(int until,
5173
5139
  RawParseMode parsemode,
5174
5140
  bool isexpression,
5175
5141
  bool valid_sql,
5176
- bool trim,
5177
5142
  int *startloc,
5178
5143
  int *endtoken)
5179
5144
  {
@@ -5181,6 +5146,7 @@ read_sql_construct(int until,
5181
5146
  StringInfoData ds;
5182
5147
  IdentifierLookup save_IdentifierLookup;
5183
5148
  int startlocation = -1;
5149
+ int endlocation = -1;
5184
5150
  int parenlevel = 0;
5185
5151
  PLpgSQL_expr *expr;
5186
5152
 
@@ -5231,6 +5197,8 @@ read_sql_construct(int until,
5231
5197
  expected),
5232
5198
  parser_errposition(yylloc)));
5233
5199
  }
5200
+ /* Remember end+1 location of last accepted token */
5201
+ endlocation = yylloc + plpgsql_token_length();
5234
5202
  }
5235
5203
 
5236
5204
  plpgsql_IdentifierLookup = save_IdentifierLookup;
@@ -5241,7 +5209,7 @@ read_sql_construct(int until,
5241
5209
  *endtoken = tok;
5242
5210
 
5243
5211
  /* give helpful complaint about empty input */
5244
- if (startlocation >= yylloc)
5212
+ if (startlocation >= endlocation)
5245
5213
  {
5246
5214
  if (isexpression)
5247
5215
  yyerror("missing expression");
@@ -5249,14 +5217,14 @@ read_sql_construct(int until,
5249
5217
  yyerror("missing SQL statement");
5250
5218
  }
5251
5219
 
5252
- plpgsql_append_source_text(&ds, startlocation, yylloc);
5253
-
5254
- /* trim any trailing whitespace, for neatness */
5255
- if (trim)
5256
- {
5257
- while (ds.len > 0 && scanner_isspace(ds.data[ds.len - 1]))
5258
- ds.data[--ds.len] = '\0';
5259
- }
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);
5260
5228
 
5261
5229
  expr = palloc0(sizeof(PLpgSQL_expr));
5262
5230
  expr->query = pstrdup(ds.data);
@@ -5273,13 +5241,17 @@ read_sql_construct(int until,
5273
5241
  return expr;
5274
5242
  }
5275
5243
 
5244
+ /*
5245
+ * Read a datatype declaration, consuming the current lookahead token if any.
5246
+ * Returns a PLpgSQL_type struct.
5247
+ */
5276
5248
  static PLpgSQL_type *
5277
5249
  read_datatype(int tok)
5278
5250
  {
5279
5251
  StringInfoData ds;
5280
5252
  char *type_name;
5281
5253
  int startlocation;
5282
- PLpgSQL_type *result;
5254
+ PLpgSQL_type *result = NULL;
5283
5255
  int parenlevel = 0;
5284
5256
 
5285
5257
  /* Should only be called while parsing DECLARE sections */
@@ -5289,11 +5261,12 @@ read_datatype(int tok)
5289
5261
  if (tok == YYEMPTY)
5290
5262
  tok = yylex();
5291
5263
 
5264
+ /* The current token is the start of what we'll pass to parse_datatype */
5292
5265
  startlocation = yylloc;
5293
5266
 
5294
5267
  /*
5295
- * If we have a simple or composite identifier, check for %TYPE
5296
- * and %ROWTYPE constructs.
5268
+ * If we have a simple or composite identifier, check for %TYPE and
5269
+ * %ROWTYPE constructs.
5297
5270
  */
5298
5271
  if (tok == T_WORD)
5299
5272
  {
@@ -5305,18 +5278,10 @@ read_datatype(int tok)
5305
5278
  tok = yylex();
5306
5279
  if (tok_is_keyword(tok, &yylval,
5307
5280
  K_TYPE, "type"))
5308
- {
5309
5281
  result = plpgsql_parse_wordtype(dtname);
5310
- if (result)
5311
- return result;
5312
- }
5313
5282
  else if (tok_is_keyword(tok, &yylval,
5314
5283
  K_ROWTYPE, "rowtype"))
5315
- {
5316
5284
  result = plpgsql_parse_wordrowtype(dtname);
5317
- if (result)
5318
- return result;
5319
- }
5320
5285
  }
5321
5286
  }
5322
5287
  else if (plpgsql_token_is_unreserved_keyword(tok))
@@ -5329,18 +5294,10 @@ read_datatype(int tok)
5329
5294
  tok = yylex();
5330
5295
  if (tok_is_keyword(tok, &yylval,
5331
5296
  K_TYPE, "type"))
5332
- {
5333
5297
  result = plpgsql_parse_wordtype(dtname);
5334
- if (result)
5335
- return result;
5336
- }
5337
5298
  else if (tok_is_keyword(tok, &yylval,
5338
5299
  K_ROWTYPE, "rowtype"))
5339
- {
5340
5300
  result = plpgsql_parse_wordrowtype(dtname);
5341
- if (result)
5342
- return result;
5343
- }
5344
5301
  }
5345
5302
  }
5346
5303
  else if (tok == T_CWORD)
@@ -5353,21 +5310,56 @@ read_datatype(int tok)
5353
5310
  tok = yylex();
5354
5311
  if (tok_is_keyword(tok, &yylval,
5355
5312
  K_TYPE, "type"))
5356
- {
5357
5313
  result = plpgsql_parse_cwordtype(dtnames);
5358
- if (result)
5359
- return result;
5360
- }
5361
5314
  else if (tok_is_keyword(tok, &yylval,
5362
5315
  K_ROWTYPE, "rowtype"))
5363
- {
5364
5316
  result = plpgsql_parse_cwordrowtype(dtnames);
5365
- if (result)
5366
- return result;
5367
- }
5368
5317
  }
5369
5318
  }
5370
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
+ */
5371
5363
  while (tok != ';')
5372
5364
  {
5373
5365
  if (tok == 0)
@@ -5409,8 +5401,13 @@ read_datatype(int tok)
5409
5401
  return result;
5410
5402
  }
5411
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
+ */
5412
5409
  static PLpgSQL_stmt *
5413
- make_execsql_stmt(int firsttoken, int location)
5410
+ make_execsql_stmt(int firsttoken, int location, PLword *word)
5414
5411
  {
5415
5412
  StringInfoData ds;
5416
5413
  IdentifierLookup save_IdentifierLookup;
@@ -5423,9 +5420,16 @@ make_execsql_stmt(int firsttoken, int location)
5423
5420
  bool have_strict = false;
5424
5421
  int into_start_loc = -1;
5425
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 */
5426
5428
 
5427
5429
  initStringInfo(&ds);
5428
5430
 
5431
+ memset(tokens, 0, sizeof(tokens));
5432
+
5429
5433
  /* special lookup mode for identifiers within the SQL text */
5430
5434
  save_IdentifierLookup = plpgsql_IdentifierLookup;
5431
5435
  plpgsql_IdentifierLookup = IDENTIFIER_LOOKUP_EXPR;
@@ -5434,6 +5438,12 @@ make_execsql_stmt(int firsttoken, int location)
5434
5438
  * Scan to the end of the SQL command. Identify any INTO-variables
5435
5439
  * clause lurking within it, and parse that via read_into_target().
5436
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
+ *
5437
5447
  * Because INTO is sometimes used in the main SQL grammar, we have to be
5438
5448
  * careful not to take any such usage of INTO as a PL/pgSQL INTO clause.
5439
5449
  * There are currently three such cases:
@@ -5459,13 +5469,50 @@ make_execsql_stmt(int firsttoken, int location)
5459
5469
  * break this logic again ... beware!
5460
5470
  */
5461
5471
  tok = firsttoken;
5472
+ if (tok == T_WORD && strcmp(word->ident, "create") == 0)
5473
+ tokens[token_count] = 'c';
5474
+ token_count++;
5475
+
5462
5476
  for (;;)
5463
5477
  {
5464
5478
  prev_tok = tok;
5465
5479
  tok = yylex();
5466
5480
  if (have_into && into_end_loc < 0)
5467
5481
  into_end_loc = yylloc; /* token after the INTO part */
5468
- 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)
5469
5516
  break;
5470
5517
  if (tok == 0)
5471
5518
  yyerror("unexpected end of function definition");
@@ -5629,11 +5676,11 @@ read_fetch_direction(void)
5629
5676
  {
5630
5677
  /*
5631
5678
  * Assume it's a count expression with no preceding keyword.
5632
- * Note: we allow this syntax because core SQL does, but we don't
5633
- * document it because of the ambiguity with the omitted-direction
5634
- * case. For instance, "MOVE n IN c" will fail if n is a variable.
5635
- * Perhaps this can be improved someday, but it's hardly worth a
5636
- * 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.
5637
5684
  */
5638
5685
  plpgsql_push_back_token(tok);
5639
5686
  fetch->expr = read_sql_expression2(K_FROM, K_IN,
@@ -6123,7 +6170,30 @@ plpgsql_sql_error_callback(void *arg)
6123
6170
  * This is handled the same as in check_sql_expr(), and we likewise
6124
6171
  * expect that the given string is a copy from the source text.
6125
6172
  */
6126
- 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
+
6127
6197
 
6128
6198
 
6129
6199
  /*
@@ -6262,16 +6332,12 @@ read_cursor_args(PLpgSQL_var *cursor, int until)
6262
6332
  * Read the value expression. To provide the user with meaningful
6263
6333
  * parse error positions, we check the syntax immediately, instead of
6264
6334
  * checking the final expression that may have the arguments
6265
- * reordered. Trailing whitespace must not be trimmed, because
6266
- * otherwise input of the form (param -- comment\n, param) would be
6267
- * translated into a form where the second parameter is commented
6268
- * out.
6335
+ * reordered.
6269
6336
  */
6270
6337
  item = read_sql_construct(',', ')', 0,
6271
6338
  ",\" or \")",
6272
6339
  RAW_PARSE_PLPGSQL_EXPR,
6273
6340
  true, true,
6274
- false, /* do not trim */
6275
6341
  NULL, &endtoken);
6276
6342
 
6277
6343
  argv[argpos] = item->query;