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
@@ -3,7 +3,7 @@
3
3
  * pg_wchar.h
4
4
  * multibyte-character support
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/mb/pg_wchar.h
@@ -19,6 +19,8 @@
19
19
  #ifndef PG_WCHAR_H
20
20
  #define PG_WCHAR_H
21
21
 
22
+ #include "port/simd.h"
23
+
22
24
  /*
23
25
  * The pg_wchar type
24
26
  */
@@ -604,11 +606,11 @@ extern int pg_encoding_wchar2mb_with_len(int encoding,
604
606
  extern int pg_char_and_wchar_strcmp(const char *s1, const pg_wchar *s2);
605
607
  extern int pg_wchar_strncmp(const pg_wchar *s1, const pg_wchar *s2, size_t n);
606
608
  extern int pg_char_and_wchar_strncmp(const char *s1, const pg_wchar *s2, size_t n);
607
- extern size_t pg_wchar_strlen(const pg_wchar *wstr);
609
+ extern size_t pg_wchar_strlen(const pg_wchar *str);
608
610
  extern int pg_mblen(const char *mbstr);
609
611
  extern int pg_dsplen(const char *mbstr);
610
612
  extern int pg_mbstrlen(const char *mbstr);
611
- extern int pg_mbstrlen_with_len(const char *mbstr, int len);
613
+ extern int pg_mbstrlen_with_len(const char *mbstr, int limit);
612
614
  extern int pg_mbcliplen(const char *mbstr, int len, int limit);
613
615
  extern int pg_encoding_mbcliplen(int encoding, const char *mbstr,
614
616
  int len, int limit);
@@ -639,7 +641,7 @@ extern int pg_do_encoding_conversion_buf(Oid proc,
639
641
  int src_encoding,
640
642
  int dest_encoding,
641
643
  unsigned char *src, int srclen,
642
- unsigned char *dst, int dstlen,
644
+ unsigned char *dest, int destlen,
643
645
  bool noError);
644
646
 
645
647
  extern char *pg_client_to_server(const char *s, int len);
@@ -648,6 +650,7 @@ extern char *pg_any_to_server(const char *s, int len, int encoding);
648
650
  extern char *pg_server_to_any(const char *s, int len, int encoding);
649
651
 
650
652
  extern void pg_unicode_to_server(pg_wchar c, unsigned char *s);
653
+ extern bool pg_unicode_to_server_noerror(pg_wchar c, unsigned char *s);
651
654
 
652
655
  extern unsigned short BIG5toCNS(unsigned short big5, unsigned char *lc);
653
656
  extern unsigned short CNStoBIG5(unsigned short cns, unsigned char lc);
@@ -704,24 +707,28 @@ extern WCHAR *pgwin32_message_to_UTF16(const char *str, int len, int *utf16len);
704
707
  * Verify a chunk of bytes for valid ASCII.
705
708
  *
706
709
  * Returns false if the input contains any zero bytes or bytes with the
707
- * high-bit set. Input len must be a multiple of 8.
710
+ * high-bit set. Input len must be a multiple of the chunk size (8 or 16).
708
711
  */
709
712
  static inline bool
710
713
  is_valid_ascii(const unsigned char *s, int len)
711
714
  {
712
- uint64 chunk,
713
- highbit_cum = UINT64CONST(0),
714
- zero_cum = UINT64CONST(0x8080808080808080);
715
+ const unsigned char *const s_end = s + len;
716
+ Vector8 chunk;
717
+ Vector8 highbit_cum = vector8_broadcast(0);
718
+ #ifdef USE_NO_SIMD
719
+ Vector8 zero_cum = vector8_broadcast(0x80);
720
+ #endif
715
721
 
716
722
  Assert(len % sizeof(chunk) == 0);
717
723
 
718
- while (len > 0)
724
+ while (s < s_end)
719
725
  {
720
- memcpy(&chunk, s, sizeof(chunk));
726
+ vector8_load(&chunk, s);
727
+
728
+ /* Capture any zero bytes in this chunk. */
729
+ #ifdef USE_NO_SIMD
721
730
 
722
731
  /*
723
- * Capture any zero bytes in this chunk.
724
- *
725
732
  * First, add 0x7f to each byte. This sets the high bit in each byte,
726
733
  * unless it was a zero. If any resulting high bits are zero, the
727
734
  * corresponding high bits in the zero accumulator will be cleared.
@@ -732,22 +739,32 @@ is_valid_ascii(const unsigned char *s, int len)
732
739
  * any input bytes did have the high bit set, it doesn't matter
733
740
  * because we check for those separately.
734
741
  */
735
- zero_cum &= (chunk + UINT64CONST(0x7f7f7f7f7f7f7f7f));
742
+ zero_cum &= (chunk + vector8_broadcast(0x7F));
743
+ #else
736
744
 
737
- /* Capture any set bits in this chunk. */
738
- highbit_cum |= chunk;
745
+ /*
746
+ * Set all bits in each lane of the highbit accumulator where input
747
+ * bytes are zero.
748
+ */
749
+ highbit_cum = vector8_or(highbit_cum,
750
+ vector8_eq(chunk, vector8_broadcast(0)));
751
+ #endif
752
+
753
+ /* Capture all set bits in this chunk. */
754
+ highbit_cum = vector8_or(highbit_cum, chunk);
739
755
 
740
756
  s += sizeof(chunk);
741
- len -= sizeof(chunk);
742
757
  }
743
758
 
744
759
  /* Check if any high bits in the high bit accumulator got set. */
745
- if (highbit_cum & UINT64CONST(0x8080808080808080))
760
+ if (vector8_is_highbit_set(highbit_cum))
746
761
  return false;
747
762
 
763
+ #ifdef USE_NO_SIMD
748
764
  /* Check if any high bits in the zero accumulator got cleared. */
749
- if (zero_cum != UINT64CONST(0x8080808080808080))
765
+ if (zero_cum != vector8_broadcast(0x80))
750
766
  return false;
767
+ #endif
751
768
 
752
769
  return true;
753
770
  }
@@ -3,7 +3,7 @@
3
3
  * stringinfo_mb.h
4
4
  * multibyte support for StringInfo
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/mb/stringinfo_mb.h
@@ -10,7 +10,7 @@
10
10
  * Over time, this has also become the preferred place for widely known
11
11
  * resource-limitation stuff, such as work_mem and check_stack_depth().
12
12
  *
13
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
13
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
14
14
  * Portions Copyright (c) 1994, Regents of the University of California
15
15
  *
16
16
  * src/include/miscadmin.h
@@ -167,7 +167,7 @@ extern PGDLLIMPORT bool IsUnderPostmaster;
167
167
  extern PGDLLIMPORT bool IsBackgroundWorker;
168
168
  extern PGDLLIMPORT bool IsBinaryUpgrade;
169
169
 
170
- extern PGDLLIMPORT __thread bool ExitOnAnyError;
170
+ extern PGDLLIMPORT __thread bool ExitOnAnyError;
171
171
 
172
172
  extern PGDLLIMPORT char *DataDir;
173
173
  extern PGDLLIMPORT int data_directory_mode;
@@ -263,6 +263,15 @@ extern PGDLLIMPORT double hash_mem_multiplier;
263
263
  extern PGDLLIMPORT int maintenance_work_mem;
264
264
  extern PGDLLIMPORT int max_parallel_maintenance_workers;
265
265
 
266
+ /*
267
+ * Upper and lower hard limits for the buffer access strategy ring size
268
+ * specified by the VacuumBufferUsageLimit GUC and BUFFER_USAGE_LIMIT option
269
+ * to VACUUM and ANALYZE.
270
+ */
271
+ #define MIN_BAS_VAC_RING_SIZE_KB 128
272
+ #define MAX_BAS_VAC_RING_SIZE_KB (16 * 1024 * 1024)
273
+
274
+ extern PGDLLIMPORT int VacuumBufferUsageLimit;
266
275
  extern PGDLLIMPORT int VacuumCostPageHit;
267
276
  extern PGDLLIMPORT int VacuumCostPageMiss;
268
277
  extern PGDLLIMPORT int VacuumCostPageDirty;
@@ -279,15 +288,7 @@ extern PGDLLIMPORT bool VacuumCostActive;
279
288
 
280
289
  /* in tcop/postgres.c */
281
290
 
282
- #if defined(__ia64__) || defined(__ia64)
283
- typedef struct
284
- {
285
- char *stack_base_ptr;
286
- char *register_stack_base_ptr;
287
- } pg_stack_base_t;
288
- #else
289
291
  typedef char *pg_stack_base_t;
290
- #endif
291
292
 
292
293
  extern pg_stack_base_t set_stack_base(void);
293
294
  extern void restore_stack_base(pg_stack_base_t base);
@@ -299,7 +300,7 @@ extern void PreventCommandIfReadOnly(const char *cmdname);
299
300
  extern void PreventCommandIfParallelMode(const char *cmdname);
300
301
  extern void PreventCommandDuringRecovery(const char *cmdname);
301
302
 
302
- /* in utils/misc/guc.c */
303
+ /* in utils/misc/guc_tables.c */
303
304
  extern PGDLLIMPORT int trace_recovery_messages;
304
305
  extern int trace_recovery(int trace_level);
305
306
 
@@ -318,26 +319,30 @@ extern PGDLLIMPORT char *DatabasePath;
318
319
  /* now in utils/init/miscinit.c */
319
320
  extern void InitPostmasterChild(void);
320
321
  extern void InitStandaloneProcess(const char *argv0);
322
+ extern void InitProcessLocalLatch(void);
321
323
  extern void SwitchToSharedLatch(void);
322
324
  extern void SwitchBackToLocalLatch(void);
323
325
 
324
326
  typedef enum BackendType
325
327
  {
326
328
  B_INVALID = 0,
329
+ B_ARCHIVER,
327
330
  B_AUTOVAC_LAUNCHER,
328
331
  B_AUTOVAC_WORKER,
329
332
  B_BACKEND,
330
333
  B_BG_WORKER,
331
334
  B_BG_WRITER,
332
335
  B_CHECKPOINTER,
336
+ B_LOGGER,
337
+ B_STANDALONE_BACKEND,
333
338
  B_STARTUP,
334
339
  B_WAL_RECEIVER,
335
340
  B_WAL_SENDER,
336
341
  B_WAL_WRITER,
337
- B_ARCHIVER,
338
- B_LOGGER,
339
342
  } BackendType;
340
343
 
344
+ #define BACKEND_NUM_TYPES (B_WAL_WRITER + 1)
345
+
341
346
  extern PGDLLIMPORT BackendType MyBackendType;
342
347
 
343
348
  extern const char *GetBackendTypeDesc(BackendType backendType);
@@ -359,11 +364,14 @@ extern bool InSecurityRestrictedOperation(void);
359
364
  extern bool InNoForceRLSOperation(void);
360
365
  extern void GetUserIdAndContext(Oid *userid, bool *sec_def_context);
361
366
  extern void SetUserIdAndContext(Oid userid, bool sec_def_context);
362
- extern void InitializeSessionUserId(const char *rolename, Oid useroid);
367
+ extern void InitializeSessionUserId(const char *rolename, Oid roleid);
363
368
  extern void InitializeSessionUserIdStandalone(void);
364
369
  extern void SetSessionAuthorization(Oid userid, bool is_superuser);
365
370
  extern Oid GetCurrentRoleId(void);
366
371
  extern void SetCurrentRoleId(Oid roleid, bool is_superuser);
372
+ extern void InitializeSystemUser(const char *authn_id,
373
+ const char *auth_method);
374
+ extern const char *GetSystemUser(void);
367
375
 
368
376
  /* in utils/misc/superuser.c */
369
377
  extern bool superuser(void); /* current user is superuser */
@@ -411,7 +419,7 @@ extern PGDLLIMPORT ProcessingMode Mode;
411
419
 
412
420
  #define SetProcessingMode(mode) \
413
421
  do { \
414
- AssertArg((mode) == BootstrapProcessing || \
422
+ Assert((mode) == BootstrapProcessing || \
415
423
  (mode) == InitProcessing || \
416
424
  (mode) == NormalProcessing); \
417
425
  Mode = (mode); \
@@ -489,6 +497,10 @@ extern bool has_rolreplication(Oid roleid);
489
497
  typedef void (*shmem_request_hook_type) (void);
490
498
  extern PGDLLIMPORT shmem_request_hook_type shmem_request_hook;
491
499
 
500
+ extern Size EstimateClientConnectionInfoSpace(void);
501
+ extern void SerializeClientConnectionInfo(Size maxsize, char *start_address);
502
+ extern void RestoreClientConnectionInfo(char *conninfo);
503
+
492
504
  /* in executor/nodeHash.c */
493
505
  extern size_t get_hash_memory_limit(void);
494
506
 
@@ -5,13 +5,11 @@
5
5
  *
6
6
  * A bitmap set can represent any set of nonnegative integers, although
7
7
  * it is mainly intended for sets where the maximum value is not large,
8
- * say at most a few hundred. By convention, a NULL pointer is always
9
- * accepted by all operations to represent the empty set. (But beware
10
- * that this is not the only representation of the empty set. Use
11
- * bms_is_empty() in preference to testing for NULL.)
8
+ * say at most a few hundred. By convention, we always represent the
9
+ * empty set by a NULL pointer.
12
10
  *
13
11
  *
14
- * Copyright (c) 2003-2022, PostgreSQL Global Development Group
12
+ * Copyright (c) 2003-2023, PostgreSQL Global Development Group
15
13
  *
16
14
  * src/include/nodes/bitmapset.h
17
15
  *
@@ -20,6 +18,8 @@
20
18
  #ifndef BITMAPSET_H
21
19
  #define BITMAPSET_H
22
20
 
21
+ #include "nodes/nodes.h"
22
+
23
23
  /*
24
24
  * Forward decl to save including pg_list.h
25
25
  */
@@ -48,6 +48,9 @@ typedef int32 signedbitmapword; /* must be the matching signed type */
48
48
 
49
49
  typedef struct Bitmapset
50
50
  {
51
+ pg_node_attr(custom_copy_equal, special_read_write, no_query_jumble)
52
+
53
+ NodeTag type;
51
54
  int nwords; /* number of words in array */
52
55
  bitmapword words[FLEXIBLE_ARRAY_MEMBER]; /* really [nwords] */
53
56
  } Bitmapset;
@@ -97,7 +100,9 @@ extern int bms_num_members(const Bitmapset *a);
97
100
 
98
101
  /* optimized tests when we don't need to know exact membership count: */
99
102
  extern BMS_Membership bms_membership(const Bitmapset *a);
100
- extern bool bms_is_empty(const Bitmapset *a);
103
+
104
+ /* NULL is now the only allowed representation of an empty bitmapset */
105
+ #define bms_is_empty(a) ((a) == NULL)
101
106
 
102
107
  /* these routines recycle (modify or free) their non-const inputs: */
103
108
 
@@ -110,7 +115,6 @@ extern Bitmapset *bms_del_members(Bitmapset *a, const Bitmapset *b);
110
115
  extern Bitmapset *bms_join(Bitmapset *a, Bitmapset *b);
111
116
 
112
117
  /* support for iterating through the integer elements of a set: */
113
- extern int bms_first_member(Bitmapset *a);
114
118
  extern int bms_next_member(const Bitmapset *a, int prevbit);
115
119
  extern int bms_prev_member(const Bitmapset *a, int prevbit);
116
120
 
@@ -3,8 +3,23 @@
3
3
  * execnodes.h
4
4
  * definitions for executor state nodes
5
5
  *
6
- *
7
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
6
+ * Most plan node types declared in plannodes.h have a corresponding
7
+ * execution-state node type declared here. An exception is that
8
+ * expression nodes (subtypes of Expr) are usually represented by steps
9
+ * of an ExprState, and fully handled within execExpr* - but sometimes
10
+ * their state needs to be shared with other parts of the executor, as
11
+ * for example with SubPlanState, which nodeSubplan.c has to modify.
12
+ *
13
+ * Node types declared in this file do not have any copy/equal/out/read
14
+ * support. (That is currently hard-wired in gen_node_support.pl, rather
15
+ * than being explicitly represented by pg_node_attr decorations here.)
16
+ * There is no need for copy, equal, or read support for executor trees.
17
+ * Output support could be useful for debugging; but there are a lot of
18
+ * specialized fields that would require custom code, so for now it's
19
+ * not provided.
20
+ *
21
+ *
22
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
8
23
  * Portions Copyright (c) 1994, Regents of the University of California
9
24
  *
10
25
  * src/include/nodes/execnodes.h
@@ -47,7 +62,7 @@ struct LogicalTapeSet;
47
62
  /* ----------------
48
63
  * ExprState node
49
64
  *
50
- * ExprState is the top-level node for expression evaluation.
65
+ * ExprState represents the evaluation state for a whole expression tree.
51
66
  * It contains instructions (in ->steps) to evaluate the expression.
52
67
  * ----------------
53
68
  */
@@ -146,6 +161,7 @@ typedef struct ExprState
146
161
  * IndexUnchanged aminsert hint, cached for retail inserts
147
162
  * Concurrent are we doing a concurrent index build?
148
163
  * BrokenHotChain did we detect any broken HOT chains?
164
+ * Summarizing is it a summarizing index?
149
165
  * ParallelWorkers # of workers requested (excludes leader)
150
166
  * Am Oid of index AM
151
167
  * AmCache private cache area for index AM
@@ -179,6 +195,7 @@ typedef struct IndexInfo
179
195
  bool ii_IndexUnchanged;
180
196
  bool ii_Concurrent;
181
197
  bool ii_BrokenHotChain;
198
+ bool ii_Summarizing;
182
199
  int ii_ParallelWorkers;
183
200
  Oid ii_Am;
184
201
  void *ii_AmCache;
@@ -447,6 +464,9 @@ typedef struct ResultRelInfo
447
464
  */
448
465
  AttrNumber ri_RowIdAttNo;
449
466
 
467
+ /* For UPDATE, attnums of generated columns to be computed */
468
+ Bitmapset *ri_extraUpdatedCols;
469
+
450
470
  /* Projection to generate new tuple in an INSERT/UPDATE */
451
471
  ProjectionInfo *ri_projectNew;
452
472
  /* Slot to hold that tuple */
@@ -498,11 +518,13 @@ typedef struct ResultRelInfo
498
518
  /* array of constraint-checking expr states */
499
519
  ExprState **ri_ConstraintExprs;
500
520
 
501
- /* array of stored generated columns expr states */
502
- ExprState **ri_GeneratedExprs;
521
+ /* arrays of stored generated columns expr states, for INSERT and UPDATE */
522
+ ExprState **ri_GeneratedExprsI;
523
+ ExprState **ri_GeneratedExprsU;
503
524
 
504
525
  /* number of stored generated columns we need to compute */
505
- int ri_NumGeneratedNeeded;
526
+ int ri_NumGeneratedNeededI;
527
+ int ri_NumGeneratedNeededU;
506
528
 
507
529
  /* list of RETURNING expressions */
508
530
  List *ri_returningList;
@@ -523,6 +545,21 @@ typedef struct ResultRelInfo
523
545
  /* partition check expression state (NULL if not set up yet) */
524
546
  ExprState *ri_PartitionCheckExpr;
525
547
 
548
+ /*
549
+ * Map to convert child result relation tuples to the format of the table
550
+ * actually mentioned in the query (called "root"). Computed only if
551
+ * needed. A NULL map value indicates that no conversion is needed, so we
552
+ * must have a separate flag to show if the map has been computed.
553
+ */
554
+ TupleConversionMap *ri_ChildToRootMap;
555
+ bool ri_ChildToRootMapValid;
556
+
557
+ /*
558
+ * As above, but in the other direction.
559
+ */
560
+ TupleConversionMap *ri_RootToChildMap;
561
+ bool ri_RootToChildMapValid;
562
+
526
563
  /*
527
564
  * Information needed by tuple routing target relations
528
565
  *
@@ -531,23 +568,12 @@ typedef struct ResultRelInfo
531
568
  * mentioned in the query is an inherited table, nor when tuple routing is
532
569
  * not needed.
533
570
  *
534
- * RootToPartitionMap and PartitionTupleSlot, initialized by
535
- * ExecInitRoutingInfo, are non-NULL if partition has a different tuple
536
- * format than the root table.
571
+ * PartitionTupleSlot is non-NULL if RootToChild conversion is needed and
572
+ * the relation is a partition.
537
573
  */
538
574
  struct ResultRelInfo *ri_RootResultRelInfo;
539
- TupleConversionMap *ri_RootToPartitionMap;
540
575
  TupleTableSlot *ri_PartitionTupleSlot;
541
576
 
542
- /*
543
- * Map to convert child result relation tuples to the format of the table
544
- * actually mentioned in the query (called "root"). Computed only if
545
- * needed. A NULL map value indicates that no conversion is needed, so we
546
- * must have a separate flag to show if the map has been computed.
547
- */
548
- TupleConversionMap *ri_ChildToRootMap;
549
- bool ri_ChildToRootMapValid;
550
-
551
577
  /* for use by copyfrom.c when performing multi-inserts */
552
578
  struct CopyMultiInsertBuffer *ri_CopyMultiInsertBuffer;
553
579
 
@@ -595,6 +621,7 @@ typedef struct EState
595
621
  * pointers, or NULL if not yet opened */
596
622
  struct ExecRowMark **es_rowmarks; /* Array of per-range-table-entry
597
623
  * ExecRowMarks, or NULL if none */
624
+ List *es_rteperminfos; /* List of RTEPermissionInfo */
598
625
  PlannedStmt *es_plannedstmt; /* link to top of plan tree */
599
626
  const char *es_sourceText; /* Source text from QueryDesc */
600
627
 
@@ -633,7 +660,10 @@ typedef struct EState
633
660
 
634
661
  List *es_tupleTable; /* List of TupleTableSlots */
635
662
 
636
- uint64 es_processed; /* # of tuples processed */
663
+ uint64 es_processed; /* # of tuples processed during one
664
+ * ExecutorRun() call. */
665
+ uint64 es_total_processed; /* total # of tuples aggregated across all
666
+ * ExecutorRun() calls. */
637
667
 
638
668
  int es_top_eflags; /* eflags passed to ExecutorStart */
639
669
  int es_instrument; /* OR of InstrumentOption flags */
@@ -677,6 +707,13 @@ typedef struct EState
677
707
  int es_jit_flags;
678
708
  struct JitContext *es_jit;
679
709
  struct JitInstrumentation *es_jit_worker_instr;
710
+
711
+ /*
712
+ * Lists of ResultRelInfos for foreign tables on which batch-inserts are
713
+ * to be executed and owning ModifyTableStates, stored in the same order.
714
+ */
715
+ List *es_insert_pending_result_relations;
716
+ List *es_insert_pending_modifytables;
680
717
  } EState;
681
718
 
682
719
 
@@ -684,8 +721,8 @@ typedef struct EState
684
721
  * ExecRowMark -
685
722
  * runtime representation of FOR [KEY] UPDATE/SHARE clauses
686
723
  *
687
- * When doing UPDATE, DELETE, or SELECT FOR [KEY] UPDATE/SHARE, we will have an
688
- * ExecRowMark for each non-target relation in the query (except inheritance
724
+ * When doing UPDATE/DELETE/MERGE/SELECT FOR [KEY] UPDATE/SHARE, we will have
725
+ * an ExecRowMark for each non-target relation in the query (except inheritance
689
726
  * parent RTEs, which can be ignored at runtime). Virtual relations such as
690
727
  * subqueries-in-FROM will have an ExecRowMark with relation == NULL. See
691
728
  * PlanRowMark for details about most of the fields. In addition to fields
@@ -993,6 +1030,8 @@ typedef TupleTableSlot *(*ExecProcNodeMtd) (struct PlanState *pstate);
993
1030
  */
994
1031
  typedef struct PlanState
995
1032
  {
1033
+ pg_node_attr(abstract)
1034
+
996
1035
  NodeTag type;
997
1036
 
998
1037
  Plan *plan; /* associated Plan node */
@@ -1130,15 +1169,16 @@ typedef struct PlanState
1130
1169
  */
1131
1170
  typedef struct EPQState
1132
1171
  {
1133
- /* Initialized at EvalPlanQualInit() time: */
1134
-
1172
+ /* These are initialized by EvalPlanQualInit() and do not change later: */
1135
1173
  EState *parentestate; /* main query's EState */
1136
1174
  int epqParam; /* ID of Param to force scan node re-eval */
1175
+ List *resultRelations; /* integer list of RT indexes, or NIL */
1137
1176
 
1138
1177
  /*
1139
- * Tuples to be substituted by scan nodes. They need to set up, before
1140
- * calling EvalPlanQual()/EvalPlanQualNext(), into the slot returned by
1141
- * EvalPlanQualSlot(scanrelid). The array is indexed by scanrelid - 1.
1178
+ * relsubs_slot[scanrelid - 1] holds the EPQ test tuple to be returned by
1179
+ * the scan node for the scanrelid'th RT index, in place of performing an
1180
+ * actual table scan. Callers should use EvalPlanQualSlot() to fetch
1181
+ * these slots.
1142
1182
  */
1143
1183
  List *tuple_table; /* tuple table for relsubs_slot */
1144
1184
  TupleTableSlot **relsubs_slot;
@@ -1172,11 +1212,21 @@ typedef struct EPQState
1172
1212
  ExecAuxRowMark **relsubs_rowmark;
1173
1213
 
1174
1214
  /*
1175
- * True if a relation's EPQ tuple has been fetched for relation, indexed
1176
- * by scanrelid - 1.
1215
+ * relsubs_done[scanrelid - 1] is true if there is no EPQ tuple for this
1216
+ * target relation or it has already been fetched in the current scan of
1217
+ * this target relation within the current EvalPlanQual test.
1177
1218
  */
1178
1219
  bool *relsubs_done;
1179
1220
 
1221
+ /*
1222
+ * relsubs_blocked[scanrelid - 1] is true if there is no EPQ tuple for
1223
+ * this target relation during the current EvalPlanQual test. We keep
1224
+ * these flags set for all relids listed in resultRelations, but
1225
+ * transiently clear the one for the relation whose tuple is actually
1226
+ * passed to EvalPlanQual().
1227
+ */
1228
+ bool *relsubs_blocked;
1229
+
1180
1230
  PlanState *recheckplanstate; /* EPQ specific exec nodes, for ->plan */
1181
1231
  } EPQState;
1182
1232
 
@@ -1317,6 +1367,7 @@ struct AppendState
1317
1367
  ParallelAppendState *as_pstate; /* parallel coordination info */
1318
1368
  Size pstate_len; /* size of parallel coordination info */
1319
1369
  struct PartitionPruneState *as_prune_state;
1370
+ bool as_valid_subplans_identified; /* is as_valid_subplans valid? */
1320
1371
  Bitmapset *as_valid_subplans;
1321
1372
  Bitmapset *as_valid_asyncplans; /* valid asynchronous plans indexes */
1322
1373
  bool (*choose_next_subplan) (AppendState *);
@@ -1932,6 +1983,7 @@ typedef struct CustomScanState
1932
1983
  List *custom_ps; /* list of child PlanState nodes, if any */
1933
1984
  Size pscan_len; /* size of parallel coordination information */
1934
1985
  const struct CustomExecMethods *methods;
1986
+ const struct TupleTableSlotOps *slotOps;
1935
1987
  } CustomScanState;
1936
1988
 
1937
1989
  /* ----------------------------------------------------------------
@@ -2034,7 +2086,8 @@ typedef struct MergeJoinState
2034
2086
  * OuterTupleSlot is empty!)
2035
2087
  * hj_OuterTupleSlot tuple slot for outer tuples
2036
2088
  * hj_HashTupleSlot tuple slot for inner (hashed) tuples
2037
- * hj_NullOuterTupleSlot prepared null tuple for right/full outer joins
2089
+ * hj_NullOuterTupleSlot prepared null tuple for right/right-anti/full
2090
+ * outer joins
2038
2091
  * hj_NullInnerTupleSlot prepared null tuple for left/full outer joins
2039
2092
  * hj_FirstOuterTupleSlot first tuple retrieved from outer plan
2040
2093
  * hj_JoinState current state of ExecHashJoin state machine
@@ -4,7 +4,7 @@
4
4
  * Definitions for extensible nodes and custom scans
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/nodes/extensible.h
@@ -31,6 +31,8 @@
31
31
  */
32
32
  typedef struct ExtensibleNode
33
33
  {
34
+ pg_node_attr(custom_copy_equal, custom_read_write)
35
+
34
36
  NodeTag type;
35
37
  const char *extnodename; /* identifier of ExtensibleNodeMethods */
36
38
  } ExtensibleNode;
@@ -70,8 +72,8 @@ typedef struct ExtensibleNodeMethods
70
72
  void (*nodeRead) (struct ExtensibleNode *node);
71
73
  } ExtensibleNodeMethods;
72
74
 
73
- extern void RegisterExtensibleNodeMethods(const ExtensibleNodeMethods *method);
74
- extern const ExtensibleNodeMethods *GetExtensibleNodeMethods(const char *name,
75
+ extern void RegisterExtensibleNodeMethods(const ExtensibleNodeMethods *methods);
76
+ extern const ExtensibleNodeMethods *GetExtensibleNodeMethods(const char *extnodename,
75
77
  bool missing_ok);
76
78
 
77
79
  /*
@@ -4,7 +4,7 @@
4
4
  * Common header for some locking-related declarations.
5
5
  *
6
6
  *
7
- * Copyright (c) 2014-2022, PostgreSQL Global Development Group
7
+ * Copyright (c) 2014-2023, PostgreSQL Global Development Group
8
8
  *
9
9
  * src/include/nodes/lockoptions.h
10
10
  *
@@ -4,7 +4,7 @@
4
4
  * prototypes for the creator functions of various nodes
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/nodes/makefuncs.h
@@ -96,7 +96,9 @@ extern List *make_ands_implicit(Expr *clause);
96
96
 
97
97
  extern IndexInfo *makeIndexInfo(int numattrs, int numkeyattrs, Oid amoid,
98
98
  List *expressions, List *predicates,
99
- bool unique, bool nulls_not_distinct, bool isready, bool concurrent);
99
+ bool unique, bool nulls_not_distinct,
100
+ bool isready, bool concurrent,
101
+ bool summarizing);
100
102
 
101
103
  extern DefElem *makeDefElem(char *name, Node *arg, int location);
102
104
  extern DefElem *makeDefElemExtended(char *nameSpace, char *name, Node *arg,
@@ -106,4 +108,14 @@ extern GroupingSet *makeGroupingSet(GroupingSetKind kind, List *content, int loc
106
108
 
107
109
  extern VacuumRelation *makeVacuumRelation(RangeVar *relation, Oid oid, List *va_cols);
108
110
 
111
+ extern JsonFormat *makeJsonFormat(JsonFormatType type, JsonEncoding encoding,
112
+ int location);
113
+ extern JsonValueExpr *makeJsonValueExpr(Expr *raw_expr, Expr *formatted_expr,
114
+ JsonFormat *format);
115
+ extern Node *makeJsonKeyValue(Node *key, Node *value);
116
+ extern Node *makeJsonIsPredicate(Node *expr, JsonFormat *format,
117
+ JsonValueType item_type, bool unique_keys,
118
+ int location);
119
+ extern JsonEncoding makeJsonEncoding(char *name);
120
+
109
121
  #endif /* MAKEFUNC_H */
@@ -4,7 +4,7 @@
4
4
  * POSTGRES memory context node definitions.
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/nodes/memnodes.h
@@ -59,11 +59,12 @@ typedef struct MemoryContextMethods
59
59
  {
60
60
  void *(*alloc) (MemoryContext context, Size size);
61
61
  /* call this free_p in case someone #define's free() */
62
- void (*free_p) (MemoryContext context, void *pointer);
63
- void *(*realloc) (MemoryContext context, void *pointer, Size size);
62
+ void (*free_p) (void *pointer);
63
+ void *(*realloc) (void *pointer, Size size);
64
64
  void (*reset) (MemoryContext context);
65
65
  void (*delete_context) (MemoryContext context);
66
- Size (*get_chunk_space) (MemoryContext context, void *pointer);
66
+ MemoryContext (*get_chunk_context) (void *pointer);
67
+ Size (*get_chunk_space) (void *pointer);
67
68
  bool (*is_empty) (MemoryContext context);
68
69
  void (*stats) (MemoryContext context,
69
70
  MemoryStatsPrintFunc printfunc, void *passthru,
@@ -77,6 +78,8 @@ typedef struct MemoryContextMethods
77
78
 
78
79
  typedef struct MemoryContextData
79
80
  {
81
+ pg_node_attr(abstract) /* there are no nodes of this type */
82
+
80
83
  NodeTag type; /* identifies exact kind of context */
81
84
  /* these two fields are placed here to minimize alignment wastage: */
82
85
  bool isReset; /* T = no space alloced since last reset */