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
@@ -1,4 +1,4 @@
1
- /* autogenerated from src/backend/storage/lmgr/lwlocknames.txt, do not edit */
1
+ /* autogenerated from src/include/storage/lwlocklist.h, do not edit */
2
2
  /* there is deliberately not an #ifndef LWLOCKNAMES_H here */
3
3
 
4
4
  #define ShmemIndexLock (&MainLWLockArray[1].lock)
@@ -10,11 +10,7 @@
10
10
  #define WALBufMappingLock (&MainLWLockArray[7].lock)
11
11
  #define WALWriteLock (&MainLWLockArray[8].lock)
12
12
  #define ControlFileLock (&MainLWLockArray[9].lock)
13
- #define XactSLRULock (&MainLWLockArray[11].lock)
14
- #define SubtransSLRULock (&MainLWLockArray[12].lock)
15
13
  #define MultiXactGenLock (&MainLWLockArray[13].lock)
16
- #define MultiXactOffsetSLRULock (&MainLWLockArray[14].lock)
17
- #define MultiXactMemberSLRULock (&MainLWLockArray[15].lock)
18
14
  #define RelCacheInitLock (&MainLWLockArray[16].lock)
19
15
  #define CheckpointerCommLock (&MainLWLockArray[17].lock)
20
16
  #define TwoPhaseStateLock (&MainLWLockArray[18].lock)
@@ -25,26 +21,27 @@
25
21
  #define AutovacuumScheduleLock (&MainLWLockArray[23].lock)
26
22
  #define SyncScanLock (&MainLWLockArray[24].lock)
27
23
  #define RelationMappingLock (&MainLWLockArray[25].lock)
28
- #define NotifySLRULock (&MainLWLockArray[26].lock)
29
24
  #define NotifyQueueLock (&MainLWLockArray[27].lock)
30
25
  #define SerializableXactHashLock (&MainLWLockArray[28].lock)
31
26
  #define SerializableFinishedListLock (&MainLWLockArray[29].lock)
32
27
  #define SerializablePredicateListLock (&MainLWLockArray[30].lock)
33
- #define SerialSLRULock (&MainLWLockArray[31].lock)
34
28
  #define SyncRepLock (&MainLWLockArray[32].lock)
35
29
  #define BackgroundWorkerLock (&MainLWLockArray[33].lock)
36
30
  #define DynamicSharedMemoryControlLock (&MainLWLockArray[34].lock)
37
31
  #define AutoFileLock (&MainLWLockArray[35].lock)
38
32
  #define ReplicationSlotAllocationLock (&MainLWLockArray[36].lock)
39
33
  #define ReplicationSlotControlLock (&MainLWLockArray[37].lock)
40
- #define CommitTsSLRULock (&MainLWLockArray[38].lock)
41
34
  #define CommitTsLock (&MainLWLockArray[39].lock)
42
35
  #define ReplicationOriginLock (&MainLWLockArray[40].lock)
43
36
  #define MultiXactTruncationLock (&MainLWLockArray[41].lock)
44
- #define OldSnapshotTimeMapLock (&MainLWLockArray[42].lock)
45
37
  #define LogicalRepWorkerLock (&MainLWLockArray[43].lock)
46
38
  #define XactTruncationLock (&MainLWLockArray[44].lock)
47
39
  #define WrapLimitsVacuumLock (&MainLWLockArray[46].lock)
48
40
  #define NotifyQueueTailLock (&MainLWLockArray[47].lock)
41
+ #define WaitEventCustomLock (&MainLWLockArray[48].lock)
42
+ #define WALSummarizerLock (&MainLWLockArray[49].lock)
43
+ #define DSMRegistryLock (&MainLWLockArray[50].lock)
44
+ #define InjectionPointLock (&MainLWLockArray[51].lock)
45
+ #define SerialControlLock (&MainLWLockArray[52].lock)
49
46
 
50
- #define NUM_INDIVIDUAL_LWLOCKS 48
47
+ #define NUM_INDIVIDUAL_LWLOCKS 53
@@ -4,7 +4,7 @@
4
4
  * POSTGRES disk "offset" 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/off.h
@@ -10,7 +10,7 @@
10
10
  * be provided by each port.
11
11
  *
12
12
  *
13
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
13
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
14
14
  * Portions Copyright (c) 1994, Regents of the University of California
15
15
  *
16
16
  * src/include/storage/pg_sema.h
@@ -14,7 +14,7 @@
14
14
  * only one ID number.
15
15
  *
16
16
  *
17
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
17
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
18
18
  * Portions Copyright (c) 1994, Regents of the University of California
19
19
  *
20
20
  * src/include/storage/pg_shmem.h
@@ -46,12 +46,13 @@ extern PGDLLIMPORT int shared_memory_type;
46
46
  extern PGDLLIMPORT int huge_pages;
47
47
  extern PGDLLIMPORT int huge_page_size;
48
48
 
49
- /* Possible values for huge_pages */
49
+ /* Possible values for huge_pages and huge_pages_status */
50
50
  typedef enum
51
51
  {
52
52
  HUGE_PAGES_OFF,
53
53
  HUGE_PAGES_ON,
54
- HUGE_PAGES_TRY
54
+ HUGE_PAGES_TRY, /* only for huge_pages */
55
+ HUGE_PAGES_UNKNOWN, /* only for huge_pages_status */
55
56
  } HugePagesType;
56
57
 
57
58
  /* Possible values for shared_memory_type */
@@ -59,7 +60,7 @@ typedef enum
59
60
  {
60
61
  SHMEM_TYPE_WINDOWS,
61
62
  SHMEM_TYPE_SYSV,
62
- SHMEM_TYPE_MMAP
63
+ SHMEM_TYPE_MMAP,
63
64
  } PGShmemType;
64
65
 
65
66
  #ifndef WIN32
@@ -4,7 +4,7 @@
4
4
  * routines for signaling between the postmaster and its child processes
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/pmsignal.h
@@ -51,7 +51,7 @@ typedef enum
51
51
  {
52
52
  PMQUIT_NOT_SENT = 0, /* postmaster hasn't sent SIGQUIT */
53
53
  PMQUIT_FOR_CRASH, /* some other backend bought the farm */
54
- PMQUIT_FOR_STOP /* immediate stop was commanded */
54
+ PMQUIT_FOR_STOP, /* immediate stop was commanded */
55
55
  } QuitSignalReason;
56
56
 
57
57
  /* PMSignalData is an opaque struct, details known only within pmsignal.c */
@@ -4,7 +4,7 @@
4
4
  * POSTGRES public predicate locking 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/predicate.h
@@ -26,10 +26,6 @@ extern PGDLLIMPORT int max_predicate_locks_per_xact;
26
26
  extern PGDLLIMPORT int max_predicate_locks_per_relation;
27
27
  extern PGDLLIMPORT int max_predicate_locks_per_page;
28
28
 
29
-
30
- /* Number of SLRU buffers to use for Serial SLRU */
31
- #define NUM_SERIAL_BUFFERS 16
32
-
33
29
  /*
34
30
  * A handle used for sharing SERIALIZABLEXACT objects between the participants
35
31
  * in a parallel query.
@@ -4,7 +4,7 @@
4
4
  * per-process shared memory data structures
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/proc.h
@@ -21,6 +21,7 @@
21
21
  #include "storage/lock.h"
22
22
  #include "storage/pg_sema.h"
23
23
  #include "storage/proclist_types.h"
24
+ #include "storage/procnumber.h"
24
25
 
25
26
  /*
26
27
  * Each backend advertises up to PGPROC_MAX_CACHED_SUBXIDS TransactionIds
@@ -84,12 +85,6 @@ struct XidCache
84
85
  */
85
86
  #define FP_LOCK_SLOTS_PER_BACKEND 16
86
87
 
87
- /*
88
- * An invalid pgprocno. Must be larger than the maximum number of PGPROC
89
- * structures we could possibly have. See comments for MAX_BACKENDS.
90
- */
91
- #define INVALID_PGPROCNO PG_INT32_MAX
92
-
93
88
  /*
94
89
  * Flags for PGPROC.delayChkptFlags
95
90
  *
@@ -186,21 +181,31 @@ struct PGPROC
186
181
  * vacuum must not remove tuples deleted by
187
182
  * xid >= xmin ! */
188
183
 
189
- LocalTransactionId lxid; /* local id of top-level transaction currently
190
- * being executed by this proc, if running;
191
- * else InvalidLocalTransactionId */
192
184
  int pid; /* Backend's process ID; 0 if prepared xact */
193
185
 
194
186
  int pgxactoff; /* offset into various ProcGlobal->arrays with
195
187
  * data mirrored from this PGPROC */
196
188
 
197
- int pgprocno; /* Number of this PGPROC in
198
- * ProcGlobal->allProcs array. This is set
199
- * once by InitProcGlobal().
200
- * ProcGlobal->allProcs[n].pgprocno == n */
189
+ /*
190
+ * Currently running top-level transaction's virtual xid. Together these
191
+ * form a VirtualTransactionId, but we don't use that struct because this
192
+ * is not atomically assignable as whole, and we want to enforce code to
193
+ * consider both parts separately. See comments at VirtualTransactionId.
194
+ */
195
+ struct
196
+ {
197
+ ProcNumber procNumber; /* For regular backends, equal to
198
+ * GetNumberFromPGProc(proc). For prepared
199
+ * xacts, ID of the original backend that
200
+ * processed the transaction. For unused
201
+ * PGPROC entries, INVALID_PROC_NUMBER. */
202
+ LocalTransactionId lxid; /* local id of top-level transaction
203
+ * currently * being executed by this
204
+ * proc, if running; else
205
+ * InvalidLocalTransactionId */
206
+ } vxid;
201
207
 
202
208
  /* These fields are zero while a backend is still starting up: */
203
- BackendId backendId; /* This backend's backend ID (if assigned) */
204
209
  Oid databaseId; /* OID of database this backend is using */
205
210
  Oid roleId; /* OID of role using this backend */
206
211
 
@@ -281,7 +286,7 @@ struct PGPROC
281
286
  TransactionId clogGroupMemberXid; /* transaction id of clog group member */
282
287
  XidStatus clogGroupMemberXidStatus; /* transaction status of clog
283
288
  * group member */
284
- int clogGroupMemberPage; /* clog page corresponding to
289
+ int64 clogGroupMemberPage; /* clog page corresponding to
285
290
  * transaction id of clog group member */
286
291
  XLogRecPtr clogGroupMemberLsn; /* WAL location of commit record for clog
287
292
  * group member */
@@ -308,6 +313,19 @@ struct PGPROC
308
313
 
309
314
  extern PGDLLIMPORT PGPROC *MyProc;
310
315
 
316
+ /* Proc number of this backend. Equal to GetNumberFromPGProc(MyProc). */
317
+ extern PGDLLIMPORT ProcNumber MyProcNumber;
318
+
319
+ /* Our parallel session leader, or INVALID_PROC_NUMBER if none */
320
+ extern PGDLLIMPORT ProcNumber ParallelLeaderProcNumber;
321
+
322
+ /*
323
+ * The proc number to use for our session's temp relations is normally our own,
324
+ * but parallel workers should use their leader's ID.
325
+ */
326
+ #define ProcNumberForTempRelations() \
327
+ (ParallelLeaderProcNumber == INVALID_PROC_NUMBER ? MyProcNumber : ParallelLeaderProcNumber)
328
+
311
329
  /*
312
330
  * There is one ProcGlobal struct for the whole database cluster.
313
331
  *
@@ -410,24 +428,29 @@ extern PGDLLIMPORT PROC_HDR *ProcGlobal;
410
428
 
411
429
  extern PGDLLIMPORT PGPROC *PreparedXactProcs;
412
430
 
413
- /* Accessor for PGPROC given a pgprocno. */
431
+ /*
432
+ * Accessors for getting PGPROC given a ProcNumber and vice versa.
433
+ */
414
434
  #define GetPGProcByNumber(n) (&ProcGlobal->allProcs[(n)])
435
+ #define GetNumberFromPGProc(proc) ((proc) - &ProcGlobal->allProcs[0])
415
436
 
416
437
  /*
417
438
  * We set aside some extra PGPROC structures for auxiliary processes,
418
439
  * ie things that aren't full-fledged backends but need shmem access.
419
440
  *
420
- * Background writer, checkpointer, WAL writer and archiver run during normal
421
- * operation. Startup process and WAL receiver also consume 2 slots, but WAL
422
- * writer is launched only after startup has exited, so we only need 5 slots.
441
+ * Background writer, checkpointer, WAL writer, WAL summarizer, and archiver
442
+ * run during normal operation. Startup process and WAL receiver also consume
443
+ * 2 slots, but WAL writer is launched only after startup has exited, so we
444
+ * only need 6 slots.
423
445
  */
424
- #define NUM_AUXILIARY_PROCS 5
446
+ #define NUM_AUXILIARY_PROCS 6
425
447
 
426
448
  /* configurable options */
427
449
  extern PGDLLIMPORT int DeadlockTimeout;
428
450
  extern PGDLLIMPORT int StatementTimeout;
429
451
  extern PGDLLIMPORT int LockTimeout;
430
452
  extern PGDLLIMPORT int IdleInTransactionSessionTimeout;
453
+ extern PGDLLIMPORT int TransactionTimeout;
431
454
  extern PGDLLIMPORT int IdleSessionTimeout;
432
455
  extern PGDLLIMPORT bool log_lock_waits;
433
456
 
@@ -448,7 +471,9 @@ extern int GetStartupBufferPinWaitBufId(void);
448
471
  extern bool HaveNFreeProcs(int n, int *nfree);
449
472
  extern void ProcReleaseLocks(bool isCommit);
450
473
 
451
- extern ProcWaitStatus ProcSleep(LOCALLOCK *locallock, LockMethod lockMethodTable);
474
+ extern ProcWaitStatus ProcSleep(LOCALLOCK *locallock,
475
+ LockMethod lockMethodTable,
476
+ bool dontWait);
452
477
  extern void ProcWakeup(PGPROC *proc, ProcWaitStatus waitStatus);
453
478
  extern void ProcLockWakeup(LockMethod lockMethodTable, LOCK *lock);
454
479
  extern void CheckDeadLockAlert(void);
@@ -456,7 +481,7 @@ extern bool IsWaitingForLock(void);
456
481
  extern void LockErrorCleanup(void);
457
482
 
458
483
  extern void ProcWaitForSignal(uint32 wait_event_info);
459
- extern void ProcSendSignal(int pgprocno);
484
+ extern void ProcSendSignal(ProcNumber procNumber);
460
485
 
461
486
  extern PGPROC *AuxiliaryPidGetProc(int pid);
462
487
 
@@ -4,7 +4,7 @@
4
4
  * POSTGRES process array 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/procarray.h
@@ -64,6 +64,10 @@ extern VirtualTransactionId *GetVirtualXIDsDelayingChkpt(int *nvxids, int type);
64
64
  extern bool HaveVirtualXIDsDelayingChkpt(VirtualTransactionId *vxids,
65
65
  int nvxids, int type);
66
66
 
67
+ extern PGPROC *ProcNumberGetProc(int procNumber);
68
+ extern void ProcNumberGetTransactionIds(int procNumber, TransactionId *xid,
69
+ TransactionId *xmin, int *nsubxid,
70
+ bool *overflowed);
67
71
  extern PGPROC *BackendPidGetProc(int pid);
68
72
  extern PGPROC *BackendPidGetProcWithLock(int pid);
69
73
  extern int BackendXidGetPid(TransactionId xid);
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * See proclist.h for functions that operate on these types.
7
7
  *
8
- * Portions Copyright (c) 2016-2023, PostgreSQL Global Development Group
8
+ * Portions Copyright (c) 2016-2024, PostgreSQL Global Development Group
9
9
  *
10
10
  * IDENTIFICATION
11
11
  * src/include/storage/proclist_types.h
@@ -15,28 +15,30 @@
15
15
  #ifndef PROCLIST_TYPES_H
16
16
  #define PROCLIST_TYPES_H
17
17
 
18
+ #include "storage/procnumber.h"
19
+
18
20
  /*
19
21
  * A node in a doubly-linked list of processes. The link fields contain
20
22
  * the 0-based PGPROC indexes of the next and previous process, or
21
- * INVALID_PGPROCNO in the next-link of the last node and the prev-link
23
+ * INVALID_PROC_NUMBER in the next-link of the last node and the prev-link
22
24
  * of the first node. A node that is currently not in any list
23
25
  * should have next == prev == 0; this is not a possible state for a node
24
26
  * that is in a list, because we disallow circularity.
25
27
  */
26
28
  typedef struct proclist_node
27
29
  {
28
- int next; /* pgprocno of the next PGPROC */
29
- int prev; /* pgprocno of the prev PGPROC */
30
+ ProcNumber next; /* pgprocno of the next PGPROC */
31
+ ProcNumber prev; /* pgprocno of the prev PGPROC */
30
32
  } proclist_node;
31
33
 
32
34
  /*
33
35
  * Header of a doubly-linked list of PGPROCs, identified by pgprocno.
34
- * An empty list is represented by head == tail == INVALID_PGPROCNO.
36
+ * An empty list is represented by head == tail == INVALID_PROC_NUMBER.
35
37
  */
36
38
  typedef struct proclist_head
37
39
  {
38
- int head; /* pgprocno of the head PGPROC */
39
- int tail; /* pgprocno of the tail PGPROC */
40
+ ProcNumber head; /* pgprocno of the head PGPROC */
41
+ ProcNumber tail; /* pgprocno of the tail PGPROC */
40
42
  } proclist_head;
41
43
 
42
44
  /*
@@ -44,8 +46,8 @@ typedef struct proclist_head
44
46
  */
45
47
  typedef struct proclist_mutable_iter
46
48
  {
47
- int cur; /* pgprocno of the current PGPROC */
48
- int next; /* pgprocno of the next PGPROC */
49
+ ProcNumber cur; /* pgprocno of the current PGPROC */
50
+ ProcNumber next; /* pgprocno of the next PGPROC */
49
51
  } proclist_mutable_iter;
50
52
 
51
53
  #endif /* PROCLIST_TYPES_H */
@@ -0,0 +1,43 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * procnumber.h
4
+ * definition of process number
5
+ *
6
+ *
7
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
8
+ * Portions Copyright (c) 1994, Regents of the University of California
9
+ *
10
+ * src/include/storage/procnumber.h
11
+ *
12
+ *-------------------------------------------------------------------------
13
+ */
14
+ #ifndef PROCNUMBER_H
15
+ #define PROCNUMBER_H
16
+
17
+ /*
18
+ * ProcNumber uniquely identifies an active backend or auxiliary process.
19
+ * It's assigned at backend startup after authentication, when the process
20
+ * adds itself to the proc array. It is an index into the proc array,
21
+ * starting from 0. Note that a ProcNumber can be reused for a different
22
+ * backend immediately after a backend exits.
23
+ */
24
+ typedef int ProcNumber;
25
+
26
+ #define INVALID_PROC_NUMBER (-1)
27
+
28
+ /*
29
+ * Proc number of this backend (same as GetNumberFromPGProc(MyProc))
30
+ */
31
+ extern PGDLLIMPORT ProcNumber MyProcNumber;
32
+
33
+ /* proc number of our parallel session leader, or INVALID_PROC_NUMBER if none */
34
+ extern PGDLLIMPORT ProcNumber ParallelLeaderProcNumber;
35
+
36
+ /*
37
+ * The ProcNumber to use for our session's temp relations is normally our own,
38
+ * but parallel workers should use their leader's proc number.
39
+ */
40
+ #define ProcNumberForTempRelations() \
41
+ (ParallelLeaderProcNumber == INVALID_PROC_NUMBER ? MyProcNumber : ParallelLeaderProcNumber)
42
+
43
+ #endif /* PROCNUMBER_H */
@@ -4,7 +4,7 @@
4
4
  * Routines for interprocess signaling
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/procsignal.h
@@ -14,7 +14,7 @@
14
14
  #ifndef PROCSIGNAL_H
15
15
  #define PROCSIGNAL_H
16
16
 
17
- #include "storage/backendid.h"
17
+ #include "storage/procnumber.h"
18
18
 
19
19
 
20
20
  /*
@@ -38,20 +38,22 @@ typedef enum
38
38
  PROCSIG_PARALLEL_APPLY_MESSAGE, /* Message from parallel apply workers */
39
39
 
40
40
  /* Recovery conflict reasons */
41
- PROCSIG_RECOVERY_CONFLICT_DATABASE,
41
+ PROCSIG_RECOVERY_CONFLICT_FIRST,
42
+ PROCSIG_RECOVERY_CONFLICT_DATABASE = PROCSIG_RECOVERY_CONFLICT_FIRST,
42
43
  PROCSIG_RECOVERY_CONFLICT_TABLESPACE,
43
44
  PROCSIG_RECOVERY_CONFLICT_LOCK,
44
45
  PROCSIG_RECOVERY_CONFLICT_SNAPSHOT,
45
46
  PROCSIG_RECOVERY_CONFLICT_LOGICALSLOT,
46
47
  PROCSIG_RECOVERY_CONFLICT_BUFFERPIN,
47
48
  PROCSIG_RECOVERY_CONFLICT_STARTUP_DEADLOCK,
49
+ PROCSIG_RECOVERY_CONFLICT_LAST = PROCSIG_RECOVERY_CONFLICT_STARTUP_DEADLOCK,
48
50
 
49
51
  NUM_PROCSIGNALS /* Must be last! */
50
52
  } ProcSignalReason;
51
53
 
52
54
  typedef enum
53
55
  {
54
- PROCSIGNAL_BARRIER_SMGRRELEASE /* ask smgr to close files */
56
+ PROCSIGNAL_BARRIER_SMGRRELEASE, /* ask smgr to close files */
55
57
  } ProcSignalBarrierType;
56
58
 
57
59
  /*
@@ -60,9 +62,9 @@ typedef enum
60
62
  extern Size ProcSignalShmemSize(void);
61
63
  extern void ProcSignalShmemInit(void);
62
64
 
63
- extern void ProcSignalInit(int pss_idx);
65
+ extern void ProcSignalInit(void);
64
66
  extern int SendProcSignal(pid_t pid, ProcSignalReason reason,
65
- BackendId backendId);
67
+ ProcNumber procNumber);
66
68
 
67
69
  extern uint64 EmitProcSignalBarrier(ProcSignalBarrierType type);
68
70
  extern void WaitForProcSignalBarrier(uint64 generation);
@@ -0,0 +1,65 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * read_stream.h
4
+ * Mechanism for accessing buffered relation data with look-ahead
5
+ *
6
+ *
7
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
8
+ * Portions Copyright (c) 1994, Regents of the University of California
9
+ *
10
+ * src/include/storage/read_stream.h
11
+ *
12
+ *-------------------------------------------------------------------------
13
+ */
14
+ #ifndef READ_STREAM_H
15
+ #define READ_STREAM_H
16
+
17
+ #include "storage/bufmgr.h"
18
+
19
+ /* Default tuning, reasonable for many users. */
20
+ #define READ_STREAM_DEFAULT 0x00
21
+
22
+ /*
23
+ * I/O streams that are performing maintenance work on behalf of potentially
24
+ * many users, and thus should be governed by maintenance_io_concurrency
25
+ * instead of effective_io_concurrency. For example, VACUUM or CREATE INDEX.
26
+ */
27
+ #define READ_STREAM_MAINTENANCE 0x01
28
+
29
+ /*
30
+ * We usually avoid issuing prefetch advice automatically when sequential
31
+ * access is detected, but this flag explicitly disables it, for cases that
32
+ * might not be correctly detected. Explicit advice is known to perform worse
33
+ * than letting the kernel (at least Linux) detect sequential access.
34
+ */
35
+ #define READ_STREAM_SEQUENTIAL 0x02
36
+
37
+ /*
38
+ * We usually ramp up from smaller reads to larger ones, to support users who
39
+ * don't know if it's worth reading lots of buffers yet. This flag disables
40
+ * that, declaring ahead of time that we'll be reading all available buffers.
41
+ */
42
+ #define READ_STREAM_FULL 0x04
43
+
44
+ struct ReadStream;
45
+ typedef struct ReadStream ReadStream;
46
+
47
+ /* Callback that returns the next block number to read. */
48
+ typedef BlockNumber (*ReadStreamBlockNumberCB) (ReadStream *stream,
49
+ void *callback_private_data,
50
+ void *per_buffer_data);
51
+
52
+ extern ReadStream *read_stream_begin_relation(int flags,
53
+ BufferAccessStrategy strategy,
54
+ Relation rel,
55
+ ForkNumber forknum,
56
+ ReadStreamBlockNumberCB callback,
57
+ void *callback_private_data,
58
+ size_t per_buffer_data_size);
59
+ extern Buffer read_stream_next_buffer(ReadStream *stream, void **per_buffer_data);
60
+ extern BlockNumber read_stream_next_block(ReadStream *stream,
61
+ BufferAccessStrategy *strategy);
62
+ extern void read_stream_reset(ReadStream *stream);
63
+ extern void read_stream_end(ReadStream *stream);
64
+
65
+ #endif /* READ_STREAM_H */
@@ -4,7 +4,7 @@
4
4
  * Physical access information for relations.
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/relfilelocator.h
@@ -15,14 +15,15 @@
15
15
  #define RELFILELOCATOR_H
16
16
 
17
17
  #include "common/relpath.h"
18
- #include "storage/backendid.h"
18
+ #include "storage/procnumber.h"
19
19
 
20
20
  /*
21
21
  * RelFileLocator must provide all that we need to know to physically access
22
- * a relation, with the exception of the backend ID, which can be provided
23
- * separately. Note, however, that a "physical" relation is comprised of
24
- * multiple files on the filesystem, as each fork is stored as a separate
25
- * file, and each fork can be divided into multiple segments. See md.c.
22
+ * a relation, with the exception of the backend's proc number, which can be
23
+ * provided separately. Note, however, that a "physical" relation is
24
+ * comprised of multiple files on the filesystem, as each fork is stored as
25
+ * a separate file, and each fork can be divided into multiple segments. See
26
+ * md.c.
26
27
  *
27
28
  * spcOid identifies the tablespace of the relation. It corresponds to
28
29
  * pg_tablespace.oid.
@@ -62,28 +63,28 @@ typedef struct RelFileLocator
62
63
  } RelFileLocator;
63
64
 
64
65
  /*
65
- * Augmenting a relfilelocator with the backend ID provides all the information
66
- * we need to locate the physical storage. The backend ID is InvalidBackendId
67
- * for regular relations (those accessible to more than one backend), or the
68
- * owning backend's ID for backend-local relations. Backend-local relations
69
- * are always transient and removed in case of a database crash; they are
70
- * never WAL-logged or fsync'd.
66
+ * Augmenting a relfilelocator with the backend's proc number provides all the
67
+ * information we need to locate the physical storage. 'backend' is
68
+ * INVALID_PROC_NUMBER for regular relations (those accessible to more than
69
+ * one backend), or the owning backend's proc number for backend-local
70
+ * relations. Backend-local relations are always transient and removed in
71
+ * case of a database crash; they are never WAL-logged or fsync'd.
71
72
  */
72
73
  typedef struct RelFileLocatorBackend
73
74
  {
74
75
  RelFileLocator locator;
75
- BackendId backend;
76
+ ProcNumber backend;
76
77
  } RelFileLocatorBackend;
77
78
 
78
79
  #define RelFileLocatorBackendIsTemp(rlocator) \
79
- ((rlocator).backend != InvalidBackendId)
80
+ ((rlocator).backend != INVALID_PROC_NUMBER)
80
81
 
81
82
  /*
82
83
  * Note: RelFileLocatorEquals and RelFileLocatorBackendEquals compare relNumber
83
84
  * first since that is most likely to be different in two unequal
84
85
  * RelFileLocators. It is probably redundant to compare spcOid if the other
85
86
  * fields are found equal, but do it anyway to be sure. Likewise for checking
86
- * the backend ID in RelFileLocatorBackendEquals.
87
+ * the backend number in RelFileLocatorBackendEquals.
87
88
  */
88
89
  #define RelFileLocatorEquals(locator1, locator2) \
89
90
  ((locator1).relNumber == (locator2).relNumber && \