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
@@ -4,7 +4,7 @@
4
4
  * postgres transaction system 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/access/xact.h
@@ -19,7 +19,7 @@
19
19
  #include "datatype/timestamp.h"
20
20
  #include "lib/stringinfo.h"
21
21
  #include "nodes/pg_list.h"
22
- #include "storage/relfilenode.h"
22
+ #include "storage/relfilelocator.h"
23
23
  #include "storage/sinval.h"
24
24
 
25
25
  /*
@@ -113,6 +113,13 @@ extern PGDLLIMPORT int MyXactFlags;
113
113
  */
114
114
  #define XACT_FLAGS_NEEDIMMEDIATECOMMIT (1U << 2)
115
115
 
116
+ /*
117
+ * XACT_FLAGS_PIPELINING - set when we complete an extended-query-protocol
118
+ * Execute message. This is useful for detecting that an implicit transaction
119
+ * block has been created via pipelining.
120
+ */
121
+ #define XACT_FLAGS_PIPELINING (1U << 3)
122
+
116
123
  /*
117
124
  * start- and end-of-transaction callbacks for dynamically loaded modules
118
125
  */
@@ -180,7 +187,7 @@ typedef struct SavedTransactionCharacteristics
180
187
  */
181
188
  #define XACT_XINFO_HAS_DBINFO (1U << 0)
182
189
  #define XACT_XINFO_HAS_SUBXACTS (1U << 1)
183
- #define XACT_XINFO_HAS_RELFILENODES (1U << 2)
190
+ #define XACT_XINFO_HAS_RELFILELOCATORS (1U << 2)
184
191
  #define XACT_XINFO_HAS_INVALS (1U << 3)
185
192
  #define XACT_XINFO_HAS_TWOPHASE (1U << 4)
186
193
  #define XACT_XINFO_HAS_ORIGIN (1U << 5)
@@ -258,12 +265,12 @@ typedef struct xl_xact_subxacts
258
265
  } xl_xact_subxacts;
259
266
  #define MinSizeOfXactSubxacts offsetof(xl_xact_subxacts, subxacts)
260
267
 
261
- typedef struct xl_xact_relfilenodes
268
+ typedef struct xl_xact_relfilelocators
262
269
  {
263
270
  int nrels; /* number of relations */
264
- RelFileNode xnodes[FLEXIBLE_ARRAY_MEMBER];
265
- } xl_xact_relfilenodes;
266
- #define MinSizeOfXactRelfilenodes offsetof(xl_xact_relfilenodes, xnodes)
271
+ RelFileLocator xlocators[FLEXIBLE_ARRAY_MEMBER];
272
+ } xl_xact_relfilelocators;
273
+ #define MinSizeOfXactRelfileLocators offsetof(xl_xact_relfilelocators, xlocators)
267
274
 
268
275
  /*
269
276
  * A transactionally dropped statistics entry.
@@ -311,7 +318,7 @@ typedef struct xl_xact_commit
311
318
  /* xl_xact_xinfo follows if XLOG_XACT_HAS_INFO */
312
319
  /* xl_xact_dbinfo follows if XINFO_HAS_DBINFO */
313
320
  /* xl_xact_subxacts follows if XINFO_HAS_SUBXACT */
314
- /* xl_xact_relfilenodes follows if XINFO_HAS_RELFILENODES */
321
+ /* xl_xact_relfilelocators follows if XINFO_HAS_RELFILELOCATORS */
315
322
  /* xl_xact_stats_items follows if XINFO_HAS_DROPPED_STATS */
316
323
  /* xl_xact_invals follows if XINFO_HAS_INVALS */
317
324
  /* xl_xact_twophase follows if XINFO_HAS_TWOPHASE */
@@ -327,7 +334,7 @@ typedef struct xl_xact_abort
327
334
  /* xl_xact_xinfo follows if XLOG_XACT_HAS_INFO */
328
335
  /* xl_xact_dbinfo follows if XINFO_HAS_DBINFO */
329
336
  /* xl_xact_subxacts follows if XINFO_HAS_SUBXACT */
330
- /* xl_xact_relfilenodes follows if XINFO_HAS_RELFILENODES */
337
+ /* xl_xact_relfilelocators follows if XINFO_HAS_RELFILELOCATORS */
331
338
  /* xl_xact_stats_items follows if XINFO_HAS_DROPPED_STATS */
332
339
  /* No invalidation messages needed. */
333
340
  /* xl_xact_twophase follows if XINFO_HAS_TWOPHASE */
@@ -373,7 +380,7 @@ typedef struct xl_xact_parsed_commit
373
380
  TransactionId *subxacts;
374
381
 
375
382
  int nrels;
376
- RelFileNode *xnodes;
383
+ RelFileLocator *xlocators;
377
384
 
378
385
  int nstats;
379
386
  xl_xact_stats_item *stats;
@@ -384,7 +391,7 @@ typedef struct xl_xact_parsed_commit
384
391
  TransactionId twophase_xid; /* only for 2PC */
385
392
  char twophase_gid[GIDSIZE]; /* only for 2PC */
386
393
  int nabortrels; /* only for 2PC */
387
- RelFileNode *abortnodes; /* only for 2PC */
394
+ RelFileLocator *abortlocators; /* only for 2PC */
388
395
  int nabortstats; /* only for 2PC */
389
396
  xl_xact_stats_item *abortstats; /* only for 2PC */
390
397
 
@@ -406,7 +413,7 @@ typedef struct xl_xact_parsed_abort
406
413
  TransactionId *subxacts;
407
414
 
408
415
  int nrels;
409
- RelFileNode *xnodes;
416
+ RelFileLocator *xlocators;
410
417
 
411
418
  int nstats;
412
419
  xl_xact_stats_item *stats;
@@ -489,9 +496,9 @@ extern int xactGetCommittedChildren(TransactionId **ptr);
489
496
 
490
497
  extern XLogRecPtr XactLogCommitRecord(TimestampTz commit_time,
491
498
  int nsubxacts, TransactionId *subxacts,
492
- int nrels, RelFileNode *rels,
493
- int nstats,
494
- xl_xact_stats_item *stats,
499
+ int nrels, RelFileLocator *rels,
500
+ int ndroppedstats,
501
+ xl_xact_stats_item *droppedstats,
495
502
  int nmsgs, SharedInvalidationMessage *msgs,
496
503
  bool relcacheInval,
497
504
  int xactflags,
@@ -500,9 +507,9 @@ extern XLogRecPtr XactLogCommitRecord(TimestampTz commit_time,
500
507
 
501
508
  extern XLogRecPtr XactLogAbortRecord(TimestampTz abort_time,
502
509
  int nsubxacts, TransactionId *subxacts,
503
- int nrels, RelFileNode *rels,
504
- int nstats,
505
- xl_xact_stats_item *stats,
510
+ int nrels, RelFileLocator *rels,
511
+ int ndroppedstats,
512
+ xl_xact_stats_item *droppedstats,
506
513
  int xactflags, TransactionId twophase_xid,
507
514
  const char *twophase_gid);
508
515
  extern void xact_redo(XLogReaderState *record);
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * PostgreSQL write-ahead log manager
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/access/xlog.h
@@ -11,8 +11,8 @@
11
11
  #ifndef XLOG_H
12
12
  #define XLOG_H
13
13
 
14
+ #include "access/xlogbackup.h"
14
15
  #include "access/xlogdefs.h"
15
- #include "access/xlogreader.h"
16
16
  #include "datatype/timestamp.h"
17
17
  #include "lib/stringinfo.h"
18
18
  #include "nodes/pg_list.h"
@@ -191,25 +191,26 @@ typedef enum WALAvailability
191
191
  } WALAvailability;
192
192
 
193
193
  struct XLogRecData;
194
+ struct XLogReaderState;
194
195
 
195
196
  extern XLogRecPtr XLogInsertRecord(struct XLogRecData *rdata,
196
197
  XLogRecPtr fpw_lsn,
197
198
  uint8 flags,
198
199
  int num_fpi,
199
200
  bool topxid_included);
200
- extern void XLogFlush(XLogRecPtr RecPtr);
201
+ extern void XLogFlush(XLogRecPtr record);
201
202
  extern bool XLogBackgroundFlush(void);
202
- extern bool XLogNeedsFlush(XLogRecPtr RecPtr);
203
- extern int XLogFileInit(XLogSegNo segno, TimeLineID tli);
203
+ extern bool XLogNeedsFlush(XLogRecPtr record);
204
+ extern int XLogFileInit(XLogSegNo logsegno, TimeLineID logtli);
204
205
  extern int XLogFileOpen(XLogSegNo segno, TimeLineID tli);
205
206
 
206
207
  extern void CheckXLogRemoved(XLogSegNo segno, TimeLineID tli);
207
208
  extern XLogSegNo XLogGetLastRemovedSegno(void);
208
- extern void XLogSetAsyncXactLSN(XLogRecPtr record);
209
+ extern void XLogSetAsyncXactLSN(XLogRecPtr asyncXactLSN);
209
210
  extern void XLogSetReplicationSlotMinimumLSN(XLogRecPtr lsn);
210
211
 
211
- extern void xlog_redo(XLogReaderState *record);
212
- extern void xlog_desc(StringInfo buf, XLogReaderState *record);
212
+ extern void xlog_redo(struct XLogReaderState *record);
213
+ extern void xlog_desc(StringInfo buf, struct XLogReaderState *record);
213
214
  extern const char *xlog_identify(uint8 info);
214
215
 
215
216
  extern void issue_xlog_fsync(int fd, XLogSegNo segno, TimeLineID tli);
@@ -227,7 +228,9 @@ extern XLogRecPtr GetFakeLSNForUnloggedRel(void);
227
228
  extern Size XLOGShmemSize(void);
228
229
  extern void XLOGShmemInit(void);
229
230
  extern void BootStrapXLOG(void);
231
+ extern void InitializeWalConsistencyChecking(void);
230
232
  extern void LocalProcessControlFile(bool reset);
233
+ extern WalLevel GetActiveWalLevelOnStandby(void);
231
234
  extern void StartupXLOG(void);
232
235
  extern void ShutdownXLOG(int code, Datum arg);
233
236
  extern void CreateCheckPoint(int flags);
@@ -245,9 +248,6 @@ extern XLogRecPtr GetLastImportantRecPtr(void);
245
248
 
246
249
  extern void SetWalWriterSleeping(bool sleeping);
247
250
 
248
- extern void assign_max_wal_size(int newval, void *extra);
249
- extern void assign_checkpoint_completion_target(double newval, void *extra);
250
-
251
251
  /*
252
252
  * Routines used by xlogrecovery.c to call back into xlog.c during recovery.
253
253
  */
@@ -279,11 +279,10 @@ typedef enum SessionBackupState
279
279
  SESSION_BACKUP_RUNNING,
280
280
  } SessionBackupState;
281
281
 
282
- extern XLogRecPtr do_pg_backup_start(const char *backupidstr, bool fast,
283
- TimeLineID *starttli_p, StringInfo labelfile,
284
- List **tablespaces, StringInfo tblspcmapfile);
285
- extern XLogRecPtr do_pg_backup_stop(char *labelfile, bool waitforarchive,
286
- TimeLineID *stoptli_p);
282
+ extern void do_pg_backup_start(const char *backupidstr, bool fast,
283
+ List **tablespaces, BackupState *state,
284
+ StringInfo tblspcmapfile);
285
+ extern void do_pg_backup_stop(BackupState *state, bool waitforarchive);
287
286
  extern void do_pg_abort_backup(int code, Datum arg);
288
287
  extern void register_persistent_abort_backup_handler(void);
289
288
  extern SessionBackupState get_backup_status(void);
@@ -11,7 +11,7 @@
11
11
  * Note: This file must be includable in both frontend and backend contexts,
12
12
  * to allow stand-alone tools like pg_receivewal to deal with WAL files.
13
13
  *
14
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
14
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
15
15
  * Portions Copyright (c) 1994, Regents of the University of California
16
16
  *
17
17
  * src/include/access/xlog_internal.h
@@ -25,13 +25,13 @@
25
25
  #include "lib/stringinfo.h"
26
26
  #include "pgtime.h"
27
27
  #include "storage/block.h"
28
- #include "storage/relfilenode.h"
28
+ #include "storage/relfilelocator.h"
29
29
 
30
30
 
31
31
  /*
32
32
  * Each page of XLOG file has a header like this:
33
33
  */
34
- #define XLOG_PAGE_MAGIC 0xD110 /* can be used as WAL version indicator */
34
+ #define XLOG_PAGE_MAGIC 0xD113 /* can be used as WAL version indicator */
35
35
 
36
36
  typedef struct XLogPageHeaderData
37
37
  {
@@ -159,74 +159,112 @@ typedef XLogLongPageHeaderData *XLogLongPageHeader;
159
159
  #define XLOG_FNAME_LEN 24
160
160
 
161
161
  /*
162
- * Generate a WAL segment file name. Do not use this macro in a helper
162
+ * Generate a WAL segment file name. Do not use this function in a helper
163
163
  * function allocating the result generated.
164
164
  */
165
- #define XLogFileName(fname, tli, logSegNo, wal_segsz_bytes) \
166
- snprintf(fname, MAXFNAMELEN, "%08X%08X%08X", tli, \
167
- (uint32) ((logSegNo) / XLogSegmentsPerXLogId(wal_segsz_bytes)), \
168
- (uint32) ((logSegNo) % XLogSegmentsPerXLogId(wal_segsz_bytes)))
165
+ static inline void
166
+ XLogFileName(char *fname, TimeLineID tli, XLogSegNo logSegNo, int wal_segsz_bytes)
167
+ {
168
+ snprintf(fname, MAXFNAMELEN, "%08X%08X%08X", tli,
169
+ (uint32) (logSegNo / XLogSegmentsPerXLogId(wal_segsz_bytes)),
170
+ (uint32) (logSegNo % XLogSegmentsPerXLogId(wal_segsz_bytes)));
171
+ }
169
172
 
170
- #define XLogFileNameById(fname, tli, log, seg) \
171
- snprintf(fname, MAXFNAMELEN, "%08X%08X%08X", tli, log, seg)
173
+ static inline void
174
+ XLogFileNameById(char *fname, TimeLineID tli, uint32 log, uint32 seg)
175
+ {
176
+ snprintf(fname, MAXFNAMELEN, "%08X%08X%08X", tli, log, seg);
177
+ }
172
178
 
173
- #define IsXLogFileName(fname) \
174
- (strlen(fname) == XLOG_FNAME_LEN && \
175
- strspn(fname, "0123456789ABCDEF") == XLOG_FNAME_LEN)
179
+ static inline bool
180
+ IsXLogFileName(const char *fname)
181
+ {
182
+ return (strlen(fname) == XLOG_FNAME_LEN && \
183
+ strspn(fname, "0123456789ABCDEF") == XLOG_FNAME_LEN);
184
+ }
176
185
 
177
186
  /*
178
187
  * XLOG segment with .partial suffix. Used by pg_receivewal and at end of
179
188
  * archive recovery, when we want to archive a WAL segment but it might not
180
189
  * be complete yet.
181
190
  */
182
- #define IsPartialXLogFileName(fname) \
183
- (strlen(fname) == XLOG_FNAME_LEN + strlen(".partial") && \
184
- strspn(fname, "0123456789ABCDEF") == XLOG_FNAME_LEN && \
185
- strcmp((fname) + XLOG_FNAME_LEN, ".partial") == 0)
186
-
187
- #define XLogFromFileName(fname, tli, logSegNo, wal_segsz_bytes) \
188
- do { \
189
- uint32 log; \
190
- uint32 seg; \
191
- sscanf(fname, "%08X%08X%08X", tli, &log, &seg); \
192
- *logSegNo = (uint64) log * XLogSegmentsPerXLogId(wal_segsz_bytes) + seg; \
193
- } while (0)
194
-
195
- #define XLogFilePath(path, tli, logSegNo, wal_segsz_bytes) \
196
- snprintf(path, MAXPGPATH, XLOGDIR "/%08X%08X%08X", tli, \
197
- (uint32) ((logSegNo) / XLogSegmentsPerXLogId(wal_segsz_bytes)), \
198
- (uint32) ((logSegNo) % XLogSegmentsPerXLogId(wal_segsz_bytes)))
199
-
200
- #define TLHistoryFileName(fname, tli) \
201
- snprintf(fname, MAXFNAMELEN, "%08X.history", tli)
202
-
203
- #define IsTLHistoryFileName(fname) \
204
- (strlen(fname) == 8 + strlen(".history") && \
205
- strspn(fname, "0123456789ABCDEF") == 8 && \
206
- strcmp((fname) + 8, ".history") == 0)
207
-
208
- #define TLHistoryFilePath(path, tli) \
209
- snprintf(path, MAXPGPATH, XLOGDIR "/%08X.history", tli)
210
-
211
- #define StatusFilePath(path, xlog, suffix) \
212
- snprintf(path, MAXPGPATH, XLOGDIR "/archive_status/%s%s", xlog, suffix)
213
-
214
- #define BackupHistoryFileName(fname, tli, logSegNo, startpoint, wal_segsz_bytes) \
215
- snprintf(fname, MAXFNAMELEN, "%08X%08X%08X.%08X.backup", tli, \
216
- (uint32) ((logSegNo) / XLogSegmentsPerXLogId(wal_segsz_bytes)), \
217
- (uint32) ((logSegNo) % XLogSegmentsPerXLogId(wal_segsz_bytes)), \
218
- (uint32) (XLogSegmentOffset(startpoint, wal_segsz_bytes)))
219
-
220
- #define IsBackupHistoryFileName(fname) \
221
- (strlen(fname) > XLOG_FNAME_LEN && \
222
- strspn(fname, "0123456789ABCDEF") == XLOG_FNAME_LEN && \
223
- strcmp((fname) + strlen(fname) - strlen(".backup"), ".backup") == 0)
224
-
225
- #define BackupHistoryFilePath(path, tli, logSegNo, startpoint, wal_segsz_bytes) \
226
- snprintf(path, MAXPGPATH, XLOGDIR "/%08X%08X%08X.%08X.backup", tli, \
227
- (uint32) ((logSegNo) / XLogSegmentsPerXLogId(wal_segsz_bytes)), \
228
- (uint32) ((logSegNo) % XLogSegmentsPerXLogId(wal_segsz_bytes)), \
229
- (uint32) (XLogSegmentOffset((startpoint), wal_segsz_bytes)))
191
+ static inline bool
192
+ IsPartialXLogFileName(const char *fname)
193
+ {
194
+ return (strlen(fname) == XLOG_FNAME_LEN + strlen(".partial") &&
195
+ strspn(fname, "0123456789ABCDEF") == XLOG_FNAME_LEN &&
196
+ strcmp(fname + XLOG_FNAME_LEN, ".partial") == 0);
197
+ }
198
+
199
+ static inline void
200
+ XLogFromFileName(const char *fname, TimeLineID *tli, XLogSegNo *logSegNo, int wal_segsz_bytes)
201
+ {
202
+ uint32 log;
203
+ uint32 seg;
204
+
205
+ sscanf(fname, "%08X%08X%08X", tli, &log, &seg);
206
+ *logSegNo = (uint64) log * XLogSegmentsPerXLogId(wal_segsz_bytes) + seg;
207
+ }
208
+
209
+ static inline void
210
+ XLogFilePath(char *path, TimeLineID tli, XLogSegNo logSegNo, int wal_segsz_bytes)
211
+ {
212
+ snprintf(path, MAXPGPATH, XLOGDIR "/%08X%08X%08X", tli,
213
+ (uint32) (logSegNo / XLogSegmentsPerXLogId(wal_segsz_bytes)),
214
+ (uint32) (logSegNo % XLogSegmentsPerXLogId(wal_segsz_bytes)));
215
+ }
216
+
217
+ static inline void
218
+ TLHistoryFileName(char *fname, TimeLineID tli)
219
+ {
220
+ snprintf(fname, MAXFNAMELEN, "%08X.history", tli);
221
+ }
222
+
223
+ static inline bool
224
+ IsTLHistoryFileName(const char *fname)
225
+ {
226
+ return (strlen(fname) == 8 + strlen(".history") &&
227
+ strspn(fname, "0123456789ABCDEF") == 8 &&
228
+ strcmp(fname + 8, ".history") == 0);
229
+ }
230
+
231
+ static inline void
232
+ TLHistoryFilePath(char *path, TimeLineID tli)
233
+ {
234
+ snprintf(path, MAXPGPATH, XLOGDIR "/%08X.history", tli);
235
+ }
236
+
237
+ static inline void
238
+ StatusFilePath(char *path, const char *xlog, const char *suffix)
239
+ {
240
+ snprintf(path, MAXPGPATH, XLOGDIR "/archive_status/%s%s", xlog, suffix);
241
+ }
242
+
243
+ static inline void
244
+ BackupHistoryFileName(char *fname, TimeLineID tli, XLogSegNo logSegNo, XLogRecPtr startpoint, int wal_segsz_bytes)
245
+ {
246
+ snprintf(fname, MAXFNAMELEN, "%08X%08X%08X.%08X.backup", tli,
247
+ (uint32) (logSegNo / XLogSegmentsPerXLogId(wal_segsz_bytes)),
248
+ (uint32) (logSegNo % XLogSegmentsPerXLogId(wal_segsz_bytes)),
249
+ (uint32) (XLogSegmentOffset(startpoint, wal_segsz_bytes)));
250
+ }
251
+
252
+ static inline bool
253
+ IsBackupHistoryFileName(const char *fname)
254
+ {
255
+ return (strlen(fname) > XLOG_FNAME_LEN &&
256
+ strspn(fname, "0123456789ABCDEF") == XLOG_FNAME_LEN &&
257
+ strcmp(fname + strlen(fname) - strlen(".backup"), ".backup") == 0);
258
+ }
259
+
260
+ static inline void
261
+ BackupHistoryFilePath(char *path, TimeLineID tli, XLogSegNo logSegNo, XLogRecPtr startpoint, int wal_segsz_bytes)
262
+ {
263
+ snprintf(path, MAXPGPATH, XLOGDIR "/%08X%08X%08X.%08X.backup", tli,
264
+ (uint32) (logSegNo / XLogSegmentsPerXLogId(wal_segsz_bytes)),
265
+ (uint32) (logSegNo % XLogSegmentsPerXLogId(wal_segsz_bytes)),
266
+ (uint32) (XLogSegmentOffset((startpoint), wal_segsz_bytes)));
267
+ }
230
268
 
231
269
  /*
232
270
  * Information logged when we detect a change in one of the parameters
@@ -324,7 +362,7 @@ extern PGDLLIMPORT RmgrData RmgrTable[];
324
362
  extern void RmgrStartup(void);
325
363
  extern void RmgrCleanup(void);
326
364
  extern void RmgrNotFound(RmgrId rmid);
327
- extern void RegisterCustomRmgr(RmgrId rmid, RmgrData *rmgr);
365
+ extern void RegisterCustomRmgr(RmgrId rmid, const RmgrData *rmgr);
328
366
 
329
367
  #ifndef FRONTEND
330
368
  static inline bool
@@ -0,0 +1,41 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * xlogbackup.h
4
+ * Definitions for internals of base backups.
5
+ *
6
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1994, Regents of the University of California
8
+ *
9
+ * IDENTIFICATION
10
+ * src/include/access/xlogbackup.h
11
+ *-------------------------------------------------------------------------
12
+ */
13
+
14
+ #ifndef XLOG_BACKUP_H
15
+ #define XLOG_BACKUP_H
16
+
17
+ #include "access/xlogdefs.h"
18
+ #include "pgtime.h"
19
+
20
+ /* Structure to hold backup state. */
21
+ typedef struct BackupState
22
+ {
23
+ /* Fields saved at backup start */
24
+ /* Backup label name one extra byte for null-termination */
25
+ char name[MAXPGPATH + 1];
26
+ XLogRecPtr startpoint; /* backup start WAL location */
27
+ TimeLineID starttli; /* backup start TLI */
28
+ XLogRecPtr checkpointloc; /* last checkpoint location */
29
+ pg_time_t starttime; /* backup start time */
30
+ bool started_in_recovery; /* backup started in recovery? */
31
+
32
+ /* Fields saved at the end of backup */
33
+ XLogRecPtr stoppoint; /* backup stop WAL location */
34
+ TimeLineID stoptli; /* backup stop TLI */
35
+ pg_time_t stoptime; /* backup stop time */
36
+ } BackupState;
37
+
38
+ extern char *build_backup_content(BackupState *state,
39
+ bool ishistoryfile);
40
+
41
+ #endif /* XLOG_BACKUP_H */
@@ -4,7 +4,7 @@
4
4
  * Postgres write-ahead log manager record pointer and
5
5
  * timeline number definitions
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/access/xlogdefs.h
@@ -67,35 +67,16 @@ typedef uint16 RepOriginId;
67
67
  /*
68
68
  * This chunk of hackery attempts to determine which file sync methods
69
69
  * are available on the current platform, and to choose an appropriate
70
- * default method. We assume that fsync() is always available, and that
71
- * configure determined whether fdatasync() is.
70
+ * default method.
71
+ *
72
+ * Note that we define our own O_DSYNC on Windows, but not O_SYNC.
72
73
  */
73
- #if defined(O_SYNC)
74
- #define OPEN_SYNC_FLAG O_SYNC
75
- #elif defined(O_FSYNC)
76
- #define OPEN_SYNC_FLAG O_FSYNC
77
- #endif
78
-
79
- #if defined(O_DSYNC)
80
- #if defined(OPEN_SYNC_FLAG)
81
- /* O_DSYNC is distinct? */
82
- #if O_DSYNC != OPEN_SYNC_FLAG
83
- #define OPEN_DATASYNC_FLAG O_DSYNC
84
- #endif
85
- #else /* !defined(OPEN_SYNC_FLAG) */
86
- /* Win32 only has O_DSYNC */
87
- #define OPEN_DATASYNC_FLAG O_DSYNC
88
- #endif
89
- #endif
90
-
91
74
  #if defined(PLATFORM_DEFAULT_SYNC_METHOD)
92
75
  #define DEFAULT_SYNC_METHOD PLATFORM_DEFAULT_SYNC_METHOD
93
- #elif defined(OPEN_DATASYNC_FLAG)
76
+ #elif defined(O_DSYNC) && (!defined(O_SYNC) || O_DSYNC != O_SYNC)
94
77
  #define DEFAULT_SYNC_METHOD SYNC_METHOD_OPEN_DSYNC
95
- #elif defined(HAVE_FDATASYNC)
96
- #define DEFAULT_SYNC_METHOD SYNC_METHOD_FDATASYNC
97
78
  #else
98
- #define DEFAULT_SYNC_METHOD SYNC_METHOD_FSYNC
79
+ #define DEFAULT_SYNC_METHOD SYNC_METHOD_FDATASYNC
99
80
  #endif
100
81
 
101
82
  #endif /* XLOG_DEFS_H */
@@ -3,7 +3,7 @@
3
3
  * xlogprefetcher.h
4
4
  * Declarations for the recovery prefetching module.
5
5
  *
6
- * Portions Copyright (c) 2022, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 2022-2023, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * IDENTIFICATION
@@ -3,7 +3,7 @@
3
3
  * xlogreader.h
4
4
  * Definitions for the generic XLog reading facility
5
5
  *
6
- * Portions Copyright (c) 2013-2022, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 2013-2023, PostgreSQL Global Development Group
7
7
  *
8
8
  * IDENTIFICATION
9
9
  * src/include/access/xlogreader.h
@@ -122,7 +122,7 @@ typedef struct
122
122
  bool in_use;
123
123
 
124
124
  /* Identify the block this refers to */
125
- RelFileNode rnode;
125
+ RelFileLocator rlocator;
126
126
  ForkNumber forknum;
127
127
  BlockNumber blkno;
128
128
 
@@ -332,7 +332,6 @@ extern XLogReaderState *XLogReaderAllocate(int wal_segment_size,
332
332
  const char *waldir,
333
333
  XLogReaderRoutine *routine,
334
334
  void *private_data);
335
- extern XLogReaderRoutine *LocalXLogReaderRoutine(void);
336
335
 
337
336
  /* Free an XLogReader */
338
337
  extern void XLogReaderFree(XLogReaderState *state);
@@ -400,7 +399,7 @@ extern bool DecodeXLogRecord(XLogReaderState *state,
400
399
  DecodedXLogRecord *decoded,
401
400
  XLogRecord *record,
402
401
  XLogRecPtr lsn,
403
- char **errmsg);
402
+ char **errormsg);
404
403
 
405
404
  /*
406
405
  * Macros that provide access to parts of the record most recently returned by
@@ -425,6 +424,8 @@ extern bool DecodeXLogRecord(XLogReaderState *state,
425
424
  ((decoder)->record->blocks[block_id].has_image)
426
425
  #define XLogRecBlockImageApply(decoder, block_id) \
427
426
  ((decoder)->record->blocks[block_id].apply_image)
427
+ #define XLogRecHasBlockData(decoder, block_id) \
428
+ ((decoder)->record->blocks[block_id].has_data)
428
429
 
429
430
  #ifndef FRONTEND
430
431
  extern FullTransactionId XLogRecGetFullXid(XLogReaderState *record);
@@ -433,10 +434,10 @@ extern FullTransactionId XLogRecGetFullXid(XLogReaderState *record);
433
434
  extern bool RestoreBlockImage(XLogReaderState *record, uint8 block_id, char *page);
434
435
  extern char *XLogRecGetBlockData(XLogReaderState *record, uint8 block_id, Size *len);
435
436
  extern void XLogRecGetBlockTag(XLogReaderState *record, uint8 block_id,
436
- RelFileNode *rnode, ForkNumber *forknum,
437
+ RelFileLocator *rlocator, ForkNumber *forknum,
437
438
  BlockNumber *blknum);
438
439
  extern bool XLogRecGetBlockTagExtended(XLogReaderState *record, uint8 block_id,
439
- RelFileNode *rnode, ForkNumber *forknum,
440
+ RelFileLocator *rlocator, ForkNumber *forknum,
440
441
  BlockNumber *blknum,
441
442
  Buffer *prefetch_buffer);
442
443
 
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Definitions for the WAL record format.
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/access/xlogrecord.h
@@ -15,7 +15,7 @@
15
15
  #include "access/xlogdefs.h"
16
16
  #include "port/pg_crc32c.h"
17
17
  #include "storage/block.h"
18
- #include "storage/relfilenode.h"
18
+ #include "storage/relfilelocator.h"
19
19
 
20
20
  /*
21
21
  * The overall layout of an XLOG record is:
@@ -62,6 +62,17 @@ typedef struct XLogRecord
62
62
  #define XLR_INFO_MASK 0x0F
63
63
  #define XLR_RMGR_INFO_MASK 0xF0
64
64
 
65
+ /*
66
+ * XLogReader needs to allocate all the data of a WAL record in a single
67
+ * chunk. This means that a single XLogRecord cannot exceed MaxAllocSize
68
+ * in length if we ignore any allocation overhead of the XLogReader.
69
+ *
70
+ * To accommodate some overhead, this value allows for 4M of allocation
71
+ * overhead, that should be plenty enough for what
72
+ * DecodeXLogRecordRequiredSpace() expects as extra.
73
+ */
74
+ #define XLogRecordMaxSize (1020 * 1024 * 1024)
75
+
65
76
  /*
66
77
  * If a WAL record modifies any relation files, in ways not covered by the
67
78
  * usual block references, this flag is set. This is not used for anything
@@ -97,7 +108,7 @@ typedef struct XLogRecordBlockHeader
97
108
  * image) */
98
109
 
99
110
  /* If BKPBLOCK_HAS_IMAGE, an XLogRecordBlockImageHeader struct follows */
100
- /* If BKPBLOCK_SAME_REL is not set, a RelFileNode follows */
111
+ /* If BKPBLOCK_SAME_REL is not set, a RelFileLocator follows */
101
112
  /* BlockNumber follows */
102
113
  } XLogRecordBlockHeader;
103
114
 
@@ -175,7 +186,7 @@ typedef struct XLogRecordBlockCompressHeader
175
186
  (SizeOfXLogRecordBlockHeader + \
176
187
  SizeOfXLogRecordBlockImageHeader + \
177
188
  SizeOfXLogRecordBlockCompressHeader + \
178
- sizeof(RelFileNode) + \
189
+ sizeof(RelFileLocator) + \
179
190
  sizeof(BlockNumber))
180
191
 
181
192
  /*
@@ -187,7 +198,8 @@ typedef struct XLogRecordBlockCompressHeader
187
198
  #define BKPBLOCK_HAS_IMAGE 0x10 /* block data is an XLogRecordBlockImage */
188
199
  #define BKPBLOCK_HAS_DATA 0x20
189
200
  #define BKPBLOCK_WILL_INIT 0x40 /* redo will re-init the page */
190
- #define BKPBLOCK_SAME_REL 0x80 /* RelFileNode omitted, same as previous */
201
+ #define BKPBLOCK_SAME_REL 0x80 /* RelFileLocator omitted, same as
202
+ * previous */
191
203
 
192
204
  /*
193
205
  * XLogRecordDataHeaderShort/Long are used for the "main data" portion of
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Functions for WAL recovery and standby mode
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/access/xlogrecovery.h
@@ -65,7 +65,6 @@ extern PGDLLIMPORT TimestampTz recoveryTargetTime;
65
65
  extern PGDLLIMPORT const char *recoveryTargetName;
66
66
  extern PGDLLIMPORT XLogRecPtr recoveryTargetLSN;
67
67
  extern PGDLLIMPORT RecoveryTargetType recoveryTarget;
68
- extern PGDLLIMPORT char *PromoteTriggerFile;
69
68
  extern PGDLLIMPORT bool wal_receiver_create_temp_slot;
70
69
  extern PGDLLIMPORT RecoveryTargetTimeLineGoal recoveryTargetTimeLineGoal;
71
70
  extern PGDLLIMPORT TimeLineID recoveryTargetTLIRequested;
@@ -80,7 +79,9 @@ extern PGDLLIMPORT bool StandbyMode;
80
79
  extern Size XLogRecoveryShmemSize(void);
81
80
  extern void XLogRecoveryShmemInit(void);
82
81
 
83
- extern void InitWalRecovery(ControlFileData *ControlFile, bool *wasShutdownPtr, bool *haveBackupLabel, bool *haveTblspcMap);
82
+ extern void InitWalRecovery(ControlFileData *ControlFile,
83
+ bool *wasShutdown_ptr, bool *haveBackupLabel_ptr,
84
+ bool *haveTblspcMap_ptr);
84
85
  extern void PerformWalRecovery(void);
85
86
 
86
87
  /*