pg_query 2.0.3 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (557) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +165 -0
  3. data/README.md +67 -29
  4. data/Rakefile +8 -23
  5. data/ext/pg_query/extconf.rb +21 -3
  6. data/ext/pg_query/include/pg_query.h +29 -4
  7. data/ext/pg_query/include/pg_query_enum_defs.c +551 -272
  8. data/ext/pg_query/include/pg_query_fingerprint_conds.c +563 -470
  9. data/ext/pg_query/include/pg_query_fingerprint_defs.c +5403 -3945
  10. data/ext/pg_query/include/pg_query_outfuncs_conds.c +402 -330
  11. data/ext/pg_query/include/pg_query_outfuncs_defs.c +1319 -1059
  12. data/ext/pg_query/include/pg_query_readfuncs_conds.c +141 -118
  13. data/ext/pg_query/include/pg_query_readfuncs_defs.c +1685 -1379
  14. data/ext/pg_query/include/{access → postgres/access}/amapi.h +47 -1
  15. data/ext/pg_query/include/{access → postgres/access}/attmap.h +5 -3
  16. data/ext/pg_query/include/{access → postgres/access}/attnum.h +2 -2
  17. data/ext/pg_query/include/{access → postgres/access}/clog.h +4 -2
  18. data/ext/pg_query/include/{access → postgres/access}/commit_ts.h +6 -9
  19. data/ext/pg_query/include/{access → postgres/access}/detoast.h +1 -11
  20. data/ext/pg_query/include/{access → postgres/access}/genam.h +21 -16
  21. data/ext/pg_query/include/{access → postgres/access}/gin.h +17 -4
  22. data/ext/pg_query/include/{access → postgres/access}/htup.h +1 -1
  23. data/ext/pg_query/include/{access → postgres/access}/htup_details.h +80 -88
  24. data/ext/pg_query/include/{access → postgres/access}/itup.h +61 -52
  25. data/ext/pg_query/include/{access → postgres/access}/parallel.h +2 -2
  26. data/ext/pg_query/include/{access → postgres/access}/printtup.h +1 -1
  27. data/ext/pg_query/include/{access → postgres/access}/relation.h +1 -1
  28. data/ext/pg_query/include/{access → postgres/access}/relscan.h +17 -2
  29. data/ext/pg_query/include/postgres/access/rmgr.h +62 -0
  30. data/ext/pg_query/include/{access → postgres/access}/rmgrlist.h +24 -24
  31. data/ext/pg_query/include/{access → postgres/access}/sdir.h +12 -3
  32. data/ext/pg_query/include/{access → postgres/access}/skey.h +1 -1
  33. data/ext/pg_query/include/{access → postgres/access}/stratnum.h +4 -2
  34. data/ext/pg_query/include/{access → postgres/access}/sysattr.h +1 -1
  35. data/ext/pg_query/include/{access → postgres/access}/table.h +2 -1
  36. data/ext/pg_query/include/{access → postgres/access}/tableam.h +337 -62
  37. data/ext/pg_query/include/postgres/access/toast_compression.h +73 -0
  38. data/ext/pg_query/include/{access → postgres/access}/transam.h +123 -13
  39. data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
  40. data/ext/pg_query/include/{access → postgres/access}/tupconvert.h +5 -2
  41. data/ext/pg_query/include/{access → postgres/access}/tupdesc.h +2 -2
  42. data/ext/pg_query/include/{access → postgres/access}/tupmacs.h +60 -100
  43. data/ext/pg_query/include/{access → postgres/access}/twophase.h +5 -1
  44. data/ext/pg_query/include/{access → postgres/access}/xact.h +99 -32
  45. data/ext/pg_query/include/{access → postgres/access}/xlog.h +69 -165
  46. data/ext/pg_query/include/{access → postgres/access}/xlog_internal.h +147 -73
  47. data/ext/pg_query/include/postgres/access/xlogbackup.h +41 -0
  48. data/ext/pg_query/include/{access → postgres/access}/xlogdefs.h +13 -40
  49. data/ext/pg_query/include/postgres/access/xlogprefetcher.h +55 -0
  50. data/ext/pg_query/include/{access → postgres/access}/xlogreader.h +154 -37
  51. data/ext/pg_query/include/{access → postgres/access}/xlogrecord.h +34 -13
  52. data/ext/pg_query/include/postgres/access/xlogrecovery.h +158 -0
  53. data/ext/pg_query/include/postgres/archive/archive_module.h +59 -0
  54. data/ext/pg_query/include/{c.h → postgres/c.h} +245 -188
  55. data/ext/pg_query/include/{catalog → postgres/catalog}/catalog.h +6 -3
  56. data/ext/pg_query/include/{catalog → postgres/catalog}/catversion.h +6 -2
  57. data/ext/pg_query/include/{catalog → postgres/catalog}/dependency.h +14 -19
  58. data/ext/pg_query/include/postgres/catalog/genbki.h +143 -0
  59. data/ext/pg_query/include/{catalog → postgres/catalog}/index.h +20 -5
  60. data/ext/pg_query/include/postgres/catalog/indexing.h +54 -0
  61. data/ext/pg_query/include/{catalog → postgres/catalog}/namespace.h +5 -3
  62. data/ext/pg_query/include/{catalog → postgres/catalog}/objectaccess.h +73 -3
  63. data/ext/pg_query/include/{catalog → postgres/catalog}/objectaddress.h +12 -7
  64. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate.h +14 -10
  65. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate_d.h +2 -1
  66. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am.h +4 -1
  67. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am_d.h +3 -1
  68. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute.h +45 -26
  69. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute_d.h +19 -16
  70. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid.h +7 -2
  71. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid_d.h +19 -9
  72. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class.h +45 -15
  73. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class_d.h +31 -2
  74. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation.h +35 -8
  75. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation_d.h +21 -3
  76. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint.h +39 -13
  77. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint_d.h +10 -4
  78. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_control.h +13 -5
  79. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion.h +8 -5
  80. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion_d.h +4 -1
  81. data/ext/pg_query/include/postgres/catalog/pg_database.h +124 -0
  82. data/ext/pg_query/include/postgres/catalog/pg_database_d.h +52 -0
  83. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend.h +11 -7
  84. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend_d.h +3 -1
  85. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger.h +9 -3
  86. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger_d.h +3 -1
  87. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index.h +17 -7
  88. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index_d.h +20 -17
  89. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language.h +10 -5
  90. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language_d.h +3 -1
  91. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace.h +7 -2
  92. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace_d.h +3 -1
  93. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass.h +8 -5
  94. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass_d.h +3 -1
  95. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator.h +21 -16
  96. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator_d.h +37 -1
  97. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily.h +8 -4
  98. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily_d.h +6 -2
  99. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table.h +20 -9
  100. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table_d.h +2 -1
  101. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc.h +20 -11
  102. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc_d.h +10 -8
  103. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication.h +49 -6
  104. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication_d.h +3 -1
  105. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin.h +6 -1
  106. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin_d.h +5 -1
  107. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic.h +19 -12
  108. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_d.h +2 -1
  109. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext.h +19 -5
  110. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext_d.h +7 -2
  111. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform.h +8 -5
  112. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform_d.h +3 -1
  113. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger.h +24 -8
  114. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger_d.h +4 -1
  115. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config.h +6 -3
  116. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config_d.h +3 -1
  117. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict.h +8 -3
  118. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict_d.h +3 -1
  119. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser.h +6 -3
  120. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser_d.h +3 -1
  121. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template.h +6 -3
  122. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template_d.h +3 -1
  123. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type.h +56 -24
  124. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type_d.h +70 -31
  125. data/ext/pg_query/include/{catalog → postgres/catalog}/storage.h +9 -7
  126. data/ext/pg_query/include/{commands → postgres/commands}/async.h +4 -5
  127. data/ext/pg_query/include/{commands → postgres/commands}/dbcommands.h +3 -1
  128. data/ext/pg_query/include/{commands → postgres/commands}/defrem.h +12 -24
  129. data/ext/pg_query/include/{commands → postgres/commands}/event_trigger.h +2 -2
  130. data/ext/pg_query/include/{commands → postgres/commands}/explain.h +3 -1
  131. data/ext/pg_query/include/{commands → postgres/commands}/prepare.h +1 -1
  132. data/ext/pg_query/include/{commands → postgres/commands}/tablespace.h +6 -4
  133. data/ext/pg_query/include/{commands → postgres/commands}/trigger.h +36 -25
  134. data/ext/pg_query/include/{commands → postgres/commands}/user.h +10 -4
  135. data/ext/pg_query/include/{commands → postgres/commands}/vacuum.h +140 -47
  136. data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
  137. data/ext/pg_query/include/{common → postgres/common}/file_perm.h +4 -4
  138. data/ext/pg_query/include/{common → postgres/common}/hashfn.h +1 -1
  139. data/ext/pg_query/include/postgres/common/int.h +437 -0
  140. data/ext/pg_query/include/{common → postgres/common}/keywords.h +2 -6
  141. data/ext/pg_query/include/{common → postgres/common}/kwlookup.h +2 -2
  142. data/ext/pg_query/include/postgres/common/pg_prng.h +61 -0
  143. data/ext/pg_query/include/{common → postgres/common}/relpath.h +21 -14
  144. data/ext/pg_query/include/postgres/common/scram-common.h +70 -0
  145. data/ext/pg_query/include/postgres/common/sha2.h +32 -0
  146. data/ext/pg_query/include/postgres/common/string.h +44 -0
  147. data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +125 -0
  148. data/ext/pg_query/include/{common/unicode_combining_table.h → postgres/common/unicode_nonspacing_table.h} +138 -8
  149. data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5013 -0
  150. data/ext/pg_query/include/postgres/copyfuncs.switch.c +938 -0
  151. data/ext/pg_query/include/{datatype → postgres/datatype}/timestamp.h +50 -4
  152. data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3097 -0
  153. data/ext/pg_query/include/postgres/equalfuncs.switch.c +785 -0
  154. data/ext/pg_query/include/{executor → postgres/executor}/execdesc.h +1 -1
  155. data/ext/pg_query/include/{executor → postgres/executor}/executor.h +98 -32
  156. data/ext/pg_query/include/{executor → postgres/executor}/functions.h +17 -3
  157. data/ext/pg_query/include/{executor → postgres/executor}/instrument.h +33 -16
  158. data/ext/pg_query/include/{executor → postgres/executor}/spi.h +42 -4
  159. data/ext/pg_query/include/{executor → postgres/executor}/tablefunc.h +1 -1
  160. data/ext/pg_query/include/{executor → postgres/executor}/tuptable.h +18 -11
  161. data/ext/pg_query/include/{fmgr.h → postgres/fmgr.h} +33 -8
  162. data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
  163. data/ext/pg_query/include/{funcapi.h → postgres/funcapi.h} +22 -10
  164. data/ext/pg_query/include/postgres/gram.h +1127 -0
  165. data/ext/pg_query/include/{parser → postgres}/gramparse.h +4 -4
  166. data/ext/pg_query/include/{jit → postgres/jit}/jit.h +12 -12
  167. data/ext/pg_query/include/postgres/kwlist_d.h +1119 -0
  168. data/ext/pg_query/include/postgres/lib/dshash.h +115 -0
  169. data/ext/pg_query/include/{lib → postgres/lib}/ilist.h +454 -22
  170. data/ext/pg_query/include/{lib → postgres/lib}/pairingheap.h +1 -1
  171. data/ext/pg_query/include/{lib → postgres/lib}/simplehash.h +158 -33
  172. data/ext/pg_query/include/postgres/lib/sort_template.h +432 -0
  173. data/ext/pg_query/include/{lib → postgres/lib}/stringinfo.h +3 -3
  174. data/ext/pg_query/include/{libpq → postgres/libpq}/auth.h +12 -4
  175. data/ext/pg_query/include/{libpq → postgres/libpq}/crypt.h +5 -4
  176. data/ext/pg_query/include/{libpq → postgres/libpq}/hba.h +54 -8
  177. data/ext/pg_query/include/{libpq → postgres/libpq}/libpq-be.h +45 -17
  178. data/ext/pg_query/include/{libpq → postgres/libpq}/libpq.h +31 -20
  179. data/ext/pg_query/include/{libpq → postgres/libpq}/pqcomm.h +26 -71
  180. data/ext/pg_query/include/{libpq → postgres/libpq}/pqformat.h +2 -2
  181. data/ext/pg_query/include/{libpq → postgres/libpq}/pqsignal.h +25 -13
  182. data/ext/pg_query/include/postgres/libpq/sasl.h +136 -0
  183. data/ext/pg_query/include/postgres/libpq/scram.h +37 -0
  184. data/ext/pg_query/include/{mb → postgres/mb}/pg_wchar.h +125 -25
  185. data/ext/pg_query/include/{mb → postgres/mb}/stringinfo_mb.h +1 -1
  186. data/ext/pg_query/include/{miscadmin.h → postgres/miscadmin.h} +96 -65
  187. data/ext/pg_query/include/{nodes → postgres/nodes}/bitmapset.h +11 -7
  188. data/ext/pg_query/include/{nodes → postgres/nodes}/execnodes.h +351 -103
  189. data/ext/pg_query/include/{nodes → postgres/nodes}/extensible.h +8 -4
  190. data/ext/pg_query/include/{nodes → postgres/nodes}/lockoptions.h +1 -1
  191. data/ext/pg_query/include/{nodes → postgres/nodes}/makefuncs.h +19 -6
  192. data/ext/pg_query/include/{nodes → postgres/nodes}/memnodes.h +11 -6
  193. data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
  194. data/ext/pg_query/include/{nodes → postgres/nodes}/nodeFuncs.h +89 -29
  195. data/ext/pg_query/include/{nodes → postgres/nodes}/nodes.h +100 -496
  196. data/ext/pg_query/include/postgres/nodes/nodetags.h +471 -0
  197. data/ext/pg_query/include/{nodes → postgres/nodes}/params.h +3 -3
  198. data/ext/pg_query/include/{nodes → postgres/nodes}/parsenodes.h +678 -207
  199. data/ext/pg_query/include/{nodes → postgres/nodes}/pathnodes.h +1282 -454
  200. data/ext/pg_query/include/{nodes → postgres/nodes}/pg_list.h +103 -73
  201. data/ext/pg_query/include/{nodes → postgres/nodes}/plannodes.h +474 -133
  202. data/ext/pg_query/include/{nodes → postgres/nodes}/primnodes.h +754 -254
  203. data/ext/pg_query/include/{nodes → postgres/nodes}/print.h +1 -1
  204. data/ext/pg_query/include/postgres/nodes/queryjumble.h +86 -0
  205. data/ext/pg_query/include/postgres/nodes/replnodes.h +111 -0
  206. data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
  207. data/ext/pg_query/include/{nodes → postgres/nodes}/tidbitmap.h +1 -1
  208. data/ext/pg_query/include/postgres/nodes/value.h +90 -0
  209. data/ext/pg_query/include/{optimizer → postgres/optimizer}/cost.h +14 -5
  210. data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo.h +9 -7
  211. data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo_gene.h +1 -1
  212. data/ext/pg_query/include/{optimizer → postgres/optimizer}/optimizer.h +31 -28
  213. data/ext/pg_query/include/{optimizer → postgres/optimizer}/paths.h +29 -12
  214. data/ext/pg_query/include/{optimizer → postgres/optimizer}/planmain.h +15 -17
  215. data/ext/pg_query/include/{parser → postgres/parser}/analyze.h +20 -5
  216. data/ext/pg_query/include/postgres/parser/kwlist.h +498 -0
  217. data/ext/pg_query/include/{parser → postgres/parser}/parse_agg.h +5 -8
  218. data/ext/pg_query/include/{parser → postgres/parser}/parse_coerce.h +6 -1
  219. data/ext/pg_query/include/{parser → postgres/parser}/parse_expr.h +2 -3
  220. data/ext/pg_query/include/{parser → postgres/parser}/parse_func.h +2 -1
  221. data/ext/pg_query/include/{parser → postgres/parser}/parse_node.h +41 -11
  222. data/ext/pg_query/include/{parser → postgres/parser}/parse_oper.h +3 -5
  223. data/ext/pg_query/include/{parser → postgres/parser}/parse_relation.h +11 -5
  224. data/ext/pg_query/include/{parser → postgres/parser}/parse_type.h +4 -3
  225. data/ext/pg_query/include/postgres/parser/parser.h +68 -0
  226. data/ext/pg_query/include/{parser → postgres/parser}/parsetree.h +1 -1
  227. data/ext/pg_query/include/{parser → postgres/parser}/scanner.h +2 -2
  228. data/ext/pg_query/include/{parser → postgres/parser}/scansup.h +2 -5
  229. data/ext/pg_query/include/{partitioning → postgres/partitioning}/partdefs.h +1 -1
  230. data/ext/pg_query/include/{pg_config.h → postgres/pg_config.h} +216 -228
  231. data/ext/pg_query/include/{pg_config_manual.h → postgres/pg_config_manual.h} +80 -58
  232. data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
  233. data/ext/pg_query/include/{pg_getopt.h → postgres/pg_getopt.h} +6 -6
  234. data/ext/pg_query/include/{pg_trace.h → postgres/pg_trace.h} +1 -1
  235. data/ext/pg_query/include/postgres/pgstat.h +778 -0
  236. data/ext/pg_query/include/{pgtime.h → postgres/pgtime.h} +16 -6
  237. data/ext/pg_query/include/{pl_gram.h → postgres/pl_gram.h} +116 -116
  238. data/ext/pg_query/include/{pl_reserved_kwlist.h → postgres/pl_reserved_kwlist.h} +1 -1
  239. data/ext/pg_query/include/{pl_reserved_kwlist_d.h → postgres/pl_reserved_kwlist_d.h} +10 -10
  240. data/ext/pg_query/include/{pl_unreserved_kwlist.h → postgres/pl_unreserved_kwlist.h} +3 -3
  241. data/ext/pg_query/include/{pl_unreserved_kwlist_d.h → postgres/pl_unreserved_kwlist_d.h} +60 -60
  242. data/ext/pg_query/include/{plerrcodes.h → postgres/plerrcodes.h} +9 -1
  243. data/ext/pg_query/include/{plpgsql.h → postgres/plpgsql.h} +79 -86
  244. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-arm.h +9 -3
  245. data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
  246. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-ppc.h +21 -21
  247. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-x86.h +2 -2
  248. data/ext/pg_query/include/{port → postgres/port}/atomics/fallback.h +3 -3
  249. data/ext/pg_query/include/{port → postgres/port}/atomics/generic-gcc.h +3 -3
  250. data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +101 -0
  251. data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +106 -0
  252. data/ext/pg_query/include/{port → postgres/port}/atomics/generic.h +1 -1
  253. data/ext/pg_query/include/{port → postgres/port}/atomics.h +2 -7
  254. data/ext/pg_query/include/{port → postgres/port}/pg_bitutils.h +129 -16
  255. data/ext/pg_query/include/{port → postgres/port}/pg_bswap.h +1 -1
  256. data/ext/pg_query/include/{port → postgres/port}/pg_crc32c.h +1 -1
  257. data/ext/pg_query/include/postgres/port/simd.h +375 -0
  258. data/ext/pg_query/include/postgres/port/win32/arpa/inet.h +3 -0
  259. data/ext/pg_query/include/postgres/port/win32/dlfcn.h +1 -0
  260. data/ext/pg_query/include/postgres/port/win32/grp.h +1 -0
  261. data/ext/pg_query/include/postgres/port/win32/netdb.h +7 -0
  262. data/ext/pg_query/include/postgres/port/win32/netinet/in.h +3 -0
  263. data/ext/pg_query/include/postgres/port/win32/netinet/tcp.h +7 -0
  264. data/ext/pg_query/include/postgres/port/win32/pwd.h +3 -0
  265. data/ext/pg_query/include/postgres/port/win32/sys/resource.h +20 -0
  266. data/ext/pg_query/include/postgres/port/win32/sys/select.h +3 -0
  267. data/ext/pg_query/include/postgres/port/win32/sys/socket.h +26 -0
  268. data/ext/pg_query/include/postgres/port/win32/sys/un.h +17 -0
  269. data/ext/pg_query/include/postgres/port/win32/sys/wait.h +3 -0
  270. data/ext/pg_query/include/postgres/port/win32.h +59 -0
  271. data/ext/pg_query/include/postgres/port/win32_msvc/dirent.h +34 -0
  272. data/ext/pg_query/include/postgres/port/win32_msvc/sys/file.h +1 -0
  273. data/ext/pg_query/include/postgres/port/win32_msvc/sys/param.h +1 -0
  274. data/ext/pg_query/include/postgres/port/win32_msvc/sys/time.h +1 -0
  275. data/ext/pg_query/include/postgres/port/win32_msvc/unistd.h +9 -0
  276. data/ext/pg_query/include/postgres/port/win32_msvc/utime.h +3 -0
  277. data/ext/pg_query/include/postgres/port/win32_port.h +594 -0
  278. data/ext/pg_query/include/{port.h → postgres/port.h} +107 -111
  279. data/ext/pg_query/include/postgres/portability/instr_time.h +197 -0
  280. data/ext/pg_query/include/postgres/postgres.h +579 -0
  281. data/ext/pg_query/include/{postgres_ext.h → postgres/postgres_ext.h} +0 -1
  282. data/ext/pg_query/include/{postmaster → postgres/postmaster}/autovacuum.h +17 -20
  283. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker.h +3 -2
  284. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker_internals.h +2 -2
  285. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgwriter.h +6 -6
  286. data/ext/pg_query/include/{postmaster → postgres/postmaster}/interrupt.h +1 -1
  287. data/ext/pg_query/include/{postmaster → postgres/postmaster}/pgarch.h +7 -10
  288. data/ext/pg_query/include/{postmaster → postgres/postmaster}/postmaster.h +21 -17
  289. data/ext/pg_query/include/postgres/postmaster/startup.h +41 -0
  290. data/ext/pg_query/include/{postmaster → postgres/postmaster}/syslogger.h +16 -11
  291. data/ext/pg_query/include/{postmaster → postgres/postmaster}/walwriter.h +5 -3
  292. data/ext/pg_query/include/{regex → postgres/regex}/regex.h +27 -22
  293. data/ext/pg_query/include/{replication → postgres/replication}/logicallauncher.h +8 -5
  294. data/ext/pg_query/include/postgres/replication/logicalproto.h +274 -0
  295. data/ext/pg_query/include/postgres/replication/logicalworker.h +32 -0
  296. data/ext/pg_query/include/{replication → postgres/replication}/origin.h +8 -8
  297. data/ext/pg_query/include/postgres/replication/reorderbuffer.h +753 -0
  298. data/ext/pg_query/include/{replication → postgres/replication}/slot.h +42 -12
  299. data/ext/pg_query/include/{replication → postgres/replication}/syncrep.h +6 -12
  300. data/ext/pg_query/include/{replication → postgres/replication}/walreceiver.h +158 -20
  301. data/ext/pg_query/include/{replication → postgres/replication}/walsender.h +20 -20
  302. data/ext/pg_query/include/{rewrite → postgres/rewrite}/prs2lock.h +1 -1
  303. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteHandler.h +1 -6
  304. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteManip.h +11 -2
  305. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteSupport.h +1 -1
  306. data/ext/pg_query/include/{storage → postgres/storage}/backendid.h +3 -3
  307. data/ext/pg_query/include/{storage → postgres/storage}/block.h +24 -37
  308. data/ext/pg_query/include/{storage → postgres/storage}/buf.h +1 -1
  309. data/ext/pg_query/include/{storage → postgres/storage}/bufmgr.h +196 -95
  310. data/ext/pg_query/include/{storage → postgres/storage}/bufpage.h +152 -101
  311. data/ext/pg_query/include/{storage → postgres/storage}/condition_variable.h +14 -3
  312. data/ext/pg_query/include/{storage → postgres/storage}/dsm.h +6 -6
  313. data/ext/pg_query/include/{storage → postgres/storage}/dsm_impl.h +6 -2
  314. data/ext/pg_query/include/{storage → postgres/storage}/fd.h +48 -14
  315. data/ext/pg_query/include/postgres/storage/fileset.h +40 -0
  316. data/ext/pg_query/include/{storage → postgres/storage}/ipc.h +5 -2
  317. data/ext/pg_query/include/{storage → postgres/storage}/item.h +1 -1
  318. data/ext/pg_query/include/{storage → postgres/storage}/itemid.h +1 -1
  319. data/ext/pg_query/include/{storage → postgres/storage}/itemptr.h +96 -57
  320. data/ext/pg_query/include/{storage → postgres/storage}/large_object.h +2 -2
  321. data/ext/pg_query/include/{storage → postgres/storage}/latch.h +17 -13
  322. data/ext/pg_query/include/{storage → postgres/storage}/lmgr.h +7 -1
  323. data/ext/pg_query/include/{storage → postgres/storage}/lock.h +37 -25
  324. data/ext/pg_query/include/{storage → postgres/storage}/lockdefs.h +4 -4
  325. data/ext/pg_query/include/{storage → postgres/storage}/lwlock.h +21 -33
  326. data/ext/pg_query/include/{storage → postgres/storage}/lwlocknames.h +0 -1
  327. data/ext/pg_query/include/{storage → postgres/storage}/off.h +1 -1
  328. data/ext/pg_query/include/{storage → postgres/storage}/pg_sema.h +1 -1
  329. data/ext/pg_query/include/{storage → postgres/storage}/pg_shmem.h +9 -7
  330. data/ext/pg_query/include/{storage → postgres/storage}/pmsignal.h +15 -4
  331. data/ext/pg_query/include/{storage → postgres/storage}/predicate.h +5 -5
  332. data/ext/pg_query/include/{storage → postgres/storage}/proc.h +200 -67
  333. data/ext/pg_query/include/postgres/storage/procarray.h +99 -0
  334. data/ext/pg_query/include/{storage → postgres/storage}/proclist_types.h +1 -1
  335. data/ext/pg_query/include/{storage → postgres/storage}/procsignal.h +5 -7
  336. data/ext/pg_query/include/postgres/storage/relfilelocator.h +99 -0
  337. data/ext/pg_query/include/{storage → postgres/storage}/s_lock.h +118 -298
  338. data/ext/pg_query/include/{storage → postgres/storage}/sharedfileset.h +3 -11
  339. data/ext/pg_query/include/{storage → postgres/storage}/shm_mq.h +5 -4
  340. data/ext/pg_query/include/{storage → postgres/storage}/shm_toc.h +1 -1
  341. data/ext/pg_query/include/{storage → postgres/storage}/shmem.h +1 -23
  342. data/ext/pg_query/include/{storage → postgres/storage}/sinval.h +5 -5
  343. data/ext/pg_query/include/{storage → postgres/storage}/sinvaladt.h +4 -2
  344. data/ext/pg_query/include/{storage → postgres/storage}/smgr.h +21 -17
  345. data/ext/pg_query/include/{storage → postgres/storage}/spin.h +2 -2
  346. data/ext/pg_query/include/{storage → postgres/storage}/standby.h +17 -9
  347. data/ext/pg_query/include/{storage → postgres/storage}/standbydefs.h +2 -2
  348. data/ext/pg_query/include/{storage → postgres/storage}/sync.h +9 -5
  349. data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtag.h +7 -2
  350. data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtaglist.h +3 -2
  351. data/ext/pg_query/include/{tcop → postgres/tcop}/deparse_utility.h +1 -1
  352. data/ext/pg_query/include/{tcop → postgres/tcop}/dest.h +1 -3
  353. data/ext/pg_query/include/{tcop → postgres/tcop}/fastpath.h +1 -2
  354. data/ext/pg_query/include/{tcop → postgres/tcop}/pquery.h +7 -1
  355. data/ext/pg_query/include/{tcop → postgres/tcop}/tcopprot.h +19 -14
  356. data/ext/pg_query/include/{tcop → postgres/tcop}/utility.h +7 -3
  357. data/ext/pg_query/include/{tsearch → postgres/tsearch}/ts_cache.h +3 -5
  358. data/ext/pg_query/include/{utils → postgres/utils}/acl.h +37 -71
  359. data/ext/pg_query/include/{utils → postgres/utils}/aclchk_internal.h +1 -1
  360. data/ext/pg_query/include/{utils → postgres/utils}/array.h +26 -2
  361. data/ext/pg_query/include/postgres/utils/backend_progress.h +45 -0
  362. data/ext/pg_query/include/postgres/utils/backend_status.h +342 -0
  363. data/ext/pg_query/include/{utils → postgres/utils}/builtins.h +20 -11
  364. data/ext/pg_query/include/{utils → postgres/utils}/bytea.h +3 -2
  365. data/ext/pg_query/include/{utils → postgres/utils}/catcache.h +1 -1
  366. data/ext/pg_query/include/{utils → postgres/utils}/date.h +37 -9
  367. data/ext/pg_query/include/{utils → postgres/utils}/datetime.h +48 -27
  368. data/ext/pg_query/include/{utils → postgres/utils}/datum.h +9 -1
  369. data/ext/pg_query/include/{utils → postgres/utils}/dsa.h +5 -1
  370. data/ext/pg_query/include/{utils → postgres/utils}/elog.h +154 -48
  371. data/ext/pg_query/include/{utils → postgres/utils}/errcodes.h +2 -0
  372. data/ext/pg_query/include/{utils → postgres/utils}/expandeddatum.h +14 -3
  373. data/ext/pg_query/include/{utils → postgres/utils}/expandedrecord.h +14 -4
  374. data/ext/pg_query/include/{utils → postgres/utils}/float.h +13 -12
  375. data/ext/pg_query/include/{utils → postgres/utils}/fmgroids.h +1353 -696
  376. data/ext/pg_query/include/{utils → postgres/utils}/fmgrprotos.h +243 -18
  377. data/ext/pg_query/include/{utils → postgres/utils}/fmgrtab.h +6 -5
  378. data/ext/pg_query/include/{utils → postgres/utils}/guc.h +120 -121
  379. data/ext/pg_query/include/postgres/utils/guc_hooks.h +163 -0
  380. data/ext/pg_query/include/{utils → postgres/utils}/guc_tables.h +71 -21
  381. data/ext/pg_query/include/{utils → postgres/utils}/hsearch.h +15 -11
  382. data/ext/pg_query/include/{utils → postgres/utils}/inval.h +7 -3
  383. data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
  384. data/ext/pg_query/include/{utils → postgres/utils}/lsyscache.h +16 -1
  385. data/ext/pg_query/include/{utils → postgres/utils}/memdebug.h +1 -1
  386. data/ext/pg_query/include/{utils → postgres/utils}/memutils.h +14 -53
  387. data/ext/pg_query/include/postgres/utils/memutils_internal.h +136 -0
  388. data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +237 -0
  389. data/ext/pg_query/include/{utils → postgres/utils}/numeric.h +38 -9
  390. data/ext/pg_query/include/{utils → postgres/utils}/palloc.h +33 -4
  391. data/ext/pg_query/include/{utils → postgres/utils}/partcache.h +3 -2
  392. data/ext/pg_query/include/{utils → postgres/utils}/pg_locale.h +37 -21
  393. data/ext/pg_query/include/postgres/utils/pgstat_internal.h +814 -0
  394. data/ext/pg_query/include/{utils → postgres/utils}/plancache.h +6 -5
  395. data/ext/pg_query/include/{utils → postgres/utils}/portal.h +12 -1
  396. data/ext/pg_query/include/{utils → postgres/utils}/probes.h +59 -59
  397. data/ext/pg_query/include/postgres/utils/ps_status.h +47 -0
  398. data/ext/pg_query/include/{utils → postgres/utils}/queryenvironment.h +1 -1
  399. data/ext/pg_query/include/postgres/utils/regproc.h +39 -0
  400. data/ext/pg_query/include/{utils → postgres/utils}/rel.h +129 -61
  401. data/ext/pg_query/include/{utils → postgres/utils}/relcache.h +21 -14
  402. data/ext/pg_query/include/{utils → postgres/utils}/reltrigger.h +1 -1
  403. data/ext/pg_query/include/{utils → postgres/utils}/resowner.h +1 -1
  404. data/ext/pg_query/include/{utils → postgres/utils}/ruleutils.h +9 -1
  405. data/ext/pg_query/include/{utils → postgres/utils}/sharedtuplestore.h +1 -1
  406. data/ext/pg_query/include/{utils → postgres/utils}/snapmgr.h +38 -15
  407. data/ext/pg_query/include/{utils → postgres/utils}/snapshot.h +14 -1
  408. data/ext/pg_query/include/{utils → postgres/utils}/sortsupport.h +117 -2
  409. data/ext/pg_query/include/{utils → postgres/utils}/syscache.h +9 -1
  410. data/ext/pg_query/include/{utils → postgres/utils}/timeout.h +11 -4
  411. data/ext/pg_query/include/{utils → postgres/utils}/timestamp.h +46 -15
  412. data/ext/pg_query/include/{utils → postgres/utils}/tuplesort.h +209 -41
  413. data/ext/pg_query/include/{utils → postgres/utils}/tuplestore.h +2 -2
  414. data/ext/pg_query/include/{utils → postgres/utils}/typcache.h +24 -17
  415. data/ext/pg_query/include/{utils → postgres/utils}/varlena.h +17 -3
  416. data/ext/pg_query/include/postgres/utils/wait_event.h +294 -0
  417. data/ext/pg_query/include/{utils → postgres/utils}/xml.h +18 -8
  418. data/ext/pg_query/include/{postgres.h → postgres/varatt.h} +65 -471
  419. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +7494 -6382
  420. data/ext/pg_query/include/protobuf/pg_query.pb.h +116922 -84792
  421. data/ext/pg_query/include/protobuf-c/protobuf-c.h +7 -3
  422. data/ext/pg_query/include/protobuf-c.h +7 -3
  423. data/ext/pg_query/pg_query.c +10 -1
  424. data/ext/pg_query/pg_query.pb-c.c +21026 -17002
  425. data/ext/pg_query/pg_query_deparse.c +1 -9896
  426. data/ext/pg_query/pg_query_fingerprint.c +162 -50
  427. data/ext/pg_query/pg_query_fingerprint.h +3 -1
  428. data/ext/pg_query/pg_query_internal.h +1 -1
  429. data/ext/pg_query/pg_query_json_plpgsql.c +56 -12
  430. data/ext/pg_query/pg_query_normalize.c +259 -64
  431. data/ext/pg_query/pg_query_outfuncs.h +1 -0
  432. data/ext/pg_query/pg_query_outfuncs_json.c +71 -16
  433. data/ext/pg_query/pg_query_outfuncs_protobuf.c +73 -12
  434. data/ext/pg_query/pg_query_parse.c +47 -5
  435. data/ext/pg_query/pg_query_parse_plpgsql.c +86 -21
  436. data/ext/pg_query/pg_query_readfuncs_protobuf.c +43 -8
  437. data/ext/pg_query/pg_query_ruby.c +6 -1
  438. data/ext/pg_query/pg_query_ruby_freebsd.sym +2 -0
  439. data/ext/pg_query/pg_query_scan.c +3 -2
  440. data/ext/pg_query/pg_query_split.c +6 -5
  441. data/ext/pg_query/postgres_deparse.c +11067 -0
  442. data/ext/pg_query/postgres_deparse.h +9 -0
  443. data/ext/pg_query/protobuf-c.c +34 -27
  444. data/ext/pg_query/src_backend_catalog_namespace.c +27 -10
  445. data/ext/pg_query/src_backend_catalog_pg_proc.c +4 -1
  446. data/ext/pg_query/src_backend_commands_define.c +11 -1
  447. data/ext/pg_query/src_backend_nodes_bitmapset.c +13 -70
  448. data/ext/pg_query/src_backend_nodes_copyfuncs.c +103 -5894
  449. data/ext/pg_query/src_backend_nodes_equalfuncs.c +102 -3830
  450. data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
  451. data/ext/pg_query/src_backend_nodes_list.c +99 -12
  452. data/ext/pg_query/src_backend_nodes_makefuncs.c +99 -4
  453. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +325 -131
  454. data/ext/pg_query/src_backend_nodes_nodes.c +38 -0
  455. data/ext/pg_query/src_backend_nodes_value.c +28 -19
  456. data/ext/pg_query/src_backend_parser_gram.c +36104 -32074
  457. data/ext/pg_query/src_backend_parser_parser.c +53 -8
  458. data/ext/pg_query/src_backend_parser_scan.c +4893 -3701
  459. data/ext/pg_query/src_backend_parser_scansup.c +4 -28
  460. data/ext/pg_query/src_backend_storage_ipc_ipc.c +13 -4
  461. data/ext/pg_query/src_backend_tcop_postgres.c +133 -105
  462. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +140 -0
  463. data/ext/pg_query/src_backend_utils_adt_datum.c +17 -7
  464. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  465. data/ext/pg_query/src_backend_utils_adt_format_type.c +6 -2
  466. data/ext/pg_query/src_backend_utils_adt_numutils.c +489 -0
  467. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +187 -19
  468. data/ext/pg_query/src_backend_utils_error_assert.c +17 -18
  469. data/ext/pg_query/src_backend_utils_error_elog.c +513 -318
  470. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +44 -17
  471. data/ext/pg_query/src_backend_utils_init_globals.c +9 -6
  472. data/ext/pg_query/src_backend_utils_mb_mbutils.c +74 -131
  473. data/ext/pg_query/src_backend_utils_misc_guc_tables.c +492 -0
  474. data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +163 -0
  475. data/ext/pg_query/src_backend_utils_mmgr_aset.c +453 -314
  476. data/ext/pg_query/src_backend_utils_mmgr_generation.c +1039 -0
  477. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +549 -76
  478. data/ext/pg_query/src_backend_utils_mmgr_slab.c +1021 -0
  479. data/ext/pg_query/src_common_encnames.c +4 -1
  480. data/ext/pg_query/src_common_hashfn.c +420 -0
  481. data/ext/pg_query/src_common_keywords.c +15 -2
  482. data/ext/pg_query/src_common_kwlist_d.h +545 -498
  483. data/ext/pg_query/src_common_kwlookup.c +1 -1
  484. data/ext/pg_query/src_common_psprintf.c +1 -1
  485. data/ext/pg_query/src_common_stringinfo.c +4 -4
  486. data/ext/pg_query/src_common_wchar.c +717 -113
  487. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +49 -22
  488. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -18
  489. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1136 -1195
  490. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  491. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +10 -10
  492. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +2 -2
  493. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +60 -60
  494. data/ext/pg_query/src_port_pg_bitutils.c +103 -40
  495. data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
  496. data/ext/pg_query/src_port_qsort.c +12 -224
  497. data/ext/pg_query/src_port_snprintf.c +51 -29
  498. data/ext/pg_query/src_port_strerror.c +9 -19
  499. data/ext/pg_query/src_port_strlcpy.c +79 -0
  500. data/lib/pg_query/deparse.rb +7 -1
  501. data/lib/pg_query/filter_columns.rb +7 -5
  502. data/lib/pg_query/fingerprint.rb +21 -9
  503. data/lib/pg_query/node.rb +18 -13
  504. data/lib/pg_query/param_refs.rb +1 -1
  505. data/lib/pg_query/parse.rb +141 -50
  506. data/lib/pg_query/pg_query_pb.rb +175 -3031
  507. data/lib/pg_query/treewalker.rb +26 -2
  508. data/lib/pg_query/truncate.rb +54 -8
  509. data/lib/pg_query/version.rb +1 -1
  510. data/lib/pg_query.rb +0 -1
  511. metadata +443 -380
  512. data/ext/pg_query/guc-file.c +0 -0
  513. data/ext/pg_query/include/access/rmgr.h +0 -35
  514. data/ext/pg_query/include/access/xloginsert.h +0 -64
  515. data/ext/pg_query/include/bootstrap/bootstrap.h +0 -62
  516. data/ext/pg_query/include/catalog/genbki.h +0 -64
  517. data/ext/pg_query/include/catalog/indexing.h +0 -366
  518. data/ext/pg_query/include/commands/variable.h +0 -38
  519. data/ext/pg_query/include/common/ip.h +0 -37
  520. data/ext/pg_query/include/common/string.h +0 -19
  521. data/ext/pg_query/include/getaddrinfo.h +0 -162
  522. data/ext/pg_query/include/kwlist_d.h +0 -1072
  523. data/ext/pg_query/include/nodes/value.h +0 -61
  524. data/ext/pg_query/include/parser/gram.h +0 -1067
  525. data/ext/pg_query/include/parser/kwlist.h +0 -477
  526. data/ext/pg_query/include/parser/parse_clause.h +0 -54
  527. data/ext/pg_query/include/parser/parse_collate.h +0 -27
  528. data/ext/pg_query/include/parser/parse_target.h +0 -46
  529. data/ext/pg_query/include/parser/parser.h +0 -41
  530. data/ext/pg_query/include/pg_config_os.h +0 -8
  531. data/ext/pg_query/include/pgstat.h +0 -1487
  532. data/ext/pg_query/include/portability/instr_time.h +0 -256
  533. data/ext/pg_query/include/postmaster/fork_process.h +0 -17
  534. data/ext/pg_query/include/replication/logicalproto.h +0 -110
  535. data/ext/pg_query/include/replication/logicalworker.h +0 -19
  536. data/ext/pg_query/include/replication/reorderbuffer.h +0 -467
  537. data/ext/pg_query/include/storage/relfilenode.h +0 -99
  538. data/ext/pg_query/include/utils/dynahash.h +0 -19
  539. data/ext/pg_query/include/utils/pg_lsn.h +0 -29
  540. data/ext/pg_query/include/utils/pidfile.h +0 -56
  541. data/ext/pg_query/include/utils/ps_status.h +0 -25
  542. data/ext/pg_query/include/utils/regproc.h +0 -28
  543. data/ext/pg_query/include/utils/rls.h +0 -50
  544. data/ext/pg_query/include/utils/tzparser.h +0 -39
  545. data/ext/pg_query/src_backend_libpq_pqcomm.c +0 -651
  546. data/ext/pg_query/src_backend_parser_parse_expr.c +0 -313
  547. data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2230
  548. data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -370
  549. data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1086
  550. data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1831
  551. data/ext/pg_query/src_common_string.c +0 -86
  552. data/ext/pg_query/src_port_erand48.c +0 -127
  553. data/ext/pg_query/src_port_pgsleep.c +0 -69
  554. data/ext/pg_query/src_port_random.c +0 -31
  555. data/ext/pg_query/src_port_strnlen.c +0 -39
  556. data/lib/pg_query/json_field_names.rb +0 -1402
  557. /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
@@ -5,7 +5,7 @@
5
5
  * and related modules.
6
6
  *
7
7
  *
8
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
8
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
9
9
  * Portions Copyright (c) 1994, Regents of the University of California
10
10
  *
11
11
  * src/include/executor/execdesc.h
@@ -4,7 +4,7 @@
4
4
  * support for the POSTGRES executor module
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/executor/executor.h
@@ -36,6 +36,11 @@
36
36
  * of startup should occur. However, error checks (such as permission checks)
37
37
  * should be performed.
38
38
  *
39
+ * EXPLAIN_GENERIC can only be used together with EXPLAIN_ONLY. It indicates
40
+ * that a generic plan is being shown using EXPLAIN (GENERIC_PLAN), which
41
+ * means that missing parameter values must be tolerated. Currently, the only
42
+ * effect is to suppress execution-time partition pruning.
43
+ *
39
44
  * REWIND indicates that the plan node should try to efficiently support
40
45
  * rescans without parameter changes. (Nodes must support ExecReScan calls
41
46
  * in any case, but if this flag was not given, they are at liberty to do it
@@ -52,13 +57,18 @@
52
57
  * AfterTriggerBeginQuery/AfterTriggerEndQuery. This does not necessarily
53
58
  * mean that the plan can't queue any AFTER triggers; just that the caller
54
59
  * is responsible for there being a trigger context for them to be queued in.
60
+ *
61
+ * WITH_NO_DATA indicates that we are performing REFRESH MATERIALIZED VIEW
62
+ * ... WITH NO DATA. Currently, the only effect is to suppress errors about
63
+ * scanning unpopulated materialized views.
55
64
  */
56
- #define EXEC_FLAG_EXPLAIN_ONLY 0x0001 /* EXPLAIN, no ANALYZE */
57
- #define EXEC_FLAG_REWIND 0x0002 /* need efficient rescan */
58
- #define EXEC_FLAG_BACKWARD 0x0004 /* need backward scan */
59
- #define EXEC_FLAG_MARK 0x0008 /* need mark/restore */
60
- #define EXEC_FLAG_SKIP_TRIGGERS 0x0010 /* skip AfterTrigger calls */
61
- #define EXEC_FLAG_WITH_NO_DATA 0x0020 /* rel scannability doesn't matter */
65
+ #define EXEC_FLAG_EXPLAIN_ONLY 0x0001 /* EXPLAIN, no ANALYZE */
66
+ #define EXEC_FLAG_EXPLAIN_GENERIC 0x0002 /* EXPLAIN (GENERIC_PLAN) */
67
+ #define EXEC_FLAG_REWIND 0x0004 /* need efficient rescan */
68
+ #define EXEC_FLAG_BACKWARD 0x0008 /* need backward scan */
69
+ #define EXEC_FLAG_MARK 0x0010 /* need mark/restore */
70
+ #define EXEC_FLAG_SKIP_TRIGGERS 0x0020 /* skip AfterTrigger setup */
71
+ #define EXEC_FLAG_WITH_NO_DATA 0x0040 /* REFRESH ... WITH NO DATA */
62
72
 
63
73
 
64
74
  /* Hook for plugins to get control in ExecutorStart() */
@@ -80,8 +90,10 @@ extern PGDLLIMPORT ExecutorFinish_hook_type ExecutorFinish_hook;
80
90
  typedef void (*ExecutorEnd_hook_type) (QueryDesc *queryDesc);
81
91
  extern PGDLLIMPORT ExecutorEnd_hook_type ExecutorEnd_hook;
82
92
 
83
- /* Hook for plugins to get control in ExecCheckRTPerms() */
84
- typedef bool (*ExecutorCheckPerms_hook_type) (List *, bool);
93
+ /* Hook for plugins to get control in ExecCheckPermissions() */
94
+ typedef bool (*ExecutorCheckPerms_hook_type) (List *rangeTable,
95
+ List *rtePermInfos,
96
+ bool ereport_on_violation);
85
97
  extern PGDLLIMPORT ExecutorCheckPerms_hook_type ExecutorCheckPerms_hook;
86
98
 
87
99
 
@@ -156,9 +168,6 @@ extern void ResetTupleHashTable(TupleHashTable hashtable);
156
168
  */
157
169
  extern JunkFilter *ExecInitJunkFilter(List *targetList,
158
170
  TupleTableSlot *slot);
159
- extern JunkFilter *ExecInitJunkFilterInsertion(List *targetList,
160
- TupleDesc cleanTupType,
161
- TupleTableSlot *slot);
162
171
  extern JunkFilter *ExecInitJunkFilterConversion(List *targetList,
163
172
  TupleDesc cleanTupType,
164
173
  TupleTableSlot *slot);
@@ -166,11 +175,24 @@ extern AttrNumber ExecFindJunkAttribute(JunkFilter *junkfilter,
166
175
  const char *attrName);
167
176
  extern AttrNumber ExecFindJunkAttributeInTlist(List *targetlist,
168
177
  const char *attrName);
169
- extern Datum ExecGetJunkAttribute(TupleTableSlot *slot, AttrNumber attno,
170
- bool *isNull);
171
178
  extern TupleTableSlot *ExecFilterJunk(JunkFilter *junkfilter,
172
179
  TupleTableSlot *slot);
173
180
 
181
+ /*
182
+ * ExecGetJunkAttribute
183
+ *
184
+ * Given a junk filter's input tuple (slot) and a junk attribute's number
185
+ * previously found by ExecFindJunkAttribute, extract & return the value and
186
+ * isNull flag of the attribute.
187
+ */
188
+ #ifndef FRONTEND
189
+ static inline Datum
190
+ ExecGetJunkAttribute(TupleTableSlot *slot, AttrNumber attno, bool *isNull)
191
+ {
192
+ Assert(attno > 0);
193
+ return slot_getattr(slot, attno, isNull);
194
+ }
195
+ #endif
174
196
 
175
197
  /*
176
198
  * prototypes from functions in execMain.c
@@ -186,15 +208,17 @@ extern void standard_ExecutorFinish(QueryDesc *queryDesc);
186
208
  extern void ExecutorEnd(QueryDesc *queryDesc);
187
209
  extern void standard_ExecutorEnd(QueryDesc *queryDesc);
188
210
  extern void ExecutorRewind(QueryDesc *queryDesc);
189
- extern bool ExecCheckRTPerms(List *rangeTable, bool ereport_on_violation);
211
+ extern bool ExecCheckPermissions(List *rangeTable,
212
+ List *rteperminfos, bool ereport_on_violation);
190
213
  extern void CheckValidResultRel(ResultRelInfo *resultRelInfo, CmdType operation);
191
214
  extern void InitResultRelInfo(ResultRelInfo *resultRelInfo,
192
215
  Relation resultRelationDesc,
193
216
  Index resultRelationIndex,
194
217
  ResultRelInfo *partition_root_rri,
195
218
  int instrument_options);
196
- extern ResultRelInfo *ExecGetTriggerResultRel(EState *estate, Oid relid);
197
- extern void ExecCleanUpTriggerState(EState *estate);
219
+ extern ResultRelInfo *ExecGetTriggerResultRel(EState *estate, Oid relid,
220
+ ResultRelInfo *rootRelInfo);
221
+ extern List *ExecGetAncestorResultRels(EState *estate, ResultRelInfo *resultRelInfo);
198
222
  extern void ExecConstraints(ResultRelInfo *resultRelInfo,
199
223
  TupleTableSlot *slot, EState *estate);
200
224
  extern bool ExecPartitionCheck(ResultRelInfo *resultRelInfo,
@@ -207,9 +231,10 @@ extern LockTupleMode ExecUpdateLockMode(EState *estate, ResultRelInfo *relinfo);
207
231
  extern ExecRowMark *ExecFindRowMark(EState *estate, Index rti, bool missing_ok);
208
232
  extern ExecAuxRowMark *ExecBuildAuxRowMark(ExecRowMark *erm, List *targetlist);
209
233
  extern TupleTableSlot *EvalPlanQual(EPQState *epqstate, Relation relation,
210
- Index rti, TupleTableSlot *testslot);
234
+ Index rti, TupleTableSlot *inputslot);
211
235
  extern void EvalPlanQualInit(EPQState *epqstate, EState *parentestate,
212
- Plan *subplan, List *auxrowmarks, int epqParam);
236
+ Plan *subplan, List *auxrowmarks,
237
+ int epqParam, List *resultRelations);
213
238
  extern void EvalPlanQualSetPlan(EPQState *epqstate,
214
239
  Plan *subplan, List *auxrowmarks);
215
240
  extern TupleTableSlot *EvalPlanQualSlot(EPQState *epqstate,
@@ -228,7 +253,7 @@ extern PlanState *ExecInitNode(Plan *node, EState *estate, int eflags);
228
253
  extern void ExecSetExecProcNode(PlanState *node, ExecProcNodeMtd function);
229
254
  extern Node *MultiExecProcNode(PlanState *node);
230
255
  extern void ExecEndNode(PlanState *node);
231
- extern bool ExecShutdownNode(PlanState *node);
256
+ extern void ExecShutdownNode(PlanState *node);
232
257
  extern void ExecSetTupleBound(int64 tuples_needed, PlanState *child_node);
233
258
 
234
259
 
@@ -266,11 +291,25 @@ extern ExprState *ExecBuildGroupingEqual(TupleDesc ldesc, TupleDesc rdesc,
266
291
  const Oid *eqfunctions,
267
292
  const Oid *collations,
268
293
  PlanState *parent);
294
+ extern ExprState *ExecBuildParamSetEqual(TupleDesc desc,
295
+ const TupleTableSlotOps *lops,
296
+ const TupleTableSlotOps *rops,
297
+ const Oid *eqfunctions,
298
+ const Oid *collations,
299
+ const List *param_exprs,
300
+ PlanState *parent);
269
301
  extern ProjectionInfo *ExecBuildProjectionInfo(List *targetList,
270
302
  ExprContext *econtext,
271
303
  TupleTableSlot *slot,
272
304
  PlanState *parent,
273
305
  TupleDesc inputDesc);
306
+ extern ProjectionInfo *ExecBuildUpdateProjection(List *targetList,
307
+ bool evalTargetList,
308
+ List *targetColnos,
309
+ TupleDesc relDesc,
310
+ ExprContext *econtext,
311
+ TupleTableSlot *slot,
312
+ PlanState *parent);
274
313
  extern ExprState *ExecPrepareExpr(Expr *node, EState *estate);
275
314
  extern ExprState *ExecPrepareQual(List *qual, EState *estate);
276
315
  extern ExprState *ExecPrepareCheck(List *qual, EState *estate);
@@ -407,7 +446,7 @@ ExecQualAndReset(ExprState *state, ExprContext *econtext)
407
446
  }
408
447
  #endif
409
448
 
410
- extern bool ExecCheck(ExprState *state, ExprContext *context);
449
+ extern bool ExecCheck(ExprState *state, ExprContext *econtext);
411
450
 
412
451
  /*
413
452
  * prototypes from functions in execSRF.c
@@ -436,7 +475,7 @@ typedef bool (*ExecScanRecheckMtd) (ScanState *node, TupleTableSlot *slot);
436
475
  extern TupleTableSlot *ExecScan(ScanState *node, ExecScanAccessMtd accessMtd,
437
476
  ExecScanRecheckMtd recheckMtd);
438
477
  extern void ExecAssignScanProjectionInfo(ScanState *node);
439
- extern void ExecAssignScanProjectionInfoWithVarno(ScanState *node, Index varno);
478
+ extern void ExecAssignScanProjectionInfoWithVarno(ScanState *node, int varno);
440
479
  extern void ExecScanReScan(ScanState *node);
441
480
 
442
481
  /*
@@ -448,7 +487,7 @@ extern void ExecInitResultSlot(PlanState *planstate,
448
487
  extern void ExecInitResultTupleSlotTL(PlanState *planstate,
449
488
  const TupleTableSlotOps *tts_ops);
450
489
  extern void ExecInitScanTupleSlot(EState *estate, ScanState *scanstate,
451
- TupleDesc tupleDesc,
490
+ TupleDesc tupledesc,
452
491
  const TupleTableSlotOps *tts_ops);
453
492
  extern TupleTableSlot *ExecInitExtraTupleSlot(EState *estate,
454
493
  TupleDesc tupledesc,
@@ -529,7 +568,7 @@ extern const TupleTableSlotOps *ExecGetResultSlotOps(PlanState *planstate,
529
568
  extern void ExecAssignProjectionInfo(PlanState *planstate,
530
569
  TupleDesc inputDesc);
531
570
  extern void ExecConditionalAssignProjectionInfo(PlanState *planstate,
532
- TupleDesc inputDesc, Index varno);
571
+ TupleDesc inputDesc, int varno);
533
572
  extern void ExecFreeExprContext(PlanState *planstate);
534
573
  extern void ExecAssignScanType(ScanState *scanstate, TupleDesc tupDesc);
535
574
  extern void ExecCreateScanSlotFromOuterPlan(EState *estate,
@@ -540,7 +579,9 @@ extern bool ExecRelationIsTargetRelation(EState *estate, Index scanrelid);
540
579
 
541
580
  extern Relation ExecOpenScanRelation(EState *estate, Index scanrelid, int eflags);
542
581
 
543
- extern void ExecInitRangeTable(EState *estate, List *rangeTable);
582
+ extern void ExecInitRangeTable(EState *estate, List *rangeTable, List *permInfos);
583
+ extern void ExecCloseRangeTableRelations(EState *estate);
584
+ extern void ExecCloseResultRelations(EState *estate);
544
585
 
545
586
  static inline RangeTblEntry *
546
587
  exec_rt_fetch(Index rti, EState *estate)
@@ -549,6 +590,8 @@ exec_rt_fetch(Index rti, EState *estate)
549
590
  }
550
591
 
551
592
  extern Relation ExecGetRangeTableRelation(EState *estate, Index rti);
593
+ extern void ExecInitResultRelation(EState *estate, ResultRelInfo *resultRelInfo,
594
+ Index rti);
552
595
 
553
596
  extern int executor_errposition(EState *estate, int location);
554
597
 
@@ -570,7 +613,10 @@ extern int ExecCleanTargetListLength(List *targetlist);
570
613
  extern TupleTableSlot *ExecGetTriggerOldSlot(EState *estate, ResultRelInfo *relInfo);
571
614
  extern TupleTableSlot *ExecGetTriggerNewSlot(EState *estate, ResultRelInfo *relInfo);
572
615
  extern TupleTableSlot *ExecGetReturningSlot(EState *estate, ResultRelInfo *relInfo);
616
+ extern TupleConversionMap *ExecGetChildToRootMap(ResultRelInfo *resultRelInfo);
617
+ extern TupleConversionMap *ExecGetRootToChildMap(ResultRelInfo *resultRelInfo, EState *estate);
573
618
 
619
+ extern Oid ExecGetResultRelCheckAsUser(ResultRelInfo *relInfo, EState *estate);
574
620
  extern Bitmapset *ExecGetInsertedCols(ResultRelInfo *relinfo, EState *estate);
575
621
  extern Bitmapset *ExecGetUpdatedCols(ResultRelInfo *relinfo, EState *estate);
576
622
  extern Bitmapset *ExecGetExtraUpdatedCols(ResultRelInfo *relinfo, EState *estate);
@@ -581,10 +627,16 @@ extern Bitmapset *ExecGetAllUpdatedCols(ResultRelInfo *relinfo, EState *estate);
581
627
  */
582
628
  extern void ExecOpenIndices(ResultRelInfo *resultRelInfo, bool speculative);
583
629
  extern void ExecCloseIndices(ResultRelInfo *resultRelInfo);
584
- extern List *ExecInsertIndexTuples(TupleTableSlot *slot, EState *estate, bool noDupErr,
585
- bool *specConflict, List *arbiterIndexes);
586
- extern bool ExecCheckIndexConstraints(TupleTableSlot *slot, EState *estate,
587
- ItemPointer conflictTid, List *arbiterIndexes);
630
+ extern List *ExecInsertIndexTuples(ResultRelInfo *resultRelInfo,
631
+ TupleTableSlot *slot, EState *estate,
632
+ bool update,
633
+ bool noDupErr,
634
+ bool *specConflict, List *arbiterIndexes,
635
+ bool onlySummarizing);
636
+ extern bool ExecCheckIndexConstraints(ResultRelInfo *resultRelInfo,
637
+ TupleTableSlot *slot,
638
+ EState *estate, ItemPointer conflictTid,
639
+ List *arbiterIndexes);
588
640
  extern void check_exclusion_constraint(Relation heap, Relation index,
589
641
  IndexInfo *indexInfo,
590
642
  ItemPointer tupleid,
@@ -601,14 +653,28 @@ extern bool RelationFindReplTupleByIndex(Relation rel, Oid idxoid,
601
653
  extern bool RelationFindReplTupleSeq(Relation rel, LockTupleMode lockmode,
602
654
  TupleTableSlot *searchslot, TupleTableSlot *outslot);
603
655
 
604
- extern void ExecSimpleRelationInsert(EState *estate, TupleTableSlot *slot);
605
- extern void ExecSimpleRelationUpdate(EState *estate, EPQState *epqstate,
656
+ extern void ExecSimpleRelationInsert(ResultRelInfo *resultRelInfo,
657
+ EState *estate, TupleTableSlot *slot);
658
+ extern void ExecSimpleRelationUpdate(ResultRelInfo *resultRelInfo,
659
+ EState *estate, EPQState *epqstate,
606
660
  TupleTableSlot *searchslot, TupleTableSlot *slot);
607
- extern void ExecSimpleRelationDelete(EState *estate, EPQState *epqstate,
661
+ extern void ExecSimpleRelationDelete(ResultRelInfo *resultRelInfo,
662
+ EState *estate, EPQState *epqstate,
608
663
  TupleTableSlot *searchslot);
609
664
  extern void CheckCmdReplicaIdentity(Relation rel, CmdType cmd);
610
665
 
611
666
  extern void CheckSubscriptionRelkind(char relkind, const char *nspname,
612
667
  const char *relname);
613
668
 
669
+ /*
670
+ * prototypes from functions in nodeModifyTable.c
671
+ */
672
+ extern TupleTableSlot *ExecGetUpdateNewTuple(ResultRelInfo *relinfo,
673
+ TupleTableSlot *planSlot,
674
+ TupleTableSlot *oldSlot);
675
+ extern ResultRelInfo *ExecLookupResultRelByOid(ModifyTableState *node,
676
+ Oid resultoid,
677
+ bool missing_ok,
678
+ bool update_cache);
679
+
614
680
  #endif /* EXECUTOR_H */
@@ -4,7 +4,7 @@
4
4
  * Declarations for execution of SQL-language functions.
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/executor/functions.h
@@ -17,8 +17,22 @@
17
17
  #include "nodes/execnodes.h"
18
18
  #include "tcop/dest.h"
19
19
 
20
- /* This struct is known only within executor/functions.c */
21
- typedef struct SQLFunctionParseInfo *SQLFunctionParseInfoPtr;
20
+ /*
21
+ * Data structure needed by the parser callback hooks to resolve parameter
22
+ * references during parsing of a SQL function's body. This is separate from
23
+ * SQLFunctionCache since we sometimes do parsing separately from execution.
24
+ */
25
+ typedef struct SQLFunctionParseInfo
26
+ {
27
+ char *fname; /* function's name */
28
+ int nargs; /* number of input arguments */
29
+ Oid *argtypes; /* resolved types of input arguments */
30
+ char **argnames; /* names of input arguments; NULL if none */
31
+ /* Note that argnames[i] can be NULL, if some args are unnamed */
32
+ Oid collation; /* function's input collation, if known */
33
+ } SQLFunctionParseInfo;
34
+
35
+ typedef SQLFunctionParseInfo *SQLFunctionParseInfoPtr;
22
36
 
23
37
  extern Datum fmgr_sql(PG_FUNCTION_ARGS);
24
38
 
@@ -4,7 +4,7 @@
4
4
  * definitions for run-time statistics collection
5
5
  *
6
6
  *
7
- * Copyright (c) 2001-2020, PostgreSQL Global Development Group
7
+ * Copyright (c) 2001-2023, PostgreSQL Global Development Group
8
8
  *
9
9
  * src/include/executor/instrument.h
10
10
  *
@@ -16,26 +16,40 @@
16
16
  #include "portability/instr_time.h"
17
17
 
18
18
 
19
+ /*
20
+ * BufferUsage and WalUsage counters keep being incremented infinitely,
21
+ * i.e., must never be reset to zero, so that we can calculate how much
22
+ * the counters are incremented in an arbitrary period.
23
+ */
19
24
  typedef struct BufferUsage
20
25
  {
21
- long shared_blks_hit; /* # of shared buffer hits */
22
- long shared_blks_read; /* # of shared disk blocks read */
23
- long shared_blks_dirtied; /* # of shared blocks dirtied */
24
- long shared_blks_written; /* # of shared disk blocks written */
25
- long local_blks_hit; /* # of local buffer hits */
26
- long local_blks_read; /* # of local disk blocks read */
27
- long local_blks_dirtied; /* # of shared blocks dirtied */
28
- long local_blks_written; /* # of local disk blocks written */
29
- long temp_blks_read; /* # of temp blocks read */
30
- long temp_blks_written; /* # of temp blocks written */
31
- instr_time blk_read_time; /* time spent reading */
32
- instr_time blk_write_time; /* time spent writing */
26
+ int64 shared_blks_hit; /* # of shared buffer hits */
27
+ int64 shared_blks_read; /* # of shared disk blocks read */
28
+ int64 shared_blks_dirtied; /* # of shared blocks dirtied */
29
+ int64 shared_blks_written; /* # of shared disk blocks written */
30
+ int64 local_blks_hit; /* # of local buffer hits */
31
+ int64 local_blks_read; /* # of local disk blocks read */
32
+ int64 local_blks_dirtied; /* # of local blocks dirtied */
33
+ int64 local_blks_written; /* # of local disk blocks written */
34
+ int64 temp_blks_read; /* # of temp blocks read */
35
+ int64 temp_blks_written; /* # of temp blocks written */
36
+ instr_time blk_read_time; /* time spent reading blocks */
37
+ instr_time blk_write_time; /* time spent writing blocks */
38
+ instr_time temp_blk_read_time; /* time spent reading temp blocks */
39
+ instr_time temp_blk_write_time; /* time spent writing temp blocks */
33
40
  } BufferUsage;
34
41
 
42
+ /*
43
+ * WalUsage tracks only WAL activity like WAL records generation that
44
+ * can be measured per query and is displayed by EXPLAIN command,
45
+ * pg_stat_statements extension, etc. It does not track other WAL activity
46
+ * like WAL writes that it's not worth measuring per query. That's tracked
47
+ * by WAL global statistics counters in WalStats, instead.
48
+ */
35
49
  typedef struct WalUsage
36
50
  {
37
- long wal_records; /* # of WAL records produced */
38
- long wal_fpi; /* # of WAL full page images produced */
51
+ int64 wal_records; /* # of WAL records produced */
52
+ int64 wal_fpi; /* # of WAL full page images produced */
39
53
  uint64 wal_bytes; /* size of WAL records produced */
40
54
  } WalUsage;
41
55
 
@@ -55,6 +69,7 @@ typedef struct Instrumentation
55
69
  bool need_timer; /* true if we need timer data */
56
70
  bool need_bufusage; /* true if we need buffer usage data */
57
71
  bool need_walusage; /* true if we need WAL usage data */
72
+ bool async_mode; /* true if node is in async mode */
58
73
  /* Info about current plan cycle: */
59
74
  bool running; /* true if we've completed first tuple */
60
75
  instr_time starttime; /* start time of current iteration of node */
@@ -84,10 +99,12 @@ typedef struct WorkerInstrumentation
84
99
  extern PGDLLIMPORT BufferUsage pgBufferUsage;
85
100
  extern PGDLLIMPORT WalUsage pgWalUsage;
86
101
 
87
- extern Instrumentation *InstrAlloc(int n, int instrument_options);
102
+ extern Instrumentation *InstrAlloc(int n, int instrument_options,
103
+ bool async_mode);
88
104
  extern void InstrInit(Instrumentation *instr, int instrument_options);
89
105
  extern void InstrStartNode(Instrumentation *instr);
90
106
  extern void InstrStopNode(Instrumentation *instr, double nTuples);
107
+ extern void InstrUpdateTupleCount(Instrumentation *instr, double nTuples);
91
108
  extern void InstrEndLoop(Instrumentation *instr);
92
109
  extern void InstrAggNode(Instrumentation *dst, Instrumentation *add);
93
110
  extern void InstrStartParallelQuery(void);
@@ -3,7 +3,7 @@
3
3
  * spi.h
4
4
  * Server Programming Interface public declarations
5
5
  *
6
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * src/include/executor/spi.h
@@ -15,7 +15,7 @@
15
15
 
16
16
  #include "commands/trigger.h"
17
17
  #include "lib/ilist.h"
18
- #include "nodes/parsenodes.h"
18
+ #include "parser/parser.h"
19
19
  #include "utils/portal.h"
20
20
 
21
21
 
@@ -33,6 +33,35 @@ typedef struct SPITupleTable
33
33
  SubTransactionId subid; /* subxact in which tuptable was created */
34
34
  } SPITupleTable;
35
35
 
36
+ /* Optional arguments for SPI_prepare_extended */
37
+ typedef struct SPIPrepareOptions
38
+ {
39
+ ParserSetupHook parserSetup;
40
+ void *parserSetupArg;
41
+ RawParseMode parseMode;
42
+ int cursorOptions;
43
+ } SPIPrepareOptions;
44
+
45
+ /* Optional arguments for SPI_execute[_plan]_extended */
46
+ typedef struct SPIExecuteOptions
47
+ {
48
+ ParamListInfo params;
49
+ bool read_only;
50
+ bool allow_nonatomic;
51
+ bool must_return_tuples;
52
+ uint64 tcount;
53
+ DestReceiver *dest;
54
+ ResourceOwner owner;
55
+ } SPIExecuteOptions;
56
+
57
+ /* Optional arguments for SPI_cursor_parse_open */
58
+ typedef struct SPIParseOpenOptions
59
+ {
60
+ ParamListInfo params;
61
+ int cursorOptions;
62
+ bool read_only;
63
+ } SPIParseOpenOptions;
64
+
36
65
  /* Plans are opaque structs for standard users of SPI */
37
66
  typedef struct _SPI_plan *SPIPlanPtr;
38
67
 
@@ -67,6 +96,7 @@ typedef struct _SPI_plan *SPIPlanPtr;
67
96
  #define SPI_OK_REL_REGISTER 15
68
97
  #define SPI_OK_REL_UNREGISTER 16
69
98
  #define SPI_OK_TD_REGISTER 17
99
+ #define SPI_OK_MERGE 18
70
100
 
71
101
  #define SPI_OPT_NONATOMIC (1 << 0)
72
102
 
@@ -85,8 +115,12 @@ extern int SPI_connect(void);
85
115
  extern int SPI_connect_ext(int options);
86
116
  extern int SPI_finish(void);
87
117
  extern int SPI_execute(const char *src, bool read_only, long tcount);
118
+ extern int SPI_execute_extended(const char *src,
119
+ const SPIExecuteOptions *options);
88
120
  extern int SPI_execute_plan(SPIPlanPtr plan, Datum *Values, const char *Nulls,
89
121
  bool read_only, long tcount);
122
+ extern int SPI_execute_plan_extended(SPIPlanPtr plan,
123
+ const SPIExecuteOptions *options);
90
124
  extern int SPI_execute_plan_with_paramlist(SPIPlanPtr plan,
91
125
  ParamListInfo params,
92
126
  bool read_only, long tcount);
@@ -105,6 +139,8 @@ extern int SPI_execute_with_args(const char *src,
105
139
  extern SPIPlanPtr SPI_prepare(const char *src, int nargs, Oid *argtypes);
106
140
  extern SPIPlanPtr SPI_prepare_cursor(const char *src, int nargs, Oid *argtypes,
107
141
  int cursorOptions);
142
+ extern SPIPlanPtr SPI_prepare_extended(const char *src,
143
+ const SPIPrepareOptions *options);
108
144
  extern SPIPlanPtr SPI_prepare_params(const char *src,
109
145
  ParserSetupHook parserSetup,
110
146
  void *parserSetupArg,
@@ -138,7 +174,7 @@ extern void *SPI_palloc(Size size);
138
174
  extern void *SPI_repalloc(void *pointer, Size size);
139
175
  extern void SPI_pfree(void *pointer);
140
176
  extern Datum SPI_datumTransfer(Datum value, bool typByVal, int typLen);
141
- extern void SPI_freetuple(HeapTuple pointer);
177
+ extern void SPI_freetuple(HeapTuple tuple);
142
178
  extern void SPI_freetuptable(SPITupleTable *tuptable);
143
179
 
144
180
  extern Portal SPI_cursor_open(const char *name, SPIPlanPtr plan,
@@ -150,6 +186,9 @@ extern Portal SPI_cursor_open_with_args(const char *name,
150
186
  bool read_only, int cursorOptions);
151
187
  extern Portal SPI_cursor_open_with_paramlist(const char *name, SPIPlanPtr plan,
152
188
  ParamListInfo params, bool read_only);
189
+ extern Portal SPI_cursor_parse_open(const char *name,
190
+ const char *src,
191
+ const SPIParseOpenOptions *options);
153
192
  extern Portal SPI_cursor_find(const char *name);
154
193
  extern void SPI_cursor_fetch(Portal portal, bool forward, long count);
155
194
  extern void SPI_cursor_move(Portal portal, bool forward, long count);
@@ -167,7 +206,6 @@ extern void SPI_commit_and_chain(void);
167
206
  extern void SPI_rollback(void);
168
207
  extern void SPI_rollback_and_chain(void);
169
208
 
170
- extern void SPICleanup(void);
171
209
  extern void AtEOXact_SPI(bool isCommit);
172
210
  extern void AtEOSubXact_SPI(bool isCommit, SubTransactionId mySubid);
173
211
  extern bool SPI_inside_nonatomic_context(void);
@@ -3,7 +3,7 @@
3
3
  * tablefunc.h
4
4
  * interface for TableFunc executor node
5
5
  *
6
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * src/include/executor/tablefunc.h
@@ -4,7 +4,7 @@
4
4
  * tuple table support stuff
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/executor/tuptable.h
@@ -46,7 +46,6 @@
46
46
  * A "minimal" tuple is handled similarly to a palloc'd regular tuple.
47
47
  * At present, minimal tuples never are stored in buffers, so there is no
48
48
  * parallel to case 1. Note that a minimal tuple has no "system columns".
49
- * (Actually, it could have an OID, but we have no need to access the OID.)
50
49
  *
51
50
  * A "virtual" tuple is an optimization used to minimize physical data copying
52
51
  * in a nest of plan nodes. Until materialized pass-by-reference Datums in
@@ -68,8 +67,8 @@
68
67
  * A TupleTableSlot can also be "empty", indicated by flag TTS_FLAG_EMPTY set
69
68
  * in tts_flags, holding no valid data. This is the only valid state for a
70
69
  * freshly-created slot that has not yet had a tuple descriptor assigned to
71
- * it. In this state, TTS_SHOULDFREE should not be set in tts_flags, tts_tuple
72
- * must be NULL and tts_nvalid zero.
70
+ * it. In this state, TTS_FLAG_SHOULDFREE should not be set in tts_flags and
71
+ * tts_nvalid should be set to zero.
73
72
  *
74
73
  * The tupleDescriptor is simply referenced, not copied, by the TupleTableSlot
75
74
  * code. The caller of ExecSetSlotDescriptor() is responsible for providing
@@ -79,8 +78,8 @@
79
78
  * mechanism to do more. However, the slot will increment the tupdesc
80
79
  * reference count if a reference-counted tupdesc is supplied.)
81
80
  *
82
- * When TTS_SHOULDFREE is set in tts_flags, the physical tuple is "owned" by
83
- * the slot and should be freed when the slot's reference to the tuple is
81
+ * When TTS_FLAG_SHOULDFREE is set in tts_flags, the physical tuple is "owned"
82
+ * by the slot and should be freed when the slot's reference to the tuple is
84
83
  * dropped.
85
84
  *
86
85
  * tts_values/tts_isnull are allocated either when the slot is created (when
@@ -237,6 +236,8 @@ extern PGDLLIMPORT const TupleTableSlotOps TTSOpsBufferHeapTuple;
237
236
 
238
237
  typedef struct VirtualTupleTableSlot
239
238
  {
239
+ pg_node_attr(abstract)
240
+
240
241
  TupleTableSlot base;
241
242
 
242
243
  char *data; /* data for materialized slots */
@@ -244,6 +245,8 @@ typedef struct VirtualTupleTableSlot
244
245
 
245
246
  typedef struct HeapTupleTableSlot
246
247
  {
248
+ pg_node_attr(abstract)
249
+
247
250
  TupleTableSlot base;
248
251
 
249
252
  #define FIELDNO_HEAPTUPLETABLESLOT_TUPLE 1
@@ -256,19 +259,23 @@ typedef struct HeapTupleTableSlot
256
259
  /* heap tuple residing in a buffer */
257
260
  typedef struct BufferHeapTupleTableSlot
258
261
  {
262
+ pg_node_attr(abstract)
263
+
259
264
  HeapTupleTableSlot base;
260
265
 
261
266
  /*
262
267
  * If buffer is not InvalidBuffer, then the slot is holding a pin on the
263
268
  * indicated buffer page; drop the pin when we release the slot's
264
269
  * reference to that buffer. (TTS_FLAG_SHOULDFREE should not be set in
265
- * such a case, since presumably tts_tuple is pointing into the buffer.)
270
+ * such a case, since presumably base.tuple is pointing into the buffer.)
266
271
  */
267
272
  Buffer buffer; /* tuple's buffer, or InvalidBuffer */
268
273
  } BufferHeapTupleTableSlot;
269
274
 
270
275
  typedef struct MinimalTupleTableSlot
271
276
  {
277
+ pg_node_attr(abstract)
278
+
272
279
  TupleTableSlot base;
273
280
 
274
281
  /*
@@ -366,7 +373,7 @@ slot_getallattrs(TupleTableSlot *slot)
366
373
  static inline bool
367
374
  slot_attisnull(TupleTableSlot *slot, int attnum)
368
375
  {
369
- AssertArg(attnum > 0);
376
+ Assert(attnum > 0);
370
377
 
371
378
  if (attnum > slot->tts_nvalid)
372
379
  slot_getsomeattrs(slot, attnum);
@@ -381,7 +388,7 @@ static inline Datum
381
388
  slot_getattr(TupleTableSlot *slot, int attnum,
382
389
  bool *isnull)
383
390
  {
384
- AssertArg(attnum > 0);
391
+ Assert(attnum > 0);
385
392
 
386
393
  if (attnum > slot->tts_nvalid)
387
394
  slot_getsomeattrs(slot, attnum);
@@ -401,7 +408,7 @@ slot_getattr(TupleTableSlot *slot, int attnum,
401
408
  static inline Datum
402
409
  slot_getsysattr(TupleTableSlot *slot, int attnum, bool *isnull)
403
410
  {
404
- AssertArg(attnum < 0); /* caller error */
411
+ Assert(attnum < 0); /* caller error */
405
412
 
406
413
  if (attnum == TableOidAttributeNumber)
407
414
  {
@@ -475,7 +482,7 @@ static inline TupleTableSlot *
475
482
  ExecCopySlot(TupleTableSlot *dstslot, TupleTableSlot *srcslot)
476
483
  {
477
484
  Assert(!TTS_EMPTY(srcslot));
478
- AssertArg(srcslot != dstslot);
485
+ Assert(srcslot != dstslot);
479
486
 
480
487
  dstslot->tts_ops->copyslot(dstslot, srcslot);
481
488