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
  * postmaster.h
4
4
  * Exports from postmaster/postmaster.c.
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/postmaster/postmaster.h
@@ -15,13 +15,14 @@
15
15
 
16
16
  /* GUC options */
17
17
  extern PGDLLIMPORT bool EnableSSL;
18
- extern PGDLLIMPORT int ReservedBackends;
18
+ extern PGDLLIMPORT int SuperuserReservedConnections;
19
+ extern PGDLLIMPORT int ReservedConnections;
19
20
  extern PGDLLIMPORT int PostPortNumber;
20
21
  extern PGDLLIMPORT int Unix_socket_permissions;
21
22
  extern PGDLLIMPORT char *Unix_socket_group;
22
23
  extern PGDLLIMPORT char *Unix_socket_directories;
23
24
  extern PGDLLIMPORT char *ListenAddresses;
24
- extern PGDLLIMPORT __thread bool ClientAuthInProgress;
25
+ extern PGDLLIMPORT bool ClientAuthInProgress;
25
26
  extern PGDLLIMPORT int PreAuthDelay;
26
27
  extern PGDLLIMPORT int AuthenticationTimeout;
27
28
  extern PGDLLIMPORT bool Log_connections;
@@ -30,6 +31,8 @@ extern PGDLLIMPORT bool enable_bonjour;
30
31
  extern PGDLLIMPORT char *bonjour_name;
31
32
  extern PGDLLIMPORT bool restart_after_crash;
32
33
  extern PGDLLIMPORT bool remove_temp_files_after_crash;
34
+ extern PGDLLIMPORT bool send_abort_for_crash;
35
+ extern PGDLLIMPORT bool send_abort_for_kill;
33
36
 
34
37
  #ifdef WIN32
35
38
  extern PGDLLIMPORT HANDLE PostmasterHandle;
@@ -3,7 +3,7 @@
3
3
  * startup.h
4
4
  * Exports from postmaster/startup.c.
5
5
  *
6
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
7
  *
8
8
  * src/include/postmaster/startup.h
9
9
  *
@@ -32,6 +32,8 @@ extern void PostRestoreCommand(void);
32
32
  extern bool IsPromoteSignaled(void);
33
33
  extern void ResetPromoteSignaled(void);
34
34
 
35
+ extern void enable_startup_progress_timeout(void);
36
+ extern void disable_startup_progress_timeout(void);
35
37
  extern void begin_startup_progress_phase(void);
36
38
  extern void startup_progress_timeout_handler(void);
37
39
  extern bool has_startup_progress_timeout_expired(long *secs, int *usecs);
@@ -3,7 +3,7 @@
3
3
  * syslogger.h
4
4
  * Exports from postmaster/syslogger.c.
5
5
  *
6
- * Copyright (c) 2004-2022, PostgreSQL Global Development Group
6
+ * Copyright (c) 2004-2023, PostgreSQL Global Development Group
7
7
  *
8
8
  * src/include/postmaster/syslogger.h
9
9
  *
@@ -84,7 +84,7 @@ extern PGDLLIMPORT HANDLE syslogPipe[2];
84
84
 
85
85
  extern int SysLogger_Start(void);
86
86
 
87
- extern void write_syslogger_file(const char *buffer, int count, int dest);
87
+ extern void write_syslogger_file(const char *buffer, int count, int destination);
88
88
 
89
89
  #ifdef EXEC_BACKEND
90
90
  extern void SysLoggerMain(int argc, char *argv[]) pg_attribute_noreturn();
@@ -3,7 +3,7 @@
3
3
  * walwriter.h
4
4
  * Exports from postmaster/walwriter.c.
5
5
  *
6
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
7
  *
8
8
  * src/include/postmaster/walwriter.h
9
9
  *
@@ -12,6 +12,8 @@
12
12
  #ifndef _WALWRITER_H
13
13
  #define _WALWRITER_H
14
14
 
15
+ #define DEFAULT_WAL_WRITER_FLUSH_AFTER ((1024 * 1024) / XLOG_BLCKSZ)
16
+
15
17
  /* GUC options */
16
18
  extern PGDLLIMPORT int WalWriterDelay;
17
19
  extern PGDLLIMPORT int WalWriterFlushAfter;
@@ -156,7 +156,6 @@ typedef struct
156
156
  #define REG_BADOPT 18 /* invalid embedded option */
157
157
  #define REG_ETOOBIG 19 /* regular expression is too complex */
158
158
  #define REG_ECOLORS 20 /* too many colors */
159
- #define REG_CANCEL 21 /* operation cancelled */
160
159
  /* two specials for debugging and testing */
161
160
  #define REG_ATOI 101 /* convert error-code name to number */
162
161
  #define REG_ITOA 102 /* convert error-code number to name */
@@ -171,11 +170,15 @@ typedef struct
171
170
  */
172
171
 
173
172
  /* regcomp.c */
174
- extern int pg_regcomp(regex_t *, const pg_wchar *, size_t, int, Oid);
175
- extern int pg_regexec(regex_t *, const pg_wchar *, size_t, size_t, rm_detail_t *, size_t, regmatch_t[], int);
176
- extern int pg_regprefix(regex_t *, pg_wchar **, size_t *);
177
- extern void pg_regfree(regex_t *);
178
- extern size_t pg_regerror(int, const regex_t *, char *, size_t);
173
+ extern int pg_regcomp(regex_t *re, const pg_wchar *string, size_t len,
174
+ int flags, Oid collation);
175
+ extern int pg_regexec(regex_t *re, const pg_wchar *string, size_t len,
176
+ size_t search_start, rm_detail_t *details,
177
+ size_t nmatch, regmatch_t pmatch[], int flags);
178
+ extern int pg_regprefix(regex_t *re, pg_wchar **string, size_t *slength);
179
+ extern void pg_regfree(regex_t *re);
180
+ extern size_t pg_regerror(int errcode, const regex_t *preg, char *errbuf,
181
+ size_t errbuf_size);
179
182
 
180
183
  /* regexp.c */
181
184
  extern regex_t *RE_compile_and_cache(text *text_re, int cflags, Oid collation);
@@ -3,7 +3,7 @@
3
3
  * logicallauncher.h
4
4
  * Exports for logical replication launcher.
5
5
  *
6
- * Portions Copyright (c) 2016-2022, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 2016-2023, PostgreSQL Global Development Group
7
7
  *
8
8
  * src/include/replication/logicallauncher.h
9
9
  *
@@ -14,6 +14,7 @@
14
14
 
15
15
  extern PGDLLIMPORT int max_logical_replication_workers;
16
16
  extern PGDLLIMPORT int max_sync_workers_per_subscription;
17
+ extern PGDLLIMPORT int max_parallel_apply_workers_per_subscription;
17
18
 
18
19
  extern void ApplyLauncherRegister(void);
19
20
  extern void ApplyLauncherMain(Datum main_arg);
@@ -21,9 +22,13 @@ extern void ApplyLauncherMain(Datum main_arg);
21
22
  extern Size ApplyLauncherShmemSize(void);
22
23
  extern void ApplyLauncherShmemInit(void);
23
24
 
25
+ extern void ApplyLauncherForgetWorkerStartTime(Oid subid);
26
+
24
27
  extern void ApplyLauncherWakeupAtCommit(void);
25
28
  extern void AtEOXact_ApplyLauncher(bool isCommit);
26
29
 
27
30
  extern bool IsLogicalLauncher(void);
28
31
 
32
+ extern pid_t GetLeaderApplyWorkerPid(pid_t pid);
33
+
29
34
  #endif /* LOGICALLAUNCHER_H */
@@ -3,7 +3,7 @@
3
3
  * logicalproto.h
4
4
  * logical replication protocol
5
5
  *
6
- * Copyright (c) 2015-2022, PostgreSQL Global Development Group
6
+ * Copyright (c) 2015-2023, PostgreSQL Global Development Group
7
7
  *
8
8
  * IDENTIFICATION
9
9
  * src/include/replication/logicalproto.h
@@ -32,12 +32,17 @@
32
32
  *
33
33
  * LOGICALREP_PROTO_TWOPHASE_VERSION_NUM is the minimum protocol version with
34
34
  * support for two-phase commit decoding (at prepare time). Introduced in PG15.
35
+ *
36
+ * LOGICALREP_PROTO_STREAM_PARALLEL_VERSION_NUM is the minimum protocol version
37
+ * where we support applying large streaming transactions in parallel.
38
+ * Introduced in PG16.
35
39
  */
36
40
  #define LOGICALREP_PROTO_MIN_VERSION_NUM 1
37
41
  #define LOGICALREP_PROTO_VERSION_NUM 1
38
42
  #define LOGICALREP_PROTO_STREAM_VERSION_NUM 2
39
43
  #define LOGICALREP_PROTO_TWOPHASE_VERSION_NUM 3
40
- #define LOGICALREP_PROTO_MAX_VERSION_NUM LOGICALREP_PROTO_TWOPHASE_VERSION_NUM
44
+ #define LOGICALREP_PROTO_STREAM_PARALLEL_VERSION_NUM 4
45
+ #define LOGICALREP_PROTO_MAX_VERSION_NUM LOGICALREP_PROTO_STREAM_PARALLEL_VERSION_NUM
41
46
 
42
47
  /*
43
48
  * Logical message types
@@ -175,6 +180,17 @@ typedef struct LogicalRepRollbackPreparedTxnData
175
180
  char gid[GIDSIZE];
176
181
  } LogicalRepRollbackPreparedTxnData;
177
182
 
183
+ /*
184
+ * Transaction protocol information for stream abort.
185
+ */
186
+ typedef struct LogicalRepStreamAbortData
187
+ {
188
+ TransactionId xid;
189
+ TransactionId subxid;
190
+ XLogRecPtr abort_lsn;
191
+ TimestampTz abort_time;
192
+ } LogicalRepStreamAbortData;
193
+
178
194
  extern void logicalrep_write_begin(StringInfo out, ReorderBufferTXN *txn);
179
195
  extern void logicalrep_read_begin(StringInfo in,
180
196
  LogicalRepBeginData *begin_data);
@@ -219,8 +235,8 @@ extern LogicalRepRelId logicalrep_read_update(StringInfo in,
219
235
  bool *has_oldtuple, LogicalRepTupleData *oldtup,
220
236
  LogicalRepTupleData *newtup);
221
237
  extern void logicalrep_write_delete(StringInfo out, TransactionId xid,
222
- Relation rel, TupleTableSlot *oldtuple,
223
- bool binary);
238
+ Relation rel, TupleTableSlot *oldslot,
239
+ bool binary, Bitmapset *columns);
224
240
  extern LogicalRepRelId logicalrep_read_delete(StringInfo in,
225
241
  LogicalRepTupleData *oldtup);
226
242
  extern void logicalrep_write_truncate(StringInfo out, TransactionId xid,
@@ -235,7 +251,7 @@ extern void logicalrep_write_rel(StringInfo out, TransactionId xid,
235
251
  extern LogicalRepRelation *logicalrep_read_rel(StringInfo in);
236
252
  extern void logicalrep_write_typ(StringInfo out, TransactionId xid,
237
253
  Oid typoid);
238
- extern void logicalrep_read_typ(StringInfo out, LogicalRepTyp *ltyp);
254
+ extern void logicalrep_read_typ(StringInfo in, LogicalRepTyp *ltyp);
239
255
  extern void logicalrep_write_stream_start(StringInfo out, TransactionId xid,
240
256
  bool first_segment);
241
257
  extern TransactionId logicalrep_read_stream_start(StringInfo in,
@@ -243,12 +259,16 @@ extern TransactionId logicalrep_read_stream_start(StringInfo in,
243
259
  extern void logicalrep_write_stream_stop(StringInfo out);
244
260
  extern void logicalrep_write_stream_commit(StringInfo out, ReorderBufferTXN *txn,
245
261
  XLogRecPtr commit_lsn);
246
- extern TransactionId logicalrep_read_stream_commit(StringInfo out,
262
+ extern TransactionId logicalrep_read_stream_commit(StringInfo in,
247
263
  LogicalRepCommitData *commit_data);
248
264
  extern void logicalrep_write_stream_abort(StringInfo out, TransactionId xid,
249
- TransactionId subxid);
250
- extern void logicalrep_read_stream_abort(StringInfo in, TransactionId *xid,
251
- TransactionId *subxid);
252
- extern char *logicalrep_message_type(LogicalRepMsgType action);
265
+ TransactionId subxid,
266
+ XLogRecPtr abort_lsn,
267
+ TimestampTz abort_time,
268
+ bool write_abort_info);
269
+ extern void logicalrep_read_stream_abort(StringInfo in,
270
+ LogicalRepStreamAbortData *abort_data,
271
+ bool read_abort_info);
272
+ extern const char *logicalrep_message_type(LogicalRepMsgType action);
253
273
 
254
274
  #endif /* LOGICAL_PROTO_H */
@@ -0,0 +1,32 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * logicalworker.h
4
+ * Exports for logical replication workers.
5
+ *
6
+ * Portions Copyright (c) 2016-2023, PostgreSQL Global Development Group
7
+ *
8
+ * src/include/replication/logicalworker.h
9
+ *
10
+ *-------------------------------------------------------------------------
11
+ */
12
+ #ifndef LOGICALWORKER_H
13
+ #define LOGICALWORKER_H
14
+
15
+ #include <signal.h>
16
+
17
+ extern PGDLLIMPORT volatile sig_atomic_t ParallelApplyMessagePending;
18
+
19
+ extern void ApplyWorkerMain(Datum main_arg);
20
+ extern void ParallelApplyWorkerMain(Datum main_arg);
21
+
22
+ extern bool IsLogicalWorker(void);
23
+ extern bool IsLogicalParallelApplyWorker(void);
24
+
25
+ extern void HandleParallelApplyMessageInterrupt(void);
26
+ extern void HandleParallelApplyMessages(void);
27
+
28
+ extern void LogicalRepWorkersWakeupAtCommit(Oid subid);
29
+
30
+ extern void AtEOXact_LogicalRepWorkers(bool isCommit);
31
+
32
+ #endif /* LOGICALWORKER_H */
@@ -2,7 +2,7 @@
2
2
  * origin.h
3
3
  * Exports from replication/logical/origin.c
4
4
  *
5
- * Copyright (c) 2013-2022, PostgreSQL Global Development Group
5
+ * Copyright (c) 2013-2023, PostgreSQL Global Development Group
6
6
  *
7
7
  * src/include/replication/origin.h
8
8
  *-------------------------------------------------------------------------
@@ -38,8 +38,8 @@ extern PGDLLIMPORT XLogRecPtr replorigin_session_origin_lsn;
38
38
  extern PGDLLIMPORT TimestampTz replorigin_session_origin_timestamp;
39
39
 
40
40
  /* API for querying & manipulating replication origins */
41
- extern RepOriginId replorigin_by_name(const char *name, bool missing_ok);
42
- extern RepOriginId replorigin_create(const char *name);
41
+ extern RepOriginId replorigin_by_name(const char *roname, bool missing_ok);
42
+ extern RepOriginId replorigin_create(const char *roname);
43
43
  extern void replorigin_drop_by_name(const char *name, bool missing_ok, bool nowait);
44
44
  extern bool replorigin_by_oid(RepOriginId roident, bool missing_ok,
45
45
  char **roname);
@@ -53,7 +53,7 @@ extern XLogRecPtr replorigin_get_progress(RepOriginId node, bool flush);
53
53
 
54
54
  extern void replorigin_session_advance(XLogRecPtr remote_commit,
55
55
  XLogRecPtr local_commit);
56
- extern void replorigin_session_setup(RepOriginId node);
56
+ extern void replorigin_session_setup(RepOriginId node, int acquired_by);
57
57
  extern void replorigin_session_reset(void);
58
58
  extern XLogRecPtr replorigin_session_get_progress(bool flush);
59
59
 
@@ -2,7 +2,7 @@
2
2
  * reorderbuffer.h
3
3
  * PostgreSQL logical replay/reorder buffer management.
4
4
  *
5
- * Copyright (c) 2012-2022, PostgreSQL Global Development Group
5
+ * Copyright (c) 2012-2023, PostgreSQL Global Development Group
6
6
  *
7
7
  * src/include/replication/reorderbuffer.h
8
8
  */
@@ -17,7 +17,16 @@
17
17
  #include "utils/snapshot.h"
18
18
  #include "utils/timestamp.h"
19
19
 
20
+ /* GUC variables */
20
21
  extern PGDLLIMPORT int logical_decoding_work_mem;
22
+ extern PGDLLIMPORT int debug_logical_replication_streaming;
23
+
24
+ /* possible values for debug_logical_replication_streaming */
25
+ typedef enum
26
+ {
27
+ DEBUG_LOGICAL_REP_STREAMING_BUFFERED,
28
+ DEBUG_LOGICAL_REP_STREAMING_IMMEDIATE
29
+ } DebugLogicalRepStreamingMode;
21
30
 
22
31
  /* an individual tuple, stored in one chunk of memory */
23
32
  typedef struct ReorderBufferTupleBuf
@@ -99,7 +108,7 @@ typedef struct ReorderBufferChange
99
108
  struct
100
109
  {
101
110
  /* relation that has been changed */
102
- RelFileNode relnode;
111
+ RelFileLocator rlocator;
103
112
 
104
113
  /* no previously reassembled toast chunks are necessary anymore */
105
114
  bool clear_toast_afterwards;
@@ -145,7 +154,7 @@ typedef struct ReorderBufferChange
145
154
  */
146
155
  struct
147
156
  {
148
- RelFileNode node;
157
+ RelFileLocator locator;
149
158
  ItemPointerData tid;
150
159
  CommandId cmin;
151
160
  CommandId cmax;
@@ -168,14 +177,15 @@ typedef struct ReorderBufferChange
168
177
  } ReorderBufferChange;
169
178
 
170
179
  /* ReorderBufferTXN txn_flags */
171
- #define RBTXN_HAS_CATALOG_CHANGES 0x0001
172
- #define RBTXN_IS_SUBXACT 0x0002
173
- #define RBTXN_IS_SERIALIZED 0x0004
174
- #define RBTXN_IS_SERIALIZED_CLEAR 0x0008
175
- #define RBTXN_IS_STREAMED 0x0010
176
- #define RBTXN_HAS_PARTIAL_CHANGE 0x0020
177
- #define RBTXN_PREPARE 0x0040
178
- #define RBTXN_SKIPPED_PREPARE 0x0080
180
+ #define RBTXN_HAS_CATALOG_CHANGES 0x0001
181
+ #define RBTXN_IS_SUBXACT 0x0002
182
+ #define RBTXN_IS_SERIALIZED 0x0004
183
+ #define RBTXN_IS_SERIALIZED_CLEAR 0x0008
184
+ #define RBTXN_IS_STREAMED 0x0010
185
+ #define RBTXN_HAS_PARTIAL_CHANGE 0x0020
186
+ #define RBTXN_PREPARE 0x0040
187
+ #define RBTXN_SKIPPED_PREPARE 0x0080
188
+ #define RBTXN_HAS_STREAMABLE_CHANGE 0x0100
179
189
 
180
190
  /* Does the transaction have catalog changes? */
181
191
  #define rbtxn_has_catalog_changes(txn) \
@@ -207,6 +217,12 @@ typedef struct ReorderBufferChange
207
217
  ((txn)->txn_flags & RBTXN_HAS_PARTIAL_CHANGE) != 0 \
208
218
  )
209
219
 
220
+ /* Does this transaction contain streamable changes? */
221
+ #define rbtxn_has_streamable_change(txn) \
222
+ ( \
223
+ ((txn)->txn_flags & RBTXN_HAS_STREAMABLE_CHANGE) != 0 \
224
+ )
225
+
210
226
  /*
211
227
  * Has this transaction been streamed to downstream?
212
228
  *
@@ -233,6 +249,24 @@ typedef struct ReorderBufferChange
233
249
  ((txn)->txn_flags & RBTXN_SKIPPED_PREPARE) != 0 \
234
250
  )
235
251
 
252
+ /* Is this a top-level transaction? */
253
+ #define rbtxn_is_toptxn(txn) \
254
+ ( \
255
+ (txn)->toptxn == NULL \
256
+ )
257
+
258
+ /* Is this a subtransaction? */
259
+ #define rbtxn_is_subtxn(txn) \
260
+ ( \
261
+ (txn)->toptxn != NULL \
262
+ )
263
+
264
+ /* Get the top-level transaction of this (sub)transaction. */
265
+ #define rbtxn_get_toptxn(txn) \
266
+ ( \
267
+ rbtxn_is_subtxn(txn) ? (txn)->toptxn : (txn) \
268
+ )
269
+
236
270
  typedef struct ReorderBufferTXN
237
271
  {
238
272
  /* See above */
@@ -262,7 +296,7 @@ typedef struct ReorderBufferTXN
262
296
  * aborted. This can be a
263
297
  * * plain commit record
264
298
  * * plain commit record, of a parent transaction
265
- * * prepared tansaction
299
+ * * prepared transaction
266
300
  * * prepared transaction commit
267
301
  * * plain abort record
268
302
  * * prepared transaction abort
@@ -301,6 +335,7 @@ typedef struct ReorderBufferTXN
301
335
  {
302
336
  TimestampTz commit_time;
303
337
  TimestampTz prepare_time;
338
+ TimestampTz abort_time;
304
339
  } xact_time;
305
340
 
306
341
  /*
@@ -380,6 +415,11 @@ typedef struct ReorderBufferTXN
380
415
  */
381
416
  dlist_node node;
382
417
 
418
+ /*
419
+ * A node in the list of catalog modifying transactions
420
+ */
421
+ dlist_node catchange_node;
422
+
383
423
  /*
384
424
  * Size of this transaction (changes currently in memory, in bytes).
385
425
  */
@@ -504,6 +544,12 @@ typedef void (*ReorderBufferStreamTruncateCB) (
504
544
  Relation relations[],
505
545
  ReorderBufferChange *change);
506
546
 
547
+ /* update progress txn callback signature */
548
+ typedef void (*ReorderBufferUpdateProgressTxnCB) (
549
+ ReorderBuffer *rb,
550
+ ReorderBufferTXN *txn,
551
+ XLogRecPtr lsn);
552
+
507
553
  struct ReorderBuffer
508
554
  {
509
555
  /*
@@ -526,6 +572,11 @@ struct ReorderBuffer
526
572
  */
527
573
  dlist_head txns_by_base_snapshot_lsn;
528
574
 
575
+ /*
576
+ * Transactions and subtransactions that have modified system catalogs.
577
+ */
578
+ dclist_head catchange_txns;
579
+
529
580
  /*
530
581
  * one-entry sized cache for by_txn. Very frequently the same txn gets
531
582
  * looked up over and over again.
@@ -562,6 +613,12 @@ struct ReorderBuffer
562
613
  ReorderBufferStreamMessageCB stream_message;
563
614
  ReorderBufferStreamTruncateCB stream_truncate;
564
615
 
616
+ /*
617
+ * Callback to be called when updating progress during sending data of a
618
+ * transaction (and its subtransactions) to the output plugin.
619
+ */
620
+ ReorderBufferUpdateProgressTxnCB update_progress_txn;
621
+
565
622
  /*
566
623
  * Pointer that will be passed untouched to the callbacks.
567
624
  */
@@ -619,23 +676,27 @@ struct ReorderBuffer
619
676
 
620
677
 
621
678
  extern ReorderBuffer *ReorderBufferAllocate(void);
622
- extern void ReorderBufferFree(ReorderBuffer *);
679
+ extern void ReorderBufferFree(ReorderBuffer *rb);
623
680
 
624
- extern ReorderBufferTupleBuf *ReorderBufferGetTupleBuf(ReorderBuffer *, Size tuple_len);
625
- extern void ReorderBufferReturnTupleBuf(ReorderBuffer *, ReorderBufferTupleBuf *tuple);
626
- extern ReorderBufferChange *ReorderBufferGetChange(ReorderBuffer *);
627
- extern void ReorderBufferReturnChange(ReorderBuffer *, ReorderBufferChange *, bool);
681
+ extern ReorderBufferTupleBuf *ReorderBufferGetTupleBuf(ReorderBuffer *rb,
682
+ Size tuple_len);
683
+ extern void ReorderBufferReturnTupleBuf(ReorderBuffer *rb,
684
+ ReorderBufferTupleBuf *tuple);
685
+ extern ReorderBufferChange *ReorderBufferGetChange(ReorderBuffer *rb);
686
+ extern void ReorderBufferReturnChange(ReorderBuffer *rb,
687
+ ReorderBufferChange *change, bool upd_mem);
628
688
 
629
- extern Oid *ReorderBufferGetRelids(ReorderBuffer *, int nrelids);
630
- extern void ReorderBufferReturnRelids(ReorderBuffer *, Oid *relids);
689
+ extern Oid *ReorderBufferGetRelids(ReorderBuffer *rb, int nrelids);
690
+ extern void ReorderBufferReturnRelids(ReorderBuffer *rb, Oid *relids);
631
691
 
632
- extern void ReorderBufferQueueChange(ReorderBuffer *, TransactionId,
633
- XLogRecPtr lsn, ReorderBufferChange *,
692
+ extern void ReorderBufferQueueChange(ReorderBuffer *rb, TransactionId xid,
693
+ XLogRecPtr lsn, ReorderBufferChange *change,
634
694
  bool toast_insert);
635
- extern void ReorderBufferQueueMessage(ReorderBuffer *, TransactionId, Snapshot snapshot, XLogRecPtr lsn,
695
+ extern void ReorderBufferQueueMessage(ReorderBuffer *rb, TransactionId xid,
696
+ Snapshot snap, XLogRecPtr lsn,
636
697
  bool transactional, const char *prefix,
637
698
  Size message_size, const char *message);
638
- extern void ReorderBufferCommit(ReorderBuffer *, TransactionId,
699
+ extern void ReorderBufferCommit(ReorderBuffer *rb, TransactionId xid,
639
700
  XLogRecPtr commit_lsn, XLogRecPtr end_lsn,
640
701
  TimestampTz commit_time, RepOriginId origin_id, XLogRecPtr origin_lsn);
641
702
  extern void ReorderBufferFinishPrepared(ReorderBuffer *rb, TransactionId xid,
@@ -644,30 +705,36 @@ extern void ReorderBufferFinishPrepared(ReorderBuffer *rb, TransactionId xid,
644
705
  TimestampTz commit_time,
645
706
  RepOriginId origin_id, XLogRecPtr origin_lsn,
646
707
  char *gid, bool is_commit);
647
- extern void ReorderBufferAssignChild(ReorderBuffer *, TransactionId, TransactionId, XLogRecPtr commit_lsn);
648
- extern void ReorderBufferCommitChild(ReorderBuffer *, TransactionId, TransactionId,
649
- XLogRecPtr commit_lsn, XLogRecPtr end_lsn);
650
- extern void ReorderBufferAbort(ReorderBuffer *, TransactionId, XLogRecPtr lsn);
651
- extern void ReorderBufferAbortOld(ReorderBuffer *, TransactionId xid);
652
- extern void ReorderBufferForget(ReorderBuffer *, TransactionId, XLogRecPtr lsn);
653
- extern void ReorderBufferInvalidate(ReorderBuffer *, TransactionId, XLogRecPtr lsn);
654
-
655
- extern void ReorderBufferSetBaseSnapshot(ReorderBuffer *, TransactionId, XLogRecPtr lsn, struct SnapshotData *snap);
656
- extern void ReorderBufferAddSnapshot(ReorderBuffer *, TransactionId, XLogRecPtr lsn, struct SnapshotData *snap);
657
- extern void ReorderBufferAddNewCommandId(ReorderBuffer *, TransactionId, XLogRecPtr lsn,
658
- CommandId cid);
659
- extern void ReorderBufferAddNewTupleCids(ReorderBuffer *, TransactionId, XLogRecPtr lsn,
660
- RelFileNode node, ItemPointerData pt,
708
+ extern void ReorderBufferAssignChild(ReorderBuffer *rb, TransactionId xid,
709
+ TransactionId subxid, XLogRecPtr lsn);
710
+ extern void ReorderBufferCommitChild(ReorderBuffer *rb, TransactionId xid,
711
+ TransactionId subxid, XLogRecPtr commit_lsn,
712
+ XLogRecPtr end_lsn);
713
+ extern void ReorderBufferAbort(ReorderBuffer *rb, TransactionId xid, XLogRecPtr lsn,
714
+ TimestampTz abort_time);
715
+ extern void ReorderBufferAbortOld(ReorderBuffer *rb, TransactionId oldestRunningXid);
716
+ extern void ReorderBufferForget(ReorderBuffer *rb, TransactionId xid, XLogRecPtr lsn);
717
+ extern void ReorderBufferInvalidate(ReorderBuffer *rb, TransactionId xid, XLogRecPtr lsn);
718
+
719
+ extern void ReorderBufferSetBaseSnapshot(ReorderBuffer *rb, TransactionId xid,
720
+ XLogRecPtr lsn, Snapshot snap);
721
+ extern void ReorderBufferAddSnapshot(ReorderBuffer *rb, TransactionId xid,
722
+ XLogRecPtr lsn, Snapshot snap);
723
+ extern void ReorderBufferAddNewCommandId(ReorderBuffer *rb, TransactionId xid,
724
+ XLogRecPtr lsn, CommandId cid);
725
+ extern void ReorderBufferAddNewTupleCids(ReorderBuffer *rb, TransactionId xid,
726
+ XLogRecPtr lsn, RelFileLocator locator,
727
+ ItemPointerData tid,
661
728
  CommandId cmin, CommandId cmax, CommandId combocid);
662
- extern void ReorderBufferAddInvalidations(ReorderBuffer *, TransactionId, XLogRecPtr lsn,
729
+ extern void ReorderBufferAddInvalidations(ReorderBuffer *rb, TransactionId xid, XLogRecPtr lsn,
663
730
  Size nmsgs, SharedInvalidationMessage *msgs);
664
- extern void ReorderBufferImmediateInvalidation(ReorderBuffer *, uint32 ninvalidations,
731
+ extern void ReorderBufferImmediateInvalidation(ReorderBuffer *rb, uint32 ninvalidations,
665
732
  SharedInvalidationMessage *invalidations);
666
- extern void ReorderBufferProcessXid(ReorderBuffer *, TransactionId xid, XLogRecPtr lsn);
733
+ extern void ReorderBufferProcessXid(ReorderBuffer *rb, TransactionId xid, XLogRecPtr lsn);
667
734
 
668
- extern void ReorderBufferXidSetCatalogChanges(ReorderBuffer *, TransactionId xid, XLogRecPtr lsn);
669
- extern bool ReorderBufferXidHasCatalogChanges(ReorderBuffer *, TransactionId xid);
670
- extern bool ReorderBufferXidHasBaseSnapshot(ReorderBuffer *, TransactionId xid);
735
+ extern void ReorderBufferXidSetCatalogChanges(ReorderBuffer *rb, TransactionId xid, XLogRecPtr lsn);
736
+ extern bool ReorderBufferXidHasCatalogChanges(ReorderBuffer *rb, TransactionId xid);
737
+ extern bool ReorderBufferXidHasBaseSnapshot(ReorderBuffer *rb, TransactionId xid);
671
738
 
672
739
  extern bool ReorderBufferRememberPrepareInfo(ReorderBuffer *rb, TransactionId xid,
673
740
  XLogRecPtr prepare_lsn, XLogRecPtr end_lsn,
@@ -675,10 +742,11 @@ extern bool ReorderBufferRememberPrepareInfo(ReorderBuffer *rb, TransactionId xi
675
742
  RepOriginId origin_id, XLogRecPtr origin_lsn);
676
743
  extern void ReorderBufferSkipPrepare(ReorderBuffer *rb, TransactionId xid);
677
744
  extern void ReorderBufferPrepare(ReorderBuffer *rb, TransactionId xid, char *gid);
678
- extern ReorderBufferTXN *ReorderBufferGetOldestTXN(ReorderBuffer *);
745
+ extern ReorderBufferTXN *ReorderBufferGetOldestTXN(ReorderBuffer *rb);
679
746
  extern TransactionId ReorderBufferGetOldestXmin(ReorderBuffer *rb);
747
+ extern TransactionId *ReorderBufferGetCatalogChangesXacts(ReorderBuffer *rb);
680
748
 
681
- extern void ReorderBufferSetRestartPoint(ReorderBuffer *, XLogRecPtr ptr);
749
+ extern void ReorderBufferSetRestartPoint(ReorderBuffer *rb, XLogRecPtr ptr);
682
750
 
683
751
  extern void StartupReorderBuffer(void);
684
752
 
@@ -2,7 +2,7 @@
2
2
  * slot.h
3
3
  * Replication slot management.
4
4
  *
5
- * Copyright (c) 2012-2022, PostgreSQL Global Development Group
5
+ * Copyright (c) 2012-2023, PostgreSQL Global Development Group
6
6
  *
7
7
  *-------------------------------------------------------------------------
8
8
  */
@@ -37,6 +37,21 @@ typedef enum ReplicationSlotPersistency
37
37
  RS_TEMPORARY
38
38
  } ReplicationSlotPersistency;
39
39
 
40
+ /*
41
+ * Slots can be invalidated, e.g. due to max_slot_wal_keep_size. If so, the
42
+ * 'invalidated' field is set to a value other than _NONE.
43
+ */
44
+ typedef enum ReplicationSlotInvalidationCause
45
+ {
46
+ RS_INVAL_NONE,
47
+ /* required WAL has been removed */
48
+ RS_INVAL_WAL_REMOVED,
49
+ /* required rows have been removed */
50
+ RS_INVAL_HORIZON,
51
+ /* wal_level insufficient for slot */
52
+ RS_INVAL_WAL_LEVEL,
53
+ } ReplicationSlotInvalidationCause;
54
+
40
55
  /*
41
56
  * On-Disk data of a replication slot, preserved across restarts.
42
57
  */
@@ -72,8 +87,8 @@ typedef struct ReplicationSlotPersistentData
72
87
  /* oldest LSN that might be required by this replication slot */
73
88
  XLogRecPtr restart_lsn;
74
89
 
75
- /* restart_lsn is copied here when the slot is invalidated */
76
- XLogRecPtr invalidated_at;
90
+ /* RS_INVAL_NONE if valid, or the reason for having been invalidated */
91
+ ReplicationSlotInvalidationCause invalidated;
77
92
 
78
93
  /*
79
94
  * Oldest LSN that the client has acked receipt for. This is used as the
@@ -195,7 +210,8 @@ extern void ReplicationSlotsShmemInit(void);
195
210
 
196
211
  /* management of individual slots */
197
212
  extern void ReplicationSlotCreate(const char *name, bool db_specific,
198
- ReplicationSlotPersistency p, bool two_phase);
213
+ ReplicationSlotPersistency persistency,
214
+ bool two_phase);
199
215
  extern void ReplicationSlotPersist(void);
200
216
  extern void ReplicationSlotDrop(const char *name, bool nowait);
201
217
 
@@ -214,11 +230,14 @@ extern void ReplicationSlotsComputeRequiredLSN(void);
214
230
  extern XLogRecPtr ReplicationSlotsComputeLogicalRestartLSN(void);
215
231
  extern bool ReplicationSlotsCountDBSlots(Oid dboid, int *nslots, int *nactive);
216
232
  extern void ReplicationSlotsDropDBSlots(Oid dboid);
217
- extern bool InvalidateObsoleteReplicationSlots(XLogSegNo oldestSegno);
233
+ extern bool InvalidateObsoleteReplicationSlots(ReplicationSlotInvalidationCause cause,
234
+ XLogSegNo oldestSegno,
235
+ Oid dboid,
236
+ TransactionId snapshotConflictHorizon);
218
237
  extern ReplicationSlot *SearchNamedReplicationSlot(const char *name, bool need_lock);
219
238
  extern int ReplicationSlotIndex(ReplicationSlot *slot);
220
239
  extern bool ReplicationSlotName(int index, Name name);
221
- extern void ReplicationSlotNameForTablesync(Oid suboid, Oid relid, char *syncslotname, int szslot);
240
+ extern void ReplicationSlotNameForTablesync(Oid suboid, Oid relid, char *syncslotname, Size szslot);
222
241
  extern void ReplicationSlotDropAtPubNode(WalReceiverConn *wrconn, char *slotname, bool missing_ok);
223
242
 
224
243
  extern void StartupReplicationSlots(void);