pg_query 2.0.3 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (557) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +165 -0
  3. data/README.md +67 -29
  4. data/Rakefile +8 -23
  5. data/ext/pg_query/extconf.rb +21 -3
  6. data/ext/pg_query/include/pg_query.h +29 -4
  7. data/ext/pg_query/include/pg_query_enum_defs.c +551 -272
  8. data/ext/pg_query/include/pg_query_fingerprint_conds.c +563 -470
  9. data/ext/pg_query/include/pg_query_fingerprint_defs.c +5403 -3945
  10. data/ext/pg_query/include/pg_query_outfuncs_conds.c +402 -330
  11. data/ext/pg_query/include/pg_query_outfuncs_defs.c +1319 -1059
  12. data/ext/pg_query/include/pg_query_readfuncs_conds.c +141 -118
  13. data/ext/pg_query/include/pg_query_readfuncs_defs.c +1685 -1379
  14. data/ext/pg_query/include/{access → postgres/access}/amapi.h +47 -1
  15. data/ext/pg_query/include/{access → postgres/access}/attmap.h +5 -3
  16. data/ext/pg_query/include/{access → postgres/access}/attnum.h +2 -2
  17. data/ext/pg_query/include/{access → postgres/access}/clog.h +4 -2
  18. data/ext/pg_query/include/{access → postgres/access}/commit_ts.h +6 -9
  19. data/ext/pg_query/include/{access → postgres/access}/detoast.h +1 -11
  20. data/ext/pg_query/include/{access → postgres/access}/genam.h +21 -16
  21. data/ext/pg_query/include/{access → postgres/access}/gin.h +17 -4
  22. data/ext/pg_query/include/{access → postgres/access}/htup.h +1 -1
  23. data/ext/pg_query/include/{access → postgres/access}/htup_details.h +80 -88
  24. data/ext/pg_query/include/{access → postgres/access}/itup.h +61 -52
  25. data/ext/pg_query/include/{access → postgres/access}/parallel.h +2 -2
  26. data/ext/pg_query/include/{access → postgres/access}/printtup.h +1 -1
  27. data/ext/pg_query/include/{access → postgres/access}/relation.h +1 -1
  28. data/ext/pg_query/include/{access → postgres/access}/relscan.h +17 -2
  29. data/ext/pg_query/include/postgres/access/rmgr.h +62 -0
  30. data/ext/pg_query/include/{access → postgres/access}/rmgrlist.h +24 -24
  31. data/ext/pg_query/include/{access → postgres/access}/sdir.h +12 -3
  32. data/ext/pg_query/include/{access → postgres/access}/skey.h +1 -1
  33. data/ext/pg_query/include/{access → postgres/access}/stratnum.h +4 -2
  34. data/ext/pg_query/include/{access → postgres/access}/sysattr.h +1 -1
  35. data/ext/pg_query/include/{access → postgres/access}/table.h +2 -1
  36. data/ext/pg_query/include/{access → postgres/access}/tableam.h +337 -62
  37. data/ext/pg_query/include/postgres/access/toast_compression.h +73 -0
  38. data/ext/pg_query/include/{access → postgres/access}/transam.h +123 -13
  39. data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
  40. data/ext/pg_query/include/{access → postgres/access}/tupconvert.h +5 -2
  41. data/ext/pg_query/include/{access → postgres/access}/tupdesc.h +2 -2
  42. data/ext/pg_query/include/{access → postgres/access}/tupmacs.h +60 -100
  43. data/ext/pg_query/include/{access → postgres/access}/twophase.h +5 -1
  44. data/ext/pg_query/include/{access → postgres/access}/xact.h +99 -32
  45. data/ext/pg_query/include/{access → postgres/access}/xlog.h +69 -165
  46. data/ext/pg_query/include/{access → postgres/access}/xlog_internal.h +147 -73
  47. data/ext/pg_query/include/postgres/access/xlogbackup.h +41 -0
  48. data/ext/pg_query/include/{access → postgres/access}/xlogdefs.h +13 -40
  49. data/ext/pg_query/include/postgres/access/xlogprefetcher.h +55 -0
  50. data/ext/pg_query/include/{access → postgres/access}/xlogreader.h +154 -37
  51. data/ext/pg_query/include/{access → postgres/access}/xlogrecord.h +34 -13
  52. data/ext/pg_query/include/postgres/access/xlogrecovery.h +158 -0
  53. data/ext/pg_query/include/postgres/archive/archive_module.h +59 -0
  54. data/ext/pg_query/include/{c.h → postgres/c.h} +245 -188
  55. data/ext/pg_query/include/{catalog → postgres/catalog}/catalog.h +6 -3
  56. data/ext/pg_query/include/{catalog → postgres/catalog}/catversion.h +6 -2
  57. data/ext/pg_query/include/{catalog → postgres/catalog}/dependency.h +14 -19
  58. data/ext/pg_query/include/postgres/catalog/genbki.h +143 -0
  59. data/ext/pg_query/include/{catalog → postgres/catalog}/index.h +20 -5
  60. data/ext/pg_query/include/postgres/catalog/indexing.h +54 -0
  61. data/ext/pg_query/include/{catalog → postgres/catalog}/namespace.h +5 -3
  62. data/ext/pg_query/include/{catalog → postgres/catalog}/objectaccess.h +73 -3
  63. data/ext/pg_query/include/{catalog → postgres/catalog}/objectaddress.h +12 -7
  64. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate.h +14 -10
  65. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate_d.h +2 -1
  66. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am.h +4 -1
  67. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am_d.h +3 -1
  68. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute.h +45 -26
  69. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute_d.h +19 -16
  70. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid.h +7 -2
  71. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid_d.h +19 -9
  72. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class.h +45 -15
  73. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class_d.h +31 -2
  74. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation.h +35 -8
  75. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation_d.h +21 -3
  76. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint.h +39 -13
  77. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint_d.h +10 -4
  78. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_control.h +13 -5
  79. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion.h +8 -5
  80. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion_d.h +4 -1
  81. data/ext/pg_query/include/postgres/catalog/pg_database.h +124 -0
  82. data/ext/pg_query/include/postgres/catalog/pg_database_d.h +52 -0
  83. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend.h +11 -7
  84. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend_d.h +3 -1
  85. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger.h +9 -3
  86. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger_d.h +3 -1
  87. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index.h +17 -7
  88. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index_d.h +20 -17
  89. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language.h +10 -5
  90. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language_d.h +3 -1
  91. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace.h +7 -2
  92. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace_d.h +3 -1
  93. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass.h +8 -5
  94. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass_d.h +3 -1
  95. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator.h +21 -16
  96. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator_d.h +37 -1
  97. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily.h +8 -4
  98. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily_d.h +6 -2
  99. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table.h +20 -9
  100. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table_d.h +2 -1
  101. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc.h +20 -11
  102. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc_d.h +10 -8
  103. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication.h +49 -6
  104. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication_d.h +3 -1
  105. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin.h +6 -1
  106. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin_d.h +5 -1
  107. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic.h +19 -12
  108. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_d.h +2 -1
  109. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext.h +19 -5
  110. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext_d.h +7 -2
  111. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform.h +8 -5
  112. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform_d.h +3 -1
  113. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger.h +24 -8
  114. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger_d.h +4 -1
  115. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config.h +6 -3
  116. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config_d.h +3 -1
  117. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict.h +8 -3
  118. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict_d.h +3 -1
  119. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser.h +6 -3
  120. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser_d.h +3 -1
  121. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template.h +6 -3
  122. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template_d.h +3 -1
  123. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type.h +56 -24
  124. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type_d.h +70 -31
  125. data/ext/pg_query/include/{catalog → postgres/catalog}/storage.h +9 -7
  126. data/ext/pg_query/include/{commands → postgres/commands}/async.h +4 -5
  127. data/ext/pg_query/include/{commands → postgres/commands}/dbcommands.h +3 -1
  128. data/ext/pg_query/include/{commands → postgres/commands}/defrem.h +12 -24
  129. data/ext/pg_query/include/{commands → postgres/commands}/event_trigger.h +2 -2
  130. data/ext/pg_query/include/{commands → postgres/commands}/explain.h +3 -1
  131. data/ext/pg_query/include/{commands → postgres/commands}/prepare.h +1 -1
  132. data/ext/pg_query/include/{commands → postgres/commands}/tablespace.h +6 -4
  133. data/ext/pg_query/include/{commands → postgres/commands}/trigger.h +36 -25
  134. data/ext/pg_query/include/{commands → postgres/commands}/user.h +10 -4
  135. data/ext/pg_query/include/{commands → postgres/commands}/vacuum.h +140 -47
  136. data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
  137. data/ext/pg_query/include/{common → postgres/common}/file_perm.h +4 -4
  138. data/ext/pg_query/include/{common → postgres/common}/hashfn.h +1 -1
  139. data/ext/pg_query/include/postgres/common/int.h +437 -0
  140. data/ext/pg_query/include/{common → postgres/common}/keywords.h +2 -6
  141. data/ext/pg_query/include/{common → postgres/common}/kwlookup.h +2 -2
  142. data/ext/pg_query/include/postgres/common/pg_prng.h +61 -0
  143. data/ext/pg_query/include/{common → postgres/common}/relpath.h +21 -14
  144. data/ext/pg_query/include/postgres/common/scram-common.h +70 -0
  145. data/ext/pg_query/include/postgres/common/sha2.h +32 -0
  146. data/ext/pg_query/include/postgres/common/string.h +44 -0
  147. data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +125 -0
  148. data/ext/pg_query/include/{common/unicode_combining_table.h → postgres/common/unicode_nonspacing_table.h} +138 -8
  149. data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5013 -0
  150. data/ext/pg_query/include/postgres/copyfuncs.switch.c +938 -0
  151. data/ext/pg_query/include/{datatype → postgres/datatype}/timestamp.h +50 -4
  152. data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3097 -0
  153. data/ext/pg_query/include/postgres/equalfuncs.switch.c +785 -0
  154. data/ext/pg_query/include/{executor → postgres/executor}/execdesc.h +1 -1
  155. data/ext/pg_query/include/{executor → postgres/executor}/executor.h +98 -32
  156. data/ext/pg_query/include/{executor → postgres/executor}/functions.h +17 -3
  157. data/ext/pg_query/include/{executor → postgres/executor}/instrument.h +33 -16
  158. data/ext/pg_query/include/{executor → postgres/executor}/spi.h +42 -4
  159. data/ext/pg_query/include/{executor → postgres/executor}/tablefunc.h +1 -1
  160. data/ext/pg_query/include/{executor → postgres/executor}/tuptable.h +18 -11
  161. data/ext/pg_query/include/{fmgr.h → postgres/fmgr.h} +33 -8
  162. data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
  163. data/ext/pg_query/include/{funcapi.h → postgres/funcapi.h} +22 -10
  164. data/ext/pg_query/include/postgres/gram.h +1127 -0
  165. data/ext/pg_query/include/{parser → postgres}/gramparse.h +4 -4
  166. data/ext/pg_query/include/{jit → postgres/jit}/jit.h +12 -12
  167. data/ext/pg_query/include/postgres/kwlist_d.h +1119 -0
  168. data/ext/pg_query/include/postgres/lib/dshash.h +115 -0
  169. data/ext/pg_query/include/{lib → postgres/lib}/ilist.h +454 -22
  170. data/ext/pg_query/include/{lib → postgres/lib}/pairingheap.h +1 -1
  171. data/ext/pg_query/include/{lib → postgres/lib}/simplehash.h +158 -33
  172. data/ext/pg_query/include/postgres/lib/sort_template.h +432 -0
  173. data/ext/pg_query/include/{lib → postgres/lib}/stringinfo.h +3 -3
  174. data/ext/pg_query/include/{libpq → postgres/libpq}/auth.h +12 -4
  175. data/ext/pg_query/include/{libpq → postgres/libpq}/crypt.h +5 -4
  176. data/ext/pg_query/include/{libpq → postgres/libpq}/hba.h +54 -8
  177. data/ext/pg_query/include/{libpq → postgres/libpq}/libpq-be.h +45 -17
  178. data/ext/pg_query/include/{libpq → postgres/libpq}/libpq.h +31 -20
  179. data/ext/pg_query/include/{libpq → postgres/libpq}/pqcomm.h +26 -71
  180. data/ext/pg_query/include/{libpq → postgres/libpq}/pqformat.h +2 -2
  181. data/ext/pg_query/include/{libpq → postgres/libpq}/pqsignal.h +25 -13
  182. data/ext/pg_query/include/postgres/libpq/sasl.h +136 -0
  183. data/ext/pg_query/include/postgres/libpq/scram.h +37 -0
  184. data/ext/pg_query/include/{mb → postgres/mb}/pg_wchar.h +125 -25
  185. data/ext/pg_query/include/{mb → postgres/mb}/stringinfo_mb.h +1 -1
  186. data/ext/pg_query/include/{miscadmin.h → postgres/miscadmin.h} +96 -65
  187. data/ext/pg_query/include/{nodes → postgres/nodes}/bitmapset.h +11 -7
  188. data/ext/pg_query/include/{nodes → postgres/nodes}/execnodes.h +351 -103
  189. data/ext/pg_query/include/{nodes → postgres/nodes}/extensible.h +8 -4
  190. data/ext/pg_query/include/{nodes → postgres/nodes}/lockoptions.h +1 -1
  191. data/ext/pg_query/include/{nodes → postgres/nodes}/makefuncs.h +19 -6
  192. data/ext/pg_query/include/{nodes → postgres/nodes}/memnodes.h +11 -6
  193. data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
  194. data/ext/pg_query/include/{nodes → postgres/nodes}/nodeFuncs.h +89 -29
  195. data/ext/pg_query/include/{nodes → postgres/nodes}/nodes.h +100 -496
  196. data/ext/pg_query/include/postgres/nodes/nodetags.h +471 -0
  197. data/ext/pg_query/include/{nodes → postgres/nodes}/params.h +3 -3
  198. data/ext/pg_query/include/{nodes → postgres/nodes}/parsenodes.h +678 -207
  199. data/ext/pg_query/include/{nodes → postgres/nodes}/pathnodes.h +1282 -454
  200. data/ext/pg_query/include/{nodes → postgres/nodes}/pg_list.h +103 -73
  201. data/ext/pg_query/include/{nodes → postgres/nodes}/plannodes.h +474 -133
  202. data/ext/pg_query/include/{nodes → postgres/nodes}/primnodes.h +754 -254
  203. data/ext/pg_query/include/{nodes → postgres/nodes}/print.h +1 -1
  204. data/ext/pg_query/include/postgres/nodes/queryjumble.h +86 -0
  205. data/ext/pg_query/include/postgres/nodes/replnodes.h +111 -0
  206. data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
  207. data/ext/pg_query/include/{nodes → postgres/nodes}/tidbitmap.h +1 -1
  208. data/ext/pg_query/include/postgres/nodes/value.h +90 -0
  209. data/ext/pg_query/include/{optimizer → postgres/optimizer}/cost.h +14 -5
  210. data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo.h +9 -7
  211. data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo_gene.h +1 -1
  212. data/ext/pg_query/include/{optimizer → postgres/optimizer}/optimizer.h +31 -28
  213. data/ext/pg_query/include/{optimizer → postgres/optimizer}/paths.h +29 -12
  214. data/ext/pg_query/include/{optimizer → postgres/optimizer}/planmain.h +15 -17
  215. data/ext/pg_query/include/{parser → postgres/parser}/analyze.h +20 -5
  216. data/ext/pg_query/include/postgres/parser/kwlist.h +498 -0
  217. data/ext/pg_query/include/{parser → postgres/parser}/parse_agg.h +5 -8
  218. data/ext/pg_query/include/{parser → postgres/parser}/parse_coerce.h +6 -1
  219. data/ext/pg_query/include/{parser → postgres/parser}/parse_expr.h +2 -3
  220. data/ext/pg_query/include/{parser → postgres/parser}/parse_func.h +2 -1
  221. data/ext/pg_query/include/{parser → postgres/parser}/parse_node.h +41 -11
  222. data/ext/pg_query/include/{parser → postgres/parser}/parse_oper.h +3 -5
  223. data/ext/pg_query/include/{parser → postgres/parser}/parse_relation.h +11 -5
  224. data/ext/pg_query/include/{parser → postgres/parser}/parse_type.h +4 -3
  225. data/ext/pg_query/include/postgres/parser/parser.h +68 -0
  226. data/ext/pg_query/include/{parser → postgres/parser}/parsetree.h +1 -1
  227. data/ext/pg_query/include/{parser → postgres/parser}/scanner.h +2 -2
  228. data/ext/pg_query/include/{parser → postgres/parser}/scansup.h +2 -5
  229. data/ext/pg_query/include/{partitioning → postgres/partitioning}/partdefs.h +1 -1
  230. data/ext/pg_query/include/{pg_config.h → postgres/pg_config.h} +216 -228
  231. data/ext/pg_query/include/{pg_config_manual.h → postgres/pg_config_manual.h} +80 -58
  232. data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
  233. data/ext/pg_query/include/{pg_getopt.h → postgres/pg_getopt.h} +6 -6
  234. data/ext/pg_query/include/{pg_trace.h → postgres/pg_trace.h} +1 -1
  235. data/ext/pg_query/include/postgres/pgstat.h +778 -0
  236. data/ext/pg_query/include/{pgtime.h → postgres/pgtime.h} +16 -6
  237. data/ext/pg_query/include/{pl_gram.h → postgres/pl_gram.h} +116 -116
  238. data/ext/pg_query/include/{pl_reserved_kwlist.h → postgres/pl_reserved_kwlist.h} +1 -1
  239. data/ext/pg_query/include/{pl_reserved_kwlist_d.h → postgres/pl_reserved_kwlist_d.h} +10 -10
  240. data/ext/pg_query/include/{pl_unreserved_kwlist.h → postgres/pl_unreserved_kwlist.h} +3 -3
  241. data/ext/pg_query/include/{pl_unreserved_kwlist_d.h → postgres/pl_unreserved_kwlist_d.h} +60 -60
  242. data/ext/pg_query/include/{plerrcodes.h → postgres/plerrcodes.h} +9 -1
  243. data/ext/pg_query/include/{plpgsql.h → postgres/plpgsql.h} +79 -86
  244. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-arm.h +9 -3
  245. data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
  246. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-ppc.h +21 -21
  247. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-x86.h +2 -2
  248. data/ext/pg_query/include/{port → postgres/port}/atomics/fallback.h +3 -3
  249. data/ext/pg_query/include/{port → postgres/port}/atomics/generic-gcc.h +3 -3
  250. data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +101 -0
  251. data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +106 -0
  252. data/ext/pg_query/include/{port → postgres/port}/atomics/generic.h +1 -1
  253. data/ext/pg_query/include/{port → postgres/port}/atomics.h +2 -7
  254. data/ext/pg_query/include/{port → postgres/port}/pg_bitutils.h +129 -16
  255. data/ext/pg_query/include/{port → postgres/port}/pg_bswap.h +1 -1
  256. data/ext/pg_query/include/{port → postgres/port}/pg_crc32c.h +1 -1
  257. data/ext/pg_query/include/postgres/port/simd.h +375 -0
  258. data/ext/pg_query/include/postgres/port/win32/arpa/inet.h +3 -0
  259. data/ext/pg_query/include/postgres/port/win32/dlfcn.h +1 -0
  260. data/ext/pg_query/include/postgres/port/win32/grp.h +1 -0
  261. data/ext/pg_query/include/postgres/port/win32/netdb.h +7 -0
  262. data/ext/pg_query/include/postgres/port/win32/netinet/in.h +3 -0
  263. data/ext/pg_query/include/postgres/port/win32/netinet/tcp.h +7 -0
  264. data/ext/pg_query/include/postgres/port/win32/pwd.h +3 -0
  265. data/ext/pg_query/include/postgres/port/win32/sys/resource.h +20 -0
  266. data/ext/pg_query/include/postgres/port/win32/sys/select.h +3 -0
  267. data/ext/pg_query/include/postgres/port/win32/sys/socket.h +26 -0
  268. data/ext/pg_query/include/postgres/port/win32/sys/un.h +17 -0
  269. data/ext/pg_query/include/postgres/port/win32/sys/wait.h +3 -0
  270. data/ext/pg_query/include/postgres/port/win32.h +59 -0
  271. data/ext/pg_query/include/postgres/port/win32_msvc/dirent.h +34 -0
  272. data/ext/pg_query/include/postgres/port/win32_msvc/sys/file.h +1 -0
  273. data/ext/pg_query/include/postgres/port/win32_msvc/sys/param.h +1 -0
  274. data/ext/pg_query/include/postgres/port/win32_msvc/sys/time.h +1 -0
  275. data/ext/pg_query/include/postgres/port/win32_msvc/unistd.h +9 -0
  276. data/ext/pg_query/include/postgres/port/win32_msvc/utime.h +3 -0
  277. data/ext/pg_query/include/postgres/port/win32_port.h +594 -0
  278. data/ext/pg_query/include/{port.h → postgres/port.h} +107 -111
  279. data/ext/pg_query/include/postgres/portability/instr_time.h +197 -0
  280. data/ext/pg_query/include/postgres/postgres.h +579 -0
  281. data/ext/pg_query/include/{postgres_ext.h → postgres/postgres_ext.h} +0 -1
  282. data/ext/pg_query/include/{postmaster → postgres/postmaster}/autovacuum.h +17 -20
  283. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker.h +3 -2
  284. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker_internals.h +2 -2
  285. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgwriter.h +6 -6
  286. data/ext/pg_query/include/{postmaster → postgres/postmaster}/interrupt.h +1 -1
  287. data/ext/pg_query/include/{postmaster → postgres/postmaster}/pgarch.h +7 -10
  288. data/ext/pg_query/include/{postmaster → postgres/postmaster}/postmaster.h +21 -17
  289. data/ext/pg_query/include/postgres/postmaster/startup.h +41 -0
  290. data/ext/pg_query/include/{postmaster → postgres/postmaster}/syslogger.h +16 -11
  291. data/ext/pg_query/include/{postmaster → postgres/postmaster}/walwriter.h +5 -3
  292. data/ext/pg_query/include/{regex → postgres/regex}/regex.h +27 -22
  293. data/ext/pg_query/include/{replication → postgres/replication}/logicallauncher.h +8 -5
  294. data/ext/pg_query/include/postgres/replication/logicalproto.h +274 -0
  295. data/ext/pg_query/include/postgres/replication/logicalworker.h +32 -0
  296. data/ext/pg_query/include/{replication → postgres/replication}/origin.h +8 -8
  297. data/ext/pg_query/include/postgres/replication/reorderbuffer.h +753 -0
  298. data/ext/pg_query/include/{replication → postgres/replication}/slot.h +42 -12
  299. data/ext/pg_query/include/{replication → postgres/replication}/syncrep.h +6 -12
  300. data/ext/pg_query/include/{replication → postgres/replication}/walreceiver.h +158 -20
  301. data/ext/pg_query/include/{replication → postgres/replication}/walsender.h +20 -20
  302. data/ext/pg_query/include/{rewrite → postgres/rewrite}/prs2lock.h +1 -1
  303. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteHandler.h +1 -6
  304. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteManip.h +11 -2
  305. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteSupport.h +1 -1
  306. data/ext/pg_query/include/{storage → postgres/storage}/backendid.h +3 -3
  307. data/ext/pg_query/include/{storage → postgres/storage}/block.h +24 -37
  308. data/ext/pg_query/include/{storage → postgres/storage}/buf.h +1 -1
  309. data/ext/pg_query/include/{storage → postgres/storage}/bufmgr.h +196 -95
  310. data/ext/pg_query/include/{storage → postgres/storage}/bufpage.h +152 -101
  311. data/ext/pg_query/include/{storage → postgres/storage}/condition_variable.h +14 -3
  312. data/ext/pg_query/include/{storage → postgres/storage}/dsm.h +6 -6
  313. data/ext/pg_query/include/{storage → postgres/storage}/dsm_impl.h +6 -2
  314. data/ext/pg_query/include/{storage → postgres/storage}/fd.h +48 -14
  315. data/ext/pg_query/include/postgres/storage/fileset.h +40 -0
  316. data/ext/pg_query/include/{storage → postgres/storage}/ipc.h +5 -2
  317. data/ext/pg_query/include/{storage → postgres/storage}/item.h +1 -1
  318. data/ext/pg_query/include/{storage → postgres/storage}/itemid.h +1 -1
  319. data/ext/pg_query/include/{storage → postgres/storage}/itemptr.h +96 -57
  320. data/ext/pg_query/include/{storage → postgres/storage}/large_object.h +2 -2
  321. data/ext/pg_query/include/{storage → postgres/storage}/latch.h +17 -13
  322. data/ext/pg_query/include/{storage → postgres/storage}/lmgr.h +7 -1
  323. data/ext/pg_query/include/{storage → postgres/storage}/lock.h +37 -25
  324. data/ext/pg_query/include/{storage → postgres/storage}/lockdefs.h +4 -4
  325. data/ext/pg_query/include/{storage → postgres/storage}/lwlock.h +21 -33
  326. data/ext/pg_query/include/{storage → postgres/storage}/lwlocknames.h +0 -1
  327. data/ext/pg_query/include/{storage → postgres/storage}/off.h +1 -1
  328. data/ext/pg_query/include/{storage → postgres/storage}/pg_sema.h +1 -1
  329. data/ext/pg_query/include/{storage → postgres/storage}/pg_shmem.h +9 -7
  330. data/ext/pg_query/include/{storage → postgres/storage}/pmsignal.h +15 -4
  331. data/ext/pg_query/include/{storage → postgres/storage}/predicate.h +5 -5
  332. data/ext/pg_query/include/{storage → postgres/storage}/proc.h +200 -67
  333. data/ext/pg_query/include/postgres/storage/procarray.h +99 -0
  334. data/ext/pg_query/include/{storage → postgres/storage}/proclist_types.h +1 -1
  335. data/ext/pg_query/include/{storage → postgres/storage}/procsignal.h +5 -7
  336. data/ext/pg_query/include/postgres/storage/relfilelocator.h +99 -0
  337. data/ext/pg_query/include/{storage → postgres/storage}/s_lock.h +118 -298
  338. data/ext/pg_query/include/{storage → postgres/storage}/sharedfileset.h +3 -11
  339. data/ext/pg_query/include/{storage → postgres/storage}/shm_mq.h +5 -4
  340. data/ext/pg_query/include/{storage → postgres/storage}/shm_toc.h +1 -1
  341. data/ext/pg_query/include/{storage → postgres/storage}/shmem.h +1 -23
  342. data/ext/pg_query/include/{storage → postgres/storage}/sinval.h +5 -5
  343. data/ext/pg_query/include/{storage → postgres/storage}/sinvaladt.h +4 -2
  344. data/ext/pg_query/include/{storage → postgres/storage}/smgr.h +21 -17
  345. data/ext/pg_query/include/{storage → postgres/storage}/spin.h +2 -2
  346. data/ext/pg_query/include/{storage → postgres/storage}/standby.h +17 -9
  347. data/ext/pg_query/include/{storage → postgres/storage}/standbydefs.h +2 -2
  348. data/ext/pg_query/include/{storage → postgres/storage}/sync.h +9 -5
  349. data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtag.h +7 -2
  350. data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtaglist.h +3 -2
  351. data/ext/pg_query/include/{tcop → postgres/tcop}/deparse_utility.h +1 -1
  352. data/ext/pg_query/include/{tcop → postgres/tcop}/dest.h +1 -3
  353. data/ext/pg_query/include/{tcop → postgres/tcop}/fastpath.h +1 -2
  354. data/ext/pg_query/include/{tcop → postgres/tcop}/pquery.h +7 -1
  355. data/ext/pg_query/include/{tcop → postgres/tcop}/tcopprot.h +19 -14
  356. data/ext/pg_query/include/{tcop → postgres/tcop}/utility.h +7 -3
  357. data/ext/pg_query/include/{tsearch → postgres/tsearch}/ts_cache.h +3 -5
  358. data/ext/pg_query/include/{utils → postgres/utils}/acl.h +37 -71
  359. data/ext/pg_query/include/{utils → postgres/utils}/aclchk_internal.h +1 -1
  360. data/ext/pg_query/include/{utils → postgres/utils}/array.h +26 -2
  361. data/ext/pg_query/include/postgres/utils/backend_progress.h +45 -0
  362. data/ext/pg_query/include/postgres/utils/backend_status.h +342 -0
  363. data/ext/pg_query/include/{utils → postgres/utils}/builtins.h +20 -11
  364. data/ext/pg_query/include/{utils → postgres/utils}/bytea.h +3 -2
  365. data/ext/pg_query/include/{utils → postgres/utils}/catcache.h +1 -1
  366. data/ext/pg_query/include/{utils → postgres/utils}/date.h +37 -9
  367. data/ext/pg_query/include/{utils → postgres/utils}/datetime.h +48 -27
  368. data/ext/pg_query/include/{utils → postgres/utils}/datum.h +9 -1
  369. data/ext/pg_query/include/{utils → postgres/utils}/dsa.h +5 -1
  370. data/ext/pg_query/include/{utils → postgres/utils}/elog.h +154 -48
  371. data/ext/pg_query/include/{utils → postgres/utils}/errcodes.h +2 -0
  372. data/ext/pg_query/include/{utils → postgres/utils}/expandeddatum.h +14 -3
  373. data/ext/pg_query/include/{utils → postgres/utils}/expandedrecord.h +14 -4
  374. data/ext/pg_query/include/{utils → postgres/utils}/float.h +13 -12
  375. data/ext/pg_query/include/{utils → postgres/utils}/fmgroids.h +1353 -696
  376. data/ext/pg_query/include/{utils → postgres/utils}/fmgrprotos.h +243 -18
  377. data/ext/pg_query/include/{utils → postgres/utils}/fmgrtab.h +6 -5
  378. data/ext/pg_query/include/{utils → postgres/utils}/guc.h +120 -121
  379. data/ext/pg_query/include/postgres/utils/guc_hooks.h +163 -0
  380. data/ext/pg_query/include/{utils → postgres/utils}/guc_tables.h +71 -21
  381. data/ext/pg_query/include/{utils → postgres/utils}/hsearch.h +15 -11
  382. data/ext/pg_query/include/{utils → postgres/utils}/inval.h +7 -3
  383. data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
  384. data/ext/pg_query/include/{utils → postgres/utils}/lsyscache.h +16 -1
  385. data/ext/pg_query/include/{utils → postgres/utils}/memdebug.h +1 -1
  386. data/ext/pg_query/include/{utils → postgres/utils}/memutils.h +14 -53
  387. data/ext/pg_query/include/postgres/utils/memutils_internal.h +136 -0
  388. data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +237 -0
  389. data/ext/pg_query/include/{utils → postgres/utils}/numeric.h +38 -9
  390. data/ext/pg_query/include/{utils → postgres/utils}/palloc.h +33 -4
  391. data/ext/pg_query/include/{utils → postgres/utils}/partcache.h +3 -2
  392. data/ext/pg_query/include/{utils → postgres/utils}/pg_locale.h +37 -21
  393. data/ext/pg_query/include/postgres/utils/pgstat_internal.h +814 -0
  394. data/ext/pg_query/include/{utils → postgres/utils}/plancache.h +6 -5
  395. data/ext/pg_query/include/{utils → postgres/utils}/portal.h +12 -1
  396. data/ext/pg_query/include/{utils → postgres/utils}/probes.h +59 -59
  397. data/ext/pg_query/include/postgres/utils/ps_status.h +47 -0
  398. data/ext/pg_query/include/{utils → postgres/utils}/queryenvironment.h +1 -1
  399. data/ext/pg_query/include/postgres/utils/regproc.h +39 -0
  400. data/ext/pg_query/include/{utils → postgres/utils}/rel.h +129 -61
  401. data/ext/pg_query/include/{utils → postgres/utils}/relcache.h +21 -14
  402. data/ext/pg_query/include/{utils → postgres/utils}/reltrigger.h +1 -1
  403. data/ext/pg_query/include/{utils → postgres/utils}/resowner.h +1 -1
  404. data/ext/pg_query/include/{utils → postgres/utils}/ruleutils.h +9 -1
  405. data/ext/pg_query/include/{utils → postgres/utils}/sharedtuplestore.h +1 -1
  406. data/ext/pg_query/include/{utils → postgres/utils}/snapmgr.h +38 -15
  407. data/ext/pg_query/include/{utils → postgres/utils}/snapshot.h +14 -1
  408. data/ext/pg_query/include/{utils → postgres/utils}/sortsupport.h +117 -2
  409. data/ext/pg_query/include/{utils → postgres/utils}/syscache.h +9 -1
  410. data/ext/pg_query/include/{utils → postgres/utils}/timeout.h +11 -4
  411. data/ext/pg_query/include/{utils → postgres/utils}/timestamp.h +46 -15
  412. data/ext/pg_query/include/{utils → postgres/utils}/tuplesort.h +209 -41
  413. data/ext/pg_query/include/{utils → postgres/utils}/tuplestore.h +2 -2
  414. data/ext/pg_query/include/{utils → postgres/utils}/typcache.h +24 -17
  415. data/ext/pg_query/include/{utils → postgres/utils}/varlena.h +17 -3
  416. data/ext/pg_query/include/postgres/utils/wait_event.h +294 -0
  417. data/ext/pg_query/include/{utils → postgres/utils}/xml.h +18 -8
  418. data/ext/pg_query/include/{postgres.h → postgres/varatt.h} +65 -471
  419. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +7494 -6382
  420. data/ext/pg_query/include/protobuf/pg_query.pb.h +116922 -84792
  421. data/ext/pg_query/include/protobuf-c/protobuf-c.h +7 -3
  422. data/ext/pg_query/include/protobuf-c.h +7 -3
  423. data/ext/pg_query/pg_query.c +10 -1
  424. data/ext/pg_query/pg_query.pb-c.c +21026 -17002
  425. data/ext/pg_query/pg_query_deparse.c +1 -9896
  426. data/ext/pg_query/pg_query_fingerprint.c +162 -50
  427. data/ext/pg_query/pg_query_fingerprint.h +3 -1
  428. data/ext/pg_query/pg_query_internal.h +1 -1
  429. data/ext/pg_query/pg_query_json_plpgsql.c +56 -12
  430. data/ext/pg_query/pg_query_normalize.c +259 -64
  431. data/ext/pg_query/pg_query_outfuncs.h +1 -0
  432. data/ext/pg_query/pg_query_outfuncs_json.c +71 -16
  433. data/ext/pg_query/pg_query_outfuncs_protobuf.c +73 -12
  434. data/ext/pg_query/pg_query_parse.c +47 -5
  435. data/ext/pg_query/pg_query_parse_plpgsql.c +86 -21
  436. data/ext/pg_query/pg_query_readfuncs_protobuf.c +43 -8
  437. data/ext/pg_query/pg_query_ruby.c +6 -1
  438. data/ext/pg_query/pg_query_ruby_freebsd.sym +2 -0
  439. data/ext/pg_query/pg_query_scan.c +3 -2
  440. data/ext/pg_query/pg_query_split.c +6 -5
  441. data/ext/pg_query/postgres_deparse.c +11067 -0
  442. data/ext/pg_query/postgres_deparse.h +9 -0
  443. data/ext/pg_query/protobuf-c.c +34 -27
  444. data/ext/pg_query/src_backend_catalog_namespace.c +27 -10
  445. data/ext/pg_query/src_backend_catalog_pg_proc.c +4 -1
  446. data/ext/pg_query/src_backend_commands_define.c +11 -1
  447. data/ext/pg_query/src_backend_nodes_bitmapset.c +13 -70
  448. data/ext/pg_query/src_backend_nodes_copyfuncs.c +103 -5894
  449. data/ext/pg_query/src_backend_nodes_equalfuncs.c +102 -3830
  450. data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
  451. data/ext/pg_query/src_backend_nodes_list.c +99 -12
  452. data/ext/pg_query/src_backend_nodes_makefuncs.c +99 -4
  453. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +325 -131
  454. data/ext/pg_query/src_backend_nodes_nodes.c +38 -0
  455. data/ext/pg_query/src_backend_nodes_value.c +28 -19
  456. data/ext/pg_query/src_backend_parser_gram.c +36104 -32074
  457. data/ext/pg_query/src_backend_parser_parser.c +53 -8
  458. data/ext/pg_query/src_backend_parser_scan.c +4893 -3701
  459. data/ext/pg_query/src_backend_parser_scansup.c +4 -28
  460. data/ext/pg_query/src_backend_storage_ipc_ipc.c +13 -4
  461. data/ext/pg_query/src_backend_tcop_postgres.c +133 -105
  462. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +140 -0
  463. data/ext/pg_query/src_backend_utils_adt_datum.c +17 -7
  464. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  465. data/ext/pg_query/src_backend_utils_adt_format_type.c +6 -2
  466. data/ext/pg_query/src_backend_utils_adt_numutils.c +489 -0
  467. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +187 -19
  468. data/ext/pg_query/src_backend_utils_error_assert.c +17 -18
  469. data/ext/pg_query/src_backend_utils_error_elog.c +513 -318
  470. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +44 -17
  471. data/ext/pg_query/src_backend_utils_init_globals.c +9 -6
  472. data/ext/pg_query/src_backend_utils_mb_mbutils.c +74 -131
  473. data/ext/pg_query/src_backend_utils_misc_guc_tables.c +492 -0
  474. data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +163 -0
  475. data/ext/pg_query/src_backend_utils_mmgr_aset.c +453 -314
  476. data/ext/pg_query/src_backend_utils_mmgr_generation.c +1039 -0
  477. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +549 -76
  478. data/ext/pg_query/src_backend_utils_mmgr_slab.c +1021 -0
  479. data/ext/pg_query/src_common_encnames.c +4 -1
  480. data/ext/pg_query/src_common_hashfn.c +420 -0
  481. data/ext/pg_query/src_common_keywords.c +15 -2
  482. data/ext/pg_query/src_common_kwlist_d.h +545 -498
  483. data/ext/pg_query/src_common_kwlookup.c +1 -1
  484. data/ext/pg_query/src_common_psprintf.c +1 -1
  485. data/ext/pg_query/src_common_stringinfo.c +4 -4
  486. data/ext/pg_query/src_common_wchar.c +717 -113
  487. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +49 -22
  488. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -18
  489. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1136 -1195
  490. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  491. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +10 -10
  492. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +2 -2
  493. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +60 -60
  494. data/ext/pg_query/src_port_pg_bitutils.c +103 -40
  495. data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
  496. data/ext/pg_query/src_port_qsort.c +12 -224
  497. data/ext/pg_query/src_port_snprintf.c +51 -29
  498. data/ext/pg_query/src_port_strerror.c +9 -19
  499. data/ext/pg_query/src_port_strlcpy.c +79 -0
  500. data/lib/pg_query/deparse.rb +7 -1
  501. data/lib/pg_query/filter_columns.rb +7 -5
  502. data/lib/pg_query/fingerprint.rb +21 -9
  503. data/lib/pg_query/node.rb +18 -13
  504. data/lib/pg_query/param_refs.rb +1 -1
  505. data/lib/pg_query/parse.rb +141 -50
  506. data/lib/pg_query/pg_query_pb.rb +175 -3031
  507. data/lib/pg_query/treewalker.rb +26 -2
  508. data/lib/pg_query/truncate.rb +54 -8
  509. data/lib/pg_query/version.rb +1 -1
  510. data/lib/pg_query.rb +0 -1
  511. metadata +443 -380
  512. data/ext/pg_query/guc-file.c +0 -0
  513. data/ext/pg_query/include/access/rmgr.h +0 -35
  514. data/ext/pg_query/include/access/xloginsert.h +0 -64
  515. data/ext/pg_query/include/bootstrap/bootstrap.h +0 -62
  516. data/ext/pg_query/include/catalog/genbki.h +0 -64
  517. data/ext/pg_query/include/catalog/indexing.h +0 -366
  518. data/ext/pg_query/include/commands/variable.h +0 -38
  519. data/ext/pg_query/include/common/ip.h +0 -37
  520. data/ext/pg_query/include/common/string.h +0 -19
  521. data/ext/pg_query/include/getaddrinfo.h +0 -162
  522. data/ext/pg_query/include/kwlist_d.h +0 -1072
  523. data/ext/pg_query/include/nodes/value.h +0 -61
  524. data/ext/pg_query/include/parser/gram.h +0 -1067
  525. data/ext/pg_query/include/parser/kwlist.h +0 -477
  526. data/ext/pg_query/include/parser/parse_clause.h +0 -54
  527. data/ext/pg_query/include/parser/parse_collate.h +0 -27
  528. data/ext/pg_query/include/parser/parse_target.h +0 -46
  529. data/ext/pg_query/include/parser/parser.h +0 -41
  530. data/ext/pg_query/include/pg_config_os.h +0 -8
  531. data/ext/pg_query/include/pgstat.h +0 -1487
  532. data/ext/pg_query/include/portability/instr_time.h +0 -256
  533. data/ext/pg_query/include/postmaster/fork_process.h +0 -17
  534. data/ext/pg_query/include/replication/logicalproto.h +0 -110
  535. data/ext/pg_query/include/replication/logicalworker.h +0 -19
  536. data/ext/pg_query/include/replication/reorderbuffer.h +0 -467
  537. data/ext/pg_query/include/storage/relfilenode.h +0 -99
  538. data/ext/pg_query/include/utils/dynahash.h +0 -19
  539. data/ext/pg_query/include/utils/pg_lsn.h +0 -29
  540. data/ext/pg_query/include/utils/pidfile.h +0 -56
  541. data/ext/pg_query/include/utils/ps_status.h +0 -25
  542. data/ext/pg_query/include/utils/regproc.h +0 -28
  543. data/ext/pg_query/include/utils/rls.h +0 -50
  544. data/ext/pg_query/include/utils/tzparser.h +0 -39
  545. data/ext/pg_query/src_backend_libpq_pqcomm.c +0 -651
  546. data/ext/pg_query/src_backend_parser_parse_expr.c +0 -313
  547. data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2230
  548. data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -370
  549. data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1086
  550. data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1831
  551. data/ext/pg_query/src_common_string.c +0 -86
  552. data/ext/pg_query/src_port_erand48.c +0 -127
  553. data/ext/pg_query/src_port_pgsleep.c +0 -69
  554. data/ext/pg_query/src_port_random.c +0 -31
  555. data/ext/pg_query/src_port_strnlen.c +0 -39
  556. data/lib/pg_query/json_field_names.rb +0 -1402
  557. /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
@@ -3,7 +3,7 @@
3
3
  * xlogreader.h
4
4
  * Definitions for the generic XLog reading facility
5
5
  *
6
- * Portions Copyright (c) 2013-2020, 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
@@ -17,7 +17,7 @@
17
17
  * XLogBeginRead() or XLogFindNextRecord(), and call XLogReadRecord()
18
18
  * until it returns NULL.
19
19
  *
20
- * Callers supply a page_read callback if they want to to call
20
+ * Callers supply a page_read callback if they want to call
21
21
  * XLogReadRecord or XLogFindNextRecord; it can be passed in as NULL
22
22
  * otherwise. The WALRead function can be used as a helper to write
23
23
  * page_read callbacks, but it is not mandatory; callers that use it,
@@ -39,6 +39,7 @@
39
39
  #endif
40
40
 
41
41
  #include "access/xlogrecord.h"
42
+ #include "storage/buf.h"
42
43
 
43
44
  /* WALOpenSegment represents a WAL segment being read. */
44
45
  typedef struct WALOpenSegment
@@ -121,10 +122,13 @@ typedef struct
121
122
  bool in_use;
122
123
 
123
124
  /* Identify the block this refers to */
124
- RelFileNode rnode;
125
+ RelFileLocator rlocator;
125
126
  ForkNumber forknum;
126
127
  BlockNumber blkno;
127
128
 
129
+ /* Prefetching workspace. */
130
+ Buffer prefetch_buffer;
131
+
128
132
  /* copy of the fork_flags field from the XLogRecordBlockHeader */
129
133
  uint8 flags;
130
134
 
@@ -144,6 +148,30 @@ typedef struct
144
148
  uint16 data_bufsz;
145
149
  } DecodedBkpBlock;
146
150
 
151
+ /*
152
+ * The decoded contents of a record. This occupies a contiguous region of
153
+ * memory, with main_data and blocks[n].data pointing to memory after the
154
+ * members declared here.
155
+ */
156
+ typedef struct DecodedXLogRecord
157
+ {
158
+ /* Private member used for resource management. */
159
+ size_t size; /* total size of decoded record */
160
+ bool oversized; /* outside the regular decode buffer? */
161
+ struct DecodedXLogRecord *next; /* decoded record queue link */
162
+
163
+ /* Public members. */
164
+ XLogRecPtr lsn; /* location */
165
+ XLogRecPtr next_lsn; /* location of next record */
166
+ XLogRecord header; /* header */
167
+ RepOriginId record_origin;
168
+ TransactionId toplevel_xid; /* XID of top-level transaction */
169
+ char *main_data; /* record's main data portion */
170
+ uint32 main_data_len; /* main data portion's length */
171
+ int max_block_id; /* highest block_id in use (-1 if none) */
172
+ DecodedBkpBlock blocks[FLEXIBLE_ARRAY_MEMBER];
173
+ } DecodedXLogRecord;
174
+
147
175
  struct XLogReaderState
148
176
  {
149
177
  /*
@@ -171,10 +199,23 @@ struct XLogReaderState
171
199
  * Start and end point of last record read. EndRecPtr is also used as the
172
200
  * position to read next. Calling XLogBeginRead() sets EndRecPtr to the
173
201
  * starting position and ReadRecPtr to invalid.
202
+ *
203
+ * Start and end point of last record returned by XLogReadRecord(). These
204
+ * are also available as record->lsn and record->next_lsn.
174
205
  */
175
206
  XLogRecPtr ReadRecPtr; /* start of last record read */
176
207
  XLogRecPtr EndRecPtr; /* end+1 of last record read */
177
208
 
209
+ /*
210
+ * Set at the end of recovery: the start point of a partial record at the
211
+ * end of WAL (InvalidXLogRecPtr if there wasn't one), and the start
212
+ * location of its first contrecord that went missing.
213
+ */
214
+ XLogRecPtr abortedRecPtr;
215
+ XLogRecPtr missingContrecPtr;
216
+ /* Set when XLP_FIRST_IS_OVERWRITE_CONTRECORD is found */
217
+ XLogRecPtr overwrittenRecPtr;
218
+
178
219
 
179
220
  /* ----------------------------------------
180
221
  * Decoded representation of current record
@@ -182,25 +223,43 @@ struct XLogReaderState
182
223
  * Use XLogRecGet* functions to investigate the record; these fields
183
224
  * should not be accessed directly.
184
225
  * ----------------------------------------
226
+ * Start and end point of the last record read and decoded by
227
+ * XLogReadRecordInternal(). NextRecPtr is also used as the position to
228
+ * decode next. Calling XLogBeginRead() sets NextRecPtr and EndRecPtr to
229
+ * the requested starting position.
185
230
  */
186
- XLogRecord *decoded_record; /* currently decoded record */
187
-
188
- char *main_data; /* record's main data portion */
189
- uint32 main_data_len; /* main data portion's length */
190
- uint32 main_data_bufsz; /* allocated size of the buffer */
231
+ XLogRecPtr DecodeRecPtr; /* start of last record decoded */
232
+ XLogRecPtr NextRecPtr; /* end+1 of last record decoded */
233
+ XLogRecPtr PrevRecPtr; /* start of previous record decoded */
191
234
 
192
- RepOriginId record_origin;
193
-
194
- /* information about blocks referenced by the record. */
195
- DecodedBkpBlock blocks[XLR_MAX_BLOCK_ID + 1];
196
-
197
- int max_block_id; /* highest block_id in use (-1 if none) */
235
+ /* Last record returned by XLogReadRecord(). */
236
+ DecodedXLogRecord *record;
198
237
 
199
238
  /* ----------------------------------------
200
239
  * private/internal state
201
240
  * ----------------------------------------
202
241
  */
203
242
 
243
+ /*
244
+ * Buffer for decoded records. This is a circular buffer, though
245
+ * individual records can't be split in the middle, so some space is often
246
+ * wasted at the end. Oversized records that don't fit in this space are
247
+ * allocated separately.
248
+ */
249
+ char *decode_buffer;
250
+ size_t decode_buffer_size;
251
+ bool free_decode_buffer; /* need to free? */
252
+ char *decode_buffer_head; /* data is read from the head */
253
+ char *decode_buffer_tail; /* new data is written at the tail */
254
+
255
+ /*
256
+ * Queue of records that have been decoded. This is a linked list that
257
+ * usually consists of consecutive records in decode_buffer, but may also
258
+ * contain oversized records allocated with palloc().
259
+ */
260
+ DecodedXLogRecord *decode_queue_head; /* oldest decoded record */
261
+ DecodedXLogRecord *decode_queue_tail; /* newest decoded record */
262
+
204
263
  /*
205
264
  * Buffer for currently read page (XLOG_BLCKSZ bytes, valid up to at least
206
265
  * readLen bytes)
@@ -250,32 +309,72 @@ struct XLogReaderState
250
309
 
251
310
  /* Buffer to hold error message */
252
311
  char *errormsg_buf;
312
+ bool errormsg_deferred;
313
+
314
+ /*
315
+ * Flag to indicate to XLogPageReadCB that it should not block waiting for
316
+ * data.
317
+ */
318
+ bool nonblocking;
253
319
  };
254
320
 
321
+ /*
322
+ * Check if XLogNextRecord() has any more queued records or an error to return.
323
+ */
324
+ static inline bool
325
+ XLogReaderHasQueuedRecordOrError(XLogReaderState *state)
326
+ {
327
+ return (state->decode_queue_head != NULL) || state->errormsg_deferred;
328
+ }
329
+
255
330
  /* Get a new XLogReader */
256
331
  extern XLogReaderState *XLogReaderAllocate(int wal_segment_size,
257
332
  const char *waldir,
258
333
  XLogReaderRoutine *routine,
259
334
  void *private_data);
260
- extern XLogReaderRoutine *LocalXLogReaderRoutine(void);
261
335
 
262
336
  /* Free an XLogReader */
263
337
  extern void XLogReaderFree(XLogReaderState *state);
264
338
 
339
+ /* Optionally provide a circular decoding buffer to allow readahead. */
340
+ extern void XLogReaderSetDecodeBuffer(XLogReaderState *state,
341
+ void *buffer,
342
+ size_t size);
343
+
265
344
  /* Position the XLogReader to given record */
266
345
  extern void XLogBeginRead(XLogReaderState *state, XLogRecPtr RecPtr);
267
- #ifdef FRONTEND
268
346
  extern XLogRecPtr XLogFindNextRecord(XLogReaderState *state, XLogRecPtr RecPtr);
269
- #endif /* FRONTEND */
347
+
348
+ /* Return values from XLogPageReadCB. */
349
+ typedef enum XLogPageReadResult
350
+ {
351
+ XLREAD_SUCCESS = 0, /* record is successfully read */
352
+ XLREAD_FAIL = -1, /* failed during reading a record */
353
+ XLREAD_WOULDBLOCK = -2 /* nonblocking mode only, no data */
354
+ } XLogPageReadResult;
270
355
 
271
356
  /* Read the next XLog record. Returns NULL on end-of-WAL or failure */
272
357
  extern struct XLogRecord *XLogReadRecord(XLogReaderState *state,
273
358
  char **errormsg);
274
359
 
360
+ /* Consume the next record or error. */
361
+ extern DecodedXLogRecord *XLogNextRecord(XLogReaderState *state,
362
+ char **errormsg);
363
+
364
+ /* Release the previously returned record, if necessary. */
365
+ extern XLogRecPtr XLogReleasePreviousRecord(XLogReaderState *state);
366
+
367
+ /* Try to read ahead, if there is data and space. */
368
+ extern DecodedXLogRecord *XLogReadAhead(XLogReaderState *state,
369
+ bool nonblocking);
370
+
275
371
  /* Validate a page */
276
372
  extern bool XLogReaderValidatePageHeader(XLogReaderState *state,
277
373
  XLogRecPtr recptr, char *phdr);
278
374
 
375
+ /* Forget error produced by XLogReaderValidatePageHeader(). */
376
+ extern void XLogReaderResetError(XLogReaderState *state);
377
+
279
378
  /*
280
379
  * Error information from WALRead that both backend and frontend caller can
281
380
  * process. Currently only errors from pg_pread can be reported.
@@ -295,24 +394,38 @@ extern bool WALRead(XLogReaderState *state,
295
394
 
296
395
  /* Functions for decoding an XLogRecord */
297
396
 
298
- extern bool DecodeXLogRecord(XLogReaderState *state, XLogRecord *record,
299
- char **errmsg);
300
-
301
- #define XLogRecGetTotalLen(decoder) ((decoder)->decoded_record->xl_tot_len)
302
- #define XLogRecGetPrev(decoder) ((decoder)->decoded_record->xl_prev)
303
- #define XLogRecGetInfo(decoder) ((decoder)->decoded_record->xl_info)
304
- #define XLogRecGetRmid(decoder) ((decoder)->decoded_record->xl_rmid)
305
- #define XLogRecGetXid(decoder) ((decoder)->decoded_record->xl_xid)
306
- #define XLogRecGetOrigin(decoder) ((decoder)->record_origin)
307
- #define XLogRecGetData(decoder) ((decoder)->main_data)
308
- #define XLogRecGetDataLen(decoder) ((decoder)->main_data_len)
309
- #define XLogRecHasAnyBlockRefs(decoder) ((decoder)->max_block_id >= 0)
310
- #define XLogRecHasBlockRef(decoder, block_id) \
311
- ((decoder)->blocks[block_id].in_use)
312
- #define XLogRecHasBlockImage(decoder, block_id) \
313
- ((decoder)->blocks[block_id].has_image)
314
- #define XLogRecBlockImageApply(decoder, block_id) \
315
- ((decoder)->blocks[block_id].apply_image)
397
+ extern size_t DecodeXLogRecordRequiredSpace(size_t xl_tot_len);
398
+ extern bool DecodeXLogRecord(XLogReaderState *state,
399
+ DecodedXLogRecord *decoded,
400
+ XLogRecord *record,
401
+ XLogRecPtr lsn,
402
+ char **errormsg);
403
+
404
+ /*
405
+ * Macros that provide access to parts of the record most recently returned by
406
+ * XLogReadRecord() or XLogNextRecord().
407
+ */
408
+ #define XLogRecGetTotalLen(decoder) ((decoder)->record->header.xl_tot_len)
409
+ #define XLogRecGetPrev(decoder) ((decoder)->record->header.xl_prev)
410
+ #define XLogRecGetInfo(decoder) ((decoder)->record->header.xl_info)
411
+ #define XLogRecGetRmid(decoder) ((decoder)->record->header.xl_rmid)
412
+ #define XLogRecGetXid(decoder) ((decoder)->record->header.xl_xid)
413
+ #define XLogRecGetOrigin(decoder) ((decoder)->record->record_origin)
414
+ #define XLogRecGetTopXid(decoder) ((decoder)->record->toplevel_xid)
415
+ #define XLogRecGetData(decoder) ((decoder)->record->main_data)
416
+ #define XLogRecGetDataLen(decoder) ((decoder)->record->main_data_len)
417
+ #define XLogRecHasAnyBlockRefs(decoder) ((decoder)->record->max_block_id >= 0)
418
+ #define XLogRecMaxBlockId(decoder) ((decoder)->record->max_block_id)
419
+ #define XLogRecGetBlock(decoder, i) (&(decoder)->record->blocks[(i)])
420
+ #define XLogRecHasBlockRef(decoder, block_id) \
421
+ (((decoder)->record->max_block_id >= (block_id)) && \
422
+ ((decoder)->record->blocks[block_id].in_use))
423
+ #define XLogRecHasBlockImage(decoder, block_id) \
424
+ ((decoder)->record->blocks[block_id].has_image)
425
+ #define XLogRecBlockImageApply(decoder, block_id) \
426
+ ((decoder)->record->blocks[block_id].apply_image)
427
+ #define XLogRecHasBlockData(decoder, block_id) \
428
+ ((decoder)->record->blocks[block_id].has_data)
316
429
 
317
430
  #ifndef FRONTEND
318
431
  extern FullTransactionId XLogRecGetFullXid(XLogReaderState *record);
@@ -320,8 +433,12 @@ extern FullTransactionId XLogRecGetFullXid(XLogReaderState *record);
320
433
 
321
434
  extern bool RestoreBlockImage(XLogReaderState *record, uint8 block_id, char *page);
322
435
  extern char *XLogRecGetBlockData(XLogReaderState *record, uint8 block_id, Size *len);
323
- extern bool XLogRecGetBlockTag(XLogReaderState *record, uint8 block_id,
324
- RelFileNode *rnode, ForkNumber *forknum,
436
+ extern void XLogRecGetBlockTag(XLogReaderState *record, uint8 block_id,
437
+ RelFileLocator *rlocator, ForkNumber *forknum,
325
438
  BlockNumber *blknum);
439
+ extern bool XLogRecGetBlockTagExtended(XLogReaderState *record, uint8 block_id,
440
+ RelFileLocator *rlocator, ForkNumber *forknum,
441
+ BlockNumber *blknum,
442
+ Buffer *prefetch_buffer);
326
443
 
327
444
  #endif /* XLOGREADER_H */
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Definitions for the WAL record format.
5
5
  *
6
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * src/include/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
 
@@ -114,8 +125,8 @@ typedef struct XLogRecordBlockHeader
114
125
  * present is (BLCKSZ - <length of "hole" bytes>).
115
126
  *
116
127
  * Additionally, when wal_compression is enabled, we will try to compress full
117
- * page images using the PGLZ compression algorithm, after removing the "hole".
118
- * This can reduce the WAL volume, but at some extra cost of CPU spent
128
+ * page images using one of the supported algorithms, after removing the
129
+ * "hole". This can reduce the WAL volume, but at some extra cost of CPU spent
119
130
  * on the compression during WAL logging. In this case, since the "hole"
120
131
  * length cannot be calculated by subtracting the number of page image bytes
121
132
  * from BLCKSZ, basically it needs to be stored as an extra information.
@@ -134,7 +145,7 @@ typedef struct XLogRecordBlockImageHeader
134
145
  uint8 bimg_info; /* flag bits, see below */
135
146
 
136
147
  /*
137
- * If BKPIMAGE_HAS_HOLE and BKPIMAGE_IS_COMPRESSED, an
148
+ * If BKPIMAGE_HAS_HOLE and BKPIMAGE_COMPRESSED(), an
138
149
  * XLogRecordBlockCompressHeader struct follows.
139
150
  */
140
151
  } XLogRecordBlockImageHeader;
@@ -144,9 +155,16 @@ typedef struct XLogRecordBlockImageHeader
144
155
 
145
156
  /* Information stored in bimg_info */
146
157
  #define BKPIMAGE_HAS_HOLE 0x01 /* page image has "hole" */
147
- #define BKPIMAGE_IS_COMPRESSED 0x02 /* page image is compressed */
148
- #define BKPIMAGE_APPLY 0x04 /* page image should be restored during
149
- * replay */
158
+ #define BKPIMAGE_APPLY 0x02 /* page image should be restored
159
+ * during replay */
160
+ /* compression methods supported */
161
+ #define BKPIMAGE_COMPRESS_PGLZ 0x04
162
+ #define BKPIMAGE_COMPRESS_LZ4 0x08
163
+ #define BKPIMAGE_COMPRESS_ZSTD 0x10
164
+
165
+ #define BKPIMAGE_COMPRESSED(info) \
166
+ ((info & (BKPIMAGE_COMPRESS_PGLZ | BKPIMAGE_COMPRESS_LZ4 | \
167
+ BKPIMAGE_COMPRESS_ZSTD)) != 0)
150
168
 
151
169
  /*
152
170
  * Extra header information used when page image has "hole" and
@@ -168,7 +186,7 @@ typedef struct XLogRecordBlockCompressHeader
168
186
  (SizeOfXLogRecordBlockHeader + \
169
187
  SizeOfXLogRecordBlockImageHeader + \
170
188
  SizeOfXLogRecordBlockCompressHeader + \
171
- sizeof(RelFileNode) + \
189
+ sizeof(RelFileLocator) + \
172
190
  sizeof(BlockNumber))
173
191
 
174
192
  /*
@@ -180,7 +198,8 @@ typedef struct XLogRecordBlockCompressHeader
180
198
  #define BKPBLOCK_HAS_IMAGE 0x10 /* block data is an XLogRecordBlockImage */
181
199
  #define BKPBLOCK_HAS_DATA 0x20
182
200
  #define BKPBLOCK_WILL_INIT 0x40 /* redo will re-init the page */
183
- #define BKPBLOCK_SAME_REL 0x80 /* RelFileNode omitted, same as previous */
201
+ #define BKPBLOCK_SAME_REL 0x80 /* RelFileLocator omitted, same as
202
+ * previous */
184
203
 
185
204
  /*
186
205
  * XLogRecordDataHeaderShort/Long are used for the "main data" portion of
@@ -211,8 +230,9 @@ typedef struct XLogRecordDataHeaderLong
211
230
  * Block IDs used to distinguish different kinds of record fragments. Block
212
231
  * references are numbered from 0 to XLR_MAX_BLOCK_ID. A rmgr is free to use
213
232
  * any ID number in that range (although you should stick to small numbers,
214
- * because the WAL machinery is optimized for that case). A couple of ID
215
- * numbers are reserved to denote the "main" data portion of the record.
233
+ * because the WAL machinery is optimized for that case). A few ID
234
+ * numbers are reserved to denote the "main" data portion of the record,
235
+ * as well as replication-supporting transaction metadata.
216
236
  *
217
237
  * The maximum is currently set at 32, quite arbitrarily. Most records only
218
238
  * need a handful of block references, but there are a few exceptions that
@@ -223,5 +243,6 @@ typedef struct XLogRecordDataHeaderLong
223
243
  #define XLR_BLOCK_ID_DATA_SHORT 255
224
244
  #define XLR_BLOCK_ID_DATA_LONG 254
225
245
  #define XLR_BLOCK_ID_ORIGIN 253
246
+ #define XLR_BLOCK_ID_TOPLEVEL_XID 252
226
247
 
227
248
  #endif /* XLOGRECORD_H */
@@ -0,0 +1,158 @@
1
+ /*
2
+ * xlogrecovery.h
3
+ *
4
+ * Functions for WAL recovery and standby mode
5
+ *
6
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1994, Regents of the University of California
8
+ *
9
+ * src/include/access/xlogrecovery.h
10
+ */
11
+ #ifndef XLOGRECOVERY_H
12
+ #define XLOGRECOVERY_H
13
+
14
+ #include "access/xlogreader.h"
15
+ #include "catalog/pg_control.h"
16
+ #include "lib/stringinfo.h"
17
+ #include "utils/timestamp.h"
18
+
19
+ /*
20
+ * Recovery target type.
21
+ * Only set during a Point in Time recovery, not when in standby mode.
22
+ */
23
+ typedef enum
24
+ {
25
+ RECOVERY_TARGET_UNSET,
26
+ RECOVERY_TARGET_XID,
27
+ RECOVERY_TARGET_TIME,
28
+ RECOVERY_TARGET_NAME,
29
+ RECOVERY_TARGET_LSN,
30
+ RECOVERY_TARGET_IMMEDIATE
31
+ } RecoveryTargetType;
32
+
33
+ /*
34
+ * Recovery target TimeLine goal
35
+ */
36
+ typedef enum
37
+ {
38
+ RECOVERY_TARGET_TIMELINE_CONTROLFILE,
39
+ RECOVERY_TARGET_TIMELINE_LATEST,
40
+ RECOVERY_TARGET_TIMELINE_NUMERIC
41
+ } RecoveryTargetTimeLineGoal;
42
+
43
+ /* Recovery pause states */
44
+ typedef enum RecoveryPauseState
45
+ {
46
+ RECOVERY_NOT_PAUSED, /* pause not requested */
47
+ RECOVERY_PAUSE_REQUESTED, /* pause requested, but not yet paused */
48
+ RECOVERY_PAUSED /* recovery is paused */
49
+ } RecoveryPauseState;
50
+
51
+ /* User-settable GUC parameters */
52
+ extern PGDLLIMPORT bool recoveryTargetInclusive;
53
+ extern PGDLLIMPORT int recoveryTargetAction;
54
+ extern PGDLLIMPORT int recovery_min_apply_delay;
55
+ extern PGDLLIMPORT char *PrimaryConnInfo;
56
+ extern PGDLLIMPORT char *PrimarySlotName;
57
+ extern PGDLLIMPORT char *recoveryRestoreCommand;
58
+ extern PGDLLIMPORT char *recoveryEndCommand;
59
+ extern PGDLLIMPORT char *archiveCleanupCommand;
60
+
61
+ /* indirectly set via GUC system */
62
+ extern PGDLLIMPORT TransactionId recoveryTargetXid;
63
+ extern PGDLLIMPORT char *recovery_target_time_string;
64
+ extern PGDLLIMPORT TimestampTz recoveryTargetTime;
65
+ extern PGDLLIMPORT const char *recoveryTargetName;
66
+ extern PGDLLIMPORT XLogRecPtr recoveryTargetLSN;
67
+ extern PGDLLIMPORT RecoveryTargetType recoveryTarget;
68
+ extern PGDLLIMPORT bool wal_receiver_create_temp_slot;
69
+ extern PGDLLIMPORT RecoveryTargetTimeLineGoal recoveryTargetTimeLineGoal;
70
+ extern PGDLLIMPORT TimeLineID recoveryTargetTLIRequested;
71
+ extern PGDLLIMPORT TimeLineID recoveryTargetTLI;
72
+
73
+ /* Have we already reached a consistent database state? */
74
+ extern PGDLLIMPORT bool reachedConsistency;
75
+
76
+ /* Are we currently in standby mode? */
77
+ extern PGDLLIMPORT bool StandbyMode;
78
+
79
+ extern Size XLogRecoveryShmemSize(void);
80
+ extern void XLogRecoveryShmemInit(void);
81
+
82
+ extern void InitWalRecovery(ControlFileData *ControlFile,
83
+ bool *wasShutdown_ptr, bool *haveBackupLabel_ptr,
84
+ bool *haveTblspcMap_ptr);
85
+ extern void PerformWalRecovery(void);
86
+
87
+ /*
88
+ * FinishWalRecovery() returns this. It contains information about the point
89
+ * where recovery ended, and why it ended.
90
+ */
91
+ typedef struct
92
+ {
93
+ /*
94
+ * Information about the last valid or applied record, after which new WAL
95
+ * can be appended. 'lastRec' is the position where the last record
96
+ * starts, and 'endOfLog' is its end. 'lastPage' is a copy of the last
97
+ * partial page that contains endOfLog (or NULL if endOfLog is exactly at
98
+ * page boundary). 'lastPageBeginPtr' is the position where the last page
99
+ * begins.
100
+ *
101
+ * endOfLogTLI is the TLI in the filename of the XLOG segment containing
102
+ * the last applied record. It could be different from lastRecTLI, if
103
+ * there was a timeline switch in that segment, and we were reading the
104
+ * old WAL from a segment belonging to a higher timeline.
105
+ */
106
+ XLogRecPtr lastRec; /* start of last valid or applied record */
107
+ TimeLineID lastRecTLI;
108
+ XLogRecPtr endOfLog; /* end of last valid or applied record */
109
+ TimeLineID endOfLogTLI;
110
+
111
+ XLogRecPtr lastPageBeginPtr; /* LSN of page that contains endOfLog */
112
+ char *lastPage; /* copy of the last page, up to endOfLog */
113
+
114
+ /*
115
+ * abortedRecPtr is the start pointer of a broken record at end of WAL
116
+ * when recovery completes; missingContrecPtr is the location of the first
117
+ * contrecord that went missing. See CreateOverwriteContrecordRecord for
118
+ * details.
119
+ */
120
+ XLogRecPtr abortedRecPtr;
121
+ XLogRecPtr missingContrecPtr;
122
+
123
+ /* short human-readable string describing why recovery ended */
124
+ char *recoveryStopReason;
125
+
126
+ /*
127
+ * If standby or recovery signal file was found, these flags are set
128
+ * accordingly.
129
+ */
130
+ bool standby_signal_file_found;
131
+ bool recovery_signal_file_found;
132
+ } EndOfWalRecoveryInfo;
133
+
134
+ extern EndOfWalRecoveryInfo *FinishWalRecovery(void);
135
+ extern void ShutdownWalRecovery(void);
136
+ extern void RemovePromoteSignalFiles(void);
137
+
138
+ extern bool HotStandbyActive(void);
139
+ extern XLogRecPtr GetXLogReplayRecPtr(TimeLineID *replayTLI);
140
+ extern RecoveryPauseState GetRecoveryPauseState(void);
141
+ extern void SetRecoveryPause(bool recoveryPause);
142
+ extern void GetXLogReceiptTime(TimestampTz *rtime, bool *fromStream);
143
+ extern TimestampTz GetLatestXTime(void);
144
+ extern TimestampTz GetCurrentChunkReplayStartTime(void);
145
+ extern XLogRecPtr GetCurrentReplayRecPtr(TimeLineID *replayEndTLI);
146
+
147
+ extern bool PromoteIsTriggered(void);
148
+ extern bool CheckPromoteSignal(void);
149
+ extern void WakeupRecovery(void);
150
+
151
+ extern void StartupRequestWalReceiverRestart(void);
152
+ extern void XLogRequestWalReceiverReply(void);
153
+
154
+ extern void RecoveryRequiresIntParameter(const char *param_name, int currValue, int minValue);
155
+
156
+ extern void xlog_outdesc(StringInfo buf, XLogReaderState *record);
157
+
158
+ #endif /* XLOGRECOVERY_H */
@@ -0,0 +1,59 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * archive_module.h
4
+ * Exports for archive modules.
5
+ *
6
+ * Copyright (c) 2022-2023, PostgreSQL Global Development Group
7
+ *
8
+ * src/include/archive/archive_module.h
9
+ *
10
+ *-------------------------------------------------------------------------
11
+ */
12
+ #ifndef _ARCHIVE_MODULE_H
13
+ #define _ARCHIVE_MODULE_H
14
+
15
+ /*
16
+ * The value of the archive_library GUC.
17
+ */
18
+ extern PGDLLIMPORT char *XLogArchiveLibrary;
19
+
20
+ typedef struct ArchiveModuleState
21
+ {
22
+ /*
23
+ * Private data pointer for use by an archive module. This can be used to
24
+ * store state for the module that will be passed to each of its
25
+ * callbacks.
26
+ */
27
+ void *private_data;
28
+ } ArchiveModuleState;
29
+
30
+ /*
31
+ * Archive module callbacks
32
+ *
33
+ * These callback functions should be defined by archive libraries and returned
34
+ * via _PG_archive_module_init(). ArchiveFileCB is the only required callback.
35
+ * For more information about the purpose of each callback, refer to the
36
+ * archive modules documentation.
37
+ */
38
+ typedef void (*ArchiveStartupCB) (ArchiveModuleState *state);
39
+ typedef bool (*ArchiveCheckConfiguredCB) (ArchiveModuleState *state);
40
+ typedef bool (*ArchiveFileCB) (ArchiveModuleState *state, const char *file, const char *path);
41
+ typedef void (*ArchiveShutdownCB) (ArchiveModuleState *state);
42
+
43
+ typedef struct ArchiveModuleCallbacks
44
+ {
45
+ ArchiveStartupCB startup_cb;
46
+ ArchiveCheckConfiguredCB check_configured_cb;
47
+ ArchiveFileCB archive_file_cb;
48
+ ArchiveShutdownCB shutdown_cb;
49
+ } ArchiveModuleCallbacks;
50
+
51
+ /*
52
+ * Type of the shared library symbol _PG_archive_module_init that is looked
53
+ * up when loading an archive library.
54
+ */
55
+ typedef const ArchiveModuleCallbacks *(*ArchiveModuleInit) (void);
56
+
57
+ extern PGDLLEXPORT const ArchiveModuleCallbacks *_PG_archive_module_init(void);
58
+
59
+ #endif /* _ARCHIVE_MODULE_H */