pg_query 4.2.1 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (531) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +31 -0
  3. data/README.md +6 -8
  4. data/Rakefile +5 -6
  5. data/ext/pg_query/extconf.rb +14 -4
  6. data/ext/pg_query/include/pg_query.h +27 -3
  7. data/ext/pg_query/include/pg_query_enum_defs.c +311 -149
  8. data/ext/pg_query/include/pg_query_fingerprint_conds.c +545 -489
  9. data/ext/pg_query/include/pg_query_fingerprint_defs.c +5092 -4432
  10. data/ext/pg_query/include/pg_query_outfuncs_conds.c +385 -343
  11. data/ext/pg_query/include/pg_query_outfuncs_defs.c +1294 -1161
  12. data/ext/pg_query/include/pg_query_readfuncs_conds.c +137 -123
  13. data/ext/pg_query/include/pg_query_readfuncs_defs.c +1657 -1496
  14. data/ext/pg_query/include/{access → postgres/access}/amapi.h +3 -1
  15. data/ext/pg_query/include/{access → postgres/access}/attmap.h +5 -3
  16. data/ext/pg_query/include/{access → postgres/access}/attnum.h +1 -1
  17. data/ext/pg_query/include/{access → postgres/access}/clog.h +1 -1
  18. data/ext/pg_query/include/{access → postgres/access}/commit_ts.h +1 -1
  19. data/ext/pg_query/include/{access → postgres/access}/detoast.h +1 -1
  20. data/ext/pg_query/include/{access → postgres/access}/genam.h +7 -5
  21. data/ext/pg_query/include/{access → postgres/access}/gin.h +16 -3
  22. data/ext/pg_query/include/{access → postgres/access}/htup.h +1 -1
  23. data/ext/pg_query/include/{access → postgres/access}/htup_details.h +6 -2
  24. data/ext/pg_query/include/{access → postgres/access}/itup.h +61 -58
  25. data/ext/pg_query/include/{access → postgres/access}/parallel.h +2 -2
  26. data/ext/pg_query/include/{access → postgres/access}/printtup.h +1 -1
  27. data/ext/pg_query/include/{access → postgres/access}/relation.h +1 -1
  28. data/ext/pg_query/include/{access → postgres/access}/relscan.h +1 -1
  29. data/ext/pg_query/include/{access → postgres/access}/rmgrlist.h +2 -2
  30. data/ext/pg_query/include/{access → postgres/access}/sdir.h +12 -3
  31. data/ext/pg_query/include/{access → postgres/access}/skey.h +1 -1
  32. data/ext/pg_query/include/{access → postgres/access}/stratnum.h +1 -1
  33. data/ext/pg_query/include/{access → postgres/access}/sysattr.h +1 -1
  34. data/ext/pg_query/include/{access → postgres/access}/table.h +1 -1
  35. data/ext/pg_query/include/{access → postgres/access}/tableam.h +68 -45
  36. data/ext/pg_query/include/{access → postgres/access}/toast_compression.h +1 -1
  37. data/ext/pg_query/include/{access → postgres/access}/transam.h +1 -1
  38. data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
  39. data/ext/pg_query/include/{access → postgres/access}/tupconvert.h +5 -2
  40. data/ext/pg_query/include/{access → postgres/access}/tupdesc.h +2 -2
  41. data/ext/pg_query/include/{access → postgres/access}/tupmacs.h +58 -98
  42. data/ext/pg_query/include/{access → postgres/access}/twophase.h +2 -2
  43. data/ext/pg_query/include/{access → postgres/access}/xact.h +25 -18
  44. data/ext/pg_query/include/{access → postgres/access}/xlog.h +15 -16
  45. data/ext/pg_query/include/{access → postgres/access}/xlog_internal.h +100 -62
  46. data/ext/pg_query/include/postgres/access/xlogbackup.h +41 -0
  47. data/ext/pg_query/include/{access → postgres/access}/xlogdefs.h +6 -25
  48. data/ext/pg_query/include/{access → postgres/access}/xlogprefetcher.h +1 -1
  49. data/ext/pg_query/include/{access → postgres/access}/xlogreader.h +7 -6
  50. data/ext/pg_query/include/{access → postgres/access}/xlogrecord.h +17 -5
  51. data/ext/pg_query/include/{access → postgres/access}/xlogrecovery.h +4 -3
  52. data/ext/pg_query/include/postgres/archive/archive_module.h +59 -0
  53. data/ext/pg_query/include/{c.h → postgres/c.h} +144 -156
  54. data/ext/pg_query/include/{catalog → postgres/catalog}/catalog.h +4 -3
  55. data/ext/pg_query/include/{catalog → postgres/catalog}/catversion.h +6 -2
  56. data/ext/pg_query/include/{catalog → postgres/catalog}/dependency.h +5 -4
  57. data/ext/pg_query/include/{catalog → postgres/catalog}/genbki.h +7 -6
  58. data/ext/pg_query/include/{catalog → postgres/catalog}/index.h +4 -4
  59. data/ext/pg_query/include/{catalog → postgres/catalog}/indexing.h +1 -1
  60. data/ext/pg_query/include/{catalog → postgres/catalog}/namespace.h +2 -2
  61. data/ext/pg_query/include/{catalog → postgres/catalog}/objectaccess.h +10 -8
  62. data/ext/pg_query/include/{catalog → postgres/catalog}/objectaddress.h +3 -3
  63. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate.h +1 -1
  64. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate_d.h +1 -1
  65. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am.h +1 -1
  66. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am_d.h +1 -1
  67. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute.h +19 -17
  68. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute_d.h +19 -19
  69. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid.h +1 -1
  70. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid_d.h +3 -1
  71. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class.h +1 -1
  72. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class_d.h +1 -1
  73. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation.h +3 -1
  74. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation_d.h +4 -3
  75. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint.h +2 -2
  76. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint_d.h +1 -1
  77. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_control.h +9 -1
  78. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion.h +2 -2
  79. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion_d.h +1 -1
  80. data/ext/pg_query/include/postgres/catalog/pg_database.h +124 -0
  81. data/ext/pg_query/include/postgres/catalog/pg_database_d.h +52 -0
  82. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend.h +1 -1
  83. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend_d.h +1 -1
  84. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger.h +1 -1
  85. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger_d.h +1 -1
  86. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index.h +1 -1
  87. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index_d.h +1 -1
  88. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language.h +1 -1
  89. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language_d.h +1 -1
  90. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace.h +1 -1
  91. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace_d.h +1 -1
  92. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass.h +1 -1
  93. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass_d.h +1 -1
  94. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator.h +1 -1
  95. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator_d.h +1 -1
  96. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily.h +3 -2
  97. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily_d.h +4 -2
  98. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table.h +1 -1
  99. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table_d.h +1 -1
  100. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc.h +1 -1
  101. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc_d.h +1 -1
  102. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication.h +2 -5
  103. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication_d.h +1 -1
  104. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin.h +1 -1
  105. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin_d.h +1 -1
  106. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic.h +1 -1
  107. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_d.h +1 -1
  108. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext.h +1 -1
  109. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext_d.h +1 -1
  110. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform.h +1 -1
  111. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform_d.h +1 -1
  112. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger.h +1 -1
  113. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger_d.h +1 -1
  114. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config.h +1 -1
  115. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config_d.h +1 -1
  116. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict.h +1 -1
  117. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict_d.h +1 -1
  118. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser.h +1 -1
  119. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser_d.h +1 -1
  120. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template.h +1 -1
  121. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template_d.h +1 -1
  122. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type.h +1 -1
  123. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type_d.h +1 -1
  124. data/ext/pg_query/include/{catalog → postgres/catalog}/storage.h +6 -6
  125. data/ext/pg_query/include/{commands → postgres/commands}/async.h +1 -1
  126. data/ext/pg_query/include/{commands → postgres/commands}/dbcommands.h +2 -1
  127. data/ext/pg_query/include/{commands → postgres/commands}/defrem.h +2 -1
  128. data/ext/pg_query/include/{commands → postgres/commands}/event_trigger.h +1 -1
  129. data/ext/pg_query/include/{commands → postgres/commands}/explain.h +3 -1
  130. data/ext/pg_query/include/{commands → postgres/commands}/prepare.h +1 -1
  131. data/ext/pg_query/include/{commands → postgres/commands}/tablespace.h +4 -4
  132. data/ext/pg_query/include/{commands → postgres/commands}/trigger.h +15 -14
  133. data/ext/pg_query/include/{commands → postgres/commands}/user.h +9 -3
  134. data/ext/pg_query/include/{commands → postgres/commands}/vacuum.h +60 -14
  135. data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
  136. data/ext/pg_query/include/{common → postgres/common}/file_perm.h +1 -1
  137. data/ext/pg_query/include/{common → postgres/common}/hashfn.h +1 -1
  138. data/ext/pg_query/include/postgres/common/int.h +437 -0
  139. data/ext/pg_query/include/{common → postgres/common}/keywords.h +1 -1
  140. data/ext/pg_query/include/{common → postgres/common}/kwlookup.h +2 -2
  141. data/ext/pg_query/include/{common → postgres/common}/pg_prng.h +3 -2
  142. data/ext/pg_query/include/{common → postgres/common}/relpath.h +20 -13
  143. data/ext/pg_query/include/postgres/common/scram-common.h +70 -0
  144. data/ext/pg_query/include/postgres/common/sha2.h +32 -0
  145. data/ext/pg_query/include/{common → postgres/common}/string.h +5 -3
  146. data/ext/pg_query/include/{common → postgres/common}/unicode_east_asian_fw_table.h +10 -10
  147. data/ext/pg_query/include/{common/unicode_combining_table.h → postgres/common/unicode_nonspacing_table.h} +31 -13
  148. data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5013 -0
  149. data/ext/pg_query/include/postgres/copyfuncs.switch.c +938 -0
  150. data/ext/pg_query/include/{datatype → postgres/datatype}/timestamp.h +11 -4
  151. data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3097 -0
  152. data/ext/pg_query/include/postgres/equalfuncs.switch.c +785 -0
  153. data/ext/pg_query/include/{executor → postgres/executor}/execdesc.h +1 -1
  154. data/ext/pg_query/include/{executor → postgres/executor}/executor.h +34 -17
  155. data/ext/pg_query/include/{executor → postgres/executor}/functions.h +1 -1
  156. data/ext/pg_query/include/{executor → postgres/executor}/instrument.h +1 -1
  157. data/ext/pg_query/include/{executor → postgres/executor}/spi.h +2 -2
  158. data/ext/pg_query/include/{executor → postgres/executor}/tablefunc.h +1 -1
  159. data/ext/pg_query/include/{executor → postgres/executor}/tuptable.h +18 -11
  160. data/ext/pg_query/include/{fmgr.h → postgres/fmgr.h} +21 -2
  161. data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
  162. data/ext/pg_query/include/{funcapi.h → postgres/funcapi.h} +12 -12
  163. data/ext/pg_query/include/postgres/gram.h +1127 -0
  164. data/ext/pg_query/include/{parser → postgres}/gramparse.h +4 -4
  165. data/ext/pg_query/include/{jit → postgres/jit}/jit.h +2 -2
  166. data/ext/pg_query/include/postgres/kwlist_d.h +1119 -0
  167. data/ext/pg_query/include/{lib → postgres/lib}/dshash.h +4 -1
  168. data/ext/pg_query/include/{lib → postgres/lib}/ilist.h +435 -22
  169. data/ext/pg_query/include/{lib → postgres/lib}/pairingheap.h +1 -1
  170. data/ext/pg_query/include/{lib → postgres/lib}/simplehash.h +9 -9
  171. data/ext/pg_query/include/{lib → postgres/lib}/sort_template.h +1 -1
  172. data/ext/pg_query/include/{lib → postgres/lib}/stringinfo.h +3 -3
  173. data/ext/pg_query/include/{libpq → postgres/libpq}/auth.h +8 -2
  174. data/ext/pg_query/include/{libpq → postgres/libpq}/crypt.h +1 -1
  175. data/ext/pg_query/include/{libpq → postgres/libpq}/hba.h +24 -17
  176. data/ext/pg_query/include/{libpq → postgres/libpq}/libpq-be.h +36 -25
  177. data/ext/pg_query/include/{libpq → postgres/libpq}/libpq.h +1 -1
  178. data/ext/pg_query/include/{libpq → postgres/libpq}/pqcomm.h +10 -41
  179. data/ext/pg_query/include/{libpq → postgres/libpq}/pqformat.h +2 -2
  180. data/ext/pg_query/include/{libpq → postgres/libpq}/pqsignal.h +22 -10
  181. data/ext/pg_query/include/postgres/libpq/sasl.h +136 -0
  182. data/ext/pg_query/include/postgres/libpq/scram.h +37 -0
  183. data/ext/pg_query/include/{mb → postgres/mb}/pg_wchar.h +35 -18
  184. data/ext/pg_query/include/{mb → postgres/mb}/stringinfo_mb.h +1 -1
  185. data/ext/pg_query/include/{miscadmin.h → postgres/miscadmin.h} +27 -15
  186. data/ext/pg_query/include/{nodes → postgres/nodes}/bitmapset.h +11 -7
  187. data/ext/pg_query/include/{nodes → postgres/nodes}/execnodes.h +83 -30
  188. data/ext/pg_query/include/{nodes → postgres/nodes}/extensible.h +5 -3
  189. data/ext/pg_query/include/{nodes → postgres/nodes}/lockoptions.h +1 -1
  190. data/ext/pg_query/include/{nodes → postgres/nodes}/makefuncs.h +14 -2
  191. data/ext/pg_query/include/{nodes → postgres/nodes}/memnodes.h +7 -4
  192. data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
  193. data/ext/pg_query/include/{nodes → postgres/nodes}/nodeFuncs.h +89 -29
  194. data/ext/pg_query/include/{nodes → postgres/nodes}/nodes.h +96 -511
  195. data/ext/pg_query/include/postgres/nodes/nodetags.h +471 -0
  196. data/ext/pg_query/include/{nodes → postgres/nodes}/params.h +3 -3
  197. data/ext/pg_query/include/{nodes → postgres/nodes}/parsenodes.h +377 -139
  198. data/ext/pg_query/include/{nodes → postgres/nodes}/pathnodes.h +1090 -440
  199. data/ext/pg_query/include/{nodes → postgres/nodes}/pg_list.h +30 -7
  200. data/ext/pg_query/include/{nodes → postgres/nodes}/plannodes.h +367 -124
  201. data/ext/pg_query/include/{nodes → postgres/nodes}/primnodes.h +670 -222
  202. data/ext/pg_query/include/{nodes → postgres/nodes}/print.h +1 -1
  203. data/ext/pg_query/include/{utils → postgres/nodes}/queryjumble.h +5 -7
  204. data/ext/pg_query/include/postgres/nodes/replnodes.h +111 -0
  205. data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
  206. data/ext/pg_query/include/{nodes → postgres/nodes}/tidbitmap.h +1 -1
  207. data/ext/pg_query/include/{nodes → postgres/nodes}/value.h +12 -2
  208. data/ext/pg_query/include/{optimizer → postgres/optimizer}/cost.h +6 -4
  209. data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo.h +1 -1
  210. data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo_gene.h +1 -1
  211. data/ext/pg_query/include/{optimizer → postgres/optimizer}/optimizer.h +8 -8
  212. data/ext/pg_query/include/{optimizer → postgres/optimizer}/paths.h +16 -7
  213. data/ext/pg_query/include/{optimizer → postgres/optimizer}/planmain.h +3 -6
  214. data/ext/pg_query/include/{parser → postgres/parser}/analyze.h +4 -3
  215. data/ext/pg_query/include/{parser → postgres/parser}/kwlist.h +12 -1
  216. data/ext/pg_query/include/{parser → postgres/parser}/parse_agg.h +4 -2
  217. data/ext/pg_query/include/{parser → postgres/parser}/parse_coerce.h +3 -1
  218. data/ext/pg_query/include/{parser → postgres/parser}/parse_expr.h +1 -1
  219. data/ext/pg_query/include/{parser → postgres/parser}/parse_func.h +1 -1
  220. data/ext/pg_query/include/{parser → postgres/parser}/parse_node.h +22 -4
  221. data/ext/pg_query/include/{parser → postgres/parser}/parse_oper.h +3 -3
  222. data/ext/pg_query/include/{parser → postgres/parser}/parse_relation.h +8 -3
  223. data/ext/pg_query/include/{parser → postgres/parser}/parse_type.h +4 -3
  224. data/ext/pg_query/include/{parser → postgres/parser}/parser.h +4 -4
  225. data/ext/pg_query/include/{parser → postgres/parser}/parsetree.h +1 -1
  226. data/ext/pg_query/include/{parser → postgres/parser}/scanner.h +2 -2
  227. data/ext/pg_query/include/{parser → postgres/parser}/scansup.h +1 -1
  228. data/ext/pg_query/include/{partitioning → postgres/partitioning}/partdefs.h +1 -1
  229. data/ext/pg_query/include/{pg_config.h → postgres/pg_config.h} +158 -218
  230. data/ext/pg_query/include/{pg_config_manual.h → postgres/pg_config_manual.h} +8 -46
  231. data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
  232. data/ext/pg_query/include/{pg_getopt.h → postgres/pg_getopt.h} +1 -1
  233. data/ext/pg_query/include/{pg_trace.h → postgres/pg_trace.h} +1 -1
  234. data/ext/pg_query/include/{pgstat.h → postgres/pgstat.h} +173 -94
  235. data/ext/pg_query/include/{pgtime.h → postgres/pgtime.h} +3 -3
  236. data/ext/pg_query/include/{pl_gram.h → postgres/pl_gram.h} +66 -64
  237. data/ext/pg_query/include/{pl_reserved_kwlist.h → postgres/pl_reserved_kwlist.h} +1 -1
  238. data/ext/pg_query/include/{pl_reserved_kwlist_d.h → postgres/pl_reserved_kwlist_d.h} +1 -1
  239. data/ext/pg_query/include/{pl_unreserved_kwlist.h → postgres/pl_unreserved_kwlist.h} +2 -1
  240. data/ext/pg_query/include/{pl_unreserved_kwlist_d.h → postgres/pl_unreserved_kwlist_d.h} +48 -46
  241. data/ext/pg_query/include/{plpgsql.h → postgres/plpgsql.h} +28 -33
  242. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-arm.h +3 -3
  243. data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
  244. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-ppc.h +21 -21
  245. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-x86.h +2 -2
  246. data/ext/pg_query/include/{port → postgres/port}/atomics/fallback.h +3 -3
  247. data/ext/pg_query/include/{port → postgres/port}/atomics/generic-gcc.h +1 -1
  248. data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +101 -0
  249. data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +106 -0
  250. data/ext/pg_query/include/{port → postgres/port}/atomics/generic.h +1 -1
  251. data/ext/pg_query/include/{port → postgres/port}/atomics.h +2 -7
  252. data/ext/pg_query/include/{port → postgres/port}/pg_bitutils.h +62 -25
  253. data/ext/pg_query/include/{port → postgres/port}/pg_bswap.h +1 -1
  254. data/ext/pg_query/include/{port → postgres/port}/pg_crc32c.h +1 -1
  255. data/ext/pg_query/include/postgres/port/simd.h +375 -0
  256. data/ext/pg_query/include/postgres/port/win32/arpa/inet.h +3 -0
  257. data/ext/pg_query/include/postgres/port/win32/dlfcn.h +1 -0
  258. data/ext/pg_query/include/postgres/port/win32/grp.h +1 -0
  259. data/ext/pg_query/include/postgres/port/win32/netdb.h +7 -0
  260. data/ext/pg_query/include/postgres/port/win32/netinet/in.h +3 -0
  261. data/ext/pg_query/include/postgres/port/win32/netinet/tcp.h +7 -0
  262. data/ext/pg_query/include/postgres/port/win32/pwd.h +3 -0
  263. data/ext/pg_query/include/postgres/port/win32/sys/resource.h +20 -0
  264. data/ext/pg_query/include/postgres/port/win32/sys/select.h +3 -0
  265. data/ext/pg_query/include/postgres/port/win32/sys/socket.h +26 -0
  266. data/ext/pg_query/include/postgres/port/win32/sys/un.h +17 -0
  267. data/ext/pg_query/include/postgres/port/win32/sys/wait.h +3 -0
  268. data/ext/pg_query/include/postgres/port/win32.h +59 -0
  269. data/ext/pg_query/include/postgres/port/win32_msvc/dirent.h +34 -0
  270. data/ext/pg_query/include/postgres/port/win32_msvc/sys/file.h +1 -0
  271. data/ext/pg_query/include/postgres/port/win32_msvc/sys/param.h +1 -0
  272. data/ext/pg_query/include/postgres/port/win32_msvc/sys/time.h +1 -0
  273. data/ext/pg_query/include/postgres/port/win32_msvc/unistd.h +9 -0
  274. data/ext/pg_query/include/postgres/port/win32_msvc/utime.h +3 -0
  275. data/ext/pg_query/include/postgres/port/win32_port.h +594 -0
  276. data/ext/pg_query/include/{port.h → postgres/port.h} +42 -75
  277. data/ext/pg_query/include/postgres/portability/instr_time.h +197 -0
  278. data/ext/pg_query/include/postgres/postgres.h +579 -0
  279. data/ext/pg_query/include/{postgres_ext.h → postgres/postgres_ext.h} +0 -1
  280. data/ext/pg_query/include/{postmaster → postgres/postmaster}/autovacuum.h +1 -4
  281. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker.h +2 -2
  282. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker_internals.h +1 -1
  283. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgwriter.h +2 -2
  284. data/ext/pg_query/include/{postmaster → postgres/postmaster}/interrupt.h +1 -1
  285. data/ext/pg_query/include/postgres/postmaster/pgarch.h +36 -0
  286. data/ext/pg_query/include/{postmaster → postgres/postmaster}/postmaster.h +6 -3
  287. data/ext/pg_query/include/{postmaster → postgres/postmaster}/startup.h +3 -1
  288. data/ext/pg_query/include/{postmaster → postgres/postmaster}/syslogger.h +2 -2
  289. data/ext/pg_query/include/{postmaster → postgres/postmaster}/walwriter.h +3 -1
  290. data/ext/pg_query/include/{regex → postgres/regex}/regex.h +9 -6
  291. data/ext/pg_query/include/{replication → postgres/replication}/logicallauncher.h +6 -1
  292. data/ext/pg_query/include/{replication → postgres/replication}/logicalproto.h +30 -10
  293. data/ext/pg_query/include/postgres/replication/logicalworker.h +32 -0
  294. data/ext/pg_query/include/{replication → postgres/replication}/origin.h +4 -4
  295. data/ext/pg_query/include/{replication → postgres/replication}/reorderbuffer.h +113 -45
  296. data/ext/pg_query/include/{replication → postgres/replication}/slot.h +25 -6
  297. data/ext/pg_query/include/{replication → postgres/replication}/syncrep.h +2 -8
  298. data/ext/pg_query/include/{replication → postgres/replication}/walreceiver.h +15 -9
  299. data/ext/pg_query/include/{replication → postgres/replication}/walsender.h +13 -13
  300. data/ext/pg_query/include/{rewrite → postgres/rewrite}/prs2lock.h +1 -1
  301. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteHandler.h +1 -4
  302. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteManip.h +11 -2
  303. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteSupport.h +1 -1
  304. data/ext/pg_query/include/{storage → postgres/storage}/backendid.h +1 -1
  305. data/ext/pg_query/include/{storage → postgres/storage}/block.h +24 -31
  306. data/ext/pg_query/include/{storage → postgres/storage}/buf.h +1 -1
  307. data/ext/pg_query/include/{storage → postgres/storage}/bufmgr.h +183 -87
  308. data/ext/pg_query/include/{storage → postgres/storage}/bufpage.h +146 -93
  309. data/ext/pg_query/include/{storage → postgres/storage}/condition_variable.h +2 -2
  310. data/ext/pg_query/include/{storage → postgres/storage}/dsm.h +3 -6
  311. data/ext/pg_query/include/{storage → postgres/storage}/dsm_impl.h +4 -1
  312. data/ext/pg_query/include/{storage → postgres/storage}/fd.h +24 -20
  313. data/ext/pg_query/include/{storage → postgres/storage}/fileset.h +1 -1
  314. data/ext/pg_query/include/{storage → postgres/storage}/ipc.h +2 -2
  315. data/ext/pg_query/include/{storage → postgres/storage}/item.h +1 -1
  316. data/ext/pg_query/include/{storage → postgres/storage}/itemid.h +1 -1
  317. data/ext/pg_query/include/{storage → postgres/storage}/itemptr.h +94 -57
  318. data/ext/pg_query/include/{storage → postgres/storage}/large_object.h +1 -1
  319. data/ext/pg_query/include/{storage → postgres/storage}/latch.h +9 -1
  320. data/ext/pg_query/include/{storage → postgres/storage}/lmgr.h +6 -1
  321. data/ext/pg_query/include/{storage → postgres/storage}/lock.h +21 -13
  322. data/ext/pg_query/include/{storage → postgres/storage}/lockdefs.h +3 -3
  323. data/ext/pg_query/include/{storage → postgres/storage}/lwlock.h +16 -2
  324. data/ext/pg_query/include/{storage → postgres/storage}/off.h +1 -1
  325. data/ext/pg_query/include/{storage → postgres/storage}/pg_sema.h +1 -1
  326. data/ext/pg_query/include/{storage → postgres/storage}/pg_shmem.h +1 -1
  327. data/ext/pg_query/include/{storage → postgres/storage}/pmsignal.h +1 -1
  328. data/ext/pg_query/include/{storage → postgres/storage}/predicate.h +2 -2
  329. data/ext/pg_query/include/{storage → postgres/storage}/proc.h +22 -17
  330. data/ext/pg_query/include/{storage → postgres/storage}/procarray.h +3 -2
  331. data/ext/pg_query/include/{storage → postgres/storage}/proclist_types.h +1 -1
  332. data/ext/pg_query/include/{storage → postgres/storage}/procsignal.h +3 -1
  333. data/ext/pg_query/include/postgres/storage/relfilelocator.h +99 -0
  334. data/ext/pg_query/include/{storage → postgres/storage}/s_lock.h +66 -309
  335. data/ext/pg_query/include/{storage → postgres/storage}/sharedfileset.h +1 -1
  336. data/ext/pg_query/include/{storage → postgres/storage}/shm_mq.h +1 -1
  337. data/ext/pg_query/include/{storage → postgres/storage}/shm_toc.h +1 -1
  338. data/ext/pg_query/include/{storage → postgres/storage}/shmem.h +1 -23
  339. data/ext/pg_query/include/{storage → postgres/storage}/sinval.h +3 -3
  340. data/ext/pg_query/include/{storage → postgres/storage}/sinvaladt.h +4 -2
  341. data/ext/pg_query/include/{storage → postgres/storage}/smgr.h +12 -10
  342. data/ext/pg_query/include/{storage → postgres/storage}/spin.h +1 -1
  343. data/ext/pg_query/include/{storage → postgres/storage}/standby.h +9 -8
  344. data/ext/pg_query/include/{storage → postgres/storage}/standbydefs.h +1 -1
  345. data/ext/pg_query/include/{storage → postgres/storage}/sync.h +3 -3
  346. data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtag.h +7 -2
  347. data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtaglist.h +1 -1
  348. data/ext/pg_query/include/{tcop → postgres/tcop}/deparse_utility.h +1 -1
  349. data/ext/pg_query/include/{tcop → postgres/tcop}/dest.h +1 -3
  350. data/ext/pg_query/include/{tcop → postgres/tcop}/fastpath.h +1 -1
  351. data/ext/pg_query/include/{tcop → postgres/tcop}/pquery.h +1 -1
  352. data/ext/pg_query/include/{tcop → postgres/tcop}/tcopprot.h +3 -6
  353. data/ext/pg_query/include/{tcop → postgres/tcop}/utility.h +1 -1
  354. data/ext/pg_query/include/{tsearch → postgres/tsearch}/ts_cache.h +2 -4
  355. data/ext/pg_query/include/{utils → postgres/utils}/acl.h +26 -81
  356. data/ext/pg_query/include/{utils → postgres/utils}/aclchk_internal.h +1 -1
  357. data/ext/pg_query/include/{utils → postgres/utils}/array.h +19 -1
  358. data/ext/pg_query/include/{utils → postgres/utils}/backend_progress.h +2 -1
  359. data/ext/pg_query/include/{utils → postgres/utils}/backend_status.h +24 -3
  360. data/ext/pg_query/include/{utils → postgres/utils}/builtins.h +15 -6
  361. data/ext/pg_query/include/{utils → postgres/utils}/bytea.h +1 -1
  362. data/ext/pg_query/include/{utils → postgres/utils}/catcache.h +1 -1
  363. data/ext/pg_query/include/{utils → postgres/utils}/date.h +37 -9
  364. data/ext/pg_query/include/{utils → postgres/utils}/datetime.h +41 -21
  365. data/ext/pg_query/include/{utils → postgres/utils}/datum.h +1 -1
  366. data/ext/pg_query/include/{utils → postgres/utils}/dsa.h +5 -1
  367. data/ext/pg_query/include/{utils → postgres/utils}/elog.h +104 -29
  368. data/ext/pg_query/include/{utils → postgres/utils}/expandeddatum.h +14 -3
  369. data/ext/pg_query/include/{utils → postgres/utils}/expandedrecord.h +14 -4
  370. data/ext/pg_query/include/{utils → postgres/utils}/float.h +7 -6
  371. data/ext/pg_query/include/{utils → postgres/utils}/fmgroids.h +54 -1
  372. data/ext/pg_query/include/{utils → postgres/utils}/fmgrprotos.h +45 -3
  373. data/ext/pg_query/include/{utils → postgres/utils}/fmgrtab.h +1 -1
  374. data/ext/pg_query/include/{utils → postgres/utils}/guc.h +59 -86
  375. data/ext/pg_query/include/postgres/utils/guc_hooks.h +163 -0
  376. data/ext/pg_query/include/{utils → postgres/utils}/guc_tables.h +49 -3
  377. data/ext/pg_query/include/{utils → postgres/utils}/hsearch.h +1 -1
  378. data/ext/pg_query/include/{utils → postgres/utils}/inval.h +3 -3
  379. data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
  380. data/ext/pg_query/include/{utils → postgres/utils}/lsyscache.h +5 -1
  381. data/ext/pg_query/include/{utils → postgres/utils}/memdebug.h +1 -1
  382. data/ext/pg_query/include/{utils → postgres/utils}/memutils.h +7 -51
  383. data/ext/pg_query/include/postgres/utils/memutils_internal.h +136 -0
  384. data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +237 -0
  385. data/ext/pg_query/include/{utils → postgres/utils}/numeric.h +20 -5
  386. data/ext/pg_query/include/{utils → postgres/utils}/palloc.h +9 -2
  387. data/ext/pg_query/include/{utils → postgres/utils}/partcache.h +3 -2
  388. data/ext/pg_query/include/{utils → postgres/utils}/pg_locale.h +22 -14
  389. data/ext/pg_query/include/{utils → postgres/utils}/pgstat_internal.h +37 -7
  390. data/ext/pg_query/include/{utils → postgres/utils}/plancache.h +1 -1
  391. data/ext/pg_query/include/{utils → postgres/utils}/portal.h +1 -1
  392. data/ext/pg_query/include/{utils → postgres/utils}/probes.h +6 -6
  393. data/ext/pg_query/include/postgres/utils/ps_status.h +47 -0
  394. data/ext/pg_query/include/{utils → postgres/utils}/queryenvironment.h +1 -1
  395. data/ext/pg_query/include/{utils → postgres/utils}/regproc.h +3 -3
  396. data/ext/pg_query/include/{utils → postgres/utils}/rel.h +60 -43
  397. data/ext/pg_query/include/{utils → postgres/utils}/relcache.h +13 -8
  398. data/ext/pg_query/include/{utils → postgres/utils}/reltrigger.h +1 -1
  399. data/ext/pg_query/include/{utils → postgres/utils}/resowner.h +1 -1
  400. data/ext/pg_query/include/{utils → postgres/utils}/ruleutils.h +6 -1
  401. data/ext/pg_query/include/{utils → postgres/utils}/sharedtuplestore.h +1 -1
  402. data/ext/pg_query/include/{utils → postgres/utils}/snapmgr.h +4 -2
  403. data/ext/pg_query/include/{utils → postgres/utils}/snapshot.h +1 -1
  404. data/ext/pg_query/include/{utils → postgres/utils}/sortsupport.h +2 -2
  405. data/ext/pg_query/include/{utils → postgres/utils}/syscache.h +4 -1
  406. data/ext/pg_query/include/{utils → postgres/utils}/timeout.h +1 -1
  407. data/ext/pg_query/include/{utils → postgres/utils}/timestamp.h +41 -11
  408. data/ext/pg_query/include/{utils → postgres/utils}/tuplesort.h +189 -35
  409. data/ext/pg_query/include/{utils → postgres/utils}/tuplestore.h +1 -1
  410. data/ext/pg_query/include/{utils → postgres/utils}/typcache.h +1 -1
  411. data/ext/pg_query/include/{utils → postgres/utils}/varlena.h +13 -1
  412. data/ext/pg_query/include/{utils → postgres/utils}/wait_event.h +9 -4
  413. data/ext/pg_query/include/{utils → postgres/utils}/xml.h +15 -5
  414. data/ext/pg_query/include/{postgres.h → postgres/varatt.h} +7 -457
  415. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +6186 -5585
  416. data/ext/pg_query/include/protobuf/pg_query.pb.h +112443 -91222
  417. data/ext/pg_query/pg_query.c +10 -1
  418. data/ext/pg_query/pg_query.pb-c.c +19755 -17757
  419. data/ext/pg_query/pg_query_deparse.c +1 -10635
  420. data/ext/pg_query/pg_query_fingerprint.c +12 -8
  421. data/ext/pg_query/pg_query_fingerprint.h +1 -1
  422. data/ext/pg_query/pg_query_internal.h +1 -1
  423. data/ext/pg_query/pg_query_json_plpgsql.c +1 -0
  424. data/ext/pg_query/pg_query_normalize.c +1 -1
  425. data/ext/pg_query/pg_query_outfuncs_json.c +6 -0
  426. data/ext/pg_query/pg_query_outfuncs_protobuf.c +3 -2
  427. data/ext/pg_query/pg_query_parse.c +47 -5
  428. data/ext/pg_query/pg_query_parse_plpgsql.c +7 -5
  429. data/ext/pg_query/pg_query_readfuncs_protobuf.c +1 -0
  430. data/ext/pg_query/pg_query_ruby.c +5 -0
  431. data/ext/pg_query/pg_query_ruby_freebsd.sym +2 -0
  432. data/ext/pg_query/pg_query_scan.c +1 -1
  433. data/ext/pg_query/pg_query_split.c +3 -3
  434. data/ext/pg_query/postgres_deparse.c +11067 -0
  435. data/ext/pg_query/postgres_deparse.h +9 -0
  436. data/ext/pg_query/src_backend_catalog_namespace.c +7 -2
  437. data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -1
  438. data/ext/pg_query/src_backend_commands_define.c +1 -1
  439. data/ext/pg_query/src_backend_nodes_bitmapset.c +11 -70
  440. data/ext/pg_query/src_backend_nodes_copyfuncs.c +96 -6202
  441. data/ext/pg_query/src_backend_nodes_equalfuncs.c +95 -4068
  442. data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
  443. data/ext/pg_query/src_backend_nodes_list.c +14 -2
  444. data/ext/pg_query/src_backend_nodes_makefuncs.c +95 -1
  445. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +283 -132
  446. data/ext/pg_query/src_backend_nodes_nodes.c +38 -0
  447. data/ext/pg_query/src_backend_nodes_value.c +1 -1
  448. data/ext/pg_query/src_backend_parser_gram.c +33208 -31806
  449. data/ext/pg_query/src_backend_parser_parser.c +28 -2
  450. data/ext/pg_query/src_backend_parser_scan.c +4318 -3329
  451. data/ext/pg_query/src_backend_parser_scansup.c +1 -1
  452. data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
  453. data/ext/pg_query/src_backend_tcop_postgres.c +66 -87
  454. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +1 -1
  455. data/ext/pg_query/src_backend_utils_adt_datum.c +5 -7
  456. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  457. data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
  458. data/ext/pg_query/src_backend_utils_adt_numutils.c +489 -0
  459. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +79 -5
  460. data/ext/pg_query/src_backend_utils_error_assert.c +4 -7
  461. data/ext/pg_query/src_backend_utils_error_elog.c +371 -249
  462. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +33 -1
  463. data/ext/pg_query/src_backend_utils_init_globals.c +6 -3
  464. data/ext/pg_query/src_backend_utils_mb_mbutils.c +21 -67
  465. data/ext/pg_query/src_backend_utils_misc_guc_tables.c +492 -0
  466. data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +163 -0
  467. data/ext/pg_query/src_backend_utils_mmgr_aset.c +449 -312
  468. data/ext/pg_query/src_backend_utils_mmgr_generation.c +1039 -0
  469. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +398 -49
  470. data/ext/pg_query/src_backend_utils_mmgr_slab.c +1021 -0
  471. data/ext/pg_query/src_common_encnames.c +4 -1
  472. data/ext/pg_query/src_common_hashfn.c +1 -1
  473. data/ext/pg_query/src_common_keywords.c +1 -1
  474. data/ext/pg_query/src_common_kwlist_d.h +534 -510
  475. data/ext/pg_query/src_common_kwlookup.c +1 -1
  476. data/ext/pg_query/src_common_psprintf.c +1 -1
  477. data/ext/pg_query/src_common_stringinfo.c +4 -4
  478. data/ext/pg_query/src_common_wchar.c +9 -8
  479. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +1 -1
  480. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -1
  481. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +661 -694
  482. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  483. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
  484. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +1 -1
  485. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +48 -46
  486. data/ext/pg_query/src_port_pg_bitutils.c +79 -5
  487. data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
  488. data/ext/pg_query/src_port_snprintf.c +6 -10
  489. data/ext/pg_query/src_port_strerror.c +1 -1
  490. data/ext/pg_query/src_port_strlcpy.c +79 -0
  491. data/lib/pg_query/fingerprint.rb +2 -3
  492. data/lib/pg_query/node.rb +16 -11
  493. data/lib/pg_query/parse.rb +1 -1
  494. data/lib/pg_query/pg_query_pb.rb +166 -3191
  495. data/lib/pg_query/treewalker.rb +23 -5
  496. data/lib/pg_query/version.rb +1 -1
  497. metadata +432 -380
  498. data/ext/pg_query/guc-file.c +0 -0
  499. data/ext/pg_query/include/catalog/pg_parameter_acl.h +0 -60
  500. data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +0 -34
  501. data/ext/pg_query/include/commands/variable.h +0 -38
  502. data/ext/pg_query/include/common/ip.h +0 -31
  503. data/ext/pg_query/include/getaddrinfo.h +0 -162
  504. data/ext/pg_query/include/kwlist_d.h +0 -1095
  505. data/ext/pg_query/include/parser/gram.h +0 -1101
  506. data/ext/pg_query/include/pg_config_os.h +0 -8
  507. data/ext/pg_query/include/portability/instr_time.h +0 -256
  508. data/ext/pg_query/include/postmaster/auxprocess.h +0 -20
  509. data/ext/pg_query/include/postmaster/fork_process.h +0 -17
  510. data/ext/pg_query/include/postmaster/pgarch.h +0 -73
  511. data/ext/pg_query/include/replication/logicalworker.h +0 -19
  512. data/ext/pg_query/include/storage/relfilenode.h +0 -99
  513. data/ext/pg_query/include/utils/dynahash.h +0 -20
  514. data/ext/pg_query/include/utils/pg_lsn.h +0 -29
  515. data/ext/pg_query/include/utils/pidfile.h +0 -56
  516. data/ext/pg_query/include/utils/ps_status.h +0 -25
  517. data/ext/pg_query/include/utils/rls.h +0 -50
  518. data/ext/pg_query/include/utils/tzparser.h +0 -39
  519. data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2201
  520. data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -371
  521. data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1116
  522. data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1993
  523. data/ext/pg_query/src_common_pg_prng.c +0 -152
  524. data/ext/pg_query/src_common_string.c +0 -92
  525. data/ext/pg_query/src_port_pgsleep.c +0 -69
  526. data/ext/pg_query/src_port_strnlen.c +0 -39
  527. /data/ext/pg_query/include/{access → postgres/access}/rmgr.h +0 -0
  528. /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
  529. /data/ext/pg_query/include/{plerrcodes.h → postgres/plerrcodes.h} +0 -0
  530. /data/ext/pg_query/include/{storage → postgres/storage}/lwlocknames.h +0 -0
  531. /data/ext/pg_query/include/{utils → postgres/utils}/errcodes.h +0 -0
@@ -5,7 +5,7 @@
5
5
  * and related modules.
6
6
  *
7
7
  *
8
- * Portions Copyright (c) 1996-2022, 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-2022, 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
 
@@ -196,7 +208,8 @@ extern void standard_ExecutorFinish(QueryDesc *queryDesc);
196
208
  extern void ExecutorEnd(QueryDesc *queryDesc);
197
209
  extern void standard_ExecutorEnd(QueryDesc *queryDesc);
198
210
  extern void ExecutorRewind(QueryDesc *queryDesc);
199
- extern bool ExecCheckRTPerms(List *rangeTable, bool ereport_on_violation);
211
+ extern bool ExecCheckPermissions(List *rangeTable,
212
+ List *rteperminfos, bool ereport_on_violation);
200
213
  extern void CheckValidResultRel(ResultRelInfo *resultRelInfo, CmdType operation);
201
214
  extern void InitResultRelInfo(ResultRelInfo *resultRelInfo,
202
215
  Relation resultRelationDesc,
@@ -218,9 +231,10 @@ extern LockTupleMode ExecUpdateLockMode(EState *estate, ResultRelInfo *relinfo);
218
231
  extern ExecRowMark *ExecFindRowMark(EState *estate, Index rti, bool missing_ok);
219
232
  extern ExecAuxRowMark *ExecBuildAuxRowMark(ExecRowMark *erm, List *targetlist);
220
233
  extern TupleTableSlot *EvalPlanQual(EPQState *epqstate, Relation relation,
221
- Index rti, TupleTableSlot *testslot);
234
+ Index rti, TupleTableSlot *inputslot);
222
235
  extern void EvalPlanQualInit(EPQState *epqstate, EState *parentestate,
223
- Plan *subplan, List *auxrowmarks, int epqParam);
236
+ Plan *subplan, List *auxrowmarks,
237
+ int epqParam, List *resultRelations);
224
238
  extern void EvalPlanQualSetPlan(EPQState *epqstate,
225
239
  Plan *subplan, List *auxrowmarks);
226
240
  extern TupleTableSlot *EvalPlanQualSlot(EPQState *epqstate,
@@ -239,7 +253,7 @@ extern PlanState *ExecInitNode(Plan *node, EState *estate, int eflags);
239
253
  extern void ExecSetExecProcNode(PlanState *node, ExecProcNodeMtd function);
240
254
  extern Node *MultiExecProcNode(PlanState *node);
241
255
  extern void ExecEndNode(PlanState *node);
242
- extern bool ExecShutdownNode(PlanState *node);
256
+ extern void ExecShutdownNode(PlanState *node);
243
257
  extern void ExecSetTupleBound(int64 tuples_needed, PlanState *child_node);
244
258
 
245
259
 
@@ -432,7 +446,7 @@ ExecQualAndReset(ExprState *state, ExprContext *econtext)
432
446
  }
433
447
  #endif
434
448
 
435
- extern bool ExecCheck(ExprState *state, ExprContext *context);
449
+ extern bool ExecCheck(ExprState *state, ExprContext *econtext);
436
450
 
437
451
  /*
438
452
  * prototypes from functions in execSRF.c
@@ -473,7 +487,7 @@ extern void ExecInitResultSlot(PlanState *planstate,
473
487
  extern void ExecInitResultTupleSlotTL(PlanState *planstate,
474
488
  const TupleTableSlotOps *tts_ops);
475
489
  extern void ExecInitScanTupleSlot(EState *estate, ScanState *scanstate,
476
- TupleDesc tupleDesc,
490
+ TupleDesc tupledesc,
477
491
  const TupleTableSlotOps *tts_ops);
478
492
  extern TupleTableSlot *ExecInitExtraTupleSlot(EState *estate,
479
493
  TupleDesc tupledesc,
@@ -565,7 +579,7 @@ extern bool ExecRelationIsTargetRelation(EState *estate, Index scanrelid);
565
579
 
566
580
  extern Relation ExecOpenScanRelation(EState *estate, Index scanrelid, int eflags);
567
581
 
568
- extern void ExecInitRangeTable(EState *estate, List *rangeTable);
582
+ extern void ExecInitRangeTable(EState *estate, List *rangeTable, List *permInfos);
569
583
  extern void ExecCloseRangeTableRelations(EState *estate);
570
584
  extern void ExecCloseResultRelations(EState *estate);
571
585
 
@@ -600,7 +614,9 @@ extern TupleTableSlot *ExecGetTriggerOldSlot(EState *estate, ResultRelInfo *relI
600
614
  extern TupleTableSlot *ExecGetTriggerNewSlot(EState *estate, ResultRelInfo *relInfo);
601
615
  extern TupleTableSlot *ExecGetReturningSlot(EState *estate, ResultRelInfo *relInfo);
602
616
  extern TupleConversionMap *ExecGetChildToRootMap(ResultRelInfo *resultRelInfo);
617
+ extern TupleConversionMap *ExecGetRootToChildMap(ResultRelInfo *resultRelInfo, EState *estate);
603
618
 
619
+ extern Oid ExecGetResultRelCheckAsUser(ResultRelInfo *relInfo, EState *estate);
604
620
  extern Bitmapset *ExecGetInsertedCols(ResultRelInfo *relinfo, EState *estate);
605
621
  extern Bitmapset *ExecGetUpdatedCols(ResultRelInfo *relinfo, EState *estate);
606
622
  extern Bitmapset *ExecGetExtraUpdatedCols(ResultRelInfo *relinfo, EState *estate);
@@ -615,7 +631,8 @@ extern List *ExecInsertIndexTuples(ResultRelInfo *resultRelInfo,
615
631
  TupleTableSlot *slot, EState *estate,
616
632
  bool update,
617
633
  bool noDupErr,
618
- bool *specConflict, List *arbiterIndexes);
634
+ bool *specConflict, List *arbiterIndexes,
635
+ bool onlySummarizing);
619
636
  extern bool ExecCheckIndexConstraints(ResultRelInfo *resultRelInfo,
620
637
  TupleTableSlot *slot,
621
638
  EState *estate, ItemPointer conflictTid,
@@ -4,7 +4,7 @@
4
4
  * Declarations for execution of SQL-language functions.
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2022, 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
@@ -4,7 +4,7 @@
4
4
  * definitions for run-time statistics collection
5
5
  *
6
6
  *
7
- * Copyright (c) 2001-2022, PostgreSQL Global Development Group
7
+ * Copyright (c) 2001-2023, PostgreSQL Global Development Group
8
8
  *
9
9
  * src/include/executor/instrument.h
10
10
  *
@@ -3,7 +3,7 @@
3
3
  * spi.h
4
4
  * Server Programming Interface public declarations
5
5
  *
6
- * Portions Copyright (c) 1996-2022, 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
@@ -174,7 +174,7 @@ extern void *SPI_palloc(Size size);
174
174
  extern void *SPI_repalloc(void *pointer, Size size);
175
175
  extern void SPI_pfree(void *pointer);
176
176
  extern Datum SPI_datumTransfer(Datum value, bool typByVal, int typLen);
177
- extern void SPI_freetuple(HeapTuple pointer);
177
+ extern void SPI_freetuple(HeapTuple tuple);
178
178
  extern void SPI_freetuptable(SPITupleTable *tuptable);
179
179
 
180
180
  extern Portal SPI_cursor_open(const char *name, SPIPlanPtr plan,
@@ -3,7 +3,7 @@
3
3
  * tablefunc.h
4
4
  * interface for TableFunc executor node
5
5
  *
6
- * Portions Copyright (c) 1996-2022, 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-2022, 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
 
@@ -8,7 +8,7 @@
8
8
  * or call fmgr-callable functions.
9
9
  *
10
10
  *
11
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
11
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
12
12
  * Portions Copyright (c) 1994, Regents of the University of California
13
13
  *
14
14
  * src/include/fmgr.h
@@ -413,7 +413,7 @@ typedef const Pg_finfo_record *(*PGFInfoFunction) (void);
413
413
  * info function, since authors shouldn't need to be explicitly aware of it.
414
414
  */
415
415
  #define PG_FUNCTION_INFO_V1(funcname) \
416
- extern Datum funcname(PG_FUNCTION_ARGS); \
416
+ extern PGDLLEXPORT Datum funcname(PG_FUNCTION_ARGS); \
417
417
  extern PGDLLEXPORT const Pg_finfo_record * CppConcat(pg_finfo_,funcname)(void); \
418
418
  const Pg_finfo_record * \
419
419
  CppConcat(pg_finfo_,funcname) (void) \
@@ -424,6 +424,17 @@ CppConcat(pg_finfo_,funcname) (void) \
424
424
  extern int no_such_variable
425
425
 
426
426
 
427
+ /*
428
+ * Declare _PG_init/_PG_fini centrally. Historically each shared library had
429
+ * its own declaration; but now that we want to mark these PGDLLEXPORT, using
430
+ * central declarations avoids each extension having to add that. Any
431
+ * existing declarations in extensions will continue to work if fmgr.h is
432
+ * included before them, otherwise compilation for Windows will fail.
433
+ */
434
+ extern PGDLLEXPORT void _PG_init(void);
435
+ extern PGDLLEXPORT void _PG_fini(void);
436
+
437
+
427
438
  /*-------------------------------------------------------------------------
428
439
  * Support for verifying backend compatibility of loaded modules
429
440
  *
@@ -689,6 +700,14 @@ extern Datum OidFunctionCall9Coll(Oid functionId, Oid collation,
689
700
  /* Special cases for convenient invocation of datatype I/O functions. */
690
701
  extern Datum InputFunctionCall(FmgrInfo *flinfo, char *str,
691
702
  Oid typioparam, int32 typmod);
703
+ extern bool InputFunctionCallSafe(FmgrInfo *flinfo, char *str,
704
+ Oid typioparam, int32 typmod,
705
+ fmNodePtr escontext,
706
+ Datum *result);
707
+ extern bool DirectInputFunctionCallSafe(PGFunction func, char *str,
708
+ Oid typioparam, int32 typmod,
709
+ fmNodePtr escontext,
710
+ Datum *result);
692
711
  extern Datum OidInputFunctionCall(Oid functionId, char *str,
693
712
  Oid typioparam, int32 typmod);
694
713
  extern char *OutputFunctionCall(FmgrInfo *flinfo, Datum val);
@@ -0,0 +1,294 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * fdwapi.h
4
+ * API for foreign-data wrappers
5
+ *
6
+ * Copyright (c) 2010-2023, PostgreSQL Global Development Group
7
+ *
8
+ * src/include/foreign/fdwapi.h
9
+ *
10
+ *-------------------------------------------------------------------------
11
+ */
12
+ #ifndef FDWAPI_H
13
+ #define FDWAPI_H
14
+
15
+ #include "access/parallel.h"
16
+ #include "nodes/execnodes.h"
17
+ #include "nodes/pathnodes.h"
18
+
19
+ /* To avoid including explain.h here, reference ExplainState thus: */
20
+ struct ExplainState;
21
+
22
+
23
+ /*
24
+ * Callback function signatures --- see fdwhandler.sgml for more info.
25
+ */
26
+
27
+ typedef void (*GetForeignRelSize_function) (PlannerInfo *root,
28
+ RelOptInfo *baserel,
29
+ Oid foreigntableid);
30
+
31
+ typedef void (*GetForeignPaths_function) (PlannerInfo *root,
32
+ RelOptInfo *baserel,
33
+ Oid foreigntableid);
34
+
35
+ typedef ForeignScan *(*GetForeignPlan_function) (PlannerInfo *root,
36
+ RelOptInfo *baserel,
37
+ Oid foreigntableid,
38
+ ForeignPath *best_path,
39
+ List *tlist,
40
+ List *scan_clauses,
41
+ Plan *outer_plan);
42
+
43
+ typedef void (*BeginForeignScan_function) (ForeignScanState *node,
44
+ int eflags);
45
+
46
+ typedef TupleTableSlot *(*IterateForeignScan_function) (ForeignScanState *node);
47
+
48
+ typedef bool (*RecheckForeignScan_function) (ForeignScanState *node,
49
+ TupleTableSlot *slot);
50
+
51
+ typedef void (*ReScanForeignScan_function) (ForeignScanState *node);
52
+
53
+ typedef void (*EndForeignScan_function) (ForeignScanState *node);
54
+
55
+ typedef void (*GetForeignJoinPaths_function) (PlannerInfo *root,
56
+ RelOptInfo *joinrel,
57
+ RelOptInfo *outerrel,
58
+ RelOptInfo *innerrel,
59
+ JoinType jointype,
60
+ JoinPathExtraData *extra);
61
+
62
+ typedef void (*GetForeignUpperPaths_function) (PlannerInfo *root,
63
+ UpperRelationKind stage,
64
+ RelOptInfo *input_rel,
65
+ RelOptInfo *output_rel,
66
+ void *extra);
67
+
68
+ typedef void (*AddForeignUpdateTargets_function) (PlannerInfo *root,
69
+ Index rtindex,
70
+ RangeTblEntry *target_rte,
71
+ Relation target_relation);
72
+
73
+ typedef List *(*PlanForeignModify_function) (PlannerInfo *root,
74
+ ModifyTable *plan,
75
+ Index resultRelation,
76
+ int subplan_index);
77
+
78
+ typedef void (*BeginForeignModify_function) (ModifyTableState *mtstate,
79
+ ResultRelInfo *rinfo,
80
+ List *fdw_private,
81
+ int subplan_index,
82
+ int eflags);
83
+
84
+ typedef TupleTableSlot *(*ExecForeignInsert_function) (EState *estate,
85
+ ResultRelInfo *rinfo,
86
+ TupleTableSlot *slot,
87
+ TupleTableSlot *planSlot);
88
+
89
+ typedef TupleTableSlot **(*ExecForeignBatchInsert_function) (EState *estate,
90
+ ResultRelInfo *rinfo,
91
+ TupleTableSlot **slots,
92
+ TupleTableSlot **planSlots,
93
+ int *numSlots);
94
+
95
+ typedef int (*GetForeignModifyBatchSize_function) (ResultRelInfo *rinfo);
96
+
97
+ typedef TupleTableSlot *(*ExecForeignUpdate_function) (EState *estate,
98
+ ResultRelInfo *rinfo,
99
+ TupleTableSlot *slot,
100
+ TupleTableSlot *planSlot);
101
+
102
+ typedef TupleTableSlot *(*ExecForeignDelete_function) (EState *estate,
103
+ ResultRelInfo *rinfo,
104
+ TupleTableSlot *slot,
105
+ TupleTableSlot *planSlot);
106
+
107
+ typedef void (*EndForeignModify_function) (EState *estate,
108
+ ResultRelInfo *rinfo);
109
+
110
+ typedef void (*BeginForeignInsert_function) (ModifyTableState *mtstate,
111
+ ResultRelInfo *rinfo);
112
+
113
+ typedef void (*EndForeignInsert_function) (EState *estate,
114
+ ResultRelInfo *rinfo);
115
+
116
+ typedef int (*IsForeignRelUpdatable_function) (Relation rel);
117
+
118
+ typedef bool (*PlanDirectModify_function) (PlannerInfo *root,
119
+ ModifyTable *plan,
120
+ Index resultRelation,
121
+ int subplan_index);
122
+
123
+ typedef void (*BeginDirectModify_function) (ForeignScanState *node,
124
+ int eflags);
125
+
126
+ typedef TupleTableSlot *(*IterateDirectModify_function) (ForeignScanState *node);
127
+
128
+ typedef void (*EndDirectModify_function) (ForeignScanState *node);
129
+
130
+ typedef RowMarkType (*GetForeignRowMarkType_function) (RangeTblEntry *rte,
131
+ LockClauseStrength strength);
132
+
133
+ typedef void (*RefetchForeignRow_function) (EState *estate,
134
+ ExecRowMark *erm,
135
+ Datum rowid,
136
+ TupleTableSlot *slot,
137
+ bool *updated);
138
+
139
+ typedef void (*ExplainForeignScan_function) (ForeignScanState *node,
140
+ struct ExplainState *es);
141
+
142
+ typedef void (*ExplainForeignModify_function) (ModifyTableState *mtstate,
143
+ ResultRelInfo *rinfo,
144
+ List *fdw_private,
145
+ int subplan_index,
146
+ struct ExplainState *es);
147
+
148
+ typedef void (*ExplainDirectModify_function) (ForeignScanState *node,
149
+ struct ExplainState *es);
150
+
151
+ typedef int (*AcquireSampleRowsFunc) (Relation relation, int elevel,
152
+ HeapTuple *rows, int targrows,
153
+ double *totalrows,
154
+ double *totaldeadrows);
155
+
156
+ typedef bool (*AnalyzeForeignTable_function) (Relation relation,
157
+ AcquireSampleRowsFunc *func,
158
+ BlockNumber *totalpages);
159
+
160
+ typedef List *(*ImportForeignSchema_function) (ImportForeignSchemaStmt *stmt,
161
+ Oid serverOid);
162
+
163
+ typedef void (*ExecForeignTruncate_function) (List *rels,
164
+ DropBehavior behavior,
165
+ bool restart_seqs);
166
+
167
+ typedef Size (*EstimateDSMForeignScan_function) (ForeignScanState *node,
168
+ ParallelContext *pcxt);
169
+ typedef void (*InitializeDSMForeignScan_function) (ForeignScanState *node,
170
+ ParallelContext *pcxt,
171
+ void *coordinate);
172
+ typedef void (*ReInitializeDSMForeignScan_function) (ForeignScanState *node,
173
+ ParallelContext *pcxt,
174
+ void *coordinate);
175
+ typedef void (*InitializeWorkerForeignScan_function) (ForeignScanState *node,
176
+ shm_toc *toc,
177
+ void *coordinate);
178
+ typedef void (*ShutdownForeignScan_function) (ForeignScanState *node);
179
+ typedef bool (*IsForeignScanParallelSafe_function) (PlannerInfo *root,
180
+ RelOptInfo *rel,
181
+ RangeTblEntry *rte);
182
+ typedef List *(*ReparameterizeForeignPathByChild_function) (PlannerInfo *root,
183
+ List *fdw_private,
184
+ RelOptInfo *child_rel);
185
+
186
+ typedef bool (*IsForeignPathAsyncCapable_function) (ForeignPath *path);
187
+
188
+ typedef void (*ForeignAsyncRequest_function) (AsyncRequest *areq);
189
+
190
+ typedef void (*ForeignAsyncConfigureWait_function) (AsyncRequest *areq);
191
+
192
+ typedef void (*ForeignAsyncNotify_function) (AsyncRequest *areq);
193
+
194
+ /*
195
+ * FdwRoutine is the struct returned by a foreign-data wrapper's handler
196
+ * function. It provides pointers to the callback functions needed by the
197
+ * planner and executor.
198
+ *
199
+ * More function pointers are likely to be added in the future. Therefore
200
+ * it's recommended that the handler initialize the struct with
201
+ * makeNode(FdwRoutine) so that all fields are set to NULL. This will
202
+ * ensure that no fields are accidentally left undefined.
203
+ */
204
+ typedef struct FdwRoutine
205
+ {
206
+ NodeTag type;
207
+
208
+ /* Functions for scanning foreign tables */
209
+ GetForeignRelSize_function GetForeignRelSize;
210
+ GetForeignPaths_function GetForeignPaths;
211
+ GetForeignPlan_function GetForeignPlan;
212
+ BeginForeignScan_function BeginForeignScan;
213
+ IterateForeignScan_function IterateForeignScan;
214
+ ReScanForeignScan_function ReScanForeignScan;
215
+ EndForeignScan_function EndForeignScan;
216
+
217
+ /*
218
+ * Remaining functions are optional. Set the pointer to NULL for any that
219
+ * are not provided.
220
+ */
221
+
222
+ /* Functions for remote-join planning */
223
+ GetForeignJoinPaths_function GetForeignJoinPaths;
224
+
225
+ /* Functions for remote upper-relation (post scan/join) planning */
226
+ GetForeignUpperPaths_function GetForeignUpperPaths;
227
+
228
+ /* Functions for updating foreign tables */
229
+ AddForeignUpdateTargets_function AddForeignUpdateTargets;
230
+ PlanForeignModify_function PlanForeignModify;
231
+ BeginForeignModify_function BeginForeignModify;
232
+ ExecForeignInsert_function ExecForeignInsert;
233
+ ExecForeignBatchInsert_function ExecForeignBatchInsert;
234
+ GetForeignModifyBatchSize_function GetForeignModifyBatchSize;
235
+ ExecForeignUpdate_function ExecForeignUpdate;
236
+ ExecForeignDelete_function ExecForeignDelete;
237
+ EndForeignModify_function EndForeignModify;
238
+ BeginForeignInsert_function BeginForeignInsert;
239
+ EndForeignInsert_function EndForeignInsert;
240
+ IsForeignRelUpdatable_function IsForeignRelUpdatable;
241
+ PlanDirectModify_function PlanDirectModify;
242
+ BeginDirectModify_function BeginDirectModify;
243
+ IterateDirectModify_function IterateDirectModify;
244
+ EndDirectModify_function EndDirectModify;
245
+
246
+ /* Functions for SELECT FOR UPDATE/SHARE row locking */
247
+ GetForeignRowMarkType_function GetForeignRowMarkType;
248
+ RefetchForeignRow_function RefetchForeignRow;
249
+ RecheckForeignScan_function RecheckForeignScan;
250
+
251
+ /* Support functions for EXPLAIN */
252
+ ExplainForeignScan_function ExplainForeignScan;
253
+ ExplainForeignModify_function ExplainForeignModify;
254
+ ExplainDirectModify_function ExplainDirectModify;
255
+
256
+ /* Support functions for ANALYZE */
257
+ AnalyzeForeignTable_function AnalyzeForeignTable;
258
+
259
+ /* Support functions for IMPORT FOREIGN SCHEMA */
260
+ ImportForeignSchema_function ImportForeignSchema;
261
+
262
+ /* Support functions for TRUNCATE */
263
+ ExecForeignTruncate_function ExecForeignTruncate;
264
+
265
+ /* Support functions for parallelism under Gather node */
266
+ IsForeignScanParallelSafe_function IsForeignScanParallelSafe;
267
+ EstimateDSMForeignScan_function EstimateDSMForeignScan;
268
+ InitializeDSMForeignScan_function InitializeDSMForeignScan;
269
+ ReInitializeDSMForeignScan_function ReInitializeDSMForeignScan;
270
+ InitializeWorkerForeignScan_function InitializeWorkerForeignScan;
271
+ ShutdownForeignScan_function ShutdownForeignScan;
272
+
273
+ /* Support functions for path reparameterization. */
274
+ ReparameterizeForeignPathByChild_function ReparameterizeForeignPathByChild;
275
+
276
+ /* Support functions for asynchronous execution */
277
+ IsForeignPathAsyncCapable_function IsForeignPathAsyncCapable;
278
+ ForeignAsyncRequest_function ForeignAsyncRequest;
279
+ ForeignAsyncConfigureWait_function ForeignAsyncConfigureWait;
280
+ ForeignAsyncNotify_function ForeignAsyncNotify;
281
+ } FdwRoutine;
282
+
283
+
284
+ /* Functions in foreign/foreign.c */
285
+ extern FdwRoutine *GetFdwRoutine(Oid fdwhandler);
286
+ extern Oid GetForeignServerIdByRelId(Oid relid);
287
+ extern FdwRoutine *GetFdwRoutineByServerId(Oid serverid);
288
+ extern FdwRoutine *GetFdwRoutineByRelId(Oid relid);
289
+ extern FdwRoutine *GetFdwRoutineForRelation(Relation relation, bool makecopy);
290
+ extern bool IsImportableForeignTable(const char *tablename,
291
+ ImportForeignSchemaStmt *stmt);
292
+ extern Path *GetExistingLocalJoinPath(RelOptInfo *joinrel);
293
+
294
+ #endif /* FDWAPI_H */