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
@@ -5,7 +5,7 @@
5
5
  * functions for internal use.
6
6
  *
7
7
  *
8
- * Portions Copyright (c) 2022-2023, PostgreSQL Global Development Group
8
+ * Portions Copyright (c) 2022-2024, PostgreSQL Global Development Group
9
9
  * Portions Copyright (c) 1994, Regents of the University of California
10
10
  *
11
11
  * src/include/utils/memutils_internal.h
@@ -19,9 +19,9 @@
19
19
  #include "utils/memutils.h"
20
20
 
21
21
  /* These functions implement the MemoryContext API for AllocSet context. */
22
- extern void *AllocSetAlloc(MemoryContext context, Size size);
22
+ extern void *AllocSetAlloc(MemoryContext context, Size size, int flags);
23
23
  extern void AllocSetFree(void *pointer);
24
- extern void *AllocSetRealloc(void *pointer, Size size);
24
+ extern void *AllocSetRealloc(void *pointer, Size size, int flags);
25
25
  extern void AllocSetReset(MemoryContext context);
26
26
  extern void AllocSetDelete(MemoryContext context);
27
27
  extern MemoryContext AllocSetGetChunkContext(void *pointer);
@@ -36,9 +36,9 @@ extern void AllocSetCheck(MemoryContext context);
36
36
  #endif
37
37
 
38
38
  /* These functions implement the MemoryContext API for Generation context. */
39
- extern void *GenerationAlloc(MemoryContext context, Size size);
39
+ extern void *GenerationAlloc(MemoryContext context, Size size, int flags);
40
40
  extern void GenerationFree(void *pointer);
41
- extern void *GenerationRealloc(void *pointer, Size size);
41
+ extern void *GenerationRealloc(void *pointer, Size size, int flags);
42
42
  extern void GenerationReset(MemoryContext context);
43
43
  extern void GenerationDelete(MemoryContext context);
44
44
  extern MemoryContext GenerationGetChunkContext(void *pointer);
@@ -54,9 +54,9 @@ extern void GenerationCheck(MemoryContext context);
54
54
 
55
55
 
56
56
  /* These functions implement the MemoryContext API for Slab context. */
57
- extern void *SlabAlloc(MemoryContext context, Size size);
57
+ extern void *SlabAlloc(MemoryContext context, Size size, int flags);
58
58
  extern void SlabFree(void *pointer);
59
- extern void *SlabRealloc(void *pointer, Size size);
59
+ extern void *SlabRealloc(void *pointer, Size size, int flags);
60
60
  extern void SlabReset(MemoryContext context);
61
61
  extern void SlabDelete(MemoryContext context);
62
62
  extern MemoryContext SlabGetChunkContext(void *pointer);
@@ -75,10 +75,26 @@ extern void SlabCheck(MemoryContext context);
75
75
  * part of a fully-fledged MemoryContext type.
76
76
  */
77
77
  extern void AlignedAllocFree(void *pointer);
78
- extern void *AlignedAllocRealloc(void *pointer, Size size);
78
+ extern void *AlignedAllocRealloc(void *pointer, Size size, int flags);
79
79
  extern MemoryContext AlignedAllocGetChunkContext(void *pointer);
80
80
  extern Size AlignedAllocGetChunkSpace(void *pointer);
81
81
 
82
+ /* These functions implement the MemoryContext API for the Bump context. */
83
+ extern void *BumpAlloc(MemoryContext context, Size size, int flags);
84
+ extern void BumpFree(void *pointer);
85
+ extern void *BumpRealloc(void *pointer, Size size, int flags);
86
+ extern void BumpReset(MemoryContext context);
87
+ extern void BumpDelete(MemoryContext context);
88
+ extern MemoryContext BumpGetChunkContext(void *pointer);
89
+ extern Size BumpGetChunkSpace(void *pointer);
90
+ extern bool BumpIsEmpty(MemoryContext context);
91
+ extern void BumpStats(MemoryContext context, MemoryStatsPrintFunc printfunc,
92
+ void *passthru, MemoryContextCounters *totals,
93
+ bool print_to_stderr);
94
+ #ifdef MEMORY_CONTEXT_CHECKING
95
+ extern void BumpCheck(MemoryContext context);
96
+ #endif
97
+
82
98
  /*
83
99
  * How many extra bytes do we need to request in order to ensure that we can
84
100
  * align a pointer to 'alignto'. Since palloc'd pointers are already aligned
@@ -104,21 +120,29 @@ extern Size AlignedAllocGetChunkSpace(void *pointer);
104
120
  */
105
121
  typedef enum MemoryContextMethodID
106
122
  {
107
- MCTX_UNUSED1_ID, /* 000 occurs in never-used memory */
108
- MCTX_UNUSED2_ID, /* glibc malloc'd chunks usually match 001 */
109
- MCTX_UNUSED3_ID, /* glibc malloc'd chunks > 128kB match 010 */
123
+ MCTX_0_RESERVED_UNUSEDMEM_ID, /* 0000 occurs in never-used memory */
124
+ MCTX_1_RESERVED_GLIBC_ID, /* glibc malloc'd chunks usually match 0001 */
125
+ MCTX_2_RESERVED_GLIBC_ID, /* glibc malloc'd chunks > 128kB match 0010 */
110
126
  MCTX_ASET_ID,
111
127
  MCTX_GENERATION_ID,
112
128
  MCTX_SLAB_ID,
113
129
  MCTX_ALIGNED_REDIRECT_ID,
114
- MCTX_UNUSED4_ID /* 111 occurs in wipe_mem'd memory */
130
+ MCTX_BUMP_ID,
131
+ MCTX_8_UNUSED_ID,
132
+ MCTX_9_UNUSED_ID,
133
+ MCTX_10_UNUSED_ID,
134
+ MCTX_11_UNUSED_ID,
135
+ MCTX_12_UNUSED_ID,
136
+ MCTX_13_UNUSED_ID,
137
+ MCTX_14_UNUSED_ID,
138
+ MCTX_15_RESERVED_WIPEDMEM_ID /* 1111 occurs in wipe_mem'd memory */
115
139
  } MemoryContextMethodID;
116
140
 
117
141
  /*
118
142
  * The number of bits that 8-byte memory chunk headers can use to encode the
119
143
  * MemoryContextMethodID.
120
144
  */
121
- #define MEMORY_CONTEXT_METHODID_BITS 3
145
+ #define MEMORY_CONTEXT_METHODID_BITS 4
122
146
  #define MEMORY_CONTEXT_METHODID_MASK \
123
147
  ((((uint64) 1) << MEMORY_CONTEXT_METHODID_BITS) - 1)
124
148
 
@@ -133,4 +157,20 @@ extern void MemoryContextCreate(MemoryContext node,
133
157
  MemoryContext parent,
134
158
  const char *name);
135
159
 
160
+ extern void *MemoryContextAllocationFailure(MemoryContext context, Size size,
161
+ int flags);
162
+
163
+ extern void MemoryContextSizeFailure(MemoryContext context, Size size,
164
+ int flags) pg_attribute_noreturn();
165
+
166
+ static inline void
167
+ MemoryContextCheckSize(MemoryContext context, Size size, int flags)
168
+ {
169
+ if (unlikely(!AllocSizeIsValid(size)))
170
+ {
171
+ if (!(flags & MCXT_ALLOC_HUGE) || !AllocHugeSizeIsValid(size))
172
+ MemoryContextSizeFailure(context, size, flags);
173
+ }
174
+ }
175
+
136
176
  #endif /* MEMUTILS_INTERNAL_H */
@@ -12,7 +12,7 @@
12
12
  * Although MemoryChunks are used by each of our MemoryContexts, future
13
13
  * implementations may choose to implement their own method for storing chunk
14
14
  * headers. The only requirement is that the header ends with an 8-byte value
15
- * which the least significant 3-bits of are set to the MemoryContextMethodID
15
+ * which the least significant 4-bits of are set to the MemoryContextMethodID
16
16
  * of the given context.
17
17
  *
18
18
  * By default, a MemoryChunk is 8 bytes in size, however, when
@@ -25,15 +25,23 @@
25
25
  * used to encode 4 separate pieces of information. Starting with the least
26
26
  * significant bits of 'hdrmask', the bit space is reserved as follows:
27
27
  *
28
- * 1. 3-bits to indicate the MemoryContextMethodID as defined by
28
+ * 1. 4-bits to indicate the MemoryContextMethodID as defined by
29
29
  * MEMORY_CONTEXT_METHODID_MASK
30
30
  * 2. 1-bit to denote an "external" chunk (see below)
31
31
  * 3. 30-bits reserved for the MemoryContext to use for anything it
32
- * requires. Most MemoryContext likely want to store the size of the
32
+ * requires. Most MemoryContexts likely want to store the size of the
33
33
  * chunk here.
34
34
  * 4. 30-bits for the number of bytes that must be subtracted from the chunk
35
35
  * to obtain the address of the block that the chunk is stored on.
36
36
  *
37
+ * If you're paying close attention, you'll notice this adds up to 65 bits
38
+ * rather than 64 bits. This is because the highest-order bit of #3 is the
39
+ * same bit as the lowest-order bit of #4. We can do this as we insist that
40
+ * the chunk and block pointers are both MAXALIGNed, therefore the relative
41
+ * offset between those will always be a MAXALIGNed value which means the
42
+ * lowest order bit is always 0. When fetching the chunk to block offset we
43
+ * mask out the lowest-order bit to ensure it's still zero.
44
+ *
37
45
  * In some cases, for example when memory allocations become large, it's
38
46
  * possible fields 3 and 4 above are not large enough to store the values
39
47
  * required for the chunk. In this case, the MemoryContext can choose to mark
@@ -68,7 +76,7 @@
68
76
  * PointerGetMemoryChunk
69
77
  * MemoryChunkGetPointer
70
78
  *
71
- * Portions Copyright (c) 2022-2023, PostgreSQL Global Development Group
79
+ * Portions Copyright (c) 2022-2024, PostgreSQL Global Development Group
72
80
  * Portions Copyright (c) 1994, Regents of the University of California
73
81
  *
74
82
  * src/include/utils/memutils_memorychunk.h
@@ -93,10 +101,16 @@
93
101
  */
94
102
  #define MEMORYCHUNK_MAX_BLOCKOFFSET UINT64CONST(0x3FFFFFFF)
95
103
 
104
+ /*
105
+ * As above, but mask out the lowest-order (always zero) bit as this is shared
106
+ * with the MemoryChunkGetValue field.
107
+ */
108
+ #define MEMORYCHUNK_BLOCKOFFSET_MASK UINT64CONST(0x3FFFFFFE)
109
+
96
110
  /* define the least significant base-0 bit of each portion of the hdrmask */
97
111
  #define MEMORYCHUNK_EXTERNAL_BASEBIT MEMORY_CONTEXT_METHODID_BITS
98
112
  #define MEMORYCHUNK_VALUE_BASEBIT (MEMORYCHUNK_EXTERNAL_BASEBIT + 1)
99
- #define MEMORYCHUNK_BLOCKOFFSET_BASEBIT (MEMORYCHUNK_VALUE_BASEBIT + 30)
113
+ #define MEMORYCHUNK_BLOCKOFFSET_BASEBIT (MEMORYCHUNK_VALUE_BASEBIT + 29)
100
114
 
101
115
  /*
102
116
  * A magic number for storing in the free bits of an external chunk. This
@@ -131,11 +145,11 @@ typedef struct MemoryChunk
131
145
  (((hdrmask) >> MEMORYCHUNK_VALUE_BASEBIT) & MEMORYCHUNK_MAX_VALUE)
132
146
 
133
147
  /*
134
- * We should have used up all the bits here, so the compiler is likely to
135
- * optimize out the & MEMORYCHUNK_MAX_BLOCKOFFSET.
148
+ * Shift the block offset down to the 0th bit position and mask off the single
149
+ * bit that's shared with the MemoryChunkGetValue field.
136
150
  */
137
151
  #define HdrMaskBlockOffset(hdrmask) \
138
- (((hdrmask) >> MEMORYCHUNK_BLOCKOFFSET_BASEBIT) & MEMORYCHUNK_MAX_BLOCKOFFSET)
152
+ (((hdrmask) >> MEMORYCHUNK_BLOCKOFFSET_BASEBIT) & MEMORYCHUNK_BLOCKOFFSET_MASK)
139
153
 
140
154
  /* For external chunks only, check the magic number matches */
141
155
  #define HdrMaskCheckMagic(hdrmask) \
@@ -149,6 +163,7 @@ typedef struct MemoryChunk
149
163
  * The number of bytes between 'block' and 'chunk' must be <=
150
164
  * MEMORYCHUNK_MAX_BLOCKOFFSET.
151
165
  * 'value' must be <= MEMORYCHUNK_MAX_VALUE.
166
+ * Both 'chunk' and 'block' must be MAXALIGNed pointers.
152
167
  */
153
168
  static inline void
154
169
  MemoryChunkSetHdrMask(MemoryChunk *chunk, void *block,
@@ -157,7 +172,7 @@ MemoryChunkSetHdrMask(MemoryChunk *chunk, void *block,
157
172
  Size blockoffset = (char *) chunk - (char *) block;
158
173
 
159
174
  Assert((char *) chunk >= (char *) block);
160
- Assert(blockoffset <= MEMORYCHUNK_MAX_BLOCKOFFSET);
175
+ Assert((blockoffset & MEMORYCHUNK_BLOCKOFFSET_MASK) == blockoffset);
161
176
  Assert(value <= MEMORYCHUNK_MAX_VALUE);
162
177
  Assert((int) methodid <= MEMORY_CONTEXT_METHODID_MASK);
163
178
 
@@ -225,6 +240,7 @@ MemoryChunkGetBlock(MemoryChunk *chunk)
225
240
  }
226
241
 
227
242
  /* cleanup all internal definitions */
243
+ #undef MEMORYCHUNK_BLOCKOFFSET_MASK
228
244
  #undef MEMORYCHUNK_EXTERNAL_BASEBIT
229
245
  #undef MEMORYCHUNK_VALUE_BASEBIT
230
246
  #undef MEMORYCHUNK_BLOCKOFFSET_BASEBIT
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * Original coding 1998, Jan Wieck. Heavily revised 2003, Tom Lane.
7
7
  *
8
- * Copyright (c) 1998-2023, PostgreSQL Global Development Group
8
+ * Copyright (c) 1998-2024, PostgreSQL Global Development Group
9
9
  *
10
10
  * src/include/utils/numeric.h
11
11
  *
@@ -14,6 +14,7 @@
14
14
  #ifndef _PG_NUMERIC_H_
15
15
  #define _PG_NUMERIC_H_
16
16
 
17
+ #include "common/pg_prng.h"
17
18
  #include "fmgr.h"
18
19
 
19
20
  /*
@@ -101,5 +102,9 @@ extern Numeric numeric_div_opt_error(Numeric num1, Numeric num2,
101
102
  extern Numeric numeric_mod_opt_error(Numeric num1, Numeric num2,
102
103
  bool *have_error);
103
104
  extern int32 numeric_int4_opt_error(Numeric num, bool *have_error);
105
+ extern int64 numeric_int8_opt_error(Numeric num, bool *have_error);
106
+
107
+ extern Numeric random_numeric(pg_prng_state *state,
108
+ Numeric rmin, Numeric rmax);
104
109
 
105
110
  #endif /* _PG_NUMERIC_H_ */
@@ -18,7 +18,7 @@
18
18
  * everything that should be freed. See utils/mmgr/README for more info.
19
19
  *
20
20
  *
21
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
21
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
22
22
  * Portions Copyright (c) 1994, Regents of the University of California
23
23
  *
24
24
  * src/include/utils/palloc.h
@@ -70,7 +70,6 @@ extern PGDLLIMPORT __thread MemoryContext CurrentMemoryContext;
70
70
  */
71
71
  extern void *MemoryContextAlloc(MemoryContext context, Size size);
72
72
  extern void *MemoryContextAllocZero(MemoryContext context, Size size);
73
- extern void *MemoryContextAllocZeroAligned(MemoryContext context, Size size);
74
73
  extern void *MemoryContextAllocExtended(MemoryContext context,
75
74
  Size size, int flags);
76
75
  extern void *MemoryContextAllocAligned(MemoryContext context,
@@ -109,19 +108,6 @@ extern void pfree(void *pointer);
109
108
  #define repalloc_array(pointer, type, count) ((type *) repalloc(pointer, sizeof(type) * (count)))
110
109
  #define repalloc0_array(pointer, type, oldcount, count) ((type *) repalloc0(pointer, sizeof(type) * (oldcount), sizeof(type) * (count)))
111
110
 
112
- /*
113
- * The result of palloc() is always word-aligned, so we can skip testing
114
- * alignment of the pointer when deciding which MemSet variant to use.
115
- * Note that this variant does not offer any advantage, and should not be
116
- * used, unless its "sz" argument is a compile-time constant; therefore, the
117
- * issue that it evaluates the argument multiple times isn't a problem in
118
- * practice.
119
- */
120
- #define palloc0fast(sz) \
121
- ( MemSetTest(0, sz) ? \
122
- MemoryContextAllocZeroAligned(CurrentMemoryContext, sz) : \
123
- MemoryContextAllocZero(CurrentMemoryContext, sz) )
124
-
125
111
  /* Higher-limit allocators. */
126
112
  extern void *MemoryContextAllocHuge(MemoryContext context, Size size);
127
113
  extern pg_nodiscard void *repalloc_huge(void *pointer, Size size);
@@ -2,7 +2,7 @@
2
2
  *
3
3
  * partcache.h
4
4
  *
5
- * Copyright (c) 1996-2023, PostgreSQL Global Development Group
5
+ * Copyright (c) 1996-2024, PostgreSQL Global Development Group
6
6
  *
7
7
  * src/include/utils/partcache.h
8
8
  *
@@ -4,7 +4,7 @@
4
4
  *
5
5
  * src/include/utils/pg_locale.h
6
6
  *
7
- * Copyright (c) 2002-2023, PostgreSQL Global Development Group
7
+ * Copyright (c) 2002-2024, PostgreSQL Global Development Group
8
8
  *
9
9
  *-----------------------------------------------------------------------
10
10
  */
@@ -67,9 +67,7 @@ extern void cache_locale_time(void);
67
67
 
68
68
 
69
69
  /*
70
- * We define our own wrapper around locale_t so we can keep the same
71
- * function signatures for all builds, while not having to create a
72
- * fake version of the standard type locale_t in the global namespace.
70
+ * We use a discriminated union to hold either a locale_t or an ICU collator.
73
71
  * pg_locale_t is occasionally checked for truth, so make it a pointer.
74
72
  */
75
73
  struct pg_locale_struct
@@ -78,9 +76,11 @@ struct pg_locale_struct
78
76
  bool deterministic;
79
77
  union
80
78
  {
81
- #ifdef HAVE_LOCALE_T
79
+ struct
80
+ {
81
+ const char *locale;
82
+ } builtin;
82
83
  locale_t lt;
83
- #endif
84
84
  #ifdef USE_ICU
85
85
  struct
86
86
  {
@@ -88,7 +88,6 @@ struct pg_locale_struct
88
88
  UCollator *ucol;
89
89
  } icu;
90
90
  #endif
91
- int dummy; /* in case we have neither LOCALE_T nor ICU */
92
91
  } info;
93
92
  };
94
93
 
@@ -118,6 +117,8 @@ extern size_t pg_strxfrm_prefix(char *dest, const char *src, size_t destsize,
118
117
  extern size_t pg_strnxfrm_prefix(char *dest, size_t destsize, const char *src,
119
118
  size_t srclen, pg_locale_t locale);
120
119
 
120
+ extern int builtin_locale_encoding(const char *locale);
121
+ extern const char *builtin_validate_locale(int encoding, const char *locale);
121
122
  extern void icu_validate_locale(const char *loc_str);
122
123
  extern char *icu_language_tag(const char *loc_str, int elevel);
123
124
 
@@ -5,7 +5,7 @@
5
5
  * only be needed by files implementing statistics support (rather than ones
6
6
  * reporting / querying stats).
7
7
  *
8
- * Copyright (c) 2001-2023, PostgreSQL Global Development Group
8
+ * Copyright (c) 2001-2024, PostgreSQL Global Development Group
9
9
  *
10
10
  * src/include/utils/pgstat_internal.h
11
11
  * ----------
@@ -14,7 +14,7 @@
14
14
  #define PGSTAT_INTERNAL_H
15
15
 
16
16
 
17
- #include "common/hashfn.h"
17
+ #include "common/hashfn_unstable.h"
18
18
  #include "lib/dshash.h"
19
19
  #include "lib/ilist.h"
20
20
  #include "pgstat.h"
@@ -269,13 +269,13 @@ typedef struct PgStat_KindInfo
269
269
  * definitions.
270
270
  */
271
271
  static const char *const slru_names[] = {
272
- "CommitTs",
273
- "MultiXactMember",
274
- "MultiXactOffset",
275
- "Notify",
276
- "Serial",
277
- "Subtrans",
278
- "Xact",
272
+ "commit_timestamp",
273
+ "multixact_member",
274
+ "multixact_offset",
275
+ "notify",
276
+ "serializable",
277
+ "subtransaction",
278
+ "transaction",
279
279
  "other" /* has to be last */
280
280
  };
281
281
 
@@ -776,16 +776,10 @@ pgstat_cmp_hash_key(const void *a, const void *b, size_t size, void *arg)
776
776
  static inline uint32
777
777
  pgstat_hash_hash_key(const void *d, size_t size, void *arg)
778
778
  {
779
- const PgStat_HashKey *key = (PgStat_HashKey *) d;
780
- uint32 hash;
779
+ const char *key = (const char *) d;
781
780
 
782
781
  Assert(size == sizeof(PgStat_HashKey) && arg == NULL);
783
-
784
- hash = murmurhash32(key->kind);
785
- hash = hash_combine(hash, murmurhash32(key->dboid));
786
- hash = hash_combine(hash, murmurhash32(key->objoid));
787
-
788
- return hash;
782
+ return fasthash32(key, size, 0);
789
783
  }
790
784
 
791
785
  /*
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * See plancache.c for comments.
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/utils/plancache.h
@@ -31,7 +31,7 @@ typedef enum
31
31
  {
32
32
  PLAN_CACHE_MODE_AUTO,
33
33
  PLAN_CACHE_MODE_FORCE_GENERIC_PLAN,
34
- PLAN_CACHE_MODE_FORCE_CUSTOM_PLAN
34
+ PLAN_CACHE_MODE_FORCE_CUSTOM_PLAN,
35
35
  } PlanCacheMode;
36
36
 
37
37
  /* GUC parameter */
@@ -111,7 +111,7 @@ typedef struct CachedPlanSource
111
111
  List *query_list; /* list of Query nodes, or NIL if not valid */
112
112
  List *relationOids; /* OIDs of relations the queries depend on */
113
113
  List *invalItems; /* other dependencies, as PlanInvalItems */
114
- struct OverrideSearchPath *search_path; /* search_path used for parsing
114
+ struct SearchPathMatcher *search_path; /* search_path used for parsing
115
115
  * and planning */
116
116
  MemoryContext query_context; /* context holding the above, or NULL */
117
117
  Oid rewriteRoleId; /* Role ID we did rewriting for */
@@ -188,6 +188,8 @@ typedef struct CachedExpression
188
188
  extern void InitPlanCache(void);
189
189
  extern void ResetPlanCache(void);
190
190
 
191
+ extern void ReleaseAllPlanCacheRefsInOwner(ResourceOwner owner);
192
+
191
193
  extern CachedPlanSource *CreateCachedPlan(struct RawStmt *raw_parse_tree,
192
194
  const char *query_string,
193
195
  CommandTag commandTag);
@@ -36,7 +36,7 @@
36
36
  * to look like NO SCROLL cursors.
37
37
  *
38
38
  *
39
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
39
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
40
40
  * Portions Copyright (c) 1994, Regents of the University of California
41
41
  *
42
42
  * src/include/utils/portal.h
@@ -64,9 +64,9 @@
64
64
  * supports holdable cursors (the Executor results can be dumped into a
65
65
  * tuplestore for access after transaction completion).
66
66
  *
67
- * PORTAL_ONE_RETURNING: the portal contains a single INSERT/UPDATE/DELETE
68
- * query with a RETURNING clause (plus possibly auxiliary queries added by
69
- * rule rewriting). On first execution, we run the portal to completion
67
+ * PORTAL_ONE_RETURNING: the portal contains a single INSERT/UPDATE/DELETE/
68
+ * MERGE query with a RETURNING clause (plus possibly auxiliary queries added
69
+ * by rule rewriting). On first execution, we run the portal to completion
70
70
  * and dump the primary query's results into the portal tuplestore; the
71
71
  * results are then returned to the client as demanded. (We can't support
72
72
  * suspension of the query partway through, because the AFTER TRIGGER code
@@ -92,7 +92,7 @@ typedef enum PortalStrategy
92
92
  PORTAL_ONE_RETURNING,
93
93
  PORTAL_ONE_MOD_WITH,
94
94
  PORTAL_UTIL_SELECT,
95
- PORTAL_MULTI_QUERY
95
+ PORTAL_MULTI_QUERY,
96
96
  } PortalStrategy;
97
97
 
98
98
  /*
@@ -107,7 +107,7 @@ typedef enum PortalStatus
107
107
  PORTAL_READY, /* PortalStart complete, can run it */
108
108
  PORTAL_ACTIVE, /* portal is running (can't delete it) */
109
109
  PORTAL_DONE, /* portal is finished (don't re-run it) */
110
- PORTAL_FAILED /* portal got error (can't re-run it) */
110
+ PORTAL_FAILED, /* portal got error (can't re-run it) */
111
111
  } PortalStatus;
112
112
 
113
113
  typedef struct PortalData *Portal;
@@ -170,9 +170,9 @@ typedef struct PortalData
170
170
  Snapshot portalSnapshot; /* active snapshot, or NULL if none */
171
171
 
172
172
  /*
173
- * Where we store tuples for a held cursor or a PORTAL_ONE_RETURNING or
174
- * PORTAL_UTIL_SELECT query. (A cursor held past the end of its
175
- * transaction no longer has any active executor state.)
173
+ * Where we store tuples for a held cursor or a PORTAL_ONE_RETURNING,
174
+ * PORTAL_ONE_MOD_WITH, or PORTAL_UTIL_SELECT query. (A cursor held past
175
+ * the end of its transaction no longer has any active executor state.)
176
176
  */
177
177
  Tuplestorestate *holdStore; /* store for holdable cursors */
178
178
  MemoryContext holdContext; /* memory containing holdStore */
@@ -4,7 +4,7 @@
4
4
  * Access to functions to mutate the query environment and retrieve the
5
5
  * actual data related to entries (if any).
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/utils/queryenvironment.h
@@ -19,7 +19,7 @@
19
19
 
20
20
  typedef enum EphemeralNameRelationType
21
21
  {
22
- ENR_NAMED_TUPLESTORE /* named tuplestore relation; e.g., deltas */
22
+ ENR_NAMED_TUPLESTORE, /* named tuplestore relation; e.g., deltas */
23
23
  } EphemeralNameRelationType;
24
24
 
25
25
  /*
@@ -3,7 +3,7 @@
3
3
  * regproc.h
4
4
  * Functions for the built-in types regproc, regclass, regtype, etc.
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/utils/regproc.h
@@ -4,7 +4,7 @@
4
4
  * POSTGRES relation descriptor (a/k/a relcache entry) 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/utils/rel.h
@@ -57,7 +57,7 @@ typedef struct RelationData
57
57
  RelFileLocator rd_locator; /* relation physical identifier */
58
58
  SMgrRelation rd_smgr; /* cached file handle, or NULL */
59
59
  int rd_refcnt; /* reference count */
60
- BackendId rd_backend; /* owning backend id, if temporary relation */
60
+ ProcNumber rd_backend; /* owning backend's proc number, if temp rel */
61
61
  bool rd_islocaltemp; /* rel is a temp rel of this session */
62
62
  bool rd_isnailed; /* rel is nailed in cache */
63
63
  bool rd_isvalid; /* relcache entry is valid */
@@ -150,7 +150,8 @@ typedef struct RelationData
150
150
 
151
151
  /* data managed by RelationGetIndexList: */
152
152
  List *rd_indexlist; /* list of OIDs of indexes on relation */
153
- Oid rd_pkindex; /* OID of primary key, if any */
153
+ Oid rd_pkindex; /* OID of (deferrable?) primary key, if any */
154
+ bool rd_ispkdeferrable; /* is rd_pkindex a deferrable PK? */
154
155
  Oid rd_replidindex; /* OID of replica identity index, if any */
155
156
 
156
157
  /* data managed by RelationGetStatExtList: */
@@ -329,7 +330,7 @@ typedef enum StdRdOptIndexCleanup
329
330
  {
330
331
  STDRD_OPTION_VACUUM_INDEX_CLEANUP_AUTO = 0,
331
332
  STDRD_OPTION_VACUUM_INDEX_CLEANUP_OFF,
332
- STDRD_OPTION_VACUUM_INDEX_CLEANUP_ON
333
+ STDRD_OPTION_VACUUM_INDEX_CLEANUP_ON,
333
334
  } StdRdOptIndexCleanup;
334
335
 
335
336
  typedef struct StdRdOptions
@@ -402,7 +403,7 @@ typedef enum ViewOptCheckOption
402
403
  {
403
404
  VIEW_OPTION_CHECK_OPTION_NOT_SET,
404
405
  VIEW_OPTION_CHECK_OPTION_LOCAL,
405
- VIEW_OPTION_CHECK_OPTION_CASCADED
406
+ VIEW_OPTION_CHECK_OPTION_CASCADED,
406
407
  } ViewOptCheckOption;
407
408
 
408
409
  /*
@@ -561,18 +562,15 @@ typedef struct ViewOptions
561
562
  *
562
563
  * Very little code is authorized to touch rel->rd_smgr directly. Instead
563
564
  * use this function to fetch its value.
564
- *
565
- * Note: since a relcache flush can cause the file handle to be closed again,
566
- * it's unwise to hold onto the pointer returned by this function for any
567
- * long period. Recommended practice is to just re-execute RelationGetSmgr
568
- * each time you need to access the SMgrRelation. It's quite cheap in
569
- * comparison to whatever an smgr function is going to do.
570
565
  */
571
566
  static inline SMgrRelation
572
567
  RelationGetSmgr(Relation rel)
573
568
  {
574
569
  if (unlikely(rel->rd_smgr == NULL))
575
- smgrsetowner(&(rel->rd_smgr), smgropen(rel->rd_locator, rel->rd_backend));
570
+ {
571
+ rel->rd_smgr = smgropen(rel->rd_locator, rel->rd_backend);
572
+ smgrpin(rel->rd_smgr);
573
+ }
576
574
  return rel->rd_smgr;
577
575
  }
578
576
 
@@ -584,10 +582,11 @@ static inline void
584
582
  RelationCloseSmgr(Relation relation)
585
583
  {
586
584
  if (relation->rd_smgr != NULL)
585
+ {
586
+ smgrunpin(relation->rd_smgr);
587
587
  smgrclose(relation->rd_smgr);
588
-
589
- /* smgrclose should unhook from owner pointer */
590
- Assert(relation->rd_smgr == NULL);
588
+ relation->rd_smgr = NULL;
589
+ }
591
590
  }
592
591
  #endif /* !FRONTEND */
593
592
 
@@ -4,7 +4,7 @@
4
4
  * Relation descriptor cache 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/utils/relcache.h
@@ -51,7 +51,6 @@ extern Oid RelationGetReplicaIndex(Relation relation);
51
51
  extern List *RelationGetIndexExpressions(Relation relation);
52
52
  extern List *RelationGetDummyIndexExpressions(Relation relation);
53
53
  extern List *RelationGetIndexPredicate(Relation relation);
54
- extern Datum *RelationGetIndexRawAttOptions(Relation indexrel);
55
54
  extern bytea **RelationGetIndexAttOptions(Relation relation, bool copy);
56
55
 
57
56
  /*
@@ -63,7 +62,7 @@ typedef enum IndexAttrBitmapKind
63
62
  INDEX_ATTR_BITMAP_PRIMARY_KEY,
64
63
  INDEX_ATTR_BITMAP_IDENTITY_KEY,
65
64
  INDEX_ATTR_BITMAP_HOT_BLOCKING,
66
- INDEX_ATTR_BITMAP_SUMMARIZED
65
+ INDEX_ATTR_BITMAP_SUMMARIZED,
67
66
  } IndexAttrBitmapKind;
68
67
 
69
68
  extern Bitmapset *RelationGetIndexAttrBitmap(Relation relation,
@@ -130,8 +129,6 @@ extern void RelationCacheInvalidateEntry(Oid relationId);
130
129
 
131
130
  extern void RelationCacheInvalidate(bool debug_discard);
132
131
 
133
- extern void RelationCloseSmgrByOid(Oid relationId);
134
-
135
132
  #ifdef USE_ASSERT_CHECKING
136
133
  extern void AssertPendingSyncs_RelationCache(void);
137
134
  #else
@@ -4,7 +4,7 @@
4
4
  * POSTGRES relation trigger 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/utils/reltrigger.h