pg_query 5.1.0 → 6.0.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 (479) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +18 -0
  3. data/README.md +1 -1
  4. data/Rakefile +2 -2
  5. data/ext/pg_query/include/pg_query.h +4 -3
  6. data/ext/pg_query/include/pg_query_enum_defs.c +424 -154
  7. data/ext/pg_query/include/pg_query_fingerprint_conds.c +68 -4
  8. data/ext/pg_query/include/pg_query_fingerprint_defs.c +2952 -1845
  9. data/ext/pg_query/include/pg_query_outfuncs_conds.c +51 -3
  10. data/ext/pg_query/include/pg_query_outfuncs_defs.c +210 -23
  11. data/ext/pg_query/include/pg_query_readfuncs_conds.c +17 -1
  12. data/ext/pg_query/include/pg_query_readfuncs_defs.c +271 -52
  13. data/ext/pg_query/include/postgres/access/amapi.h +10 -3
  14. data/ext/pg_query/include/postgres/access/attmap.h +1 -1
  15. data/ext/pg_query/include/postgres/access/attnum.h +1 -1
  16. data/ext/pg_query/include/postgres/access/brin_internal.h +116 -0
  17. data/ext/pg_query/include/postgres/access/brin_tuple.h +112 -0
  18. data/ext/pg_query/include/postgres/access/clog.h +2 -3
  19. data/ext/pg_query/include/postgres/access/commit_ts.h +2 -3
  20. data/ext/pg_query/include/postgres/access/detoast.h +1 -1
  21. data/ext/pg_query/include/postgres/access/genam.h +8 -4
  22. data/ext/pg_query/include/postgres/access/gin.h +1 -1
  23. data/ext/pg_query/include/postgres/access/htup.h +1 -1
  24. data/ext/pg_query/include/postgres/access/htup_details.h +11 -11
  25. data/ext/pg_query/include/postgres/access/itup.h +3 -3
  26. data/ext/pg_query/include/postgres/access/parallel.h +1 -2
  27. data/ext/pg_query/include/postgres/access/printtup.h +1 -1
  28. data/ext/pg_query/include/postgres/access/relation.h +1 -1
  29. data/ext/pg_query/include/postgres/access/relscan.h +1 -1
  30. data/ext/pg_query/include/postgres/access/rmgrlist.h +1 -1
  31. data/ext/pg_query/include/postgres/access/sdir.h +1 -1
  32. data/ext/pg_query/include/postgres/access/skey.h +1 -1
  33. data/ext/pg_query/include/postgres/access/slru.h +221 -0
  34. data/ext/pg_query/include/postgres/access/stratnum.h +1 -1
  35. data/ext/pg_query/include/postgres/access/sysattr.h +1 -1
  36. data/ext/pg_query/include/postgres/access/table.h +1 -1
  37. data/ext/pg_query/include/postgres/access/tableam.h +33 -24
  38. data/ext/pg_query/include/postgres/access/tidstore.h +50 -0
  39. data/ext/pg_query/include/postgres/access/toast_compression.h +2 -2
  40. data/ext/pg_query/include/postgres/access/transam.h +7 -7
  41. data/ext/pg_query/include/postgres/access/tsmapi.h +1 -1
  42. data/ext/pg_query/include/postgres/access/tupconvert.h +1 -1
  43. data/ext/pg_query/include/postgres/access/tupdesc.h +5 -5
  44. data/ext/pg_query/include/postgres/access/tupmacs.h +1 -1
  45. data/ext/pg_query/include/postgres/access/twophase.h +2 -2
  46. data/ext/pg_query/include/postgres/access/xact.h +5 -5
  47. data/ext/pg_query/include/postgres/access/xlog.h +20 -12
  48. data/ext/pg_query/include/postgres/access/xlog_internal.h +4 -3
  49. data/ext/pg_query/include/postgres/access/xlogbackup.h +3 -1
  50. data/ext/pg_query/include/postgres/access/xlogdefs.h +5 -5
  51. data/ext/pg_query/include/postgres/access/xlogprefetcher.h +2 -2
  52. data/ext/pg_query/include/postgres/access/xlogreader.h +2 -2
  53. data/ext/pg_query/include/postgres/access/xlogrecord.h +3 -3
  54. data/ext/pg_query/include/postgres/access/xlogrecovery.h +4 -4
  55. data/ext/pg_query/include/postgres/archive/archive_module.h +9 -1
  56. data/ext/pg_query/include/postgres/c.h +31 -36
  57. data/ext/pg_query/include/postgres/catalog/catalog.h +3 -1
  58. data/ext/pg_query/include/postgres/catalog/catversion.h +2 -2
  59. data/ext/pg_query/include/postgres/catalog/dependency.h +17 -59
  60. data/ext/pg_query/include/postgres/catalog/genbki.h +12 -6
  61. data/ext/pg_query/include/postgres/catalog/index.h +22 -18
  62. data/ext/pg_query/include/postgres/catalog/indexing.h +1 -1
  63. data/ext/pg_query/include/postgres/catalog/namespace.h +18 -19
  64. data/ext/pg_query/include/postgres/catalog/objectaccess.h +2 -2
  65. data/ext/pg_query/include/postgres/catalog/objectaddress.h +1 -1
  66. data/ext/pg_query/include/postgres/catalog/pg_aggregate.h +4 -2
  67. data/ext/pg_query/include/postgres/catalog/pg_aggregate_d.h +1 -1
  68. data/ext/pg_query/include/postgres/catalog/pg_am.h +6 -3
  69. data/ext/pg_query/include/postgres/catalog/pg_am_d.h +1 -1
  70. data/ext/pg_query/include/postgres/catalog/pg_attribute.h +31 -14
  71. data/ext/pg_query/include/postgres/catalog/pg_attribute_d.h +3 -3
  72. data/ext/pg_query/include/postgres/catalog/pg_authid.h +6 -3
  73. data/ext/pg_query/include/postgres/catalog/pg_authid_d.h +2 -1
  74. data/ext/pg_query/include/postgres/catalog/pg_class.h +10 -5
  75. data/ext/pg_query/include/postgres/catalog/pg_class_d.h +4 -2
  76. data/ext/pg_query/include/postgres/catalog/pg_collation.h +11 -5
  77. data/ext/pg_query/include/postgres/catalog/pg_collation_d.h +5 -2
  78. data/ext/pg_query/include/postgres/catalog/pg_constraint.h +15 -10
  79. data/ext/pg_query/include/postgres/catalog/pg_constraint_d.h +2 -1
  80. data/ext/pg_query/include/postgres/catalog/pg_control.h +5 -3
  81. data/ext/pg_query/include/postgres/catalog/pg_conversion.h +8 -4
  82. data/ext/pg_query/include/postgres/catalog/pg_conversion_d.h +1 -1
  83. data/ext/pg_query/include/postgres/catalog/pg_database.h +9 -4
  84. data/ext/pg_query/include/postgres/catalog/pg_database_d.h +13 -12
  85. data/ext/pg_query/include/postgres/catalog/pg_depend.h +3 -3
  86. data/ext/pg_query/include/postgres/catalog/pg_depend_d.h +1 -1
  87. data/ext/pg_query/include/postgres/catalog/pg_event_trigger.h +6 -3
  88. data/ext/pg_query/include/postgres/catalog/pg_event_trigger_d.h +1 -1
  89. data/ext/pg_query/include/postgres/catalog/pg_index.h +5 -3
  90. data/ext/pg_query/include/postgres/catalog/pg_index_d.h +1 -1
  91. data/ext/pg_query/include/postgres/catalog/pg_language.h +6 -3
  92. data/ext/pg_query/include/postgres/catalog/pg_language_d.h +1 -1
  93. data/ext/pg_query/include/postgres/catalog/pg_namespace.h +6 -3
  94. data/ext/pg_query/include/postgres/catalog/pg_namespace_d.h +1 -1
  95. data/ext/pg_query/include/postgres/catalog/pg_opclass.h +6 -3
  96. data/ext/pg_query/include/postgres/catalog/pg_opclass_d.h +1 -1
  97. data/ext/pg_query/include/postgres/catalog/pg_operator.h +20 -3
  98. data/ext/pg_query/include/postgres/catalog/pg_operator_d.h +1 -1
  99. data/ext/pg_query/include/postgres/catalog/pg_opfamily.h +6 -3
  100. data/ext/pg_query/include/postgres/catalog/pg_opfamily_d.h +1 -1
  101. data/ext/pg_query/include/postgres/catalog/pg_partitioned_table.h +4 -2
  102. data/ext/pg_query/include/postgres/catalog/pg_partitioned_table_d.h +1 -1
  103. data/ext/pg_query/include/postgres/catalog/pg_proc.h +6 -3
  104. data/ext/pg_query/include/postgres/catalog/pg_proc_d.h +1 -1
  105. data/ext/pg_query/include/postgres/catalog/pg_publication.h +6 -3
  106. data/ext/pg_query/include/postgres/catalog/pg_publication_d.h +1 -1
  107. data/ext/pg_query/include/postgres/catalog/pg_replication_origin.h +6 -3
  108. data/ext/pg_query/include/postgres/catalog/pg_replication_origin_d.h +1 -1
  109. data/ext/pg_query/include/postgres/catalog/pg_statistic.h +10 -4
  110. data/ext/pg_query/include/postgres/catalog/pg_statistic_d.h +7 -3
  111. data/ext/pg_query/include/postgres/catalog/pg_statistic_ext.h +10 -7
  112. data/ext/pg_query/include/postgres/catalog/pg_statistic_ext_d.h +3 -3
  113. data/ext/pg_query/include/postgres/catalog/pg_transform.h +6 -3
  114. data/ext/pg_query/include/postgres/catalog/pg_transform_d.h +1 -1
  115. data/ext/pg_query/include/postgres/catalog/pg_trigger.h +4 -4
  116. data/ext/pg_query/include/postgres/catalog/pg_trigger_d.h +1 -1
  117. data/ext/pg_query/include/postgres/catalog/pg_ts_config.h +6 -3
  118. data/ext/pg_query/include/postgres/catalog/pg_ts_config_d.h +1 -1
  119. data/ext/pg_query/include/postgres/catalog/pg_ts_dict.h +6 -3
  120. data/ext/pg_query/include/postgres/catalog/pg_ts_dict_d.h +1 -1
  121. data/ext/pg_query/include/postgres/catalog/pg_ts_parser.h +6 -3
  122. data/ext/pg_query/include/postgres/catalog/pg_ts_parser_d.h +1 -1
  123. data/ext/pg_query/include/postgres/catalog/pg_ts_template.h +6 -3
  124. data/ext/pg_query/include/postgres/catalog/pg_ts_template_d.h +1 -1
  125. data/ext/pg_query/include/postgres/catalog/pg_type.h +6 -3
  126. data/ext/pg_query/include/postgres/catalog/pg_type_d.h +1 -1
  127. data/ext/pg_query/include/postgres/catalog/storage.h +1 -1
  128. data/ext/pg_query/include/postgres/catalog/syscache_ids.h +104 -0
  129. data/ext/pg_query/include/postgres/commands/async.h +2 -6
  130. data/ext/pg_query/include/postgres/commands/dbcommands.h +1 -1
  131. data/ext/pg_query/include/postgres/commands/defrem.h +6 -6
  132. data/ext/pg_query/include/postgres/commands/event_trigger.h +5 -2
  133. data/ext/pg_query/include/postgres/commands/explain.h +19 -3
  134. data/ext/pg_query/include/postgres/commands/prepare.h +1 -1
  135. data/ext/pg_query/include/postgres/commands/tablespace.h +1 -1
  136. data/ext/pg_query/include/postgres/commands/trigger.h +1 -1
  137. data/ext/pg_query/include/postgres/commands/vacuum.h +28 -26
  138. data/ext/pg_query/include/postgres/common/cryptohash.h +2 -2
  139. data/ext/pg_query/include/postgres/common/file_perm.h +1 -1
  140. data/ext/pg_query/include/postgres/common/file_utils.h +65 -0
  141. data/ext/pg_query/include/postgres/common/hashfn.h +16 -1
  142. data/ext/pg_query/include/postgres/common/hashfn_unstable.h +453 -0
  143. data/ext/pg_query/include/postgres/common/int.h +79 -4
  144. data/ext/pg_query/include/postgres/common/keywords.h +1 -1
  145. data/ext/pg_query/include/postgres/common/kwlookup.h +1 -1
  146. data/ext/pg_query/include/postgres/common/pg_prng.h +2 -1
  147. data/ext/pg_query/include/postgres/common/relpath.h +4 -4
  148. data/ext/pg_query/include/postgres/common/scram-common.h +1 -1
  149. data/ext/pg_query/include/postgres/common/sha2.h +1 -1
  150. data/ext/pg_query/include/postgres/common/string.h +1 -1
  151. data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +2 -3
  152. data/ext/pg_query/include/postgres/copyfuncs.funcs.c +278 -30
  153. data/ext/pg_query/include/postgres/copyfuncs.switch.c +55 -4
  154. data/ext/pg_query/include/postgres/datatype/timestamp.h +28 -2
  155. data/ext/pg_query/include/postgres/equalfuncs.funcs.c +239 -26
  156. data/ext/pg_query/include/postgres/equalfuncs.switch.c +55 -4
  157. data/ext/pg_query/include/postgres/executor/execdesc.h +1 -1
  158. data/ext/pg_query/include/postgres/executor/executor.h +6 -5
  159. data/ext/pg_query/include/postgres/executor/functions.h +2 -1
  160. data/ext/pg_query/include/postgres/executor/instrument.h +5 -3
  161. data/ext/pg_query/include/postgres/executor/spi.h +2 -8
  162. data/ext/pg_query/include/postgres/executor/tablefunc.h +1 -1
  163. data/ext/pg_query/include/postgres/executor/tuptable.h +31 -2
  164. data/ext/pg_query/include/postgres/fmgr.h +2 -2
  165. data/ext/pg_query/include/postgres/foreign/fdwapi.h +1 -1
  166. data/ext/pg_query/include/postgres/funcapi.h +2 -2
  167. data/ext/pg_query/include/postgres/gram.h +871 -830
  168. data/ext/pg_query/include/postgres/gramparse.h +1 -1
  169. data/ext/pg_query/include/postgres/jit/jit.h +4 -3
  170. data/ext/pg_query/include/postgres/kwlist_d.h +511 -466
  171. data/ext/pg_query/include/postgres/lib/dshash.h +25 -10
  172. data/ext/pg_query/include/postgres/lib/ilist.h +1 -1
  173. data/ext/pg_query/include/postgres/lib/pairingheap.h +1 -1
  174. data/ext/pg_query/include/postgres/lib/simplehash.h +40 -18
  175. data/ext/pg_query/include/postgres/lib/sort_template.h +14 -1
  176. data/ext/pg_query/include/postgres/lib/stringinfo.h +93 -11
  177. data/ext/pg_query/include/postgres/libpq/auth.h +1 -1
  178. data/ext/pg_query/include/postgres/libpq/crypt.h +2 -2
  179. data/ext/pg_query/include/postgres/libpq/hba.h +4 -4
  180. data/ext/pg_query/include/postgres/libpq/libpq-be.h +29 -25
  181. data/ext/pg_query/include/postgres/libpq/libpq.h +6 -7
  182. data/ext/pg_query/include/postgres/libpq/pqcomm.h +26 -20
  183. data/ext/pg_query/include/postgres/libpq/pqformat.h +2 -3
  184. data/ext/pg_query/include/postgres/libpq/pqsignal.h +1 -1
  185. data/ext/pg_query/include/postgres/libpq/protocol.h +89 -0
  186. data/ext/pg_query/include/postgres/libpq/sasl.h +1 -1
  187. data/ext/pg_query/include/postgres/libpq/scram.h +1 -1
  188. data/ext/pg_query/include/postgres/mb/pg_wchar.h +102 -82
  189. data/ext/pg_query/include/postgres/mb/stringinfo_mb.h +1 -1
  190. data/ext/pg_query/include/postgres/miscadmin.h +64 -52
  191. data/ext/pg_query/include/postgres/nodes/bitmapset.h +17 -3
  192. data/ext/pg_query/include/postgres/nodes/execnodes.h +109 -25
  193. data/ext/pg_query/include/postgres/nodes/extensible.h +1 -1
  194. data/ext/pg_query/include/postgres/nodes/lockoptions.h +4 -4
  195. data/ext/pg_query/include/postgres/nodes/makefuncs.h +8 -2
  196. data/ext/pg_query/include/postgres/nodes/memnodes.h +43 -4
  197. data/ext/pg_query/include/postgres/nodes/miscnodes.h +1 -1
  198. data/ext/pg_query/include/postgres/nodes/nodeFuncs.h +1 -1
  199. data/ext/pg_query/include/postgres/nodes/nodes.h +30 -41
  200. data/ext/pg_query/include/postgres/nodes/nodetags.h +464 -444
  201. data/ext/pg_query/include/postgres/nodes/params.h +1 -1
  202. data/ext/pg_query/include/postgres/nodes/parsenodes.h +358 -175
  203. data/ext/pg_query/include/postgres/nodes/pathnodes.h +60 -9
  204. data/ext/pg_query/include/postgres/nodes/pg_list.h +62 -11
  205. data/ext/pg_query/include/postgres/nodes/plannodes.h +11 -10
  206. data/ext/pg_query/include/postgres/nodes/primnodes.h +344 -50
  207. data/ext/pg_query/include/postgres/nodes/print.h +1 -1
  208. data/ext/pg_query/include/postgres/nodes/queryjumble.h +2 -2
  209. data/ext/pg_query/include/postgres/nodes/replnodes.h +23 -2
  210. data/ext/pg_query/include/postgres/nodes/supportnodes.h +1 -1
  211. data/ext/pg_query/include/postgres/nodes/tidbitmap.h +1 -1
  212. data/ext/pg_query/include/postgres/nodes/value.h +1 -1
  213. data/ext/pg_query/include/postgres/optimizer/cost.h +5 -4
  214. data/ext/pg_query/include/postgres/optimizer/geqo.h +1 -1
  215. data/ext/pg_query/include/postgres/optimizer/geqo_gene.h +1 -1
  216. data/ext/pg_query/include/postgres/optimizer/optimizer.h +5 -2
  217. data/ext/pg_query/include/postgres/optimizer/paths.h +13 -8
  218. data/ext/pg_query/include/postgres/optimizer/planmain.h +7 -1
  219. data/ext/pg_query/include/postgres/parser/analyze.h +3 -1
  220. data/ext/pg_query/include/postgres/parser/kwlist.h +22 -2
  221. data/ext/pg_query/include/postgres/parser/parse_agg.h +1 -1
  222. data/ext/pg_query/include/postgres/parser/parse_coerce.h +2 -2
  223. data/ext/pg_query/include/postgres/parser/parse_expr.h +1 -1
  224. data/ext/pg_query/include/postgres/parser/parse_func.h +2 -2
  225. data/ext/pg_query/include/postgres/parser/parse_node.h +3 -2
  226. data/ext/pg_query/include/postgres/parser/parse_oper.h +4 -1
  227. data/ext/pg_query/include/postgres/parser/parse_relation.h +1 -1
  228. data/ext/pg_query/include/postgres/parser/parse_type.h +2 -2
  229. data/ext/pg_query/include/postgres/parser/parser.h +3 -3
  230. data/ext/pg_query/include/postgres/parser/parsetree.h +1 -1
  231. data/ext/pg_query/include/postgres/parser/scanner.h +1 -1
  232. data/ext/pg_query/include/postgres/parser/scansup.h +1 -1
  233. data/ext/pg_query/include/postgres/partitioning/partdefs.h +1 -1
  234. data/ext/pg_query/include/postgres/pg_config.h +34 -34
  235. data/ext/pg_query/include/postgres/pg_config_manual.h +21 -8
  236. data/ext/pg_query/include/postgres/pg_getopt.h +1 -1
  237. data/ext/pg_query/include/postgres/pg_trace.h +1 -1
  238. data/ext/pg_query/include/postgres/pgstat.h +13 -11
  239. data/ext/pg_query/include/postgres/pgtime.h +1 -1
  240. data/ext/pg_query/include/postgres/pl_reserved_kwlist.h +1 -1
  241. data/ext/pg_query/include/postgres/pl_reserved_kwlist_d.h +1 -1
  242. data/ext/pg_query/include/postgres/pl_unreserved_kwlist.h +1 -1
  243. data/ext/pg_query/include/postgres/pl_unreserved_kwlist_d.h +1 -1
  244. data/ext/pg_query/include/postgres/plerrcodes.h +4 -4
  245. data/ext/pg_query/include/postgres/plpgsql.h +15 -13
  246. data/ext/pg_query/include/postgres/port/atomics/arch-arm.h +1 -1
  247. data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +1 -1
  248. data/ext/pg_query/include/postgres/port/atomics/arch-ppc.h +3 -1
  249. data/ext/pg_query/include/postgres/port/atomics/arch-x86.h +3 -1
  250. data/ext/pg_query/include/postgres/port/atomics/fallback.h +1 -1
  251. data/ext/pg_query/include/postgres/port/atomics/generic-gcc.h +38 -1
  252. data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +19 -1
  253. data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +16 -1
  254. data/ext/pg_query/include/postgres/port/atomics/generic.h +38 -2
  255. data/ext/pg_query/include/postgres/port/atomics.h +93 -6
  256. data/ext/pg_query/include/postgres/port/pg_bitutils.h +91 -9
  257. data/ext/pg_query/include/postgres/port/pg_bswap.h +1 -1
  258. data/ext/pg_query/include/postgres/port/pg_crc32c.h +10 -1
  259. data/ext/pg_query/include/postgres/port/pg_iovec.h +117 -0
  260. data/ext/pg_query/include/postgres/port/simd.h +48 -1
  261. data/ext/pg_query/include/postgres/port/win32/sys/socket.h +8 -0
  262. data/ext/pg_query/include/postgres/port/win32_port.h +1 -11
  263. data/ext/pg_query/include/postgres/port.h +7 -3
  264. data/ext/pg_query/include/postgres/portability/instr_time.h +1 -1
  265. data/ext/pg_query/include/postgres/postgres.h +1 -1
  266. data/ext/pg_query/include/postgres/postmaster/autovacuum.h +5 -16
  267. data/ext/pg_query/include/postgres/postmaster/bgworker.h +8 -6
  268. data/ext/pg_query/include/postgres/postmaster/bgworker_internals.h +3 -7
  269. data/ext/pg_query/include/postgres/postmaster/bgwriter.h +3 -3
  270. data/ext/pg_query/include/postgres/postmaster/interrupt.h +1 -1
  271. data/ext/pg_query/include/postgres/postmaster/pgarch.h +2 -2
  272. data/ext/pg_query/include/postgres/postmaster/postmaster.h +25 -5
  273. data/ext/pg_query/include/postgres/postmaster/startup.h +2 -2
  274. data/ext/pg_query/include/postgres/postmaster/syslogger.h +2 -4
  275. data/ext/pg_query/include/postgres/postmaster/walsummarizer.h +35 -0
  276. data/ext/pg_query/include/postgres/postmaster/walwriter.h +2 -2
  277. data/ext/pg_query/include/postgres/regex/regex.h +92 -9
  278. data/ext/pg_query/include/postgres/replication/logicallauncher.h +1 -1
  279. data/ext/pg_query/include/postgres/replication/logicalproto.h +2 -2
  280. data/ext/pg_query/include/postgres/replication/logicalworker.h +2 -1
  281. data/ext/pg_query/include/postgres/replication/origin.h +1 -1
  282. data/ext/pg_query/include/postgres/replication/reorderbuffer.h +18 -28
  283. data/ext/pg_query/include/postgres/replication/slot.h +41 -5
  284. data/ext/pg_query/include/postgres/replication/slotsync.h +38 -0
  285. data/ext/pg_query/include/postgres/replication/syncrep.h +1 -1
  286. data/ext/pg_query/include/postgres/replication/walreceiver.h +37 -11
  287. data/ext/pg_query/include/postgres/replication/walsender.h +5 -3
  288. data/ext/pg_query/include/postgres/rewrite/prs2lock.h +1 -1
  289. data/ext/pg_query/include/postgres/rewrite/rewriteHandler.h +7 -1
  290. data/ext/pg_query/include/postgres/rewrite/rewriteManip.h +2 -2
  291. data/ext/pg_query/include/postgres/rewrite/rewriteSupport.h +1 -1
  292. data/ext/pg_query/include/postgres/storage/block.h +1 -1
  293. data/ext/pg_query/include/postgres/storage/buf.h +1 -1
  294. data/ext/pg_query/include/postgres/storage/bufmgr.h +59 -41
  295. data/ext/pg_query/include/postgres/storage/bufpage.h +1 -1
  296. data/ext/pg_query/include/postgres/storage/condition_variable.h +1 -1
  297. data/ext/pg_query/include/postgres/storage/dsm.h +1 -1
  298. data/ext/pg_query/include/postgres/storage/dsm_impl.h +2 -2
  299. data/ext/pg_query/include/postgres/storage/fd.h +30 -13
  300. data/ext/pg_query/include/postgres/storage/fileset.h +1 -1
  301. data/ext/pg_query/include/postgres/storage/ipc.h +4 -1
  302. data/ext/pg_query/include/postgres/storage/item.h +1 -1
  303. data/ext/pg_query/include/postgres/storage/itemid.h +1 -1
  304. data/ext/pg_query/include/postgres/storage/itemptr.h +1 -1
  305. data/ext/pg_query/include/postgres/storage/large_object.h +1 -1
  306. data/ext/pg_query/include/postgres/storage/latch.h +4 -2
  307. data/ext/pg_query/include/postgres/storage/lmgr.h +8 -2
  308. data/ext/pg_query/include/postgres/storage/lock.h +19 -19
  309. data/ext/pg_query/include/postgres/storage/lockdefs.h +1 -1
  310. data/ext/pg_query/include/postgres/storage/lwlock.h +17 -9
  311. data/ext/pg_query/include/postgres/storage/lwlocknames.h +7 -10
  312. data/ext/pg_query/include/postgres/storage/off.h +1 -1
  313. data/ext/pg_query/include/postgres/storage/pg_sema.h +1 -1
  314. data/ext/pg_query/include/postgres/storage/pg_shmem.h +5 -4
  315. data/ext/pg_query/include/postgres/storage/pmsignal.h +2 -2
  316. data/ext/pg_query/include/postgres/storage/predicate.h +1 -5
  317. data/ext/pg_query/include/postgres/storage/proc.h +48 -23
  318. data/ext/pg_query/include/postgres/storage/procarray.h +5 -1
  319. data/ext/pg_query/include/postgres/storage/proclist_types.h +11 -9
  320. data/ext/pg_query/include/postgres/storage/procnumber.h +43 -0
  321. data/ext/pg_query/include/postgres/storage/procsignal.h +8 -6
  322. data/ext/pg_query/include/postgres/storage/read_stream.h +65 -0
  323. data/ext/pg_query/include/postgres/storage/relfilelocator.h +16 -15
  324. data/ext/pg_query/include/postgres/storage/s_lock.h +7 -27
  325. data/ext/pg_query/include/postgres/storage/sharedfileset.h +1 -1
  326. data/ext/pg_query/include/postgres/storage/shm_mq.h +2 -2
  327. data/ext/pg_query/include/postgres/storage/shm_toc.h +1 -1
  328. data/ext/pg_query/include/postgres/storage/shmem.h +1 -1
  329. data/ext/pg_query/include/postgres/storage/sinval.h +3 -3
  330. data/ext/pg_query/include/postgres/storage/smgr.h +41 -27
  331. data/ext/pg_query/include/postgres/storage/spin.h +1 -1
  332. data/ext/pg_query/include/postgres/storage/standby.h +13 -3
  333. data/ext/pg_query/include/postgres/storage/standbydefs.h +2 -2
  334. data/ext/pg_query/include/postgres/storage/sync.h +4 -4
  335. data/ext/pg_query/include/postgres/tcop/cmdtag.h +1 -2
  336. data/ext/pg_query/include/postgres/tcop/cmdtaglist.h +3 -2
  337. data/ext/pg_query/include/postgres/tcop/deparse_utility.h +2 -2
  338. data/ext/pg_query/include/postgres/tcop/dest.h +3 -2
  339. data/ext/pg_query/include/postgres/tcop/fastpath.h +1 -1
  340. data/ext/pg_query/include/postgres/tcop/pquery.h +1 -1
  341. data/ext/pg_query/include/postgres/tcop/tcopprot.h +9 -5
  342. data/ext/pg_query/include/postgres/tcop/utility.h +2 -2
  343. data/ext/pg_query/include/postgres/tsearch/ts_cache.h +1 -1
  344. data/ext/pg_query/include/postgres/utils/acl.h +19 -7
  345. data/ext/pg_query/include/postgres/utils/aclchk_internal.h +1 -1
  346. data/ext/pg_query/include/postgres/utils/array.h +1 -2
  347. data/ext/pg_query/include/postgres/utils/ascii.h +84 -0
  348. data/ext/pg_query/include/postgres/utils/backend_progress.h +3 -2
  349. data/ext/pg_query/include/postgres/utils/backend_status.h +8 -10
  350. data/ext/pg_query/include/postgres/utils/builtins.h +4 -1
  351. data/ext/pg_query/include/postgres/utils/bytea.h +2 -2
  352. data/ext/pg_query/include/postgres/utils/catcache.h +5 -6
  353. data/ext/pg_query/include/postgres/utils/date.h +1 -1
  354. data/ext/pg_query/include/postgres/utils/datetime.h +4 -1
  355. data/ext/pg_query/include/postgres/utils/datum.h +1 -1
  356. data/ext/pg_query/include/postgres/utils/dsa.h +44 -5
  357. data/ext/pg_query/include/postgres/utils/elog.h +3 -8
  358. data/ext/pg_query/include/postgres/utils/errcodes.h +1 -3
  359. data/ext/pg_query/include/postgres/utils/expandeddatum.h +1 -1
  360. data/ext/pg_query/include/postgres/utils/expandedrecord.h +1 -1
  361. data/ext/pg_query/include/postgres/utils/float.h +1 -1
  362. data/ext/pg_query/include/postgres/utils/fmgroids.h +49 -16
  363. data/ext/pg_query/include/postgres/utils/fmgrprotos.h +47 -14
  364. data/ext/pg_query/include/postgres/utils/fmgrtab.h +1 -1
  365. data/ext/pg_query/include/postgres/utils/guc.h +20 -6
  366. data/ext/pg_query/include/postgres/utils/guc_hooks.h +23 -2
  367. data/ext/pg_query/include/postgres/utils/guc_tables.h +6 -5
  368. data/ext/pg_query/include/postgres/utils/hsearch.h +2 -2
  369. data/ext/pg_query/include/postgres/utils/injection_point.h +44 -0
  370. data/ext/pg_query/include/postgres/utils/inval.h +1 -1
  371. data/ext/pg_query/include/postgres/utils/logtape.h +5 -5
  372. data/ext/pg_query/include/postgres/utils/lsyscache.h +6 -3
  373. data/ext/pg_query/include/postgres/utils/memdebug.h +1 -1
  374. data/ext/pg_query/include/postgres/utils/memutils.h +12 -5
  375. data/ext/pg_query/include/postgres/utils/memutils_internal.h +53 -13
  376. data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +25 -9
  377. data/ext/pg_query/include/postgres/utils/numeric.h +6 -1
  378. data/ext/pg_query/include/postgres/utils/palloc.h +1 -15
  379. data/ext/pg_query/include/postgres/utils/partcache.h +1 -1
  380. data/ext/pg_query/include/postgres/utils/pg_locale.h +8 -7
  381. data/ext/pg_query/include/postgres/utils/pgstat_internal.h +11 -17
  382. data/ext/pg_query/include/postgres/utils/plancache.h +5 -3
  383. data/ext/pg_query/include/postgres/utils/portal.h +9 -9
  384. data/ext/pg_query/include/postgres/utils/queryenvironment.h +2 -2
  385. data/ext/pg_query/include/postgres/utils/regproc.h +1 -1
  386. data/ext/pg_query/include/postgres/utils/rel.h +14 -15
  387. data/ext/pg_query/include/postgres/utils/relcache.h +2 -5
  388. data/ext/pg_query/include/postgres/utils/reltrigger.h +1 -1
  389. data/ext/pg_query/include/postgres/utils/resowner.h +90 -9
  390. data/ext/pg_query/include/postgres/utils/ruleutils.h +1 -1
  391. data/ext/pg_query/include/postgres/utils/sharedtuplestore.h +1 -1
  392. data/ext/pg_query/include/postgres/utils/snapmgr.h +1 -52
  393. data/ext/pg_query/include/postgres/utils/snapshot.h +2 -2
  394. data/ext/pg_query/include/postgres/utils/sortsupport.h +1 -1
  395. data/ext/pg_query/include/postgres/utils/syscache.h +2 -98
  396. data/ext/pg_query/include/postgres/utils/timeout.h +3 -2
  397. data/ext/pg_query/include/postgres/utils/timestamp.h +1 -1
  398. data/ext/pg_query/include/postgres/utils/tuplesort.h +36 -9
  399. data/ext/pg_query/include/postgres/utils/tuplestore.h +2 -5
  400. data/ext/pg_query/include/postgres/utils/typcache.h +2 -1
  401. data/ext/pg_query/include/postgres/utils/varlena.h +1 -1
  402. data/ext/pg_query/include/postgres/utils/wait_event.h +28 -214
  403. data/ext/pg_query/include/postgres/utils/wait_event_types.h +218 -0
  404. data/ext/pg_query/include/postgres/utils/xml.h +4 -4
  405. data/ext/pg_query/include/postgres/varatt.h +1 -1
  406. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +1546 -792
  407. data/ext/pg_query/include/protobuf/pg_query.pb.h +58365 -46595
  408. data/ext/pg_query/pg_query.pb-c.c +6598 -3739
  409. data/ext/pg_query/pg_query_normalize.c +42 -1
  410. data/ext/pg_query/pg_query_outfuncs_json.c +3 -1
  411. data/ext/pg_query/pg_query_parse_plpgsql.c +12 -13
  412. data/ext/pg_query/pg_query_readfuncs_protobuf.c +2 -2
  413. data/ext/pg_query/pg_query_ruby_freebsd.sym +0 -1
  414. data/ext/pg_query/pg_query_scan.c +1 -1
  415. data/ext/pg_query/postgres_deparse.c +409 -21
  416. data/ext/pg_query/src_backend_catalog_namespace.c +241 -66
  417. data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -3
  418. data/ext/pg_query/src_backend_commands_define.c +2 -3
  419. data/ext/pg_query/src_backend_nodes_bitmapset.c +137 -94
  420. data/ext/pg_query/src_backend_nodes_copyfuncs.c +1 -1
  421. data/ext/pg_query/src_backend_nodes_equalfuncs.c +1 -1
  422. data/ext/pg_query/src_backend_nodes_extensible.c +1 -1
  423. data/ext/pg_query/src_backend_nodes_list.c +3 -7
  424. data/ext/pg_query/src_backend_nodes_makefuncs.c +59 -20
  425. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +109 -2
  426. data/ext/pg_query/src_backend_nodes_value.c +1 -1
  427. data/ext/pg_query/src_backend_parser_gram.c +34490 -32135
  428. data/ext/pg_query/src_backend_parser_parser.c +8 -8
  429. data/ext/pg_query/src_backend_parser_scan.c +5637 -3028
  430. data/ext/pg_query/src_backend_parser_scansup.c +2 -1
  431. data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
  432. data/ext/pg_query/src_backend_tcop_postgres.c +34 -10
  433. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +2 -2
  434. data/ext/pg_query/src_backend_utils_adt_datum.c +8 -6
  435. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  436. data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
  437. data/ext/pg_query/src_backend_utils_adt_numutils.c +4 -5
  438. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +101 -28
  439. data/ext/pg_query/src_backend_utils_error_assert.c +1 -1
  440. data/ext/pg_query/src_backend_utils_error_elog.c +47 -42
  441. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +4 -2
  442. data/ext/pg_query/src_backend_utils_init_globals.c +15 -3
  443. data/ext/pg_query/src_backend_utils_mb_mbutils.c +11 -18
  444. data/ext/pg_query/src_backend_utils_misc_guc_tables.c +16 -6
  445. data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +8 -5
  446. data/ext/pg_query/src_backend_utils_mmgr_aset.c +308 -238
  447. data/ext/pg_query/src_backend_utils_mmgr_bump.c +728 -0
  448. data/ext/pg_query/src_backend_utils_mmgr_generation.c +273 -197
  449. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +270 -215
  450. data/ext/pg_query/src_backend_utils_mmgr_slab.c +154 -96
  451. data/ext/pg_query/src_common_encnames.c +43 -44
  452. data/ext/pg_query/src_common_hashfn.c +1 -1
  453. data/ext/pg_query/src_common_keywords.c +1 -1
  454. data/ext/pg_query/src_common_kwlist_d.h +511 -466
  455. data/ext/pg_query/src_common_kwlookup.c +1 -1
  456. data/ext/pg_query/src_common_psprintf.c +3 -3
  457. data/ext/pg_query/src_common_stringinfo.c +18 -1
  458. data/ext/pg_query/src_common_wchar.c +45 -108
  459. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +99 -5
  460. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +1 -1
  461. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +242 -143
  462. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  463. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
  464. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +19 -1
  465. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +1 -1
  466. data/ext/pg_query/src_port_pg_bitutils.c +173 -28
  467. data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
  468. data/ext/pg_query/src_port_snprintf.c +1 -1
  469. data/ext/pg_query/src_port_strerror.c +1 -3
  470. data/ext/pg_query/src_port_strlcpy.c +1 -1
  471. data/lib/pg_query/param_refs.rb +1 -1
  472. data/lib/pg_query/pg_query_pb.rb +26 -3
  473. data/lib/pg_query/treewalker.rb +38 -11
  474. data/lib/pg_query/truncate.rb +1 -1
  475. data/lib/pg_query/version.rb +1 -1
  476. metadata +25 -11
  477. data/ext/pg_query/include/postgres/storage/backendid.h +0 -37
  478. data/ext/pg_query/include/postgres/storage/sinvaladt.h +0 -45
  479. data/ext/pg_query/src_backend_nodes_nodes.c +0 -38
@@ -2,7 +2,7 @@
2
2
  * reorderbuffer.h
3
3
  * PostgreSQL logical replay/reorder buffer management.
4
4
  *
5
- * Copyright (c) 2012-2023, PostgreSQL Global Development Group
5
+ * Copyright (c) 2012-2024, PostgreSQL Global Development Group
6
6
  *
7
7
  * src/include/replication/reorderbuffer.h
8
8
  */
@@ -11,6 +11,7 @@
11
11
 
12
12
  #include "access/htup_details.h"
13
13
  #include "lib/ilist.h"
14
+ #include "lib/pairingheap.h"
14
15
  #include "storage/sinval.h"
15
16
  #include "utils/hsearch.h"
16
17
  #include "utils/relcache.h"
@@ -25,28 +26,9 @@ extern PGDLLIMPORT int debug_logical_replication_streaming;
25
26
  typedef enum
26
27
  {
27
28
  DEBUG_LOGICAL_REP_STREAMING_BUFFERED,
28
- DEBUG_LOGICAL_REP_STREAMING_IMMEDIATE
29
+ DEBUG_LOGICAL_REP_STREAMING_IMMEDIATE,
29
30
  } DebugLogicalRepStreamingMode;
30
31
 
31
- /* an individual tuple, stored in one chunk of memory */
32
- typedef struct ReorderBufferTupleBuf
33
- {
34
- /* position in preallocated list */
35
- slist_node node;
36
-
37
- /* tuple header, the interesting bit for users of logical decoding */
38
- HeapTupleData tuple;
39
-
40
- /* pre-allocated size of tuple buffer, different from tuple size */
41
- Size alloc_tuple_size;
42
-
43
- /* actual tuple data follows */
44
- } ReorderBufferTupleBuf;
45
-
46
- /* pointer to the data stored in a TupleBuf */
47
- #define ReorderBufferTupleBufData(p) \
48
- ((HeapTupleHeader) MAXALIGN(((char *) p) + sizeof(ReorderBufferTupleBuf)))
49
-
50
32
  /*
51
33
  * Types of the change passed to a 'change' callback.
52
34
  *
@@ -73,7 +55,7 @@ typedef enum ReorderBufferChangeType
73
55
  REORDER_BUFFER_CHANGE_INTERNAL_SPEC_INSERT,
74
56
  REORDER_BUFFER_CHANGE_INTERNAL_SPEC_CONFIRM,
75
57
  REORDER_BUFFER_CHANGE_INTERNAL_SPEC_ABORT,
76
- REORDER_BUFFER_CHANGE_TRUNCATE
58
+ REORDER_BUFFER_CHANGE_TRUNCATE,
77
59
  } ReorderBufferChangeType;
78
60
 
79
61
  /* forward declaration */
@@ -114,9 +96,9 @@ typedef struct ReorderBufferChange
114
96
  bool clear_toast_afterwards;
115
97
 
116
98
  /* valid for DELETE || UPDATE */
117
- ReorderBufferTupleBuf *oldtuple;
99
+ HeapTuple oldtuple;
118
100
  /* valid for INSERT || UPDATE */
119
- ReorderBufferTupleBuf *newtuple;
101
+ HeapTuple newtuple;
120
102
  } tp;
121
103
 
122
104
  /*
@@ -420,6 +402,11 @@ typedef struct ReorderBufferTXN
420
402
  */
421
403
  dlist_node catchange_node;
422
404
 
405
+ /*
406
+ * A node in txn_heap
407
+ */
408
+ pairingheap_node txn_node;
409
+
423
410
  /*
424
411
  * Size of this transaction (changes currently in memory, in bytes).
425
412
  */
@@ -650,6 +637,9 @@ struct ReorderBuffer
650
637
  /* memory accounting */
651
638
  Size size;
652
639
 
640
+ /* Max-heap for sizes of all top-level and sub transactions */
641
+ pairingheap *txn_heap;
642
+
653
643
  /*
654
644
  * Statistics about transactions spilled to disk.
655
645
  *
@@ -678,10 +668,10 @@ struct ReorderBuffer
678
668
  extern ReorderBuffer *ReorderBufferAllocate(void);
679
669
  extern void ReorderBufferFree(ReorderBuffer *rb);
680
670
 
681
- extern ReorderBufferTupleBuf *ReorderBufferGetTupleBuf(ReorderBuffer *rb,
682
- Size tuple_len);
683
- extern void ReorderBufferReturnTupleBuf(ReorderBuffer *rb,
684
- ReorderBufferTupleBuf *tuple);
671
+ extern HeapTuple ReorderBufferGetTupleBuf(ReorderBuffer *rb,
672
+ Size tuple_len);
673
+ extern void ReorderBufferReturnTupleBuf(HeapTuple tuple);
674
+
685
675
  extern ReorderBufferChange *ReorderBufferGetChange(ReorderBuffer *rb);
686
676
  extern void ReorderBufferReturnChange(ReorderBuffer *rb,
687
677
  ReorderBufferChange *change, bool upd_mem);
@@ -2,7 +2,7 @@
2
2
  * slot.h
3
3
  * Replication slot management.
4
4
  *
5
- * Copyright (c) 2012-2023, PostgreSQL Global Development Group
5
+ * Copyright (c) 2012-2024, PostgreSQL Global Development Group
6
6
  *
7
7
  *-------------------------------------------------------------------------
8
8
  */
@@ -34,12 +34,15 @@ typedef enum ReplicationSlotPersistency
34
34
  {
35
35
  RS_PERSISTENT,
36
36
  RS_EPHEMERAL,
37
- RS_TEMPORARY
37
+ RS_TEMPORARY,
38
38
  } ReplicationSlotPersistency;
39
39
 
40
40
  /*
41
41
  * Slots can be invalidated, e.g. due to max_slot_wal_keep_size. If so, the
42
42
  * 'invalidated' field is set to a value other than _NONE.
43
+ *
44
+ * When adding a new invalidation cause here, remember to update
45
+ * SlotInvalidationCauses and RS_INVAL_MAX_CAUSES.
43
46
  */
44
47
  typedef enum ReplicationSlotInvalidationCause
45
48
  {
@@ -52,6 +55,8 @@ typedef enum ReplicationSlotInvalidationCause
52
55
  RS_INVAL_WAL_LEVEL,
53
56
  } ReplicationSlotInvalidationCause;
54
57
 
58
+ extern PGDLLIMPORT const char *const SlotInvalidationCauses[];
59
+
55
60
  /*
56
61
  * On-Disk data of a replication slot, preserved across restarts.
57
62
  */
@@ -111,6 +116,17 @@ typedef struct ReplicationSlotPersistentData
111
116
 
112
117
  /* plugin name */
113
118
  NameData plugin;
119
+
120
+ /*
121
+ * Was this slot synchronized from the primary server?
122
+ */
123
+ char synced;
124
+
125
+ /*
126
+ * Is this a failover slot (sync candidate for standbys)? Only relevant
127
+ * for logical slots on the primary server.
128
+ */
129
+ bool failover;
114
130
  } ReplicationSlotPersistentData;
115
131
 
116
132
  /*
@@ -178,6 +194,16 @@ typedef struct ReplicationSlot
178
194
  XLogRecPtr candidate_xmin_lsn;
179
195
  XLogRecPtr candidate_restart_valid;
180
196
  XLogRecPtr candidate_restart_lsn;
197
+
198
+ /*
199
+ * This value tracks the last confirmed_flush LSN flushed which is used
200
+ * during a shutdown checkpoint to decide if logical's slot data should be
201
+ * forcibly flushed or not.
202
+ */
203
+ XLogRecPtr last_saved_confirmed_flush;
204
+
205
+ /* The time since the slot has become inactive */
206
+ TimestampTz inactive_since;
181
207
  } ReplicationSlot;
182
208
 
183
209
  #define SlotIsPhysical(slot) ((slot)->data.database == InvalidOid)
@@ -203,6 +229,7 @@ extern PGDLLIMPORT ReplicationSlot *MyReplicationSlot;
203
229
 
204
230
  /* GUCs */
205
231
  extern PGDLLIMPORT int max_replication_slots;
232
+ extern PGDLLIMPORT char *synchronized_standby_slots;
206
233
 
207
234
  /* shmem initialization functions */
208
235
  extern Size ReplicationSlotsShmemSize(void);
@@ -211,13 +238,16 @@ extern void ReplicationSlotsShmemInit(void);
211
238
  /* management of individual slots */
212
239
  extern void ReplicationSlotCreate(const char *name, bool db_specific,
213
240
  ReplicationSlotPersistency persistency,
214
- bool two_phase);
241
+ bool two_phase, bool failover,
242
+ bool synced);
215
243
  extern void ReplicationSlotPersist(void);
216
244
  extern void ReplicationSlotDrop(const char *name, bool nowait);
245
+ extern void ReplicationSlotDropAcquired(void);
246
+ extern void ReplicationSlotAlter(const char *name, bool failover);
217
247
 
218
248
  extern void ReplicationSlotAcquire(const char *name, bool nowait);
219
249
  extern void ReplicationSlotRelease(void);
220
- extern void ReplicationSlotCleanup(void);
250
+ extern void ReplicationSlotCleanup(bool synced_only);
221
251
  extern void ReplicationSlotSave(void);
222
252
  extern void ReplicationSlotMarkDirty(void);
223
253
 
@@ -241,9 +271,15 @@ extern void ReplicationSlotNameForTablesync(Oid suboid, Oid relid, char *syncslo
241
271
  extern void ReplicationSlotDropAtPubNode(WalReceiverConn *wrconn, char *slotname, bool missing_ok);
242
272
 
243
273
  extern void StartupReplicationSlots(void);
244
- extern void CheckPointReplicationSlots(void);
274
+ extern void CheckPointReplicationSlots(bool is_shutdown);
245
275
 
246
276
  extern void CheckSlotRequirements(void);
247
277
  extern void CheckSlotPermissions(void);
278
+ extern ReplicationSlotInvalidationCause
279
+ GetSlotInvalidationCause(const char *invalidation_reason);
280
+
281
+ extern bool SlotExistsInSyncStandbySlots(const char *slot_name);
282
+ extern bool StandbySlotsHaveCaughtup(XLogRecPtr wait_for_lsn, int elevel);
283
+ extern void WaitForStandbyConfirmation(XLogRecPtr wait_for_lsn);
248
284
 
249
285
  #endif /* SLOT_H */
@@ -0,0 +1,38 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * slotsync.h
4
+ * Exports for slot synchronization.
5
+ *
6
+ * Portions Copyright (c) 2016-2024, PostgreSQL Global Development Group
7
+ *
8
+ * src/include/replication/slotsync.h
9
+ *
10
+ *-------------------------------------------------------------------------
11
+ */
12
+ #ifndef SLOTSYNC_H
13
+ #define SLOTSYNC_H
14
+
15
+ #include "replication/walreceiver.h"
16
+
17
+ extern PGDLLIMPORT bool sync_replication_slots;
18
+
19
+ /*
20
+ * GUCs needed by slot sync worker to connect to the primary
21
+ * server and carry on with slots synchronization.
22
+ */
23
+ extern PGDLLIMPORT char *PrimaryConnInfo;
24
+ extern PGDLLIMPORT char *PrimarySlotName;
25
+
26
+ extern char *CheckAndGetDbnameFromConninfo(void);
27
+ extern bool ValidateSlotSyncParams(int elevel);
28
+
29
+ extern void ReplSlotSyncWorkerMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn();
30
+
31
+ extern void ShutDownSlotSync(void);
32
+ extern bool SlotSyncWorkerCanRestart(void);
33
+ extern bool IsSyncingReplicationSlots(void);
34
+ extern Size SlotSyncShmemSize(void);
35
+ extern void SlotSyncShmemInit(void);
36
+ extern void SyncReplicationSlots(WalReceiverConn *wrconn);
37
+
38
+ #endif /* SLOTSYNC_H */
@@ -3,7 +3,7 @@
3
3
  * syncrep.h
4
4
  * Exports from replication/syncrep.c.
5
5
  *
6
- * Portions Copyright (c) 2010-2023, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 2010-2024, PostgreSQL Global Development Group
7
7
  *
8
8
  * IDENTIFICATION
9
9
  * src/include/replication/syncrep.h
@@ -3,7 +3,7 @@
3
3
  * walreceiver.h
4
4
  * Exports from replication/walreceiverfuncs.c.
5
5
  *
6
- * Portions Copyright (c) 2010-2023, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 2010-2024, PostgreSQL Global Development Group
7
7
  *
8
8
  * src/include/replication/walreceiver.h
9
9
  *
@@ -13,7 +13,6 @@
13
13
  #define _WALRECEIVER_H
14
14
 
15
15
  #include <netdb.h>
16
- #include <sys/socket.h>
17
16
 
18
17
  #include "access/xlog.h"
19
18
  #include "access/xlogdefs.h"
@@ -52,7 +51,7 @@ typedef enum
52
51
  WALRCV_STREAMING, /* walreceiver is streaming */
53
52
  WALRCV_WAITING, /* stopped streaming, waiting for orders */
54
53
  WALRCV_RESTARTING, /* asked to restart streaming */
55
- WALRCV_STOPPING /* requested to stop, but still running */
54
+ WALRCV_STOPPING, /* requested to stop, but still running */
56
55
  } WalRcvState;
57
56
 
58
57
  /* Shared memory area for management of walreceiver process */
@@ -207,7 +206,7 @@ typedef enum
207
206
  WALRCV_OK_TUPLES, /* Query returned tuples. */
208
207
  WALRCV_OK_COPY_IN, /* Query started COPY FROM. */
209
208
  WALRCV_OK_COPY_OUT, /* Query started COPY TO. */
210
- WALRCV_OK_COPY_BOTH /* Query started COPY BOTH replication
209
+ WALRCV_OK_COPY_BOTH, /* Query started COPY BOTH replication
211
210
  * protocol. */
212
211
  } WalRcvExecStatus;
213
212
 
@@ -229,8 +228,10 @@ typedef struct WalRcvExecResult
229
228
  /*
230
229
  * walrcv_connect_fn
231
230
  *
232
- * Establish connection to a cluster. 'logical' is true if the
233
- * connection is logical, and false if the connection is physical.
231
+ * Establish connection to a cluster. 'replication' is true if the
232
+ * connection is a replication connection, and false if it is a
233
+ * regular connection. If it is a replication connection, it could
234
+ * be either logical or physical based on input argument 'logical'.
234
235
  * 'appname' is a name associated to the connection, to use for example
235
236
  * with fallback_application_name or application_name. Returns the
236
237
  * details about the connection established, as defined by
@@ -238,6 +239,7 @@ typedef struct WalRcvExecResult
238
239
  * returned with 'err' including the error generated.
239
240
  */
240
241
  typedef WalReceiverConn *(*walrcv_connect_fn) (const char *conninfo,
242
+ bool replication,
241
243
  bool logical,
242
244
  bool must_use_password,
243
245
  const char *appname,
@@ -280,6 +282,13 @@ typedef void (*walrcv_get_senderinfo_fn) (WalReceiverConn *conn,
280
282
  typedef char *(*walrcv_identify_system_fn) (WalReceiverConn *conn,
281
283
  TimeLineID *primary_tli);
282
284
 
285
+ /*
286
+ * walrcv_get_dbname_from_conninfo_fn
287
+ *
288
+ * Returns the database name from the primary_conninfo
289
+ */
290
+ typedef char *(*walrcv_get_dbname_from_conninfo_fn) (const char *conninfo);
291
+
283
292
  /*
284
293
  * walrcv_server_version_fn
285
294
  *
@@ -356,9 +365,20 @@ typedef char *(*walrcv_create_slot_fn) (WalReceiverConn *conn,
356
365
  const char *slotname,
357
366
  bool temporary,
358
367
  bool two_phase,
368
+ bool failover,
359
369
  CRSSnapshotAction snapshot_action,
360
370
  XLogRecPtr *lsn);
361
371
 
372
+ /*
373
+ * walrcv_alter_slot_fn
374
+ *
375
+ * Change the definition of a replication slot. Currently, it only supports
376
+ * changing the failover property of the slot.
377
+ */
378
+ typedef void (*walrcv_alter_slot_fn) (WalReceiverConn *conn,
379
+ const char *slotname,
380
+ bool failover);
381
+
362
382
  /*
363
383
  * walrcv_get_backend_pid_fn
364
384
  *
@@ -393,6 +413,7 @@ typedef struct WalReceiverFunctionsType
393
413
  walrcv_get_conninfo_fn walrcv_get_conninfo;
394
414
  walrcv_get_senderinfo_fn walrcv_get_senderinfo;
395
415
  walrcv_identify_system_fn walrcv_identify_system;
416
+ walrcv_get_dbname_from_conninfo_fn walrcv_get_dbname_from_conninfo;
396
417
  walrcv_server_version_fn walrcv_server_version;
397
418
  walrcv_readtimelinehistoryfile_fn walrcv_readtimelinehistoryfile;
398
419
  walrcv_startstreaming_fn walrcv_startstreaming;
@@ -400,6 +421,7 @@ typedef struct WalReceiverFunctionsType
400
421
  walrcv_receive_fn walrcv_receive;
401
422
  walrcv_send_fn walrcv_send;
402
423
  walrcv_create_slot_fn walrcv_create_slot;
424
+ walrcv_alter_slot_fn walrcv_alter_slot;
403
425
  walrcv_get_backend_pid_fn walrcv_get_backend_pid;
404
426
  walrcv_exec_fn walrcv_exec;
405
427
  walrcv_disconnect_fn walrcv_disconnect;
@@ -407,8 +429,8 @@ typedef struct WalReceiverFunctionsType
407
429
 
408
430
  extern PGDLLIMPORT WalReceiverFunctionsType *WalReceiverFunctions;
409
431
 
410
- #define walrcv_connect(conninfo, logical, must_use_password, appname, err) \
411
- WalReceiverFunctions->walrcv_connect(conninfo, logical, must_use_password, appname, err)
432
+ #define walrcv_connect(conninfo, replication, logical, must_use_password, appname, err) \
433
+ WalReceiverFunctions->walrcv_connect(conninfo, replication, logical, must_use_password, appname, err)
412
434
  #define walrcv_check_conninfo(conninfo, must_use_password) \
413
435
  WalReceiverFunctions->walrcv_check_conninfo(conninfo, must_use_password)
414
436
  #define walrcv_get_conninfo(conn) \
@@ -417,6 +439,8 @@ extern PGDLLIMPORT WalReceiverFunctionsType *WalReceiverFunctions;
417
439
  WalReceiverFunctions->walrcv_get_senderinfo(conn, sender_host, sender_port)
418
440
  #define walrcv_identify_system(conn, primary_tli) \
419
441
  WalReceiverFunctions->walrcv_identify_system(conn, primary_tli)
442
+ #define walrcv_get_dbname_from_conninfo(conninfo) \
443
+ WalReceiverFunctions->walrcv_get_dbname_from_conninfo(conninfo)
420
444
  #define walrcv_server_version(conn) \
421
445
  WalReceiverFunctions->walrcv_server_version(conn)
422
446
  #define walrcv_readtimelinehistoryfile(conn, tli, filename, content, size) \
@@ -429,8 +453,10 @@ extern PGDLLIMPORT WalReceiverFunctionsType *WalReceiverFunctions;
429
453
  WalReceiverFunctions->walrcv_receive(conn, buffer, wait_fd)
430
454
  #define walrcv_send(conn, buffer, nbytes) \
431
455
  WalReceiverFunctions->walrcv_send(conn, buffer, nbytes)
432
- #define walrcv_create_slot(conn, slotname, temporary, two_phase, snapshot_action, lsn) \
433
- WalReceiverFunctions->walrcv_create_slot(conn, slotname, temporary, two_phase, snapshot_action, lsn)
456
+ #define walrcv_create_slot(conn, slotname, temporary, two_phase, failover, snapshot_action, lsn) \
457
+ WalReceiverFunctions->walrcv_create_slot(conn, slotname, temporary, two_phase, failover, snapshot_action, lsn)
458
+ #define walrcv_alter_slot(conn, slotname, failover) \
459
+ WalReceiverFunctions->walrcv_alter_slot(conn, slotname, failover)
434
460
  #define walrcv_get_backend_pid(conn) \
435
461
  WalReceiverFunctions->walrcv_get_backend_pid(conn)
436
462
  #define walrcv_exec(conn, exec, nRetTypes, retTypes) \
@@ -457,7 +483,7 @@ walrcv_clear_result(WalRcvExecResult *walres)
457
483
  }
458
484
 
459
485
  /* prototypes for functions in walreceiver.c */
460
- extern void WalReceiverMain(void) pg_attribute_noreturn();
486
+ extern void WalReceiverMain(char *startup_data, size_t startup_data_len) pg_attribute_noreturn();
461
487
  extern void ProcessWalRcvInterrupts(void);
462
488
  extern void WalRcvForceReply(void);
463
489
 
@@ -3,7 +3,7 @@
3
3
  * walsender.h
4
4
  * Exports from replication/walsender.c.
5
5
  *
6
- * Portions Copyright (c) 2010-2023, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 2010-2024, PostgreSQL Global Development Group
7
7
  *
8
8
  * src/include/replication/walsender.h
9
9
  *
@@ -12,7 +12,7 @@
12
12
  #ifndef _WALSENDER_H
13
13
  #define _WALSENDER_H
14
14
 
15
- #include <signal.h>
15
+ #include "access/xlogdefs.h"
16
16
 
17
17
  /*
18
18
  * What to do with a snapshot in create replication slot command.
@@ -21,7 +21,7 @@ typedef enum
21
21
  {
22
22
  CRS_EXPORT_SNAPSHOT,
23
23
  CRS_NOEXPORT_SNAPSHOT,
24
- CRS_USE_SNAPSHOT
24
+ CRS_USE_SNAPSHOT,
25
25
  } CRSSnapshotAction;
26
26
 
27
27
  /* global state */
@@ -39,6 +39,8 @@ extern void InitWalSender(void);
39
39
  extern bool exec_replication_command(const char *cmd_string);
40
40
  extern void WalSndErrorCleanup(void);
41
41
  extern void WalSndResourceCleanup(bool isCommit);
42
+ extern void PhysicalWakeupLogicalWalSnd(void);
43
+ extern XLogRecPtr GetStandbyFlushRecPtr(TimeLineID *tli);
42
44
  extern void WalSndSignals(void);
43
45
  extern Size WalSndShmemSize(void);
44
46
  extern void WalSndShmemInit(void);
@@ -3,7 +3,7 @@
3
3
  * prs2lock.h
4
4
  * data structures for POSTGRES Rule System II (rewrite rules only)
5
5
  *
6
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * src/include/rewrite/prs2lock.h
@@ -4,7 +4,7 @@
4
4
  * External interface to query rewriter.
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/rewrite/rewriteHandler.h
@@ -25,11 +25,17 @@ extern void AcquireRewriteLocks(Query *parsetree,
25
25
  extern Node *build_column_default(Relation rel, int attrno);
26
26
 
27
27
  extern Query *get_view_query(Relation view);
28
+ extern bool view_has_instead_trigger(Relation view, CmdType event,
29
+ List *mergeActionList);
28
30
  extern const char *view_query_is_auto_updatable(Query *viewquery,
29
31
  bool check_cols);
30
32
  extern int relation_is_updatable(Oid reloid,
31
33
  List *outer_reloids,
32
34
  bool include_triggers,
33
35
  Bitmapset *include_cols);
36
+ extern void error_view_not_updatable(Relation view,
37
+ CmdType command,
38
+ List *mergeActionList,
39
+ const char *detail);
34
40
 
35
41
  #endif /* REWRITEHANDLER_H */
@@ -4,7 +4,7 @@
4
4
  * Querytree manipulation subroutines for query rewriter.
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/rewrite/rewriteManip.h
@@ -37,7 +37,7 @@ typedef enum ReplaceVarsNoMatchOption
37
37
  {
38
38
  REPLACEVARS_REPORT_ERROR, /* throw error if no match */
39
39
  REPLACEVARS_CHANGE_VARNO, /* change the Var's varno, nothing else */
40
- REPLACEVARS_SUBSTITUTE_NULL /* replace with a NULL Const */
40
+ REPLACEVARS_SUBSTITUTE_NULL, /* replace with a NULL Const */
41
41
  } ReplaceVarsNoMatchOption;
42
42
 
43
43
 
@@ -4,7 +4,7 @@
4
4
  *
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/rewrite/rewriteSupport.h
@@ -4,7 +4,7 @@
4
4
  * POSTGRES disk block definitions.
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/storage/block.h
@@ -4,7 +4,7 @@
4
4
  * Basic buffer manager data types.
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/storage/buf.h