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
@@ -4,7 +4,7 @@
4
4
  * postgres transaction system definitions
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2020, 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
@@ -16,11 +16,11 @@
16
16
 
17
17
  #include "access/transam.h"
18
18
  #include "access/xlogreader.h"
19
+ #include "datatype/timestamp.h"
19
20
  #include "lib/stringinfo.h"
20
21
  #include "nodes/pg_list.h"
21
- #include "storage/relfilenode.h"
22
+ #include "storage/relfilelocator.h"
22
23
  #include "storage/sinval.h"
23
- #include "utils/datetime.h"
24
24
 
25
25
  /*
26
26
  * Maximum size of Global Transaction ID (including '\0').
@@ -38,7 +38,7 @@
38
38
  #define XACT_REPEATABLE_READ 2
39
39
  #define XACT_SERIALIZABLE 3
40
40
 
41
- extern int DefaultXactIsoLevel;
41
+ extern PGDLLIMPORT int DefaultXactIsoLevel;
42
42
  extern PGDLLIMPORT int XactIsoLevel;
43
43
 
44
44
  /*
@@ -52,18 +52,18 @@ extern PGDLLIMPORT int XactIsoLevel;
52
52
  #define IsolationIsSerializable() (XactIsoLevel == XACT_SERIALIZABLE)
53
53
 
54
54
  /* Xact read-only state */
55
- extern bool DefaultXactReadOnly;
56
- extern bool XactReadOnly;
55
+ extern PGDLLIMPORT bool DefaultXactReadOnly;
56
+ extern PGDLLIMPORT bool XactReadOnly;
57
57
 
58
58
  /* flag for logging statements in this transaction */
59
- extern bool xact_is_sampled;
59
+ extern PGDLLIMPORT bool xact_is_sampled;
60
60
 
61
61
  /*
62
62
  * Xact is deferrable -- only meaningful (currently) for read only
63
63
  * SERIALIZABLE transactions
64
64
  */
65
- extern bool DefaultXactDeferrable;
66
- extern bool XactDeferrable;
65
+ extern PGDLLIMPORT bool DefaultXactDeferrable;
66
+ extern PGDLLIMPORT bool XactDeferrable;
67
67
 
68
68
  typedef enum
69
69
  {
@@ -72,15 +72,19 @@ typedef enum
72
72
  SYNCHRONOUS_COMMIT_REMOTE_WRITE, /* wait for local flush and remote
73
73
  * write */
74
74
  SYNCHRONOUS_COMMIT_REMOTE_FLUSH, /* wait for local and remote flush */
75
- SYNCHRONOUS_COMMIT_REMOTE_APPLY /* wait for local and remote flush
76
- and remote apply */
75
+ SYNCHRONOUS_COMMIT_REMOTE_APPLY /* wait for local and remote flush and
76
+ * remote apply */
77
77
  } SyncCommitLevel;
78
78
 
79
79
  /* Define the default setting for synchronous_commit */
80
80
  #define SYNCHRONOUS_COMMIT_ON SYNCHRONOUS_COMMIT_REMOTE_FLUSH
81
81
 
82
82
  /* Synchronous commit level */
83
- extern int synchronous_commit;
83
+ extern PGDLLIMPORT int synchronous_commit;
84
+
85
+ /* used during logical streaming of a transaction */
86
+ extern PGDLLIMPORT TransactionId CheckXidAlive;
87
+ extern PGDLLIMPORT bool bsysscan;
84
88
 
85
89
  /*
86
90
  * Miscellaneous flag bits to record events which occur on the top level
@@ -89,7 +93,7 @@ extern int synchronous_commit;
89
93
  * globally accessible, so can be set from anywhere in the code which requires
90
94
  * recording flags.
91
95
  */
92
- extern int MyXactFlags;
96
+ extern PGDLLIMPORT int MyXactFlags;
93
97
 
94
98
  /*
95
99
  * XACT_FLAGS_ACCESSEDTEMPNAMESPACE - set when a temporary object is accessed.
@@ -103,6 +107,19 @@ extern int MyXactFlags;
103
107
  */
104
108
  #define XACT_FLAGS_ACQUIREDACCESSEXCLUSIVELOCK (1U << 1)
105
109
 
110
+ /*
111
+ * XACT_FLAGS_NEEDIMMEDIATECOMMIT - records whether the top level statement
112
+ * is one that requires immediate commit, such as CREATE DATABASE.
113
+ */
114
+ #define XACT_FLAGS_NEEDIMMEDIATECOMMIT (1U << 2)
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
+
106
123
  /*
107
124
  * start- and end-of-transaction callbacks for dynamically loaded modules
108
125
  */
@@ -131,6 +148,14 @@ typedef enum
131
148
  typedef void (*SubXactCallback) (SubXactEvent event, SubTransactionId mySubid,
132
149
  SubTransactionId parentSubid, void *arg);
133
150
 
151
+ /* Data structure for Save/RestoreTransactionCharacteristics */
152
+ typedef struct SavedTransactionCharacteristics
153
+ {
154
+ int save_XactIsoLevel;
155
+ bool save_XactReadOnly;
156
+ bool save_XactDeferrable;
157
+ } SavedTransactionCharacteristics;
158
+
134
159
 
135
160
  /* ----------------
136
161
  * transaction-related XLOG entries
@@ -147,7 +172,7 @@ typedef void (*SubXactCallback) (SubXactEvent event, SubTransactionId mySubid,
147
172
  #define XLOG_XACT_COMMIT_PREPARED 0x30
148
173
  #define XLOG_XACT_ABORT_PREPARED 0x40
149
174
  #define XLOG_XACT_ASSIGNMENT 0x50
150
- /* free opcode 0x60 */
175
+ #define XLOG_XACT_INVALIDATIONS 0x60
151
176
  /* free opcode 0x70 */
152
177
 
153
178
  /* mask for filtering opcodes out of xl_info */
@@ -162,12 +187,13 @@ typedef void (*SubXactCallback) (SubXactEvent event, SubTransactionId mySubid,
162
187
  */
163
188
  #define XACT_XINFO_HAS_DBINFO (1U << 0)
164
189
  #define XACT_XINFO_HAS_SUBXACTS (1U << 1)
165
- #define XACT_XINFO_HAS_RELFILENODES (1U << 2)
190
+ #define XACT_XINFO_HAS_RELFILELOCATORS (1U << 2)
166
191
  #define XACT_XINFO_HAS_INVALS (1U << 3)
167
192
  #define XACT_XINFO_HAS_TWOPHASE (1U << 4)
168
193
  #define XACT_XINFO_HAS_ORIGIN (1U << 5)
169
194
  #define XACT_XINFO_HAS_AE_LOCKS (1U << 6)
170
195
  #define XACT_XINFO_HAS_GID (1U << 7)
196
+ #define XACT_XINFO_HAS_DROPPED_STATS (1U << 8)
171
197
 
172
198
  /*
173
199
  * Also stored in xinfo, these indicating a variety of additional actions that
@@ -218,9 +244,10 @@ typedef struct xl_xact_assignment
218
244
  typedef struct xl_xact_xinfo
219
245
  {
220
246
  /*
221
- * Even though we right now only require 1 byte of space in xinfo we use
222
- * four so following records don't have to care about alignment. Commit
223
- * records can be large, so copying large portions isn't attractive.
247
+ * Even though we right now only require two bytes of space in xinfo we
248
+ * use four so following records don't have to care about alignment.
249
+ * Commit records can be large, so copying large portions isn't
250
+ * attractive.
224
251
  */
225
252
  uint32 xinfo;
226
253
  } xl_xact_xinfo;
@@ -238,12 +265,33 @@ typedef struct xl_xact_subxacts
238
265
  } xl_xact_subxacts;
239
266
  #define MinSizeOfXactSubxacts offsetof(xl_xact_subxacts, subxacts)
240
267
 
241
- typedef struct xl_xact_relfilenodes
268
+ typedef struct xl_xact_relfilelocators
242
269
  {
243
270
  int nrels; /* number of relations */
244
- RelFileNode xnodes[FLEXIBLE_ARRAY_MEMBER];
245
- } xl_xact_relfilenodes;
246
- #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)
274
+
275
+ /*
276
+ * A transactionally dropped statistics entry.
277
+ *
278
+ * Declared here rather than pgstat.h because pgstat.h can't be included from
279
+ * frontend code, but the WAL format needs to be readable by frontend
280
+ * programs.
281
+ */
282
+ typedef struct xl_xact_stats_item
283
+ {
284
+ int kind;
285
+ Oid dboid;
286
+ Oid objoid;
287
+ } xl_xact_stats_item;
288
+
289
+ typedef struct xl_xact_stats_items
290
+ {
291
+ int nitems;
292
+ xl_xact_stats_item items[FLEXIBLE_ARRAY_MEMBER];
293
+ } xl_xact_stats_items;
294
+ #define MinSizeOfXactStatsItems offsetof(xl_xact_stats_items, items)
247
295
 
248
296
  typedef struct xl_xact_invals
249
297
  {
@@ -270,7 +318,8 @@ typedef struct xl_xact_commit
270
318
  /* xl_xact_xinfo follows if XLOG_XACT_HAS_INFO */
271
319
  /* xl_xact_dbinfo follows if XINFO_HAS_DBINFO */
272
320
  /* xl_xact_subxacts follows if XINFO_HAS_SUBXACT */
273
- /* xl_xact_relfilenodes follows if XINFO_HAS_RELFILENODES */
321
+ /* xl_xact_relfilelocators follows if XINFO_HAS_RELFILELOCATORS */
322
+ /* xl_xact_stats_items follows if XINFO_HAS_DROPPED_STATS */
274
323
  /* xl_xact_invals follows if XINFO_HAS_INVALS */
275
324
  /* xl_xact_twophase follows if XINFO_HAS_TWOPHASE */
276
325
  /* twophase_gid follows if XINFO_HAS_GID. As a null-terminated string. */
@@ -285,7 +334,8 @@ typedef struct xl_xact_abort
285
334
  /* xl_xact_xinfo follows if XLOG_XACT_HAS_INFO */
286
335
  /* xl_xact_dbinfo follows if XINFO_HAS_DBINFO */
287
336
  /* xl_xact_subxacts follows if XINFO_HAS_SUBXACT */
288
- /* xl_xact_relfilenodes follows if XINFO_HAS_RELFILENODES */
337
+ /* xl_xact_relfilelocators follows if XINFO_HAS_RELFILELOCATORS */
338
+ /* xl_xact_stats_items follows if XINFO_HAS_DROPPED_STATS */
289
339
  /* No invalidation messages needed. */
290
340
  /* xl_xact_twophase follows if XINFO_HAS_TWOPHASE */
291
341
  /* twophase_gid follows if XINFO_HAS_GID. As a null-terminated string. */
@@ -304,6 +354,8 @@ typedef struct xl_xact_prepare
304
354
  int32 nsubxacts; /* number of following subxact XIDs */
305
355
  int32 ncommitrels; /* number of delete-on-commit rels */
306
356
  int32 nabortrels; /* number of delete-on-abort rels */
357
+ int32 ncommitstats; /* number of stats to drop on commit */
358
+ int32 nabortstats; /* number of stats to drop on abort */
307
359
  int32 ninvalmsgs; /* number of cache invalidation messages */
308
360
  bool initfileinval; /* does relcache init file need invalidation? */
309
361
  uint16 gidlen; /* length of the GID - GID follows the header */
@@ -328,7 +380,10 @@ typedef struct xl_xact_parsed_commit
328
380
  TransactionId *subxacts;
329
381
 
330
382
  int nrels;
331
- RelFileNode *xnodes;
383
+ RelFileLocator *xlocators;
384
+
385
+ int nstats;
386
+ xl_xact_stats_item *stats;
332
387
 
333
388
  int nmsgs;
334
389
  SharedInvalidationMessage *msgs;
@@ -336,7 +391,9 @@ typedef struct xl_xact_parsed_commit
336
391
  TransactionId twophase_xid; /* only for 2PC */
337
392
  char twophase_gid[GIDSIZE]; /* only for 2PC */
338
393
  int nabortrels; /* only for 2PC */
339
- RelFileNode *abortnodes; /* only for 2PC */
394
+ RelFileLocator *abortlocators; /* only for 2PC */
395
+ int nabortstats; /* only for 2PC */
396
+ xl_xact_stats_item *abortstats; /* only for 2PC */
340
397
 
341
398
  XLogRecPtr origin_lsn;
342
399
  TimestampTz origin_timestamp;
@@ -356,7 +413,10 @@ typedef struct xl_xact_parsed_abort
356
413
  TransactionId *subxacts;
357
414
 
358
415
  int nrels;
359
- RelFileNode *xnodes;
416
+ RelFileLocator *xlocators;
417
+
418
+ int nstats;
419
+ xl_xact_stats_item *stats;
360
420
 
361
421
  TransactionId twophase_xid; /* only for 2PC */
362
422
  char twophase_gid[GIDSIZE]; /* only for 2PC */
@@ -395,8 +455,8 @@ extern bool TransactionIdIsCurrentTransactionId(TransactionId xid);
395
455
  extern void CommandCounterIncrement(void);
396
456
  extern void ForceSyncCommit(void);
397
457
  extern void StartTransactionCommand(void);
398
- extern void SaveTransactionCharacteristics(void);
399
- extern void RestoreTransactionCharacteristics(void);
458
+ extern void SaveTransactionCharacteristics(SavedTransactionCharacteristics *s);
459
+ extern void RestoreTransactionCharacteristics(const SavedTransactionCharacteristics *s);
400
460
  extern void CommitTransactionCommand(void);
401
461
  extern void AbortCurrentTransaction(void);
402
462
  extern void BeginTransactionBlock(void);
@@ -429,20 +489,27 @@ extern void UnregisterXactCallback(XactCallback callback, void *arg);
429
489
  extern void RegisterSubXactCallback(SubXactCallback callback, void *arg);
430
490
  extern void UnregisterSubXactCallback(SubXactCallback callback, void *arg);
431
491
 
492
+ extern bool IsSubxactTopXidLogPending(void);
493
+ extern void MarkSubxactTopXidLogged(void);
494
+
432
495
  extern int xactGetCommittedChildren(TransactionId **ptr);
433
496
 
434
497
  extern XLogRecPtr XactLogCommitRecord(TimestampTz commit_time,
435
498
  int nsubxacts, TransactionId *subxacts,
436
- int nrels, RelFileNode *rels,
499
+ int nrels, RelFileLocator *rels,
500
+ int ndroppedstats,
501
+ xl_xact_stats_item *droppedstats,
437
502
  int nmsgs, SharedInvalidationMessage *msgs,
438
- bool relcacheInval, bool forceSync,
503
+ bool relcacheInval,
439
504
  int xactflags,
440
505
  TransactionId twophase_xid,
441
506
  const char *twophase_gid);
442
507
 
443
508
  extern XLogRecPtr XactLogAbortRecord(TimestampTz abort_time,
444
509
  int nsubxacts, TransactionId *subxacts,
445
- int nrels, RelFileNode *rels,
510
+ int nrels, RelFileLocator *rels,
511
+ int ndroppedstats,
512
+ xl_xact_stats_item *droppedstats,
446
513
  int xactflags, TransactionId twophase_xid,
447
514
  const char *twophase_gid);
448
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-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/xlog.h
@@ -11,14 +11,11 @@
11
11
  #ifndef XLOG_H
12
12
  #define XLOG_H
13
13
 
14
- #include "access/rmgr.h"
14
+ #include "access/xlogbackup.h"
15
15
  #include "access/xlogdefs.h"
16
- #include "access/xloginsert.h"
17
- #include "access/xlogreader.h"
18
16
  #include "datatype/timestamp.h"
19
17
  #include "lib/stringinfo.h"
20
18
  #include "nodes/pg_list.h"
21
- #include "storage/fd.h"
22
19
 
23
20
 
24
21
  /* Sync methods */
@@ -27,127 +24,35 @@
27
24
  #define SYNC_METHOD_OPEN 2 /* for O_SYNC */
28
25
  #define SYNC_METHOD_FSYNC_WRITETHROUGH 3
29
26
  #define SYNC_METHOD_OPEN_DSYNC 4 /* for O_DSYNC */
30
- extern int sync_method;
27
+ extern PGDLLIMPORT int sync_method;
31
28
 
32
- extern PGDLLIMPORT TimeLineID ThisTimeLineID; /* current TLI */
33
-
34
- /*
35
- * Prior to 8.4, all activity during recovery was carried out by the startup
36
- * process. This local variable continues to be used in many parts of the
37
- * code to indicate actions taken by RecoveryManagers. Other processes that
38
- * potentially perform work during recovery should check RecoveryInProgress().
39
- * See XLogCtl notes in xlog.c.
40
- */
41
- extern bool InRecovery;
42
-
43
- /*
44
- * Like InRecovery, standbyState is only valid in the startup process.
45
- * In all other processes it will have the value STANDBY_DISABLED (so
46
- * InHotStandby will read as false).
47
- *
48
- * In DISABLED state, we're performing crash recovery or hot standby was
49
- * disabled in postgresql.conf.
50
- *
51
- * In INITIALIZED state, we've run InitRecoveryTransactionEnvironment, but
52
- * we haven't yet processed a RUNNING_XACTS or shutdown-checkpoint WAL record
53
- * to initialize our master-transaction tracking system.
54
- *
55
- * When the transaction tracking is initialized, we enter the SNAPSHOT_PENDING
56
- * state. The tracked information might still be incomplete, so we can't allow
57
- * connections yet, but redo functions must update the in-memory state when
58
- * appropriate.
59
- *
60
- * In SNAPSHOT_READY mode, we have full knowledge of transactions that are
61
- * (or were) running in the master at the current WAL location. Snapshots
62
- * can be taken, and read-only queries can be run.
63
- */
64
- typedef enum
65
- {
66
- STANDBY_DISABLED,
67
- STANDBY_INITIALIZED,
68
- STANDBY_SNAPSHOT_PENDING,
69
- STANDBY_SNAPSHOT_READY
70
- } HotStandbyState;
71
-
72
- extern HotStandbyState standbyState;
73
-
74
- #define InHotStandby (standbyState >= STANDBY_SNAPSHOT_PENDING)
75
-
76
- /*
77
- * Recovery target type.
78
- * Only set during a Point in Time recovery, not when in standby mode.
79
- */
80
- typedef enum
81
- {
82
- RECOVERY_TARGET_UNSET,
83
- RECOVERY_TARGET_XID,
84
- RECOVERY_TARGET_TIME,
85
- RECOVERY_TARGET_NAME,
86
- RECOVERY_TARGET_LSN,
87
- RECOVERY_TARGET_IMMEDIATE
88
- } RecoveryTargetType;
89
-
90
- /*
91
- * Recovery target TimeLine goal
92
- */
93
- typedef enum
94
- {
95
- RECOVERY_TARGET_TIMELINE_CONTROLFILE,
96
- RECOVERY_TARGET_TIMELINE_LATEST,
97
- RECOVERY_TARGET_TIMELINE_NUMERIC
98
- } RecoveryTargetTimeLineGoal;
99
-
100
- extern XLogRecPtr ProcLastRecPtr;
101
- extern XLogRecPtr XactLastRecEnd;
29
+ extern PGDLLIMPORT XLogRecPtr ProcLastRecPtr;
30
+ extern PGDLLIMPORT XLogRecPtr XactLastRecEnd;
102
31
  extern PGDLLIMPORT XLogRecPtr XactLastCommitEnd;
103
32
 
104
- extern bool reachedConsistency;
105
-
106
33
  /* these variables are GUC parameters related to XLOG */
107
- extern int wal_segment_size;
108
- extern int min_wal_size_mb;
109
- extern int max_wal_size_mb;
110
- extern int wal_keep_size_mb;
111
- extern int max_slot_wal_keep_size_mb;
112
- extern int XLOGbuffers;
113
- extern int XLogArchiveTimeout;
114
- extern int wal_retrieve_retry_interval;
115
- extern char *XLogArchiveCommand;
116
- extern bool EnableHotStandby;
117
- extern bool fullPageWrites;
118
- extern bool wal_log_hints;
119
- extern bool wal_compression;
120
- extern bool wal_init_zero;
121
- extern bool wal_recycle;
122
- extern bool *wal_consistency_checking;
123
- extern char *wal_consistency_checking_string;
124
- extern bool log_checkpoints;
125
- extern char *recoveryRestoreCommand;
126
- extern char *recoveryEndCommand;
127
- extern char *archiveCleanupCommand;
128
- extern bool recoveryTargetInclusive;
129
- extern int recoveryTargetAction;
130
- extern int recovery_min_apply_delay;
131
- extern char *PrimaryConnInfo;
132
- extern char *PrimarySlotName;
133
- extern bool wal_receiver_create_temp_slot;
134
-
135
- /* indirectly set via GUC system */
136
- extern TransactionId recoveryTargetXid;
137
- extern char *recovery_target_time_string;
138
- extern const char *recoveryTargetName;
139
- extern XLogRecPtr recoveryTargetLSN;
140
- extern RecoveryTargetType recoveryTarget;
141
- extern char *PromoteTriggerFile;
142
- extern RecoveryTargetTimeLineGoal recoveryTargetTimeLineGoal;
143
- extern TimeLineID recoveryTargetTLIRequested;
144
- extern TimeLineID recoveryTargetTLI;
145
-
146
- extern int CheckPointSegments;
147
-
148
- /* option set locally in startup process only when signal files exist */
149
- extern bool StandbyModeRequested;
150
- extern bool StandbyMode;
34
+ extern PGDLLIMPORT int wal_segment_size;
35
+ extern PGDLLIMPORT int min_wal_size_mb;
36
+ extern PGDLLIMPORT int max_wal_size_mb;
37
+ extern PGDLLIMPORT int wal_keep_size_mb;
38
+ extern PGDLLIMPORT int max_slot_wal_keep_size_mb;
39
+ extern PGDLLIMPORT int XLOGbuffers;
40
+ extern PGDLLIMPORT int XLogArchiveTimeout;
41
+ extern PGDLLIMPORT int wal_retrieve_retry_interval;
42
+ extern PGDLLIMPORT char *XLogArchiveCommand;
43
+ extern PGDLLIMPORT bool EnableHotStandby;
44
+ extern PGDLLIMPORT bool fullPageWrites;
45
+ extern PGDLLIMPORT bool wal_log_hints;
46
+ extern PGDLLIMPORT int wal_compression;
47
+ extern PGDLLIMPORT bool wal_init_zero;
48
+ extern PGDLLIMPORT bool wal_recycle;
49
+ extern PGDLLIMPORT bool *wal_consistency_checking;
50
+ extern PGDLLIMPORT char *wal_consistency_checking_string;
51
+ extern PGDLLIMPORT bool log_checkpoints;
52
+ extern PGDLLIMPORT bool track_wal_io_timing;
53
+ extern PGDLLIMPORT int wal_decode_buffer_size;
54
+
55
+ extern PGDLLIMPORT int CheckPointSegments;
151
56
 
152
57
  /* Archive modes */
153
58
  typedef enum ArchiveMode
@@ -156,7 +61,7 @@ typedef enum ArchiveMode
156
61
  ARCHIVE_MODE_ON, /* enabled while server is running normally */
157
62
  ARCHIVE_MODE_ALWAYS /* enabled always (even during recovery) */
158
63
  } ArchiveMode;
159
- extern int XLogArchiveMode;
64
+ extern PGDLLIMPORT int XLogArchiveMode;
160
65
 
161
66
  /* WAL levels */
162
67
  typedef enum WalLevel
@@ -166,6 +71,15 @@ typedef enum WalLevel
166
71
  WAL_LEVEL_LOGICAL
167
72
  } WalLevel;
168
73
 
74
+ /* Compression algorithms for WAL */
75
+ typedef enum WalCompression
76
+ {
77
+ WAL_COMPRESSION_NONE = 0,
78
+ WAL_COMPRESSION_PGLZ,
79
+ WAL_COMPRESSION_LZ4,
80
+ WAL_COMPRESSION_ZSTD
81
+ } WalCompression;
82
+
169
83
  /* Recovery states */
170
84
  typedef enum RecoveryState
171
85
  {
@@ -182,7 +96,6 @@ extern PGDLLIMPORT int wal_level;
182
96
  /* Is WAL archiving enabled always (even during recovery)? */
183
97
  #define XLogArchivingAlways() \
184
98
  (AssertMacro(XLogArchiveMode == ARCHIVE_MODE_OFF || wal_level >= WAL_LEVEL_REPLICA), XLogArchiveMode == ARCHIVE_MODE_ALWAYS)
185
- #define XLogArchiveCommandSet() (XLogArchiveCommand[0] != '\0')
186
99
 
187
100
  /*
188
101
  * Is WAL-logging necessary for archival or log-shipping, or can we skip
@@ -208,7 +121,7 @@ extern PGDLLIMPORT int wal_level;
208
121
  #define XLogLogicalInfoActive() (wal_level >= WAL_LEVEL_LOGICAL)
209
122
 
210
123
  #ifdef WAL_DEBUG
211
- extern bool XLOG_DEBUG;
124
+ extern PGDLLIMPORT bool XLOG_DEBUG;
212
125
  #endif
213
126
 
214
127
  /*
@@ -262,7 +175,7 @@ typedef struct CheckpointStatsData
262
175
  * entire sync phase. */
263
176
  } CheckpointStatsData;
264
177
 
265
- extern CheckpointStatsData CheckpointStats;
178
+ extern PGDLLIMPORT CheckpointStatsData CheckpointStats;
266
179
 
267
180
  /*
268
181
  * GetWALAvailability return codes
@@ -278,43 +191,36 @@ typedef enum WALAvailability
278
191
  } WALAvailability;
279
192
 
280
193
  struct XLogRecData;
194
+ struct XLogReaderState;
281
195
 
282
196
  extern XLogRecPtr XLogInsertRecord(struct XLogRecData *rdata,
283
197
  XLogRecPtr fpw_lsn,
284
198
  uint8 flags,
285
- int num_fpi);
286
- extern void XLogFlush(XLogRecPtr RecPtr);
199
+ int num_fpi,
200
+ bool topxid_included);
201
+ extern void XLogFlush(XLogRecPtr record);
287
202
  extern bool XLogBackgroundFlush(void);
288
- extern bool XLogNeedsFlush(XLogRecPtr RecPtr);
289
- extern int XLogFileInit(XLogSegNo segno, bool *use_existent, bool use_lock);
290
- extern int XLogFileOpen(XLogSegNo segno);
203
+ extern bool XLogNeedsFlush(XLogRecPtr record);
204
+ extern int XLogFileInit(XLogSegNo logsegno, TimeLineID logtli);
205
+ extern int XLogFileOpen(XLogSegNo segno, TimeLineID tli);
291
206
 
292
207
  extern void CheckXLogRemoved(XLogSegNo segno, TimeLineID tli);
293
208
  extern XLogSegNo XLogGetLastRemovedSegno(void);
294
- extern void XLogSetAsyncXactLSN(XLogRecPtr record);
209
+ extern void XLogSetAsyncXactLSN(XLogRecPtr asyncXactLSN);
295
210
  extern void XLogSetReplicationSlotMinimumLSN(XLogRecPtr lsn);
296
211
 
297
- extern void xlog_redo(XLogReaderState *record);
298
- 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);
299
214
  extern const char *xlog_identify(uint8 info);
300
215
 
301
- extern void issue_xlog_fsync(int fd, XLogSegNo segno);
216
+ extern void issue_xlog_fsync(int fd, XLogSegNo segno, TimeLineID tli);
302
217
 
303
218
  extern bool RecoveryInProgress(void);
304
219
  extern RecoveryState GetRecoveryState(void);
305
- extern bool HotStandbyActive(void);
306
- extern bool HotStandbyActiveInReplay(void);
307
220
  extern bool XLogInsertAllowed(void);
308
- extern void GetXLogReceiptTime(TimestampTz *rtime, bool *fromStream);
309
- extern XLogRecPtr GetXLogReplayRecPtr(TimeLineID *replayTLI);
310
221
  extern XLogRecPtr GetXLogInsertRecPtr(void);
311
222
  extern XLogRecPtr GetXLogWriteRecPtr(void);
312
- extern bool RecoveryIsPaused(void);
313
- extern void SetRecoveryPause(bool recoveryPause);
314
- extern TimestampTz GetLatestXTime(void);
315
- extern TimestampTz GetCurrentChunkReplayStartTime(void);
316
223
 
317
- extern void UpdateControlFile(void);
318
224
  extern uint64 GetSystemIdentifier(void);
319
225
  extern char *GetMockAuthenticationNonce(void);
320
226
  extern bool DataChecksumsEnabled(void);
@@ -322,34 +228,36 @@ extern XLogRecPtr GetFakeLSNForUnloggedRel(void);
322
228
  extern Size XLOGShmemSize(void);
323
229
  extern void XLOGShmemInit(void);
324
230
  extern void BootStrapXLOG(void);
231
+ extern void InitializeWalConsistencyChecking(void);
325
232
  extern void LocalProcessControlFile(bool reset);
233
+ extern WalLevel GetActiveWalLevelOnStandby(void);
326
234
  extern void StartupXLOG(void);
327
235
  extern void ShutdownXLOG(int code, Datum arg);
328
- extern void InitXLOGAccess(void);
329
236
  extern void CreateCheckPoint(int flags);
330
237
  extern bool CreateRestartPoint(int flags);
331
238
  extern WALAvailability GetWALAvailability(XLogRecPtr targetLSN);
332
- extern XLogRecPtr CalculateMaxmumSafeLSN(void);
333
239
  extern void XLogPutNextOid(Oid nextOid);
334
240
  extern XLogRecPtr XLogRestorePoint(const char *rpName);
335
241
  extern void UpdateFullPageWrites(void);
336
242
  extern void GetFullPageWriteInfo(XLogRecPtr *RedoRecPtr_p, bool *doPageWrites_p);
337
243
  extern XLogRecPtr GetRedoRecPtr(void);
338
244
  extern XLogRecPtr GetInsertRecPtr(void);
339
- extern XLogRecPtr GetFlushRecPtr(void);
245
+ extern XLogRecPtr GetFlushRecPtr(TimeLineID *insertTLI);
246
+ extern TimeLineID GetWALInsertionTimeLine(void);
340
247
  extern XLogRecPtr GetLastImportantRecPtr(void);
341
- extern void RemovePromoteSignalFiles(void);
342
248
 
343
- extern bool PromoteIsTriggered(void);
344
- extern bool CheckPromoteSignal(void);
345
- extern void WakeupRecovery(void);
346
249
  extern void SetWalWriterSleeping(bool sleeping);
347
250
 
348
- extern void StartupRequestWalReceiverRestart(void);
349
- extern void XLogRequestWalReceiverReply(void);
350
-
351
- extern void assign_max_wal_size(int newval, void *extra);
352
- extern void assign_checkpoint_completion_target(double newval, void *extra);
251
+ /*
252
+ * Routines used by xlogrecovery.c to call back into xlog.c during recovery.
253
+ */
254
+ extern void RemoveNonParentXlogFiles(XLogRecPtr switchpoint, TimeLineID newTLI);
255
+ extern bool XLogCheckpointNeeded(XLogSegNo new_segno);
256
+ extern void SwitchIntoArchiveRecovery(XLogRecPtr EndRecPtr, TimeLineID replayTLI);
257
+ extern void ReachedEndOfBackup(XLogRecPtr EndRecPtr, TimeLineID tli);
258
+ extern void SetInstallXLogFileSegmentActive(void);
259
+ extern bool IsInstallXLogFileSegmentActive(void);
260
+ extern void XLogShutdownWalRcv(void);
353
261
 
354
262
  /*
355
263
  * Routines to start, stop, and get status of a base backup.
@@ -368,16 +276,13 @@ extern void assign_checkpoint_completion_target(double newval, void *extra);
368
276
  typedef enum SessionBackupState
369
277
  {
370
278
  SESSION_BACKUP_NONE,
371
- SESSION_BACKUP_EXCLUSIVE,
372
- SESSION_BACKUP_NON_EXCLUSIVE
279
+ SESSION_BACKUP_RUNNING,
373
280
  } SessionBackupState;
374
281
 
375
- extern XLogRecPtr do_pg_start_backup(const char *backupidstr, bool fast,
376
- TimeLineID *starttli_p, StringInfo labelfile,
377
- List **tablespaces, StringInfo tblspcmapfile, bool infotbssize,
378
- bool needtblspcmapfile);
379
- extern XLogRecPtr do_pg_stop_backup(char *labelfile, bool waitforarchive,
380
- 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);
381
286
  extern void do_pg_abort_backup(int code, Datum arg);
382
287
  extern void register_persistent_abort_backup_handler(void);
383
288
  extern SessionBackupState get_backup_status(void);
@@ -393,6 +298,5 @@ extern SessionBackupState get_backup_status(void);
393
298
 
394
299
  /* files to signal promotion to primary */
395
300
  #define PROMOTE_SIGNAL_FILE "promote"
396
- #define FALLBACK_PROMOTE_SIGNAL_FILE "fallback_promote"
397
301
 
398
302
  #endif /* XLOG_H */