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
@@ -4,7 +4,7 @@
4
4
  * POSTGRES buffer manager 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/bufmgr.h
@@ -14,6 +14,7 @@
14
14
  #ifndef BUFMGR_H
15
15
  #define BUFMGR_H
16
16
 
17
+ #include "port/pg_iovec.h"
17
18
  #include "storage/block.h"
18
19
  #include "storage/buf.h"
19
20
  #include "storage/bufpage.h"
@@ -35,7 +36,7 @@ typedef enum BufferAccessStrategyType
35
36
  BAS_BULKREAD, /* Large read-only scan (hint bit updates are
36
37
  * ok) */
37
38
  BAS_BULKWRITE, /* Large multi-block write (e.g. COPY IN) */
38
- BAS_VACUUM /* VACUUM */
39
+ BAS_VACUUM, /* VACUUM */
39
40
  } BufferAccessStrategyType;
40
41
 
41
42
  /* Possible modes for ReadBufferExtended() */
@@ -47,7 +48,7 @@ typedef enum
47
48
  RBM_ZERO_AND_CLEANUP_LOCK, /* Like RBM_ZERO_AND_LOCK, but locks the page
48
49
  * in "cleanup" mode */
49
50
  RBM_ZERO_ON_ERROR, /* Read, but return an all-zeros page on error */
50
- RBM_NORMAL_NO_LOG /* Don't log page as invalid during WAL
51
+ RBM_NORMAL_NO_LOG, /* Don't log page as invalid during WAL
51
52
  * replay; otherwise same as RBM_NORMAL */
52
53
  } ReadBufferMode;
53
54
 
@@ -106,6 +107,37 @@ typedef struct BufferManagerRelation
106
107
  #define BMR_REL(p_rel) ((BufferManagerRelation){.rel = p_rel})
107
108
  #define BMR_SMGR(p_smgr, p_relpersistence) ((BufferManagerRelation){.smgr = p_smgr, .relpersistence = p_relpersistence})
108
109
 
110
+ /* Zero out page if reading fails. */
111
+ #define READ_BUFFERS_ZERO_ON_ERROR (1 << 0)
112
+ /* Call smgrprefetch() if I/O necessary. */
113
+ #define READ_BUFFERS_ISSUE_ADVICE (1 << 1)
114
+
115
+ struct ReadBuffersOperation
116
+ {
117
+ /*
118
+ * The following members should be set by the caller. If only smgr is
119
+ * provided without rel, then smgr_persistence can be set to override the
120
+ * default assumption of RELPERSISTENCE_PERMANENT.
121
+ */
122
+ Relation rel;
123
+ struct SMgrRelationData *smgr;
124
+ char smgr_persistence;
125
+ ForkNumber forknum;
126
+ BufferAccessStrategy strategy;
127
+
128
+ /*
129
+ * The following private members are private state for communication
130
+ * between StartReadBuffers() and WaitReadBuffers(), initialized only if
131
+ * an actual read is required, and should not be modified.
132
+ */
133
+ Buffer *buffers;
134
+ BlockNumber blocknum;
135
+ int flags;
136
+ int16 nblocks;
137
+ int16 io_buffers_len;
138
+ };
139
+
140
+ typedef struct ReadBuffersOperation ReadBuffersOperation;
109
141
 
110
142
  /* forward declared, to avoid having to expose buf_internals.h here */
111
143
  struct WritebackContext;
@@ -133,6 +165,10 @@ extern PGDLLIMPORT bool track_io_timing;
133
165
  extern PGDLLIMPORT int effective_io_concurrency;
134
166
  extern PGDLLIMPORT int maintenance_io_concurrency;
135
167
 
168
+ #define MAX_IO_COMBINE_LIMIT PG_IOV_MAX
169
+ #define DEFAULT_IO_COMBINE_LIMIT Min(MAX_IO_COMBINE_LIMIT, (128 * 1024) / BLCKSZ)
170
+ extern PGDLLIMPORT int io_combine_limit;
171
+
136
172
  extern PGDLLIMPORT int checkpoint_flush_after;
137
173
  extern PGDLLIMPORT int backend_flush_after;
138
174
  extern PGDLLIMPORT int bgwriter_flush_after;
@@ -177,8 +213,22 @@ extern Buffer ReadBufferWithoutRelcache(RelFileLocator rlocator,
177
213
  ForkNumber forkNum, BlockNumber blockNum,
178
214
  ReadBufferMode mode, BufferAccessStrategy strategy,
179
215
  bool permanent);
216
+
217
+ extern bool StartReadBuffer(ReadBuffersOperation *operation,
218
+ Buffer *buffer,
219
+ BlockNumber blocknum,
220
+ int flags);
221
+ extern bool StartReadBuffers(ReadBuffersOperation *operation,
222
+ Buffer *buffers,
223
+ BlockNumber blockNum,
224
+ int *nblocks,
225
+ int flags);
226
+ extern void WaitReadBuffers(ReadBuffersOperation *operation);
227
+
180
228
  extern void ReleaseBuffer(Buffer buffer);
181
229
  extern void UnlockReleaseBuffer(Buffer buffer);
230
+ extern bool BufferIsExclusiveLocked(Buffer buffer);
231
+ extern bool BufferIsDirty(Buffer buffer);
182
232
  extern void MarkBufferDirty(Buffer buffer);
183
233
  extern void IncrBufferRefCount(Buffer buffer);
184
234
  extern void CheckBufferIsPinnedOnce(Buffer buffer);
@@ -205,7 +255,7 @@ extern Buffer ExtendBufferedRelTo(BufferManagerRelation bmr,
205
255
 
206
256
  extern void InitBufferPoolAccess(void);
207
257
  extern void AtEOXact_Buffers(bool isCommit);
208
- extern void PrintBufferLeakWarning(Buffer buffer);
258
+ extern char *DebugPrintBufferRefcount(Buffer buffer);
209
259
  extern void CheckPointBuffers(int flags);
210
260
  extern BlockNumber BufferGetBlockNumber(Buffer buffer);
211
261
  extern BlockNumber RelationGetNumberOfBlocksInFork(Relation relation,
@@ -246,11 +296,12 @@ extern bool ConditionalLockBufferForCleanup(Buffer buffer);
246
296
  extern bool IsBufferCleanupOK(Buffer buffer);
247
297
  extern bool HoldingBufferPinThatDelaysRecovery(void);
248
298
 
249
- extern void AbortBufferIO(Buffer buffer);
250
-
251
299
  extern bool BgBufferSync(struct WritebackContext *wb_context);
252
300
 
253
- extern void TestForOldSnapshot_impl(Snapshot snapshot, Relation relation);
301
+ extern void LimitAdditionalPins(uint32 *additional_pins);
302
+ extern void LimitAdditionalLocalPins(uint32 *additional_pins);
303
+
304
+ extern bool EvictUnpinnedBuffer(Buffer buf);
254
305
 
255
306
  /* in buf_init.c */
256
307
  extern void InitBufferPool(void);
@@ -265,6 +316,7 @@ extern BufferAccessStrategy GetAccessStrategy(BufferAccessStrategyType btype);
265
316
  extern BufferAccessStrategy GetAccessStrategyWithSize(BufferAccessStrategyType btype,
266
317
  int ring_size_kb);
267
318
  extern int GetAccessStrategyBufferCount(BufferAccessStrategy strategy);
319
+ extern int GetAccessStrategyPinLimit(BufferAccessStrategy strategy);
268
320
 
269
321
  extern void FreeAccessStrategy(BufferAccessStrategy strategy);
270
322
 
@@ -347,9 +399,6 @@ BufferGetPageSize(Buffer buffer)
347
399
  /*
348
400
  * BufferGetPage
349
401
  * Returns the page associated with a buffer.
350
- *
351
- * When this is called as part of a scan, there may be a need for a nearby
352
- * call to TestForOldSnapshot(). See the definition of that for details.
353
402
  */
354
403
  static inline Page
355
404
  BufferGetPage(Buffer buffer)
@@ -357,37 +406,6 @@ BufferGetPage(Buffer buffer)
357
406
  return (Page) BufferGetBlock(buffer);
358
407
  }
359
408
 
360
- /*
361
- * Check whether the given snapshot is too old to have safely read the given
362
- * page from the given table. If so, throw a "snapshot too old" error.
363
- *
364
- * This test generally needs to be performed after every BufferGetPage() call
365
- * that is executed as part of a scan. It is not needed for calls made for
366
- * modifying the page (for example, to position to the right place to insert a
367
- * new index tuple or for vacuuming). It may also be omitted where calls to
368
- * lower-level functions will have already performed the test.
369
- *
370
- * Note that a NULL snapshot argument is allowed and causes a fast return
371
- * without error; this is to support call sites which can be called from
372
- * either scans or index modification areas.
373
- *
374
- * For best performance, keep the tests that are fastest and/or most likely to
375
- * exclude a page from old snapshot testing near the front.
376
- */
377
- static inline void
378
- TestForOldSnapshot(Snapshot snapshot, Relation relation, Page page)
379
- {
380
- Assert(relation != NULL);
381
-
382
- if (old_snapshot_threshold >= 0
383
- && (snapshot) != NULL
384
- && ((snapshot)->snapshot_type == SNAPSHOT_MVCC
385
- || (snapshot)->snapshot_type == SNAPSHOT_TOAST)
386
- && !XLogRecPtrIsInvalid((snapshot)->lsn)
387
- && PageGetLSN(page) > (snapshot)->lsn)
388
- TestForOldSnapshot_impl(snapshot, relation);
389
- }
390
-
391
409
  #endif /* FRONTEND */
392
410
 
393
411
  #endif /* BUFMGR_H */
@@ -4,7 +4,7 @@
4
4
  * Standard POSTGRES buffer page 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/bufpage.h
@@ -12,7 +12,7 @@
12
12
  * can be canceled prior to the fulfillment of the condition) and do not
13
13
  * use pointers internally (so that they are safe to use within DSMs).
14
14
  *
15
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
15
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
16
16
  * Portions Copyright (c) 1994, Regents of the University of California
17
17
  *
18
18
  * src/include/storage/condition_variable.h
@@ -3,7 +3,7 @@
3
3
  * dsm.h
4
4
  * manage dynamic shared memory segments
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/storage/dsm.h
@@ -3,7 +3,7 @@
3
3
  * dsm_impl.h
4
4
  * low-level dynamic shared memory primitives
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/storage/dsm_impl.h
@@ -63,7 +63,7 @@ typedef enum
63
63
  DSM_OP_CREATE,
64
64
  DSM_OP_ATTACH,
65
65
  DSM_OP_DETACH,
66
- DSM_OP_DESTROY
66
+ DSM_OP_DESTROY,
67
67
  } dsm_op;
68
68
 
69
69
  /* Create, attach to, detach from, resize, or destroy a segment. */
@@ -4,7 +4,7 @@
4
4
  * Virtual file descriptor 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/fd.h
@@ -15,7 +15,7 @@
15
15
  /*
16
16
  * calls:
17
17
  *
18
- * File {Close, Read, Write, Size, Sync}
18
+ * File {Close, Read, ReadV, Write, WriteV, Size, Sync}
19
19
  * {Path Name Open, Allocate, Free} File
20
20
  *
21
21
  * These are NOT JUST RENAMINGS OF THE UNIX ROUTINES.
@@ -43,15 +43,11 @@
43
43
  #ifndef FD_H
44
44
  #define FD_H
45
45
 
46
+ #include "port/pg_iovec.h"
47
+
46
48
  #include <dirent.h>
47
49
  #include <fcntl.h>
48
50
 
49
- typedef enum RecoveryInitSyncMethod
50
- {
51
- RECOVERY_INIT_SYNC_METHOD_FSYNC,
52
- RECOVERY_INIT_SYNC_METHOD_SYNCFS
53
- } RecoveryInitSyncMethod;
54
-
55
51
  typedef int File;
56
52
 
57
53
 
@@ -111,8 +107,8 @@ extern File PathNameOpenFilePerm(const char *fileName, int fileFlags, mode_t fil
111
107
  extern File OpenTemporaryFile(bool interXact);
112
108
  extern void FileClose(File file);
113
109
  extern int FilePrefetch(File file, off_t offset, off_t amount, uint32 wait_event_info);
114
- extern int FileRead(File file, void *buffer, size_t amount, off_t offset, uint32 wait_event_info);
115
- extern int FileWrite(File file, const void *buffer, size_t amount, off_t offset, uint32 wait_event_info);
110
+ extern ssize_t FileReadV(File file, const struct iovec *iov, int iovcnt, off_t offset, uint32 wait_event_info);
111
+ extern ssize_t FileWriteV(File file, const struct iovec *iov, int iovcnt, off_t offset, uint32 wait_event_info);
116
112
  extern int FileSync(File file, uint32 wait_event_info);
117
113
  extern int FileZero(File file, off_t offset, off_t amount, uint32 wait_event_info);
118
114
  extern int FileFallocate(File file, off_t offset, off_t amount, uint32 wait_event_info);
@@ -186,6 +182,7 @@ extern int pg_fsync(int fd);
186
182
  extern int pg_fsync_no_writethrough(int fd);
187
183
  extern int pg_fsync_writethrough(int fd);
188
184
  extern int pg_fdatasync(int fd);
185
+ extern bool pg_file_exists(const char *name);
189
186
  extern void pg_flush_data(int fd, off_t offset, off_t nbytes);
190
187
  extern int pg_truncate(const char *path, off_t length);
191
188
  extern void fsync_fname(const char *fname, bool isdir);
@@ -195,8 +192,28 @@ extern int durable_unlink(const char *fname, int elevel);
195
192
  extern void SyncDataDirectory(void);
196
193
  extern int data_sync_elevel(int elevel);
197
194
 
198
- /* Filename components */
199
- #define PG_TEMP_FILES_DIR "pgsql_tmp"
200
- #define PG_TEMP_FILE_PREFIX "pgsql_tmp"
195
+ static inline ssize_t
196
+ FileRead(File file, void *buffer, size_t amount, off_t offset,
197
+ uint32 wait_event_info)
198
+ {
199
+ struct iovec iov = {
200
+ .iov_base = buffer,
201
+ .iov_len = amount
202
+ };
203
+
204
+ return FileReadV(file, &iov, 1, offset, wait_event_info);
205
+ }
206
+
207
+ static inline ssize_t
208
+ FileWrite(File file, const void *buffer, size_t amount, off_t offset,
209
+ uint32 wait_event_info)
210
+ {
211
+ struct iovec iov = {
212
+ .iov_base = unconstify(void *, buffer),
213
+ .iov_len = amount
214
+ };
215
+
216
+ return FileWriteV(file, &iov, 1, offset, wait_event_info);
217
+ }
201
218
 
202
219
  #endif /* FD_H */
@@ -3,7 +3,7 @@
3
3
  * fileset.h
4
4
  * Management of named temporary files.
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/storage/fileset.h
@@ -8,7 +8,7 @@
8
8
  * exit-time cleanup for either a postmaster or a backend.
9
9
  *
10
10
  *
11
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
11
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
12
12
  * Portions Copyright (c) 1994, Regents of the University of California
13
13
  *
14
14
  * src/include/storage/ipc.h
@@ -79,6 +79,9 @@ extern PGDLLIMPORT shmem_startup_hook_type shmem_startup_hook;
79
79
 
80
80
  extern Size CalculateShmemSize(int *num_semaphores);
81
81
  extern void CreateSharedMemoryAndSemaphores(void);
82
+ #ifdef EXEC_BACKEND
83
+ extern void AttachSharedMemoryStructs(void);
84
+ #endif
82
85
  extern void InitializeShmemGUCs(void);
83
86
 
84
87
  #endif /* IPC_H */
@@ -4,7 +4,7 @@
4
4
  * POSTGRES disk item 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/item.h
@@ -4,7 +4,7 @@
4
4
  * Standard POSTGRES buffer page item identifier/line pointer 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/itemid.h
@@ -4,7 +4,7 @@
4
4
  * POSTGRES disk item pointer 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/itemptr.h
@@ -5,7 +5,7 @@
5
5
  * zillions of large objects (internal, external, jaquith, inversion).
6
6
  * Now we only support inversion.
7
7
  *
8
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
8
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
9
9
  * Portions Copyright (c) 1994, Regents of the University of California
10
10
  *
11
11
  * src/include/storage/large_object.h
@@ -90,7 +90,7 @@
90
90
  * efficient than using WaitLatch or WaitLatchOrSocket.
91
91
  *
92
92
  *
93
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
93
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
94
94
  * Portions Copyright (c) 1994, Regents of the University of California
95
95
  *
96
96
  * src/include/storage/latch.h
@@ -102,6 +102,8 @@
102
102
 
103
103
  #include <signal.h>
104
104
 
105
+ #include "utils/resowner.h"
106
+
105
107
  /*
106
108
  * Latch structure should be treated as opaque and only accessed through
107
109
  * the public functions. It is defined here to allow embedding Latches as
@@ -173,7 +175,7 @@ extern void SetLatch(Latch *latch);
173
175
  extern void ResetLatch(Latch *latch);
174
176
  extern void ShutdownLatchSupport(void);
175
177
 
176
- extern WaitEventSet *CreateWaitEventSet(MemoryContext context, int nevents);
178
+ extern WaitEventSet *CreateWaitEventSet(ResourceOwner resowner, int nevents);
177
179
  extern void FreeWaitEventSet(WaitEventSet *set);
178
180
  extern void FreeWaitEventSetAfterFork(WaitEventSet *set);
179
181
  extern int AddWaitEventToSet(WaitEventSet *set, uint32 events, pgsocket fd,
@@ -4,7 +4,7 @@
4
4
  * POSTGRES lock manager 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/lmgr.h
@@ -31,7 +31,7 @@ typedef enum XLTW_Oper
31
31
  XLTW_InsertIndex,
32
32
  XLTW_InsertIndexUnique,
33
33
  XLTW_FetchUpdated,
34
- XLTW_RecheckExclusionConstr
34
+ XLTW_RecheckExclusionConstr,
35
35
  } XLTW_Oper;
36
36
 
37
37
  extern void RelationInitLockInfo(Relation relation);
@@ -48,6 +48,8 @@ extern bool ConditionalLockRelation(Relation relation, LOCKMODE lockmode);
48
48
  extern void UnlockRelation(Relation relation, LOCKMODE lockmode);
49
49
  extern bool CheckRelationLockedByMe(Relation relation, LOCKMODE lockmode,
50
50
  bool orstronger);
51
+ extern bool CheckRelationOidLockedByMe(Oid relid, LOCKMODE lockmode,
52
+ bool orstronger);
51
53
  extern bool LockHasWaitersRelation(Relation relation, LOCKMODE lockmode);
52
54
 
53
55
  extern void LockRelationIdForSession(LockRelId *relid, LOCKMODE lockmode);
@@ -93,12 +95,16 @@ extern void SpeculativeInsertionWait(TransactionId xid, uint32 token);
93
95
  /* Lock a general object (other than a relation) of the current database */
94
96
  extern void LockDatabaseObject(Oid classid, Oid objid, uint16 objsubid,
95
97
  LOCKMODE lockmode);
98
+ extern bool ConditionalLockDatabaseObject(Oid classid, Oid objid,
99
+ uint16 objsubid, LOCKMODE lockmode);
96
100
  extern void UnlockDatabaseObject(Oid classid, Oid objid, uint16 objsubid,
97
101
  LOCKMODE lockmode);
98
102
 
99
103
  /* Lock a shared-across-databases object (other than a relation) */
100
104
  extern void LockSharedObject(Oid classid, Oid objid, uint16 objsubid,
101
105
  LOCKMODE lockmode);
106
+ extern bool ConditionalLockSharedObject(Oid classid, Oid objid, uint16 objsubid,
107
+ LOCKMODE lockmode);
102
108
  extern void UnlockSharedObject(Oid classid, Oid objid, uint16 objsubid,
103
109
  LOCKMODE lockmode);
104
110
 
@@ -4,7 +4,7 @@
4
4
  * POSTGRES low-level lock mechanism
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/lock.h
@@ -19,9 +19,9 @@
19
19
  #endif
20
20
 
21
21
  #include "lib/ilist.h"
22
- #include "storage/backendid.h"
23
22
  #include "storage/lockdefs.h"
24
23
  #include "storage/lwlock.h"
24
+ #include "storage/procnumber.h"
25
25
  #include "storage/shmem.h"
26
26
  #include "utils/timestamp.h"
27
27
 
@@ -42,7 +42,7 @@ extern PGDLLIMPORT bool Debug_deadlocks;
42
42
 
43
43
  /*
44
44
  * Top-level transactions are identified by VirtualTransactionIDs comprising
45
- * PGPROC fields backendId and lxid. For recovered prepared transactions, the
45
+ * PGPROC fields procNumber and lxid. For recovered prepared transactions, the
46
46
  * LocalTransactionId is an ordinary XID; LOCKTAG_VIRTUALTRANSACTION never
47
47
  * refers to that kind. These are guaranteed unique over the short term, but
48
48
  * will be reused after a database restart or XID wraparound; hence they
@@ -50,7 +50,7 @@ extern PGDLLIMPORT bool Debug_deadlocks;
50
50
  *
51
51
  * Note that struct VirtualTransactionId can not be assumed to be atomically
52
52
  * assignable as a whole. However, type LocalTransactionId is assumed to
53
- * be atomically assignable, and the backend ID doesn't change often enough
53
+ * be atomically assignable, and the proc number doesn't change often enough
54
54
  * to be a problem, so we can fetch or assign the two fields separately.
55
55
  * We deliberately refrain from using the struct within PGPROC, to prevent
56
56
  * coding errors from trying to use struct assignment with it; instead use
@@ -58,7 +58,7 @@ extern PGDLLIMPORT bool Debug_deadlocks;
58
58
  */
59
59
  typedef struct
60
60
  {
61
- BackendId backendId; /* backendId from PGPROC */
61
+ ProcNumber procNumber; /* proc number of the PGPROC */
62
62
  LocalTransactionId localTransactionId; /* lxid from PGPROC */
63
63
  } VirtualTransactionId;
64
64
 
@@ -67,16 +67,16 @@ typedef struct
67
67
  #define VirtualTransactionIdIsValid(vxid) \
68
68
  (LocalTransactionIdIsValid((vxid).localTransactionId))
69
69
  #define VirtualTransactionIdIsRecoveredPreparedXact(vxid) \
70
- ((vxid).backendId == InvalidBackendId)
70
+ ((vxid).procNumber == INVALID_PROC_NUMBER)
71
71
  #define VirtualTransactionIdEquals(vxid1, vxid2) \
72
- ((vxid1).backendId == (vxid2).backendId && \
72
+ ((vxid1).procNumber == (vxid2).procNumber && \
73
73
  (vxid1).localTransactionId == (vxid2).localTransactionId)
74
74
  #define SetInvalidVirtualTransactionId(vxid) \
75
- ((vxid).backendId = InvalidBackendId, \
75
+ ((vxid).procNumber = INVALID_PROC_NUMBER, \
76
76
  (vxid).localTransactionId = InvalidLocalTransactionId)
77
- #define GET_VXID_FROM_PGPROC(vxid, proc) \
78
- ((vxid).backendId = (proc).backendId, \
79
- (vxid).localTransactionId = (proc).lxid)
77
+ #define GET_VXID_FROM_PGPROC(vxid_dst, proc) \
78
+ ((vxid_dst).procNumber = (proc).vxid.procNumber, \
79
+ (vxid_dst).localTransactionId = (proc).vxid.lxid)
80
80
 
81
81
  /* MAX_LOCKMODES cannot be larger than the # of bits in LOCKMASK */
82
82
  #define MAX_LOCKMODES 10
@@ -145,7 +145,7 @@ typedef enum LockTagType
145
145
  LOCKTAG_OBJECT, /* non-relation database object */
146
146
  LOCKTAG_USERLOCK, /* reserved for old contrib/userlock code */
147
147
  LOCKTAG_ADVISORY, /* advisory user locks */
148
- LOCKTAG_APPLY_TRANSACTION /* transaction being applied on a logical
148
+ LOCKTAG_APPLY_TRANSACTION, /* transaction being applied on a logical
149
149
  * replication subscriber */
150
150
  } LockTagType;
151
151
 
@@ -233,7 +233,7 @@ typedef struct LOCKTAG
233
233
 
234
234
  /* ID info for a virtual transaction is its VirtualTransactionId */
235
235
  #define SET_LOCKTAG_VIRTUALTRANSACTION(locktag,vxid) \
236
- ((locktag).locktag_field1 = (vxid).backendId, \
236
+ ((locktag).locktag_field1 = (vxid).procNumber, \
237
237
  (locktag).locktag_field2 = (vxid).localTransactionId, \
238
238
  (locktag).locktag_field3 = 0, \
239
239
  (locktag).locktag_field4 = 0, \
@@ -454,8 +454,7 @@ typedef struct LockInstanceData
454
454
  LOCKTAG locktag; /* tag for locked object */
455
455
  LOCKMASK holdMask; /* locks held by this PGPROC */
456
456
  LOCKMODE waitLockMode; /* lock awaited by this PGPROC, if any */
457
- BackendId backend; /* backend ID of this PGPROC */
458
- LocalTransactionId lxid; /* local transaction ID of this PGPROC */
457
+ VirtualTransactionId vxid; /* virtual transaction ID of this PGPROC */
459
458
  TimestampTz waitStart; /* time at which this PGPROC started waiting
460
459
  * for lock */
461
460
  int pid; /* pid of this PGPROC */
@@ -502,7 +501,7 @@ typedef enum
502
501
  LOCKACQUIRE_NOT_AVAIL, /* lock not available, and dontWait=true */
503
502
  LOCKACQUIRE_OK, /* lock successfully acquired */
504
503
  LOCKACQUIRE_ALREADY_HELD, /* incremented count for lock already held */
505
- LOCKACQUIRE_ALREADY_CLEAR /* incremented count for lock already clear */
504
+ LOCKACQUIRE_ALREADY_CLEAR, /* incremented count for lock already clear */
506
505
  } LockAcquireResult;
507
506
 
508
507
  /* Deadlock states identified by DeadLockCheck() */
@@ -512,7 +511,7 @@ typedef enum
512
511
  DS_NO_DEADLOCK, /* no deadlock detected */
513
512
  DS_SOFT_DEADLOCK, /* deadlock avoided by queue rearrangement */
514
513
  DS_HARD_DEADLOCK, /* deadlock, no way out but ERROR */
515
- DS_BLOCKED_BY_AUTOVACUUM /* no deadlock; queue blocked by autovacuum
514
+ DS_BLOCKED_BY_AUTOVACUUM, /* no deadlock; queue blocked by autovacuum
516
515
  * worker */
517
516
  } DeadLockState;
518
517
 
@@ -540,7 +539,7 @@ typedef enum
540
539
  * used for a given lock group is determined by the group leader's pgprocno.
541
540
  */
542
541
  #define LockHashPartitionLockByProc(leader_pgproc) \
543
- LockHashPartitionLock((leader_pgproc)->pgprocno)
542
+ LockHashPartitionLock(GetNumberFromPGProc(leader_pgproc))
544
543
 
545
544
  /*
546
545
  * function prototypes
@@ -568,7 +567,8 @@ extern void LockReleaseAll(LOCKMETHODID lockmethodid, bool allLocks);
568
567
  extern void LockReleaseSession(LOCKMETHODID lockmethodid);
569
568
  extern void LockReleaseCurrentOwner(LOCALLOCK **locallocks, int nlocks);
570
569
  extern void LockReassignCurrentOwner(LOCALLOCK **locallocks, int nlocks);
571
- extern bool LockHeldByMe(const LOCKTAG *locktag, LOCKMODE lockmode);
570
+ extern bool LockHeldByMe(const LOCKTAG *locktag,
571
+ LOCKMODE lockmode, bool orstronger);
572
572
  #ifdef USE_ASSERT_CHECKING
573
573
  extern HTAB *GetLockMethodLocalHash(void);
574
574
  #endif
@@ -7,7 +7,7 @@
7
7
  * contains definition that have to (indirectly) be available when included by
8
8
  * FRONTEND code.
9
9
  *
10
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
10
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
11
11
  * Portions Copyright (c) 1994, Regents of the University of California
12
12
  *
13
13
  * src/include/storage/lockdefs.h
@@ -4,7 +4,7 @@
4
4
  * Lightweight lock manager
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/lwlock.h
@@ -19,6 +19,7 @@
19
19
  #endif
20
20
 
21
21
  #include "port/atomics.h"
22
+ #include "storage/lwlocknames.h"
22
23
  #include "storage/proclist_types.h"
23
24
 
24
25
  struct PGPROC;
@@ -82,9 +83,6 @@ typedef struct NamedLWLockTranche
82
83
  extern PGDLLIMPORT NamedLWLockTranche *NamedLWLockTrancheArray;
83
84
  extern PGDLLIMPORT int NamedLWLockTrancheRequests;
84
85
 
85
- /* Names for fixed lwlocks */
86
- #include "storage/lwlocknames.h"
87
-
88
86
  /*
89
87
  * It's a bit odd to declare NUM_BUFFER_PARTITIONS and NUM_LOCK_PARTITIONS
90
88
  * here, but we need them to figure out offsets within MainLWLockArray, and
@@ -115,7 +113,7 @@ typedef enum LWLockMode
115
113
  {
116
114
  LW_EXCLUSIVE,
117
115
  LW_SHARED,
118
- LW_WAIT_UNTIL_FREE /* A special mode used in PGPROC->lwWaitMode,
116
+ LW_WAIT_UNTIL_FREE, /* A special mode used in PGPROC->lwWaitMode,
119
117
  * when waiting for lock to become free. Not
120
118
  * to be used as LWLockAcquire argument */
121
119
  } LWLockMode;
@@ -129,14 +127,14 @@ extern bool LWLockAcquire(LWLock *lock, LWLockMode mode);
129
127
  extern bool LWLockConditionalAcquire(LWLock *lock, LWLockMode mode);
130
128
  extern bool LWLockAcquireOrWait(LWLock *lock, LWLockMode mode);
131
129
  extern void LWLockRelease(LWLock *lock);
132
- extern void LWLockReleaseClearVar(LWLock *lock, uint64 *valptr, uint64 val);
130
+ extern void LWLockReleaseClearVar(LWLock *lock, pg_atomic_uint64 *valptr, uint64 val);
133
131
  extern void LWLockReleaseAll(void);
134
132
  extern bool LWLockHeldByMe(LWLock *lock);
135
133
  extern bool LWLockAnyHeldByMe(LWLock *lock, int nlocks, size_t stride);
136
134
  extern bool LWLockHeldByMeInMode(LWLock *lock, LWLockMode mode);
137
135
 
138
- extern bool LWLockWaitForVar(LWLock *lock, uint64 *valptr, uint64 oldval, uint64 *newval);
139
- extern void LWLockUpdateVar(LWLock *lock, uint64 *valptr, uint64 val);
136
+ extern bool LWLockWaitForVar(LWLock *lock, pg_atomic_uint64 *valptr, uint64 oldval, uint64 *newval);
137
+ extern void LWLockUpdateVar(LWLock *lock, pg_atomic_uint64 *valptr, uint64 val);
140
138
 
141
139
  extern Size LWLockShmemSize(void);
142
140
  extern void CreateLWLocks(void);
@@ -207,7 +205,17 @@ typedef enum BuiltinTrancheIds
207
205
  LWTRANCHE_PGSTATS_DATA,
208
206
  LWTRANCHE_LAUNCHER_DSA,
209
207
  LWTRANCHE_LAUNCHER_HASH,
210
- LWTRANCHE_FIRST_USER_DEFINED
208
+ LWTRANCHE_DSM_REGISTRY_DSA,
209
+ LWTRANCHE_DSM_REGISTRY_HASH,
210
+ LWTRANCHE_COMMITTS_SLRU,
211
+ LWTRANCHE_MULTIXACTMEMBER_SLRU,
212
+ LWTRANCHE_MULTIXACTOFFSET_SLRU,
213
+ LWTRANCHE_NOTIFY_SLRU,
214
+ LWTRANCHE_SERIAL_SLRU,
215
+ LWTRANCHE_SUBTRANS_SLRU,
216
+ LWTRANCHE_XACT_SLRU,
217
+ LWTRANCHE_PARALLEL_VACUUM_DSA,
218
+ LWTRANCHE_FIRST_USER_DEFINED,
211
219
  } BuiltinTrancheIds;
212
220
 
213
221
  /*