pg_query 5.1.0 → 6.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (490) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +30 -0
  3. data/README.md +1 -1
  4. data/Rakefile +4 -4
  5. data/ext/pg_query/ext_symbols_freebsd.sym +1 -0
  6. data/ext/pg_query/ext_symbols_freebsd_with_ruby_abi_version.sym +2 -0
  7. data/ext/pg_query/ext_symbols_openbsd.sym +1 -0
  8. data/ext/pg_query/ext_symbols_openbsd_with_ruby_abi_version.sym +2 -0
  9. data/ext/pg_query/ext_symbols_with_ruby_abi_version.sym +2 -0
  10. data/ext/pg_query/extconf.rb +20 -6
  11. data/ext/pg_query/include/pg_query.h +4 -3
  12. data/ext/pg_query/include/pg_query_enum_defs.c +424 -154
  13. data/ext/pg_query/include/pg_query_fingerprint_conds.c +68 -4
  14. data/ext/pg_query/include/pg_query_fingerprint_defs.c +2952 -1845
  15. data/ext/pg_query/include/pg_query_outfuncs_conds.c +51 -3
  16. data/ext/pg_query/include/pg_query_outfuncs_defs.c +210 -23
  17. data/ext/pg_query/include/pg_query_readfuncs_conds.c +17 -1
  18. data/ext/pg_query/include/pg_query_readfuncs_defs.c +271 -52
  19. data/ext/pg_query/include/postgres/access/amapi.h +14 -3
  20. data/ext/pg_query/include/postgres/access/attmap.h +1 -1
  21. data/ext/pg_query/include/postgres/access/attnum.h +1 -1
  22. data/ext/pg_query/include/postgres/access/brin_internal.h +116 -0
  23. data/ext/pg_query/include/postgres/access/brin_tuple.h +112 -0
  24. data/ext/pg_query/include/postgres/access/clog.h +2 -3
  25. data/ext/pg_query/include/postgres/access/commit_ts.h +2 -3
  26. data/ext/pg_query/include/postgres/access/detoast.h +1 -1
  27. data/ext/pg_query/include/postgres/access/genam.h +17 -4
  28. data/ext/pg_query/include/postgres/access/gin.h +1 -1
  29. data/ext/pg_query/include/postgres/access/htup.h +1 -1
  30. data/ext/pg_query/include/postgres/access/htup_details.h +11 -11
  31. data/ext/pg_query/include/postgres/access/itup.h +3 -3
  32. data/ext/pg_query/include/postgres/access/parallel.h +1 -2
  33. data/ext/pg_query/include/postgres/access/printtup.h +1 -1
  34. data/ext/pg_query/include/postgres/access/relation.h +1 -1
  35. data/ext/pg_query/include/postgres/access/relscan.h +1 -1
  36. data/ext/pg_query/include/postgres/access/rmgrlist.h +1 -1
  37. data/ext/pg_query/include/postgres/access/sdir.h +1 -1
  38. data/ext/pg_query/include/postgres/access/skey.h +1 -1
  39. data/ext/pg_query/include/postgres/access/slru.h +218 -0
  40. data/ext/pg_query/include/postgres/access/stratnum.h +1 -1
  41. data/ext/pg_query/include/postgres/access/sysattr.h +1 -1
  42. data/ext/pg_query/include/postgres/access/table.h +1 -1
  43. data/ext/pg_query/include/postgres/access/tableam.h +35 -25
  44. data/ext/pg_query/include/postgres/access/tidstore.h +50 -0
  45. data/ext/pg_query/include/postgres/access/toast_compression.h +2 -2
  46. data/ext/pg_query/include/postgres/access/transam.h +50 -7
  47. data/ext/pg_query/include/postgres/access/tsmapi.h +1 -1
  48. data/ext/pg_query/include/postgres/access/tupconvert.h +1 -1
  49. data/ext/pg_query/include/postgres/access/tupdesc.h +5 -5
  50. data/ext/pg_query/include/postgres/access/tupmacs.h +1 -1
  51. data/ext/pg_query/include/postgres/access/twophase.h +2 -2
  52. data/ext/pg_query/include/postgres/access/xact.h +5 -5
  53. data/ext/pg_query/include/postgres/access/xlog.h +20 -12
  54. data/ext/pg_query/include/postgres/access/xlog_internal.h +4 -3
  55. data/ext/pg_query/include/postgres/access/xlogbackup.h +3 -1
  56. data/ext/pg_query/include/postgres/access/xlogdefs.h +5 -5
  57. data/ext/pg_query/include/postgres/access/xlogprefetcher.h +2 -2
  58. data/ext/pg_query/include/postgres/access/xlogreader.h +2 -2
  59. data/ext/pg_query/include/postgres/access/xlogrecord.h +3 -3
  60. data/ext/pg_query/include/postgres/access/xlogrecovery.h +4 -4
  61. data/ext/pg_query/include/postgres/archive/archive_module.h +9 -1
  62. data/ext/pg_query/include/postgres/c.h +32 -37
  63. data/ext/pg_query/include/postgres/catalog/catalog.h +3 -1
  64. data/ext/pg_query/include/postgres/catalog/catversion.h +2 -2
  65. data/ext/pg_query/include/postgres/catalog/dependency.h +17 -59
  66. data/ext/pg_query/include/postgres/catalog/genbki.h +12 -6
  67. data/ext/pg_query/include/postgres/catalog/index.h +22 -18
  68. data/ext/pg_query/include/postgres/catalog/indexing.h +1 -1
  69. data/ext/pg_query/include/postgres/catalog/namespace.h +18 -19
  70. data/ext/pg_query/include/postgres/catalog/objectaccess.h +2 -2
  71. data/ext/pg_query/include/postgres/catalog/objectaddress.h +5 -1
  72. data/ext/pg_query/include/postgres/catalog/pg_aggregate.h +4 -2
  73. data/ext/pg_query/include/postgres/catalog/pg_aggregate_d.h +1 -1
  74. data/ext/pg_query/include/postgres/catalog/pg_am.h +6 -3
  75. data/ext/pg_query/include/postgres/catalog/pg_am_d.h +1 -1
  76. data/ext/pg_query/include/postgres/catalog/pg_attribute.h +31 -14
  77. data/ext/pg_query/include/postgres/catalog/pg_attribute_d.h +3 -3
  78. data/ext/pg_query/include/postgres/catalog/pg_authid.h +6 -3
  79. data/ext/pg_query/include/postgres/catalog/pg_authid_d.h +2 -1
  80. data/ext/pg_query/include/postgres/catalog/pg_class.h +10 -5
  81. data/ext/pg_query/include/postgres/catalog/pg_class_d.h +4 -2
  82. data/ext/pg_query/include/postgres/catalog/pg_collation.h +11 -5
  83. data/ext/pg_query/include/postgres/catalog/pg_collation_d.h +5 -2
  84. data/ext/pg_query/include/postgres/catalog/pg_constraint.h +15 -10
  85. data/ext/pg_query/include/postgres/catalog/pg_constraint_d.h +2 -1
  86. data/ext/pg_query/include/postgres/catalog/pg_control.h +5 -3
  87. data/ext/pg_query/include/postgres/catalog/pg_conversion.h +8 -4
  88. data/ext/pg_query/include/postgres/catalog/pg_conversion_d.h +1 -1
  89. data/ext/pg_query/include/postgres/catalog/pg_database.h +9 -4
  90. data/ext/pg_query/include/postgres/catalog/pg_database_d.h +13 -12
  91. data/ext/pg_query/include/postgres/catalog/pg_depend.h +3 -3
  92. data/ext/pg_query/include/postgres/catalog/pg_depend_d.h +1 -1
  93. data/ext/pg_query/include/postgres/catalog/pg_event_trigger.h +6 -3
  94. data/ext/pg_query/include/postgres/catalog/pg_event_trigger_d.h +1 -1
  95. data/ext/pg_query/include/postgres/catalog/pg_index.h +5 -3
  96. data/ext/pg_query/include/postgres/catalog/pg_index_d.h +1 -1
  97. data/ext/pg_query/include/postgres/catalog/pg_language.h +6 -3
  98. data/ext/pg_query/include/postgres/catalog/pg_language_d.h +1 -1
  99. data/ext/pg_query/include/postgres/catalog/pg_namespace.h +6 -3
  100. data/ext/pg_query/include/postgres/catalog/pg_namespace_d.h +1 -1
  101. data/ext/pg_query/include/postgres/catalog/pg_opclass.h +6 -3
  102. data/ext/pg_query/include/postgres/catalog/pg_opclass_d.h +1 -1
  103. data/ext/pg_query/include/postgres/catalog/pg_operator.h +20 -3
  104. data/ext/pg_query/include/postgres/catalog/pg_operator_d.h +1 -1
  105. data/ext/pg_query/include/postgres/catalog/pg_opfamily.h +6 -3
  106. data/ext/pg_query/include/postgres/catalog/pg_opfamily_d.h +1 -1
  107. data/ext/pg_query/include/postgres/catalog/pg_partitioned_table.h +4 -2
  108. data/ext/pg_query/include/postgres/catalog/pg_partitioned_table_d.h +1 -1
  109. data/ext/pg_query/include/postgres/catalog/pg_proc.h +6 -3
  110. data/ext/pg_query/include/postgres/catalog/pg_proc_d.h +1 -1
  111. data/ext/pg_query/include/postgres/catalog/pg_publication.h +6 -3
  112. data/ext/pg_query/include/postgres/catalog/pg_publication_d.h +1 -1
  113. data/ext/pg_query/include/postgres/catalog/pg_replication_origin.h +6 -3
  114. data/ext/pg_query/include/postgres/catalog/pg_replication_origin_d.h +1 -1
  115. data/ext/pg_query/include/postgres/catalog/pg_statistic.h +10 -4
  116. data/ext/pg_query/include/postgres/catalog/pg_statistic_d.h +7 -3
  117. data/ext/pg_query/include/postgres/catalog/pg_statistic_ext.h +10 -7
  118. data/ext/pg_query/include/postgres/catalog/pg_statistic_ext_d.h +3 -3
  119. data/ext/pg_query/include/postgres/catalog/pg_transform.h +6 -3
  120. data/ext/pg_query/include/postgres/catalog/pg_transform_d.h +1 -1
  121. data/ext/pg_query/include/postgres/catalog/pg_trigger.h +4 -4
  122. data/ext/pg_query/include/postgres/catalog/pg_trigger_d.h +1 -1
  123. data/ext/pg_query/include/postgres/catalog/pg_ts_config.h +6 -3
  124. data/ext/pg_query/include/postgres/catalog/pg_ts_config_d.h +1 -1
  125. data/ext/pg_query/include/postgres/catalog/pg_ts_dict.h +6 -3
  126. data/ext/pg_query/include/postgres/catalog/pg_ts_dict_d.h +1 -1
  127. data/ext/pg_query/include/postgres/catalog/pg_ts_parser.h +6 -3
  128. data/ext/pg_query/include/postgres/catalog/pg_ts_parser_d.h +1 -1
  129. data/ext/pg_query/include/postgres/catalog/pg_ts_template.h +6 -3
  130. data/ext/pg_query/include/postgres/catalog/pg_ts_template_d.h +1 -1
  131. data/ext/pg_query/include/postgres/catalog/pg_type.h +6 -3
  132. data/ext/pg_query/include/postgres/catalog/pg_type_d.h +1 -1
  133. data/ext/pg_query/include/postgres/catalog/storage.h +1 -1
  134. data/ext/pg_query/include/postgres/catalog/syscache_ids.h +104 -0
  135. data/ext/pg_query/include/postgres/commands/async.h +2 -6
  136. data/ext/pg_query/include/postgres/commands/dbcommands.h +1 -1
  137. data/ext/pg_query/include/postgres/commands/defrem.h +6 -6
  138. data/ext/pg_query/include/postgres/commands/event_trigger.h +11 -2
  139. data/ext/pg_query/include/postgres/commands/explain.h +19 -3
  140. data/ext/pg_query/include/postgres/commands/prepare.h +1 -1
  141. data/ext/pg_query/include/postgres/commands/tablespace.h +1 -1
  142. data/ext/pg_query/include/postgres/commands/trigger.h +1 -1
  143. data/ext/pg_query/include/postgres/commands/vacuum.h +28 -26
  144. data/ext/pg_query/include/postgres/common/cryptohash.h +2 -2
  145. data/ext/pg_query/include/postgres/common/file_perm.h +1 -1
  146. data/ext/pg_query/include/postgres/common/file_utils.h +65 -0
  147. data/ext/pg_query/include/postgres/common/hashfn.h +16 -1
  148. data/ext/pg_query/include/postgres/common/hashfn_unstable.h +407 -0
  149. data/ext/pg_query/include/postgres/common/int.h +79 -4
  150. data/ext/pg_query/include/postgres/common/keywords.h +1 -1
  151. data/ext/pg_query/include/postgres/common/kwlookup.h +1 -1
  152. data/ext/pg_query/include/postgres/common/pg_prng.h +2 -1
  153. data/ext/pg_query/include/postgres/common/relpath.h +4 -4
  154. data/ext/pg_query/include/postgres/common/scram-common.h +1 -1
  155. data/ext/pg_query/include/postgres/common/sha2.h +1 -1
  156. data/ext/pg_query/include/postgres/common/string.h +1 -1
  157. data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +2 -3
  158. data/ext/pg_query/include/postgres/copyfuncs.funcs.c +278 -30
  159. data/ext/pg_query/include/postgres/copyfuncs.switch.c +55 -4
  160. data/ext/pg_query/include/postgres/datatype/timestamp.h +29 -3
  161. data/ext/pg_query/include/postgres/equalfuncs.funcs.c +239 -26
  162. data/ext/pg_query/include/postgres/equalfuncs.switch.c +55 -4
  163. data/ext/pg_query/include/postgres/executor/execdesc.h +2 -2
  164. data/ext/pg_query/include/postgres/executor/executor.h +6 -5
  165. data/ext/pg_query/include/postgres/executor/functions.h +2 -1
  166. data/ext/pg_query/include/postgres/executor/instrument.h +5 -3
  167. data/ext/pg_query/include/postgres/executor/spi.h +2 -8
  168. data/ext/pg_query/include/postgres/executor/tablefunc.h +1 -1
  169. data/ext/pg_query/include/postgres/executor/tuptable.h +31 -2
  170. data/ext/pg_query/include/postgres/fmgr.h +2 -2
  171. data/ext/pg_query/include/postgres/foreign/fdwapi.h +1 -1
  172. data/ext/pg_query/include/postgres/funcapi.h +2 -2
  173. data/ext/pg_query/include/postgres/gram.h +871 -830
  174. data/ext/pg_query/include/postgres/gramparse.h +1 -1
  175. data/ext/pg_query/include/postgres/jit/jit.h +4 -3
  176. data/ext/pg_query/include/postgres/kwlist_d.h +511 -466
  177. data/ext/pg_query/include/postgres/lib/dshash.h +25 -10
  178. data/ext/pg_query/include/postgres/lib/ilist.h +1 -1
  179. data/ext/pg_query/include/postgres/lib/pairingheap.h +1 -1
  180. data/ext/pg_query/include/postgres/lib/simplehash.h +40 -18
  181. data/ext/pg_query/include/postgres/lib/sort_template.h +14 -1
  182. data/ext/pg_query/include/postgres/lib/stringinfo.h +93 -11
  183. data/ext/pg_query/include/postgres/libpq/auth.h +1 -1
  184. data/ext/pg_query/include/postgres/libpq/crypt.h +2 -2
  185. data/ext/pg_query/include/postgres/libpq/hba.h +4 -4
  186. data/ext/pg_query/include/postgres/libpq/libpq-be.h +35 -28
  187. data/ext/pg_query/include/postgres/libpq/libpq.h +6 -7
  188. data/ext/pg_query/include/postgres/libpq/pqcomm.h +26 -20
  189. data/ext/pg_query/include/postgres/libpq/pqformat.h +2 -3
  190. data/ext/pg_query/include/postgres/libpq/pqsignal.h +1 -1
  191. data/ext/pg_query/include/postgres/libpq/protocol.h +89 -0
  192. data/ext/pg_query/include/postgres/libpq/sasl.h +1 -1
  193. data/ext/pg_query/include/postgres/libpq/scram.h +1 -1
  194. data/ext/pg_query/include/postgres/mb/pg_wchar.h +103 -82
  195. data/ext/pg_query/include/postgres/mb/stringinfo_mb.h +1 -1
  196. data/ext/pg_query/include/postgres/miscadmin.h +72 -52
  197. data/ext/pg_query/include/postgres/nodes/bitmapset.h +17 -3
  198. data/ext/pg_query/include/postgres/nodes/execnodes.h +112 -25
  199. data/ext/pg_query/include/postgres/nodes/extensible.h +1 -1
  200. data/ext/pg_query/include/postgres/nodes/lockoptions.h +4 -4
  201. data/ext/pg_query/include/postgres/nodes/makefuncs.h +8 -2
  202. data/ext/pg_query/include/postgres/nodes/memnodes.h +43 -4
  203. data/ext/pg_query/include/postgres/nodes/miscnodes.h +1 -1
  204. data/ext/pg_query/include/postgres/nodes/nodeFuncs.h +1 -1
  205. data/ext/pg_query/include/postgres/nodes/nodes.h +30 -41
  206. data/ext/pg_query/include/postgres/nodes/nodetags.h +464 -444
  207. data/ext/pg_query/include/postgres/nodes/params.h +1 -1
  208. data/ext/pg_query/include/postgres/nodes/parsenodes.h +358 -175
  209. data/ext/pg_query/include/postgres/nodes/pathnodes.h +64 -10
  210. data/ext/pg_query/include/postgres/nodes/pg_list.h +62 -11
  211. data/ext/pg_query/include/postgres/nodes/plannodes.h +11 -10
  212. data/ext/pg_query/include/postgres/nodes/primnodes.h +352 -54
  213. data/ext/pg_query/include/postgres/nodes/print.h +1 -1
  214. data/ext/pg_query/include/postgres/nodes/queryjumble.h +2 -2
  215. data/ext/pg_query/include/postgres/nodes/replnodes.h +23 -2
  216. data/ext/pg_query/include/postgres/nodes/supportnodes.h +1 -1
  217. data/ext/pg_query/include/postgres/nodes/tidbitmap.h +1 -1
  218. data/ext/pg_query/include/postgres/nodes/value.h +1 -1
  219. data/ext/pg_query/include/postgres/optimizer/cost.h +5 -4
  220. data/ext/pg_query/include/postgres/optimizer/geqo.h +1 -1
  221. data/ext/pg_query/include/postgres/optimizer/geqo_gene.h +1 -1
  222. data/ext/pg_query/include/postgres/optimizer/optimizer.h +5 -2
  223. data/ext/pg_query/include/postgres/optimizer/paths.h +13 -8
  224. data/ext/pg_query/include/postgres/optimizer/planmain.h +7 -1
  225. data/ext/pg_query/include/postgres/parser/analyze.h +3 -1
  226. data/ext/pg_query/include/postgres/parser/kwlist.h +22 -2
  227. data/ext/pg_query/include/postgres/parser/parse_agg.h +1 -1
  228. data/ext/pg_query/include/postgres/parser/parse_coerce.h +5 -2
  229. data/ext/pg_query/include/postgres/parser/parse_expr.h +1 -1
  230. data/ext/pg_query/include/postgres/parser/parse_func.h +2 -2
  231. data/ext/pg_query/include/postgres/parser/parse_node.h +3 -2
  232. data/ext/pg_query/include/postgres/parser/parse_oper.h +4 -1
  233. data/ext/pg_query/include/postgres/parser/parse_relation.h +1 -1
  234. data/ext/pg_query/include/postgres/parser/parse_type.h +2 -2
  235. data/ext/pg_query/include/postgres/parser/parser.h +3 -3
  236. data/ext/pg_query/include/postgres/parser/parsetree.h +1 -1
  237. data/ext/pg_query/include/postgres/parser/scanner.h +1 -1
  238. data/ext/pg_query/include/postgres/parser/scansup.h +1 -1
  239. data/ext/pg_query/include/postgres/partitioning/partdefs.h +1 -1
  240. data/ext/pg_query/include/postgres/pg_config.h +53 -45
  241. data/ext/pg_query/include/postgres/pg_config_manual.h +21 -8
  242. data/ext/pg_query/include/postgres/pg_getopt.h +1 -1
  243. data/ext/pg_query/include/postgres/pg_trace.h +1 -1
  244. data/ext/pg_query/include/postgres/pgstat.h +13 -11
  245. data/ext/pg_query/include/postgres/pgtime.h +1 -1
  246. data/ext/pg_query/include/postgres/pl_reserved_kwlist.h +1 -1
  247. data/ext/pg_query/include/postgres/pl_reserved_kwlist_d.h +1 -1
  248. data/ext/pg_query/include/postgres/pl_unreserved_kwlist.h +1 -1
  249. data/ext/pg_query/include/postgres/pl_unreserved_kwlist_d.h +1 -1
  250. data/ext/pg_query/include/postgres/plerrcodes.h +4 -4
  251. data/ext/pg_query/include/postgres/plpgsql.h +15 -13
  252. data/ext/pg_query/include/postgres/port/atomics/arch-arm.h +1 -1
  253. data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +1 -1
  254. data/ext/pg_query/include/postgres/port/atomics/arch-ppc.h +3 -1
  255. data/ext/pg_query/include/postgres/port/atomics/arch-x86.h +3 -1
  256. data/ext/pg_query/include/postgres/port/atomics/fallback.h +1 -1
  257. data/ext/pg_query/include/postgres/port/atomics/generic-gcc.h +38 -1
  258. data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +19 -1
  259. data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +16 -1
  260. data/ext/pg_query/include/postgres/port/atomics/generic.h +38 -2
  261. data/ext/pg_query/include/postgres/port/atomics.h +93 -6
  262. data/ext/pg_query/include/postgres/port/pg_bitutils.h +91 -9
  263. data/ext/pg_query/include/postgres/port/pg_bswap.h +1 -1
  264. data/ext/pg_query/include/postgres/port/pg_crc32c.h +10 -1
  265. data/ext/pg_query/include/postgres/port/pg_iovec.h +117 -0
  266. data/ext/pg_query/include/postgres/port/simd.h +48 -1
  267. data/ext/pg_query/include/postgres/port/win32/sys/socket.h +8 -0
  268. data/ext/pg_query/include/postgres/port/win32_port.h +1 -13
  269. data/ext/pg_query/include/postgres/port.h +39 -4
  270. data/ext/pg_query/include/postgres/portability/instr_time.h +1 -1
  271. data/ext/pg_query/include/postgres/postgres.h +1 -1
  272. data/ext/pg_query/include/postgres/postmaster/autovacuum.h +5 -16
  273. data/ext/pg_query/include/postgres/postmaster/bgworker.h +8 -6
  274. data/ext/pg_query/include/postgres/postmaster/bgworker_internals.h +3 -7
  275. data/ext/pg_query/include/postgres/postmaster/bgwriter.h +3 -3
  276. data/ext/pg_query/include/postgres/postmaster/interrupt.h +1 -1
  277. data/ext/pg_query/include/postgres/postmaster/pgarch.h +2 -2
  278. data/ext/pg_query/include/postgres/postmaster/postmaster.h +25 -5
  279. data/ext/pg_query/include/postgres/postmaster/startup.h +2 -2
  280. data/ext/pg_query/include/postgres/postmaster/syslogger.h +2 -4
  281. data/ext/pg_query/include/postgres/postmaster/walsummarizer.h +35 -0
  282. data/ext/pg_query/include/postgres/postmaster/walwriter.h +2 -2
  283. data/ext/pg_query/include/postgres/regex/regex.h +92 -9
  284. data/ext/pg_query/include/postgres/replication/logicallauncher.h +1 -1
  285. data/ext/pg_query/include/postgres/replication/logicalproto.h +2 -2
  286. data/ext/pg_query/include/postgres/replication/logicalworker.h +2 -1
  287. data/ext/pg_query/include/postgres/replication/origin.h +1 -1
  288. data/ext/pg_query/include/postgres/replication/reorderbuffer.h +27 -46
  289. data/ext/pg_query/include/postgres/replication/slot.h +45 -5
  290. data/ext/pg_query/include/postgres/replication/slotsync.h +38 -0
  291. data/ext/pg_query/include/postgres/replication/syncrep.h +1 -1
  292. data/ext/pg_query/include/postgres/replication/walreceiver.h +37 -11
  293. data/ext/pg_query/include/postgres/replication/walsender.h +5 -3
  294. data/ext/pg_query/include/postgres/rewrite/prs2lock.h +1 -1
  295. data/ext/pg_query/include/postgres/rewrite/rewriteHandler.h +7 -1
  296. data/ext/pg_query/include/postgres/rewrite/rewriteManip.h +2 -2
  297. data/ext/pg_query/include/postgres/rewrite/rewriteSupport.h +1 -1
  298. data/ext/pg_query/include/postgres/storage/block.h +1 -1
  299. data/ext/pg_query/include/postgres/storage/buf.h +1 -1
  300. data/ext/pg_query/include/postgres/storage/bufmgr.h +59 -41
  301. data/ext/pg_query/include/postgres/storage/bufpage.h +1 -1
  302. data/ext/pg_query/include/postgres/storage/condition_variable.h +1 -1
  303. data/ext/pg_query/include/postgres/storage/dsm.h +1 -1
  304. data/ext/pg_query/include/postgres/storage/dsm_impl.h +2 -2
  305. data/ext/pg_query/include/postgres/storage/fd.h +30 -13
  306. data/ext/pg_query/include/postgres/storage/fileset.h +1 -1
  307. data/ext/pg_query/include/postgres/storage/ipc.h +4 -1
  308. data/ext/pg_query/include/postgres/storage/item.h +1 -1
  309. data/ext/pg_query/include/postgres/storage/itemid.h +1 -1
  310. data/ext/pg_query/include/postgres/storage/itemptr.h +1 -1
  311. data/ext/pg_query/include/postgres/storage/large_object.h +1 -1
  312. data/ext/pg_query/include/postgres/storage/latch.h +4 -2
  313. data/ext/pg_query/include/postgres/storage/lmgr.h +8 -2
  314. data/ext/pg_query/include/postgres/storage/lock.h +19 -19
  315. data/ext/pg_query/include/postgres/storage/lockdefs.h +3 -1
  316. data/ext/pg_query/include/postgres/storage/lwlock.h +17 -9
  317. data/ext/pg_query/include/postgres/storage/lwlocknames.h +7 -10
  318. data/ext/pg_query/include/postgres/storage/off.h +1 -1
  319. data/ext/pg_query/include/postgres/storage/pg_sema.h +1 -1
  320. data/ext/pg_query/include/postgres/storage/pg_shmem.h +5 -4
  321. data/ext/pg_query/include/postgres/storage/pmsignal.h +2 -2
  322. data/ext/pg_query/include/postgres/storage/predicate.h +1 -5
  323. data/ext/pg_query/include/postgres/storage/proc.h +48 -26
  324. data/ext/pg_query/include/postgres/storage/procarray.h +5 -1
  325. data/ext/pg_query/include/postgres/storage/proclist_types.h +11 -9
  326. data/ext/pg_query/include/postgres/storage/procnumber.h +43 -0
  327. data/ext/pg_query/include/postgres/storage/procsignal.h +8 -6
  328. data/ext/pg_query/include/postgres/storage/read_stream.h +65 -0
  329. data/ext/pg_query/include/postgres/storage/relfilelocator.h +16 -15
  330. data/ext/pg_query/include/postgres/storage/s_lock.h +7 -27
  331. data/ext/pg_query/include/postgres/storage/sharedfileset.h +1 -1
  332. data/ext/pg_query/include/postgres/storage/shm_mq.h +2 -2
  333. data/ext/pg_query/include/postgres/storage/shm_toc.h +1 -1
  334. data/ext/pg_query/include/postgres/storage/shmem.h +1 -1
  335. data/ext/pg_query/include/postgres/storage/sinval.h +3 -3
  336. data/ext/pg_query/include/postgres/storage/smgr.h +46 -29
  337. data/ext/pg_query/include/postgres/storage/spin.h +1 -1
  338. data/ext/pg_query/include/postgres/storage/standby.h +13 -3
  339. data/ext/pg_query/include/postgres/storage/standbydefs.h +2 -2
  340. data/ext/pg_query/include/postgres/storage/sync.h +4 -4
  341. data/ext/pg_query/include/postgres/tcop/cmdtag.h +1 -2
  342. data/ext/pg_query/include/postgres/tcop/cmdtaglist.h +3 -2
  343. data/ext/pg_query/include/postgres/tcop/deparse_utility.h +2 -2
  344. data/ext/pg_query/include/postgres/tcop/dest.h +3 -2
  345. data/ext/pg_query/include/postgres/tcop/fastpath.h +1 -1
  346. data/ext/pg_query/include/postgres/tcop/pquery.h +1 -1
  347. data/ext/pg_query/include/postgres/tcop/tcopprot.h +9 -5
  348. data/ext/pg_query/include/postgres/tcop/utility.h +2 -2
  349. data/ext/pg_query/include/postgres/tsearch/ts_cache.h +1 -1
  350. data/ext/pg_query/include/postgres/utils/acl.h +19 -7
  351. data/ext/pg_query/include/postgres/utils/aclchk_internal.h +1 -1
  352. data/ext/pg_query/include/postgres/utils/array.h +1 -2
  353. data/ext/pg_query/include/postgres/utils/ascii.h +84 -0
  354. data/ext/pg_query/include/postgres/utils/backend_progress.h +3 -2
  355. data/ext/pg_query/include/postgres/utils/backend_status.h +8 -10
  356. data/ext/pg_query/include/postgres/utils/builtins.h +4 -1
  357. data/ext/pg_query/include/postgres/utils/bytea.h +2 -2
  358. data/ext/pg_query/include/postgres/utils/catcache.h +6 -6
  359. data/ext/pg_query/include/postgres/utils/date.h +1 -1
  360. data/ext/pg_query/include/postgres/utils/datetime.h +4 -1
  361. data/ext/pg_query/include/postgres/utils/datum.h +1 -1
  362. data/ext/pg_query/include/postgres/utils/dsa.h +44 -5
  363. data/ext/pg_query/include/postgres/utils/elog.h +3 -8
  364. data/ext/pg_query/include/postgres/utils/errcodes.h +1 -3
  365. data/ext/pg_query/include/postgres/utils/expandeddatum.h +1 -1
  366. data/ext/pg_query/include/postgres/utils/expandedrecord.h +1 -1
  367. data/ext/pg_query/include/postgres/utils/float.h +1 -1
  368. data/ext/pg_query/include/postgres/utils/fmgroids.h +49 -16
  369. data/ext/pg_query/include/postgres/utils/fmgrprotos.h +47 -14
  370. data/ext/pg_query/include/postgres/utils/fmgrtab.h +1 -1
  371. data/ext/pg_query/include/postgres/utils/guc.h +20 -6
  372. data/ext/pg_query/include/postgres/utils/guc_hooks.h +23 -2
  373. data/ext/pg_query/include/postgres/utils/guc_tables.h +6 -5
  374. data/ext/pg_query/include/postgres/utils/hsearch.h +2 -2
  375. data/ext/pg_query/include/postgres/utils/injection_point.h +44 -0
  376. data/ext/pg_query/include/postgres/utils/inval.h +1 -1
  377. data/ext/pg_query/include/postgres/utils/logtape.h +5 -5
  378. data/ext/pg_query/include/postgres/utils/lsyscache.h +6 -3
  379. data/ext/pg_query/include/postgres/utils/memdebug.h +1 -1
  380. data/ext/pg_query/include/postgres/utils/memutils.h +12 -5
  381. data/ext/pg_query/include/postgres/utils/memutils_internal.h +53 -13
  382. data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +25 -9
  383. data/ext/pg_query/include/postgres/utils/numeric.h +6 -1
  384. data/ext/pg_query/include/postgres/utils/palloc.h +1 -15
  385. data/ext/pg_query/include/postgres/utils/partcache.h +1 -1
  386. data/ext/pg_query/include/postgres/utils/pg_locale.h +8 -7
  387. data/ext/pg_query/include/postgres/utils/pgstat_internal.h +30 -17
  388. data/ext/pg_query/include/postgres/utils/plancache.h +5 -3
  389. data/ext/pg_query/include/postgres/utils/portal.h +10 -10
  390. data/ext/pg_query/include/postgres/utils/queryenvironment.h +2 -2
  391. data/ext/pg_query/include/postgres/utils/regproc.h +1 -1
  392. data/ext/pg_query/include/postgres/utils/rel.h +14 -15
  393. data/ext/pg_query/include/postgres/utils/relcache.h +2 -5
  394. data/ext/pg_query/include/postgres/utils/reltrigger.h +1 -1
  395. data/ext/pg_query/include/postgres/utils/resowner.h +90 -9
  396. data/ext/pg_query/include/postgres/utils/ruleutils.h +1 -1
  397. data/ext/pg_query/include/postgres/utils/sharedtuplestore.h +1 -1
  398. data/ext/pg_query/include/postgres/utils/snapmgr.h +1 -52
  399. data/ext/pg_query/include/postgres/utils/snapshot.h +2 -2
  400. data/ext/pg_query/include/postgres/utils/sortsupport.h +1 -1
  401. data/ext/pg_query/include/postgres/utils/syscache.h +7 -98
  402. data/ext/pg_query/include/postgres/utils/timeout.h +3 -2
  403. data/ext/pg_query/include/postgres/utils/timestamp.h +1 -1
  404. data/ext/pg_query/include/postgres/utils/tuplesort.h +36 -9
  405. data/ext/pg_query/include/postgres/utils/tuplestore.h +2 -5
  406. data/ext/pg_query/include/postgres/utils/typcache.h +2 -1
  407. data/ext/pg_query/include/postgres/utils/varlena.h +1 -1
  408. data/ext/pg_query/include/postgres/utils/wait_event.h +28 -214
  409. data/ext/pg_query/include/postgres/utils/wait_event_types.h +218 -0
  410. data/ext/pg_query/include/postgres/utils/xml.h +4 -4
  411. data/ext/pg_query/include/postgres/varatt.h +1 -1
  412. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +1546 -792
  413. data/ext/pg_query/include/protobuf/pg_query.pb.h +58365 -46595
  414. data/ext/pg_query/pg_query.pb-c.c +6598 -3739
  415. data/ext/pg_query/pg_query_normalize.c +42 -1
  416. data/ext/pg_query/pg_query_outfuncs_json.c +3 -1
  417. data/ext/pg_query/pg_query_parse_plpgsql.c +12 -13
  418. data/ext/pg_query/pg_query_readfuncs_protobuf.c +2 -2
  419. data/ext/pg_query/pg_query_scan.c +1 -1
  420. data/ext/pg_query/postgres_deparse.c +601 -172
  421. data/ext/pg_query/src_backend_catalog_namespace.c +241 -66
  422. data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -3
  423. data/ext/pg_query/src_backend_commands_define.c +2 -3
  424. data/ext/pg_query/src_backend_nodes_bitmapset.c +137 -94
  425. data/ext/pg_query/src_backend_nodes_copyfuncs.c +1 -1
  426. data/ext/pg_query/src_backend_nodes_equalfuncs.c +1 -1
  427. data/ext/pg_query/src_backend_nodes_extensible.c +1 -1
  428. data/ext/pg_query/src_backend_nodes_list.c +3 -7
  429. data/ext/pg_query/src_backend_nodes_makefuncs.c +59 -20
  430. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +109 -2
  431. data/ext/pg_query/src_backend_nodes_value.c +1 -1
  432. data/ext/pg_query/src_backend_parser_gram.c +34491 -32136
  433. data/ext/pg_query/src_backend_parser_parser.c +8 -8
  434. data/ext/pg_query/src_backend_parser_scan.c +5637 -3028
  435. data/ext/pg_query/src_backend_parser_scansup.c +2 -1
  436. data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
  437. data/ext/pg_query/src_backend_tcop_postgres.c +34 -10
  438. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +2 -2
  439. data/ext/pg_query/src_backend_utils_adt_datum.c +8 -6
  440. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  441. data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
  442. data/ext/pg_query/src_backend_utils_adt_numutils.c +4 -5
  443. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +101 -28
  444. data/ext/pg_query/src_backend_utils_error_assert.c +1 -1
  445. data/ext/pg_query/src_backend_utils_error_elog.c +47 -42
  446. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +4 -2
  447. data/ext/pg_query/src_backend_utils_init_globals.c +15 -3
  448. data/ext/pg_query/src_backend_utils_mb_mbutils.c +11 -18
  449. data/ext/pg_query/src_backend_utils_misc_guc_tables.c +16 -6
  450. data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +8 -5
  451. data/ext/pg_query/src_backend_utils_mmgr_aset.c +308 -238
  452. data/ext/pg_query/src_backend_utils_mmgr_bump.c +728 -0
  453. data/ext/pg_query/src_backend_utils_mmgr_generation.c +273 -197
  454. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +270 -215
  455. data/ext/pg_query/src_backend_utils_mmgr_slab.c +154 -96
  456. data/ext/pg_query/src_common_encnames.c +43 -44
  457. data/ext/pg_query/src_common_hashfn.c +1 -1
  458. data/ext/pg_query/src_common_keywords.c +1 -1
  459. data/ext/pg_query/src_common_kwlist_d.h +511 -466
  460. data/ext/pg_query/src_common_kwlookup.c +1 -1
  461. data/ext/pg_query/src_common_psprintf.c +3 -3
  462. data/ext/pg_query/src_common_stringinfo.c +18 -1
  463. data/ext/pg_query/src_common_wchar.c +92 -109
  464. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +99 -5
  465. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +1 -1
  466. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +242 -143
  467. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  468. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
  469. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +19 -1
  470. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +1 -1
  471. data/ext/pg_query/src_port_pg_bitutils.c +173 -28
  472. data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
  473. data/ext/pg_query/src_port_snprintf.c +15 -18
  474. data/ext/pg_query/src_port_strerror.c +1 -3
  475. data/ext/pg_query/src_port_strlcpy.c +1 -1
  476. data/lib/pg_query/fingerprint.rb +3 -5
  477. data/lib/pg_query/param_refs.rb +2 -2
  478. data/lib/pg_query/parse.rb +5 -7
  479. data/lib/pg_query/parse_error.rb +1 -0
  480. data/lib/pg_query/pg_query_pb.rb +27 -25
  481. data/lib/pg_query/scan.rb +1 -0
  482. data/lib/pg_query/treewalker.rb +38 -15
  483. data/lib/pg_query/truncate.rb +18 -20
  484. data/lib/pg_query/version.rb +1 -1
  485. metadata +31 -82
  486. data/ext/pg_query/include/postgres/storage/backendid.h +0 -37
  487. data/ext/pg_query/include/postgres/storage/sinvaladt.h +0 -45
  488. data/ext/pg_query/pg_query_ruby_freebsd.sym +0 -2
  489. data/ext/pg_query/src_backend_nodes_nodes.c +0 -38
  490. /data/ext/pg_query/{pg_query_ruby.sym → ext_symbols.sym} +0 -0
@@ -3,7 +3,7 @@
3
3
  * walsender.h
4
4
  * Exports from replication/walsender.c.
5
5
  *
6
- * Portions Copyright (c) 2010-2023, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 2010-2024, PostgreSQL Global Development Group
7
7
  *
8
8
  * src/include/replication/walsender.h
9
9
  *
@@ -12,7 +12,7 @@
12
12
  #ifndef _WALSENDER_H
13
13
  #define _WALSENDER_H
14
14
 
15
- #include <signal.h>
15
+ #include "access/xlogdefs.h"
16
16
 
17
17
  /*
18
18
  * What to do with a snapshot in create replication slot command.
@@ -21,7 +21,7 @@ typedef enum
21
21
  {
22
22
  CRS_EXPORT_SNAPSHOT,
23
23
  CRS_NOEXPORT_SNAPSHOT,
24
- CRS_USE_SNAPSHOT
24
+ CRS_USE_SNAPSHOT,
25
25
  } CRSSnapshotAction;
26
26
 
27
27
  /* global state */
@@ -39,6 +39,8 @@ extern void InitWalSender(void);
39
39
  extern bool exec_replication_command(const char *cmd_string);
40
40
  extern void WalSndErrorCleanup(void);
41
41
  extern void WalSndResourceCleanup(bool isCommit);
42
+ extern void PhysicalWakeupLogicalWalSnd(void);
43
+ extern XLogRecPtr GetStandbyFlushRecPtr(TimeLineID *tli);
42
44
  extern void WalSndSignals(void);
43
45
  extern Size WalSndShmemSize(void);
44
46
  extern void WalSndShmemInit(void);
@@ -3,7 +3,7 @@
3
3
  * prs2lock.h
4
4
  * data structures for POSTGRES Rule System II (rewrite rules only)
5
5
  *
6
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * src/include/rewrite/prs2lock.h
@@ -4,7 +4,7 @@
4
4
  * External interface to query rewriter.
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/rewrite/rewriteHandler.h
@@ -25,11 +25,17 @@ extern void AcquireRewriteLocks(Query *parsetree,
25
25
  extern Node *build_column_default(Relation rel, int attrno);
26
26
 
27
27
  extern Query *get_view_query(Relation view);
28
+ extern bool view_has_instead_trigger(Relation view, CmdType event,
29
+ List *mergeActionList);
28
30
  extern const char *view_query_is_auto_updatable(Query *viewquery,
29
31
  bool check_cols);
30
32
  extern int relation_is_updatable(Oid reloid,
31
33
  List *outer_reloids,
32
34
  bool include_triggers,
33
35
  Bitmapset *include_cols);
36
+ extern void error_view_not_updatable(Relation view,
37
+ CmdType command,
38
+ List *mergeActionList,
39
+ const char *detail);
34
40
 
35
41
  #endif /* REWRITEHANDLER_H */
@@ -4,7 +4,7 @@
4
4
  * Querytree manipulation subroutines for query rewriter.
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/rewrite/rewriteManip.h
@@ -37,7 +37,7 @@ typedef enum ReplaceVarsNoMatchOption
37
37
  {
38
38
  REPLACEVARS_REPORT_ERROR, /* throw error if no match */
39
39
  REPLACEVARS_CHANGE_VARNO, /* change the Var's varno, nothing else */
40
- REPLACEVARS_SUBSTITUTE_NULL /* replace with a NULL Const */
40
+ REPLACEVARS_SUBSTITUTE_NULL, /* replace with a NULL Const */
41
41
  } ReplaceVarsNoMatchOption;
42
42
 
43
43
 
@@ -4,7 +4,7 @@
4
4
  *
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/rewrite/rewriteSupport.h
@@ -4,7 +4,7 @@
4
4
  * POSTGRES disk block definitions.
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/storage/block.h
@@ -4,7 +4,7 @@
4
4
  * Basic buffer manager data types.
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/storage/buf.h
@@ -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