pg_query 4.2.1 → 5.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 (531) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +31 -0
  3. data/README.md +6 -8
  4. data/Rakefile +5 -6
  5. data/ext/pg_query/extconf.rb +14 -4
  6. data/ext/pg_query/include/pg_query.h +27 -3
  7. data/ext/pg_query/include/pg_query_enum_defs.c +311 -149
  8. data/ext/pg_query/include/pg_query_fingerprint_conds.c +545 -489
  9. data/ext/pg_query/include/pg_query_fingerprint_defs.c +5092 -4432
  10. data/ext/pg_query/include/pg_query_outfuncs_conds.c +385 -343
  11. data/ext/pg_query/include/pg_query_outfuncs_defs.c +1294 -1161
  12. data/ext/pg_query/include/pg_query_readfuncs_conds.c +137 -123
  13. data/ext/pg_query/include/pg_query_readfuncs_defs.c +1657 -1496
  14. data/ext/pg_query/include/{access → postgres/access}/amapi.h +3 -1
  15. data/ext/pg_query/include/{access → postgres/access}/attmap.h +5 -3
  16. data/ext/pg_query/include/{access → postgres/access}/attnum.h +1 -1
  17. data/ext/pg_query/include/{access → postgres/access}/clog.h +1 -1
  18. data/ext/pg_query/include/{access → postgres/access}/commit_ts.h +1 -1
  19. data/ext/pg_query/include/{access → postgres/access}/detoast.h +1 -1
  20. data/ext/pg_query/include/{access → postgres/access}/genam.h +7 -5
  21. data/ext/pg_query/include/{access → postgres/access}/gin.h +16 -3
  22. data/ext/pg_query/include/{access → postgres/access}/htup.h +1 -1
  23. data/ext/pg_query/include/{access → postgres/access}/htup_details.h +6 -2
  24. data/ext/pg_query/include/{access → postgres/access}/itup.h +61 -58
  25. data/ext/pg_query/include/{access → postgres/access}/parallel.h +2 -2
  26. data/ext/pg_query/include/{access → postgres/access}/printtup.h +1 -1
  27. data/ext/pg_query/include/{access → postgres/access}/relation.h +1 -1
  28. data/ext/pg_query/include/{access → postgres/access}/relscan.h +1 -1
  29. data/ext/pg_query/include/{access → postgres/access}/rmgrlist.h +2 -2
  30. data/ext/pg_query/include/{access → postgres/access}/sdir.h +12 -3
  31. data/ext/pg_query/include/{access → postgres/access}/skey.h +1 -1
  32. data/ext/pg_query/include/{access → postgres/access}/stratnum.h +1 -1
  33. data/ext/pg_query/include/{access → postgres/access}/sysattr.h +1 -1
  34. data/ext/pg_query/include/{access → postgres/access}/table.h +1 -1
  35. data/ext/pg_query/include/{access → postgres/access}/tableam.h +68 -45
  36. data/ext/pg_query/include/{access → postgres/access}/toast_compression.h +1 -1
  37. data/ext/pg_query/include/{access → postgres/access}/transam.h +1 -1
  38. data/ext/pg_query/include/postgres/access/tsmapi.h +82 -0
  39. data/ext/pg_query/include/{access → postgres/access}/tupconvert.h +5 -2
  40. data/ext/pg_query/include/{access → postgres/access}/tupdesc.h +2 -2
  41. data/ext/pg_query/include/{access → postgres/access}/tupmacs.h +58 -98
  42. data/ext/pg_query/include/{access → postgres/access}/twophase.h +2 -2
  43. data/ext/pg_query/include/{access → postgres/access}/xact.h +25 -18
  44. data/ext/pg_query/include/{access → postgres/access}/xlog.h +15 -16
  45. data/ext/pg_query/include/{access → postgres/access}/xlog_internal.h +100 -62
  46. data/ext/pg_query/include/postgres/access/xlogbackup.h +41 -0
  47. data/ext/pg_query/include/{access → postgres/access}/xlogdefs.h +6 -25
  48. data/ext/pg_query/include/{access → postgres/access}/xlogprefetcher.h +1 -1
  49. data/ext/pg_query/include/{access → postgres/access}/xlogreader.h +7 -6
  50. data/ext/pg_query/include/{access → postgres/access}/xlogrecord.h +17 -5
  51. data/ext/pg_query/include/{access → postgres/access}/xlogrecovery.h +4 -3
  52. data/ext/pg_query/include/postgres/archive/archive_module.h +59 -0
  53. data/ext/pg_query/include/{c.h → postgres/c.h} +144 -156
  54. data/ext/pg_query/include/{catalog → postgres/catalog}/catalog.h +4 -3
  55. data/ext/pg_query/include/{catalog → postgres/catalog}/catversion.h +6 -2
  56. data/ext/pg_query/include/{catalog → postgres/catalog}/dependency.h +5 -4
  57. data/ext/pg_query/include/{catalog → postgres/catalog}/genbki.h +7 -6
  58. data/ext/pg_query/include/{catalog → postgres/catalog}/index.h +4 -4
  59. data/ext/pg_query/include/{catalog → postgres/catalog}/indexing.h +1 -1
  60. data/ext/pg_query/include/{catalog → postgres/catalog}/namespace.h +2 -2
  61. data/ext/pg_query/include/{catalog → postgres/catalog}/objectaccess.h +10 -8
  62. data/ext/pg_query/include/{catalog → postgres/catalog}/objectaddress.h +3 -3
  63. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate.h +1 -1
  64. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_aggregate_d.h +1 -1
  65. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am.h +1 -1
  66. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_am_d.h +1 -1
  67. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute.h +19 -17
  68. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_attribute_d.h +19 -19
  69. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid.h +1 -1
  70. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_authid_d.h +3 -1
  71. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class.h +1 -1
  72. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_class_d.h +1 -1
  73. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation.h +3 -1
  74. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_collation_d.h +4 -3
  75. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint.h +2 -2
  76. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_constraint_d.h +1 -1
  77. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_control.h +9 -1
  78. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion.h +2 -2
  79. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_conversion_d.h +1 -1
  80. data/ext/pg_query/include/postgres/catalog/pg_database.h +124 -0
  81. data/ext/pg_query/include/postgres/catalog/pg_database_d.h +52 -0
  82. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend.h +1 -1
  83. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_depend_d.h +1 -1
  84. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger.h +1 -1
  85. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_event_trigger_d.h +1 -1
  86. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index.h +1 -1
  87. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_index_d.h +1 -1
  88. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language.h +1 -1
  89. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_language_d.h +1 -1
  90. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace.h +1 -1
  91. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_namespace_d.h +1 -1
  92. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass.h +1 -1
  93. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opclass_d.h +1 -1
  94. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator.h +1 -1
  95. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_operator_d.h +1 -1
  96. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily.h +3 -2
  97. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_opfamily_d.h +4 -2
  98. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table.h +1 -1
  99. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_partitioned_table_d.h +1 -1
  100. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc.h +1 -1
  101. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_proc_d.h +1 -1
  102. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication.h +2 -5
  103. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_publication_d.h +1 -1
  104. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin.h +1 -1
  105. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_replication_origin_d.h +1 -1
  106. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic.h +1 -1
  107. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_d.h +1 -1
  108. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext.h +1 -1
  109. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_statistic_ext_d.h +1 -1
  110. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform.h +1 -1
  111. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_transform_d.h +1 -1
  112. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger.h +1 -1
  113. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_trigger_d.h +1 -1
  114. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config.h +1 -1
  115. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_config_d.h +1 -1
  116. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict.h +1 -1
  117. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_dict_d.h +1 -1
  118. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser.h +1 -1
  119. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_parser_d.h +1 -1
  120. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template.h +1 -1
  121. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_ts_template_d.h +1 -1
  122. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type.h +1 -1
  123. data/ext/pg_query/include/{catalog → postgres/catalog}/pg_type_d.h +1 -1
  124. data/ext/pg_query/include/{catalog → postgres/catalog}/storage.h +6 -6
  125. data/ext/pg_query/include/{commands → postgres/commands}/async.h +1 -1
  126. data/ext/pg_query/include/{commands → postgres/commands}/dbcommands.h +2 -1
  127. data/ext/pg_query/include/{commands → postgres/commands}/defrem.h +2 -1
  128. data/ext/pg_query/include/{commands → postgres/commands}/event_trigger.h +1 -1
  129. data/ext/pg_query/include/{commands → postgres/commands}/explain.h +3 -1
  130. data/ext/pg_query/include/{commands → postgres/commands}/prepare.h +1 -1
  131. data/ext/pg_query/include/{commands → postgres/commands}/tablespace.h +4 -4
  132. data/ext/pg_query/include/{commands → postgres/commands}/trigger.h +15 -14
  133. data/ext/pg_query/include/{commands → postgres/commands}/user.h +9 -3
  134. data/ext/pg_query/include/{commands → postgres/commands}/vacuum.h +60 -14
  135. data/ext/pg_query/include/postgres/common/cryptohash.h +39 -0
  136. data/ext/pg_query/include/{common → postgres/common}/file_perm.h +1 -1
  137. data/ext/pg_query/include/{common → postgres/common}/hashfn.h +1 -1
  138. data/ext/pg_query/include/postgres/common/int.h +437 -0
  139. data/ext/pg_query/include/{common → postgres/common}/keywords.h +1 -1
  140. data/ext/pg_query/include/{common → postgres/common}/kwlookup.h +2 -2
  141. data/ext/pg_query/include/{common → postgres/common}/pg_prng.h +3 -2
  142. data/ext/pg_query/include/{common → postgres/common}/relpath.h +20 -13
  143. data/ext/pg_query/include/postgres/common/scram-common.h +70 -0
  144. data/ext/pg_query/include/postgres/common/sha2.h +32 -0
  145. data/ext/pg_query/include/{common → postgres/common}/string.h +5 -3
  146. data/ext/pg_query/include/{common → postgres/common}/unicode_east_asian_fw_table.h +10 -10
  147. data/ext/pg_query/include/{common/unicode_combining_table.h → postgres/common/unicode_nonspacing_table.h} +31 -13
  148. data/ext/pg_query/include/postgres/copyfuncs.funcs.c +5013 -0
  149. data/ext/pg_query/include/postgres/copyfuncs.switch.c +938 -0
  150. data/ext/pg_query/include/{datatype → postgres/datatype}/timestamp.h +11 -4
  151. data/ext/pg_query/include/postgres/equalfuncs.funcs.c +3097 -0
  152. data/ext/pg_query/include/postgres/equalfuncs.switch.c +785 -0
  153. data/ext/pg_query/include/{executor → postgres/executor}/execdesc.h +1 -1
  154. data/ext/pg_query/include/{executor → postgres/executor}/executor.h +34 -17
  155. data/ext/pg_query/include/{executor → postgres/executor}/functions.h +1 -1
  156. data/ext/pg_query/include/{executor → postgres/executor}/instrument.h +1 -1
  157. data/ext/pg_query/include/{executor → postgres/executor}/spi.h +2 -2
  158. data/ext/pg_query/include/{executor → postgres/executor}/tablefunc.h +1 -1
  159. data/ext/pg_query/include/{executor → postgres/executor}/tuptable.h +18 -11
  160. data/ext/pg_query/include/{fmgr.h → postgres/fmgr.h} +21 -2
  161. data/ext/pg_query/include/postgres/foreign/fdwapi.h +294 -0
  162. data/ext/pg_query/include/{funcapi.h → postgres/funcapi.h} +12 -12
  163. data/ext/pg_query/include/postgres/gram.h +1127 -0
  164. data/ext/pg_query/include/{parser → postgres}/gramparse.h +4 -4
  165. data/ext/pg_query/include/{jit → postgres/jit}/jit.h +2 -2
  166. data/ext/pg_query/include/postgres/kwlist_d.h +1119 -0
  167. data/ext/pg_query/include/{lib → postgres/lib}/dshash.h +4 -1
  168. data/ext/pg_query/include/{lib → postgres/lib}/ilist.h +435 -22
  169. data/ext/pg_query/include/{lib → postgres/lib}/pairingheap.h +1 -1
  170. data/ext/pg_query/include/{lib → postgres/lib}/simplehash.h +9 -9
  171. data/ext/pg_query/include/{lib → postgres/lib}/sort_template.h +1 -1
  172. data/ext/pg_query/include/{lib → postgres/lib}/stringinfo.h +3 -3
  173. data/ext/pg_query/include/{libpq → postgres/libpq}/auth.h +8 -2
  174. data/ext/pg_query/include/{libpq → postgres/libpq}/crypt.h +1 -1
  175. data/ext/pg_query/include/{libpq → postgres/libpq}/hba.h +24 -17
  176. data/ext/pg_query/include/{libpq → postgres/libpq}/libpq-be.h +36 -25
  177. data/ext/pg_query/include/{libpq → postgres/libpq}/libpq.h +1 -1
  178. data/ext/pg_query/include/{libpq → postgres/libpq}/pqcomm.h +10 -41
  179. data/ext/pg_query/include/{libpq → postgres/libpq}/pqformat.h +2 -2
  180. data/ext/pg_query/include/{libpq → postgres/libpq}/pqsignal.h +22 -10
  181. data/ext/pg_query/include/postgres/libpq/sasl.h +136 -0
  182. data/ext/pg_query/include/postgres/libpq/scram.h +37 -0
  183. data/ext/pg_query/include/{mb → postgres/mb}/pg_wchar.h +35 -18
  184. data/ext/pg_query/include/{mb → postgres/mb}/stringinfo_mb.h +1 -1
  185. data/ext/pg_query/include/{miscadmin.h → postgres/miscadmin.h} +27 -15
  186. data/ext/pg_query/include/{nodes → postgres/nodes}/bitmapset.h +11 -7
  187. data/ext/pg_query/include/{nodes → postgres/nodes}/execnodes.h +83 -30
  188. data/ext/pg_query/include/{nodes → postgres/nodes}/extensible.h +5 -3
  189. data/ext/pg_query/include/{nodes → postgres/nodes}/lockoptions.h +1 -1
  190. data/ext/pg_query/include/{nodes → postgres/nodes}/makefuncs.h +14 -2
  191. data/ext/pg_query/include/{nodes → postgres/nodes}/memnodes.h +7 -4
  192. data/ext/pg_query/include/postgres/nodes/miscnodes.h +56 -0
  193. data/ext/pg_query/include/{nodes → postgres/nodes}/nodeFuncs.h +89 -29
  194. data/ext/pg_query/include/{nodes → postgres/nodes}/nodes.h +96 -511
  195. data/ext/pg_query/include/postgres/nodes/nodetags.h +471 -0
  196. data/ext/pg_query/include/{nodes → postgres/nodes}/params.h +3 -3
  197. data/ext/pg_query/include/{nodes → postgres/nodes}/parsenodes.h +377 -139
  198. data/ext/pg_query/include/{nodes → postgres/nodes}/pathnodes.h +1090 -440
  199. data/ext/pg_query/include/{nodes → postgres/nodes}/pg_list.h +30 -7
  200. data/ext/pg_query/include/{nodes → postgres/nodes}/plannodes.h +367 -124
  201. data/ext/pg_query/include/{nodes → postgres/nodes}/primnodes.h +670 -222
  202. data/ext/pg_query/include/{nodes → postgres/nodes}/print.h +1 -1
  203. data/ext/pg_query/include/{utils → postgres/nodes}/queryjumble.h +5 -7
  204. data/ext/pg_query/include/postgres/nodes/replnodes.h +111 -0
  205. data/ext/pg_query/include/postgres/nodes/supportnodes.h +346 -0
  206. data/ext/pg_query/include/{nodes → postgres/nodes}/tidbitmap.h +1 -1
  207. data/ext/pg_query/include/{nodes → postgres/nodes}/value.h +12 -2
  208. data/ext/pg_query/include/{optimizer → postgres/optimizer}/cost.h +6 -4
  209. data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo.h +1 -1
  210. data/ext/pg_query/include/{optimizer → postgres/optimizer}/geqo_gene.h +1 -1
  211. data/ext/pg_query/include/{optimizer → postgres/optimizer}/optimizer.h +8 -8
  212. data/ext/pg_query/include/{optimizer → postgres/optimizer}/paths.h +16 -7
  213. data/ext/pg_query/include/{optimizer → postgres/optimizer}/planmain.h +3 -6
  214. data/ext/pg_query/include/{parser → postgres/parser}/analyze.h +4 -3
  215. data/ext/pg_query/include/{parser → postgres/parser}/kwlist.h +12 -1
  216. data/ext/pg_query/include/{parser → postgres/parser}/parse_agg.h +4 -2
  217. data/ext/pg_query/include/{parser → postgres/parser}/parse_coerce.h +3 -1
  218. data/ext/pg_query/include/{parser → postgres/parser}/parse_expr.h +1 -1
  219. data/ext/pg_query/include/{parser → postgres/parser}/parse_func.h +1 -1
  220. data/ext/pg_query/include/{parser → postgres/parser}/parse_node.h +22 -4
  221. data/ext/pg_query/include/{parser → postgres/parser}/parse_oper.h +3 -3
  222. data/ext/pg_query/include/{parser → postgres/parser}/parse_relation.h +8 -3
  223. data/ext/pg_query/include/{parser → postgres/parser}/parse_type.h +4 -3
  224. data/ext/pg_query/include/{parser → postgres/parser}/parser.h +4 -4
  225. data/ext/pg_query/include/{parser → postgres/parser}/parsetree.h +1 -1
  226. data/ext/pg_query/include/{parser → postgres/parser}/scanner.h +2 -2
  227. data/ext/pg_query/include/{parser → postgres/parser}/scansup.h +1 -1
  228. data/ext/pg_query/include/{partitioning → postgres/partitioning}/partdefs.h +1 -1
  229. data/ext/pg_query/include/{pg_config.h → postgres/pg_config.h} +158 -218
  230. data/ext/pg_query/include/{pg_config_manual.h → postgres/pg_config_manual.h} +8 -46
  231. data/ext/pg_query/include/postgres/pg_config_os.h +8 -0
  232. data/ext/pg_query/include/{pg_getopt.h → postgres/pg_getopt.h} +1 -1
  233. data/ext/pg_query/include/{pg_trace.h → postgres/pg_trace.h} +1 -1
  234. data/ext/pg_query/include/{pgstat.h → postgres/pgstat.h} +173 -94
  235. data/ext/pg_query/include/{pgtime.h → postgres/pgtime.h} +3 -3
  236. data/ext/pg_query/include/{pl_gram.h → postgres/pl_gram.h} +66 -64
  237. data/ext/pg_query/include/{pl_reserved_kwlist.h → postgres/pl_reserved_kwlist.h} +1 -1
  238. data/ext/pg_query/include/{pl_reserved_kwlist_d.h → postgres/pl_reserved_kwlist_d.h} +1 -1
  239. data/ext/pg_query/include/{pl_unreserved_kwlist.h → postgres/pl_unreserved_kwlist.h} +2 -1
  240. data/ext/pg_query/include/{pl_unreserved_kwlist_d.h → postgres/pl_unreserved_kwlist_d.h} +48 -46
  241. data/ext/pg_query/include/{plpgsql.h → postgres/plpgsql.h} +28 -33
  242. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-arm.h +3 -3
  243. data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +17 -0
  244. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-ppc.h +21 -21
  245. data/ext/pg_query/include/{port → postgres/port}/atomics/arch-x86.h +2 -2
  246. data/ext/pg_query/include/{port → postgres/port}/atomics/fallback.h +3 -3
  247. data/ext/pg_query/include/{port → postgres/port}/atomics/generic-gcc.h +1 -1
  248. data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +101 -0
  249. data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +106 -0
  250. data/ext/pg_query/include/{port → postgres/port}/atomics/generic.h +1 -1
  251. data/ext/pg_query/include/{port → postgres/port}/atomics.h +2 -7
  252. data/ext/pg_query/include/{port → postgres/port}/pg_bitutils.h +62 -25
  253. data/ext/pg_query/include/{port → postgres/port}/pg_bswap.h +1 -1
  254. data/ext/pg_query/include/{port → postgres/port}/pg_crc32c.h +1 -1
  255. data/ext/pg_query/include/postgres/port/simd.h +375 -0
  256. data/ext/pg_query/include/postgres/port/win32/arpa/inet.h +3 -0
  257. data/ext/pg_query/include/postgres/port/win32/dlfcn.h +1 -0
  258. data/ext/pg_query/include/postgres/port/win32/grp.h +1 -0
  259. data/ext/pg_query/include/postgres/port/win32/netdb.h +7 -0
  260. data/ext/pg_query/include/postgres/port/win32/netinet/in.h +3 -0
  261. data/ext/pg_query/include/postgres/port/win32/netinet/tcp.h +7 -0
  262. data/ext/pg_query/include/postgres/port/win32/pwd.h +3 -0
  263. data/ext/pg_query/include/postgres/port/win32/sys/resource.h +20 -0
  264. data/ext/pg_query/include/postgres/port/win32/sys/select.h +3 -0
  265. data/ext/pg_query/include/postgres/port/win32/sys/socket.h +26 -0
  266. data/ext/pg_query/include/postgres/port/win32/sys/un.h +17 -0
  267. data/ext/pg_query/include/postgres/port/win32/sys/wait.h +3 -0
  268. data/ext/pg_query/include/postgres/port/win32.h +59 -0
  269. data/ext/pg_query/include/postgres/port/win32_msvc/dirent.h +34 -0
  270. data/ext/pg_query/include/postgres/port/win32_msvc/sys/file.h +1 -0
  271. data/ext/pg_query/include/postgres/port/win32_msvc/sys/param.h +1 -0
  272. data/ext/pg_query/include/postgres/port/win32_msvc/sys/time.h +1 -0
  273. data/ext/pg_query/include/postgres/port/win32_msvc/unistd.h +9 -0
  274. data/ext/pg_query/include/postgres/port/win32_msvc/utime.h +3 -0
  275. data/ext/pg_query/include/postgres/port/win32_port.h +594 -0
  276. data/ext/pg_query/include/{port.h → postgres/port.h} +42 -75
  277. data/ext/pg_query/include/postgres/portability/instr_time.h +197 -0
  278. data/ext/pg_query/include/postgres/postgres.h +579 -0
  279. data/ext/pg_query/include/{postgres_ext.h → postgres/postgres_ext.h} +0 -1
  280. data/ext/pg_query/include/{postmaster → postgres/postmaster}/autovacuum.h +1 -4
  281. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker.h +2 -2
  282. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgworker_internals.h +1 -1
  283. data/ext/pg_query/include/{postmaster → postgres/postmaster}/bgwriter.h +2 -2
  284. data/ext/pg_query/include/{postmaster → postgres/postmaster}/interrupt.h +1 -1
  285. data/ext/pg_query/include/postgres/postmaster/pgarch.h +36 -0
  286. data/ext/pg_query/include/{postmaster → postgres/postmaster}/postmaster.h +6 -3
  287. data/ext/pg_query/include/{postmaster → postgres/postmaster}/startup.h +3 -1
  288. data/ext/pg_query/include/{postmaster → postgres/postmaster}/syslogger.h +2 -2
  289. data/ext/pg_query/include/{postmaster → postgres/postmaster}/walwriter.h +3 -1
  290. data/ext/pg_query/include/{regex → postgres/regex}/regex.h +9 -6
  291. data/ext/pg_query/include/{replication → postgres/replication}/logicallauncher.h +6 -1
  292. data/ext/pg_query/include/{replication → postgres/replication}/logicalproto.h +30 -10
  293. data/ext/pg_query/include/postgres/replication/logicalworker.h +32 -0
  294. data/ext/pg_query/include/{replication → postgres/replication}/origin.h +4 -4
  295. data/ext/pg_query/include/{replication → postgres/replication}/reorderbuffer.h +113 -45
  296. data/ext/pg_query/include/{replication → postgres/replication}/slot.h +25 -6
  297. data/ext/pg_query/include/{replication → postgres/replication}/syncrep.h +2 -8
  298. data/ext/pg_query/include/{replication → postgres/replication}/walreceiver.h +15 -9
  299. data/ext/pg_query/include/{replication → postgres/replication}/walsender.h +13 -13
  300. data/ext/pg_query/include/{rewrite → postgres/rewrite}/prs2lock.h +1 -1
  301. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteHandler.h +1 -4
  302. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteManip.h +11 -2
  303. data/ext/pg_query/include/{rewrite → postgres/rewrite}/rewriteSupport.h +1 -1
  304. data/ext/pg_query/include/{storage → postgres/storage}/backendid.h +1 -1
  305. data/ext/pg_query/include/{storage → postgres/storage}/block.h +24 -31
  306. data/ext/pg_query/include/{storage → postgres/storage}/buf.h +1 -1
  307. data/ext/pg_query/include/{storage → postgres/storage}/bufmgr.h +183 -87
  308. data/ext/pg_query/include/{storage → postgres/storage}/bufpage.h +146 -93
  309. data/ext/pg_query/include/{storage → postgres/storage}/condition_variable.h +2 -2
  310. data/ext/pg_query/include/{storage → postgres/storage}/dsm.h +3 -6
  311. data/ext/pg_query/include/{storage → postgres/storage}/dsm_impl.h +4 -1
  312. data/ext/pg_query/include/{storage → postgres/storage}/fd.h +24 -20
  313. data/ext/pg_query/include/{storage → postgres/storage}/fileset.h +1 -1
  314. data/ext/pg_query/include/{storage → postgres/storage}/ipc.h +2 -2
  315. data/ext/pg_query/include/{storage → postgres/storage}/item.h +1 -1
  316. data/ext/pg_query/include/{storage → postgres/storage}/itemid.h +1 -1
  317. data/ext/pg_query/include/{storage → postgres/storage}/itemptr.h +94 -57
  318. data/ext/pg_query/include/{storage → postgres/storage}/large_object.h +1 -1
  319. data/ext/pg_query/include/{storage → postgres/storage}/latch.h +9 -1
  320. data/ext/pg_query/include/{storage → postgres/storage}/lmgr.h +6 -1
  321. data/ext/pg_query/include/{storage → postgres/storage}/lock.h +21 -13
  322. data/ext/pg_query/include/{storage → postgres/storage}/lockdefs.h +3 -3
  323. data/ext/pg_query/include/{storage → postgres/storage}/lwlock.h +16 -2
  324. data/ext/pg_query/include/{storage → postgres/storage}/off.h +1 -1
  325. data/ext/pg_query/include/{storage → postgres/storage}/pg_sema.h +1 -1
  326. data/ext/pg_query/include/{storage → postgres/storage}/pg_shmem.h +1 -1
  327. data/ext/pg_query/include/{storage → postgres/storage}/pmsignal.h +1 -1
  328. data/ext/pg_query/include/{storage → postgres/storage}/predicate.h +2 -2
  329. data/ext/pg_query/include/{storage → postgres/storage}/proc.h +22 -17
  330. data/ext/pg_query/include/{storage → postgres/storage}/procarray.h +3 -2
  331. data/ext/pg_query/include/{storage → postgres/storage}/proclist_types.h +1 -1
  332. data/ext/pg_query/include/{storage → postgres/storage}/procsignal.h +3 -1
  333. data/ext/pg_query/include/postgres/storage/relfilelocator.h +99 -0
  334. data/ext/pg_query/include/{storage → postgres/storage}/s_lock.h +66 -309
  335. data/ext/pg_query/include/{storage → postgres/storage}/sharedfileset.h +1 -1
  336. data/ext/pg_query/include/{storage → postgres/storage}/shm_mq.h +1 -1
  337. data/ext/pg_query/include/{storage → postgres/storage}/shm_toc.h +1 -1
  338. data/ext/pg_query/include/{storage → postgres/storage}/shmem.h +1 -23
  339. data/ext/pg_query/include/{storage → postgres/storage}/sinval.h +3 -3
  340. data/ext/pg_query/include/{storage → postgres/storage}/sinvaladt.h +4 -2
  341. data/ext/pg_query/include/{storage → postgres/storage}/smgr.h +12 -10
  342. data/ext/pg_query/include/{storage → postgres/storage}/spin.h +1 -1
  343. data/ext/pg_query/include/{storage → postgres/storage}/standby.h +9 -8
  344. data/ext/pg_query/include/{storage → postgres/storage}/standbydefs.h +1 -1
  345. data/ext/pg_query/include/{storage → postgres/storage}/sync.h +3 -3
  346. data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtag.h +7 -2
  347. data/ext/pg_query/include/{tcop → postgres/tcop}/cmdtaglist.h +1 -1
  348. data/ext/pg_query/include/{tcop → postgres/tcop}/deparse_utility.h +1 -1
  349. data/ext/pg_query/include/{tcop → postgres/tcop}/dest.h +1 -3
  350. data/ext/pg_query/include/{tcop → postgres/tcop}/fastpath.h +1 -1
  351. data/ext/pg_query/include/{tcop → postgres/tcop}/pquery.h +1 -1
  352. data/ext/pg_query/include/{tcop → postgres/tcop}/tcopprot.h +3 -6
  353. data/ext/pg_query/include/{tcop → postgres/tcop}/utility.h +1 -1
  354. data/ext/pg_query/include/{tsearch → postgres/tsearch}/ts_cache.h +2 -4
  355. data/ext/pg_query/include/{utils → postgres/utils}/acl.h +26 -81
  356. data/ext/pg_query/include/{utils → postgres/utils}/aclchk_internal.h +1 -1
  357. data/ext/pg_query/include/{utils → postgres/utils}/array.h +19 -1
  358. data/ext/pg_query/include/{utils → postgres/utils}/backend_progress.h +2 -1
  359. data/ext/pg_query/include/{utils → postgres/utils}/backend_status.h +24 -3
  360. data/ext/pg_query/include/{utils → postgres/utils}/builtins.h +15 -6
  361. data/ext/pg_query/include/{utils → postgres/utils}/bytea.h +1 -1
  362. data/ext/pg_query/include/{utils → postgres/utils}/catcache.h +1 -1
  363. data/ext/pg_query/include/{utils → postgres/utils}/date.h +37 -9
  364. data/ext/pg_query/include/{utils → postgres/utils}/datetime.h +41 -21
  365. data/ext/pg_query/include/{utils → postgres/utils}/datum.h +1 -1
  366. data/ext/pg_query/include/{utils → postgres/utils}/dsa.h +5 -1
  367. data/ext/pg_query/include/{utils → postgres/utils}/elog.h +104 -29
  368. data/ext/pg_query/include/{utils → postgres/utils}/expandeddatum.h +14 -3
  369. data/ext/pg_query/include/{utils → postgres/utils}/expandedrecord.h +14 -4
  370. data/ext/pg_query/include/{utils → postgres/utils}/float.h +7 -6
  371. data/ext/pg_query/include/{utils → postgres/utils}/fmgroids.h +54 -1
  372. data/ext/pg_query/include/{utils → postgres/utils}/fmgrprotos.h +45 -3
  373. data/ext/pg_query/include/{utils → postgres/utils}/fmgrtab.h +1 -1
  374. data/ext/pg_query/include/{utils → postgres/utils}/guc.h +59 -86
  375. data/ext/pg_query/include/postgres/utils/guc_hooks.h +163 -0
  376. data/ext/pg_query/include/{utils → postgres/utils}/guc_tables.h +49 -3
  377. data/ext/pg_query/include/{utils → postgres/utils}/hsearch.h +1 -1
  378. data/ext/pg_query/include/{utils → postgres/utils}/inval.h +3 -3
  379. data/ext/pg_query/include/postgres/utils/logtape.h +77 -0
  380. data/ext/pg_query/include/{utils → postgres/utils}/lsyscache.h +5 -1
  381. data/ext/pg_query/include/{utils → postgres/utils}/memdebug.h +1 -1
  382. data/ext/pg_query/include/{utils → postgres/utils}/memutils.h +7 -51
  383. data/ext/pg_query/include/postgres/utils/memutils_internal.h +136 -0
  384. data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +237 -0
  385. data/ext/pg_query/include/{utils → postgres/utils}/numeric.h +20 -5
  386. data/ext/pg_query/include/{utils → postgres/utils}/palloc.h +9 -2
  387. data/ext/pg_query/include/{utils → postgres/utils}/partcache.h +3 -2
  388. data/ext/pg_query/include/{utils → postgres/utils}/pg_locale.h +22 -14
  389. data/ext/pg_query/include/{utils → postgres/utils}/pgstat_internal.h +37 -7
  390. data/ext/pg_query/include/{utils → postgres/utils}/plancache.h +1 -1
  391. data/ext/pg_query/include/{utils → postgres/utils}/portal.h +1 -1
  392. data/ext/pg_query/include/{utils → postgres/utils}/probes.h +6 -6
  393. data/ext/pg_query/include/postgres/utils/ps_status.h +47 -0
  394. data/ext/pg_query/include/{utils → postgres/utils}/queryenvironment.h +1 -1
  395. data/ext/pg_query/include/{utils → postgres/utils}/regproc.h +3 -3
  396. data/ext/pg_query/include/{utils → postgres/utils}/rel.h +60 -43
  397. data/ext/pg_query/include/{utils → postgres/utils}/relcache.h +13 -8
  398. data/ext/pg_query/include/{utils → postgres/utils}/reltrigger.h +1 -1
  399. data/ext/pg_query/include/{utils → postgres/utils}/resowner.h +1 -1
  400. data/ext/pg_query/include/{utils → postgres/utils}/ruleutils.h +6 -1
  401. data/ext/pg_query/include/{utils → postgres/utils}/sharedtuplestore.h +1 -1
  402. data/ext/pg_query/include/{utils → postgres/utils}/snapmgr.h +4 -2
  403. data/ext/pg_query/include/{utils → postgres/utils}/snapshot.h +1 -1
  404. data/ext/pg_query/include/{utils → postgres/utils}/sortsupport.h +2 -2
  405. data/ext/pg_query/include/{utils → postgres/utils}/syscache.h +4 -1
  406. data/ext/pg_query/include/{utils → postgres/utils}/timeout.h +1 -1
  407. data/ext/pg_query/include/{utils → postgres/utils}/timestamp.h +41 -11
  408. data/ext/pg_query/include/{utils → postgres/utils}/tuplesort.h +189 -35
  409. data/ext/pg_query/include/{utils → postgres/utils}/tuplestore.h +1 -1
  410. data/ext/pg_query/include/{utils → postgres/utils}/typcache.h +1 -1
  411. data/ext/pg_query/include/{utils → postgres/utils}/varlena.h +13 -1
  412. data/ext/pg_query/include/{utils → postgres/utils}/wait_event.h +9 -4
  413. data/ext/pg_query/include/{utils → postgres/utils}/xml.h +15 -5
  414. data/ext/pg_query/include/{postgres.h → postgres/varatt.h} +7 -457
  415. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +6186 -5585
  416. data/ext/pg_query/include/protobuf/pg_query.pb.h +112443 -91222
  417. data/ext/pg_query/pg_query.c +10 -1
  418. data/ext/pg_query/pg_query.pb-c.c +19755 -17757
  419. data/ext/pg_query/pg_query_deparse.c +1 -10635
  420. data/ext/pg_query/pg_query_fingerprint.c +12 -8
  421. data/ext/pg_query/pg_query_fingerprint.h +1 -1
  422. data/ext/pg_query/pg_query_internal.h +1 -1
  423. data/ext/pg_query/pg_query_json_plpgsql.c +1 -0
  424. data/ext/pg_query/pg_query_normalize.c +1 -1
  425. data/ext/pg_query/pg_query_outfuncs_json.c +6 -0
  426. data/ext/pg_query/pg_query_outfuncs_protobuf.c +3 -2
  427. data/ext/pg_query/pg_query_parse.c +47 -5
  428. data/ext/pg_query/pg_query_parse_plpgsql.c +7 -5
  429. data/ext/pg_query/pg_query_readfuncs_protobuf.c +1 -0
  430. data/ext/pg_query/pg_query_ruby.c +5 -0
  431. data/ext/pg_query/pg_query_ruby_freebsd.sym +2 -0
  432. data/ext/pg_query/pg_query_scan.c +1 -1
  433. data/ext/pg_query/pg_query_split.c +3 -3
  434. data/ext/pg_query/postgres_deparse.c +11067 -0
  435. data/ext/pg_query/postgres_deparse.h +9 -0
  436. data/ext/pg_query/src_backend_catalog_namespace.c +7 -2
  437. data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -1
  438. data/ext/pg_query/src_backend_commands_define.c +1 -1
  439. data/ext/pg_query/src_backend_nodes_bitmapset.c +11 -70
  440. data/ext/pg_query/src_backend_nodes_copyfuncs.c +96 -6202
  441. data/ext/pg_query/src_backend_nodes_equalfuncs.c +95 -4068
  442. data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
  443. data/ext/pg_query/src_backend_nodes_list.c +14 -2
  444. data/ext/pg_query/src_backend_nodes_makefuncs.c +95 -1
  445. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +283 -132
  446. data/ext/pg_query/src_backend_nodes_nodes.c +38 -0
  447. data/ext/pg_query/src_backend_nodes_value.c +1 -1
  448. data/ext/pg_query/src_backend_parser_gram.c +33208 -31806
  449. data/ext/pg_query/src_backend_parser_parser.c +28 -2
  450. data/ext/pg_query/src_backend_parser_scan.c +4318 -3329
  451. data/ext/pg_query/src_backend_parser_scansup.c +1 -1
  452. data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
  453. data/ext/pg_query/src_backend_tcop_postgres.c +66 -87
  454. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +1 -1
  455. data/ext/pg_query/src_backend_utils_adt_datum.c +5 -7
  456. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  457. data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
  458. data/ext/pg_query/src_backend_utils_adt_numutils.c +489 -0
  459. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +79 -5
  460. data/ext/pg_query/src_backend_utils_error_assert.c +4 -7
  461. data/ext/pg_query/src_backend_utils_error_elog.c +371 -249
  462. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +33 -1
  463. data/ext/pg_query/src_backend_utils_init_globals.c +6 -3
  464. data/ext/pg_query/src_backend_utils_mb_mbutils.c +21 -67
  465. data/ext/pg_query/src_backend_utils_misc_guc_tables.c +492 -0
  466. data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +163 -0
  467. data/ext/pg_query/src_backend_utils_mmgr_aset.c +449 -312
  468. data/ext/pg_query/src_backend_utils_mmgr_generation.c +1039 -0
  469. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +398 -49
  470. data/ext/pg_query/src_backend_utils_mmgr_slab.c +1021 -0
  471. data/ext/pg_query/src_common_encnames.c +4 -1
  472. data/ext/pg_query/src_common_hashfn.c +1 -1
  473. data/ext/pg_query/src_common_keywords.c +1 -1
  474. data/ext/pg_query/src_common_kwlist_d.h +534 -510
  475. data/ext/pg_query/src_common_kwlookup.c +1 -1
  476. data/ext/pg_query/src_common_psprintf.c +1 -1
  477. data/ext/pg_query/src_common_stringinfo.c +4 -4
  478. data/ext/pg_query/src_common_wchar.c +9 -8
  479. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +1 -1
  480. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -1
  481. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +661 -694
  482. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  483. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
  484. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +1 -1
  485. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +48 -46
  486. data/ext/pg_query/src_port_pg_bitutils.c +79 -5
  487. data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
  488. data/ext/pg_query/src_port_snprintf.c +6 -10
  489. data/ext/pg_query/src_port_strerror.c +1 -1
  490. data/ext/pg_query/src_port_strlcpy.c +79 -0
  491. data/lib/pg_query/fingerprint.rb +2 -3
  492. data/lib/pg_query/node.rb +16 -11
  493. data/lib/pg_query/parse.rb +1 -1
  494. data/lib/pg_query/pg_query_pb.rb +166 -3191
  495. data/lib/pg_query/treewalker.rb +23 -5
  496. data/lib/pg_query/version.rb +1 -1
  497. metadata +432 -380
  498. data/ext/pg_query/guc-file.c +0 -0
  499. data/ext/pg_query/include/catalog/pg_parameter_acl.h +0 -60
  500. data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +0 -34
  501. data/ext/pg_query/include/commands/variable.h +0 -38
  502. data/ext/pg_query/include/common/ip.h +0 -31
  503. data/ext/pg_query/include/getaddrinfo.h +0 -162
  504. data/ext/pg_query/include/kwlist_d.h +0 -1095
  505. data/ext/pg_query/include/parser/gram.h +0 -1101
  506. data/ext/pg_query/include/pg_config_os.h +0 -8
  507. data/ext/pg_query/include/portability/instr_time.h +0 -256
  508. data/ext/pg_query/include/postmaster/auxprocess.h +0 -20
  509. data/ext/pg_query/include/postmaster/fork_process.h +0 -17
  510. data/ext/pg_query/include/postmaster/pgarch.h +0 -73
  511. data/ext/pg_query/include/replication/logicalworker.h +0 -19
  512. data/ext/pg_query/include/storage/relfilenode.h +0 -99
  513. data/ext/pg_query/include/utils/dynahash.h +0 -20
  514. data/ext/pg_query/include/utils/pg_lsn.h +0 -29
  515. data/ext/pg_query/include/utils/pidfile.h +0 -56
  516. data/ext/pg_query/include/utils/ps_status.h +0 -25
  517. data/ext/pg_query/include/utils/rls.h +0 -50
  518. data/ext/pg_query/include/utils/tzparser.h +0 -39
  519. data/ext/pg_query/src_backend_postmaster_postmaster.c +0 -2201
  520. data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -371
  521. data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1116
  522. data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1993
  523. data/ext/pg_query/src_common_pg_prng.c +0 -152
  524. data/ext/pg_query/src_common_string.c +0 -92
  525. data/ext/pg_query/src_port_pgsleep.c +0 -69
  526. data/ext/pg_query/src_port_strnlen.c +0 -39
  527. /data/ext/pg_query/include/{access → postgres/access}/rmgr.h +0 -0
  528. /data/ext/pg_query/include/{pg_config_ext.h → postgres/pg_config_ext.h} +0 -0
  529. /data/ext/pg_query/include/{plerrcodes.h → postgres/plerrcodes.h} +0 -0
  530. /data/ext/pg_query/include/{storage → postgres/storage}/lwlocknames.h +0 -0
  531. /data/ext/pg_query/include/{utils → postgres/utils}/errcodes.h +0 -0
@@ -4,7 +4,7 @@
4
4
  * POSTGRES disk item pointer definitions.
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2023, 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
@@ -71,7 +71,7 @@ typedef ItemPointerData *ItemPointer;
71
71
 
72
72
 
73
73
  /* ----------------
74
- * support macros
74
+ * support functions
75
75
  * ----------------
76
76
  */
77
77
 
@@ -79,77 +79,87 @@ typedef ItemPointerData *ItemPointer;
79
79
  * ItemPointerIsValid
80
80
  * True iff the disk item pointer is not NULL.
81
81
  */
82
- #define ItemPointerIsValid(pointer) \
83
- ((bool) (PointerIsValid(pointer) && ((pointer)->ip_posid != 0)))
82
+ static inline bool
83
+ ItemPointerIsValid(const ItemPointerData *pointer)
84
+ {
85
+ return PointerIsValid(pointer) && pointer->ip_posid != 0;
86
+ }
84
87
 
85
88
  /*
86
89
  * ItemPointerGetBlockNumberNoCheck
87
90
  * Returns the block number of a disk item pointer.
88
91
  */
89
- #define ItemPointerGetBlockNumberNoCheck(pointer) \
90
- ( \
91
- BlockIdGetBlockNumber(&(pointer)->ip_blkid) \
92
- )
92
+ static inline BlockNumber
93
+ ItemPointerGetBlockNumberNoCheck(const ItemPointerData *pointer)
94
+ {
95
+ return BlockIdGetBlockNumber(&pointer->ip_blkid);
96
+ }
93
97
 
94
98
  /*
95
99
  * ItemPointerGetBlockNumber
96
100
  * As above, but verifies that the item pointer looks valid.
97
101
  */
98
- #define ItemPointerGetBlockNumber(pointer) \
99
- ( \
100
- AssertMacro(ItemPointerIsValid(pointer)), \
101
- ItemPointerGetBlockNumberNoCheck(pointer) \
102
- )
102
+ static inline BlockNumber
103
+ ItemPointerGetBlockNumber(const ItemPointerData *pointer)
104
+ {
105
+ Assert(ItemPointerIsValid(pointer));
106
+ return ItemPointerGetBlockNumberNoCheck(pointer);
107
+ }
103
108
 
104
109
  /*
105
110
  * ItemPointerGetOffsetNumberNoCheck
106
111
  * Returns the offset number of a disk item pointer.
107
112
  */
108
- #define ItemPointerGetOffsetNumberNoCheck(pointer) \
109
- ( \
110
- (pointer)->ip_posid \
111
- )
113
+ static inline OffsetNumber
114
+ ItemPointerGetOffsetNumberNoCheck(const ItemPointerData *pointer)
115
+ {
116
+ return pointer->ip_posid;
117
+ }
112
118
 
113
119
  /*
114
120
  * ItemPointerGetOffsetNumber
115
121
  * As above, but verifies that the item pointer looks valid.
116
122
  */
117
- #define ItemPointerGetOffsetNumber(pointer) \
118
- ( \
119
- AssertMacro(ItemPointerIsValid(pointer)), \
120
- ItemPointerGetOffsetNumberNoCheck(pointer) \
121
- )
123
+ static inline OffsetNumber
124
+ ItemPointerGetOffsetNumber(const ItemPointerData *pointer)
125
+ {
126
+ Assert(ItemPointerIsValid(pointer));
127
+ return ItemPointerGetOffsetNumberNoCheck(pointer);
128
+ }
122
129
 
123
130
  /*
124
131
  * ItemPointerSet
125
132
  * Sets a disk item pointer to the specified block and offset.
126
133
  */
127
- #define ItemPointerSet(pointer, blockNumber, offNum) \
128
- ( \
129
- AssertMacro(PointerIsValid(pointer)), \
130
- BlockIdSet(&((pointer)->ip_blkid), blockNumber), \
131
- (pointer)->ip_posid = offNum \
132
- )
134
+ static inline void
135
+ ItemPointerSet(ItemPointerData *pointer, BlockNumber blockNumber, OffsetNumber offNum)
136
+ {
137
+ Assert(PointerIsValid(pointer));
138
+ BlockIdSet(&pointer->ip_blkid, blockNumber);
139
+ pointer->ip_posid = offNum;
140
+ }
133
141
 
134
142
  /*
135
143
  * ItemPointerSetBlockNumber
136
144
  * Sets a disk item pointer to the specified block.
137
145
  */
138
- #define ItemPointerSetBlockNumber(pointer, blockNumber) \
139
- ( \
140
- AssertMacro(PointerIsValid(pointer)), \
141
- BlockIdSet(&((pointer)->ip_blkid), blockNumber) \
142
- )
146
+ static inline void
147
+ ItemPointerSetBlockNumber(ItemPointerData *pointer, BlockNumber blockNumber)
148
+ {
149
+ Assert(PointerIsValid(pointer));
150
+ BlockIdSet(&pointer->ip_blkid, blockNumber);
151
+ }
143
152
 
144
153
  /*
145
154
  * ItemPointerSetOffsetNumber
146
155
  * Sets a disk item pointer to the specified offset.
147
156
  */
148
- #define ItemPointerSetOffsetNumber(pointer, offsetNumber) \
149
- ( \
150
- AssertMacro(PointerIsValid(pointer)), \
151
- (pointer)->ip_posid = (offsetNumber) \
152
- )
157
+ static inline void
158
+ ItemPointerSetOffsetNumber(ItemPointerData *pointer, OffsetNumber offsetNumber)
159
+ {
160
+ Assert(PointerIsValid(pointer));
161
+ pointer->ip_posid = offsetNumber;
162
+ }
153
163
 
154
164
  /*
155
165
  * ItemPointerCopy
@@ -158,42 +168,49 @@ typedef ItemPointerData *ItemPointer;
158
168
  * Should there ever be padding in an ItemPointer this would need to be handled
159
169
  * differently as it's used as hash key.
160
170
  */
161
- #define ItemPointerCopy(fromPointer, toPointer) \
162
- ( \
163
- AssertMacro(PointerIsValid(toPointer)), \
164
- AssertMacro(PointerIsValid(fromPointer)), \
165
- *(toPointer) = *(fromPointer) \
166
- )
171
+ static inline void
172
+ ItemPointerCopy(const ItemPointerData *fromPointer, ItemPointerData *toPointer)
173
+ {
174
+ Assert(PointerIsValid(toPointer));
175
+ Assert(PointerIsValid(fromPointer));
176
+ *toPointer = *fromPointer;
177
+ }
167
178
 
168
179
  /*
169
180
  * ItemPointerSetInvalid
170
181
  * Sets a disk item pointer to be invalid.
171
182
  */
172
- #define ItemPointerSetInvalid(pointer) \
173
- ( \
174
- AssertMacro(PointerIsValid(pointer)), \
175
- BlockIdSet(&((pointer)->ip_blkid), InvalidBlockNumber), \
176
- (pointer)->ip_posid = InvalidOffsetNumber \
177
- )
183
+ static inline void
184
+ ItemPointerSetInvalid(ItemPointerData *pointer)
185
+ {
186
+ Assert(PointerIsValid(pointer));
187
+ BlockIdSet(&pointer->ip_blkid, InvalidBlockNumber);
188
+ pointer->ip_posid = InvalidOffsetNumber;
189
+ }
178
190
 
179
191
  /*
180
192
  * ItemPointerIndicatesMovedPartitions
181
193
  * True iff the block number indicates the tuple has moved to another
182
194
  * partition.
183
195
  */
184
- #define ItemPointerIndicatesMovedPartitions(pointer) \
185
- ( \
186
- ItemPointerGetOffsetNumber(pointer) == MovedPartitionsOffsetNumber && \
187
- ItemPointerGetBlockNumberNoCheck(pointer) == MovedPartitionsBlockNumber \
188
- )
196
+ static inline bool
197
+ ItemPointerIndicatesMovedPartitions(const ItemPointerData *pointer)
198
+ {
199
+ return
200
+ ItemPointerGetOffsetNumber(pointer) == MovedPartitionsOffsetNumber &&
201
+ ItemPointerGetBlockNumberNoCheck(pointer) == MovedPartitionsBlockNumber;
202
+ }
189
203
 
190
204
  /*
191
205
  * ItemPointerSetMovedPartitions
192
206
  * Indicate that the item referenced by the itempointer has moved into a
193
207
  * different partition.
194
208
  */
195
- #define ItemPointerSetMovedPartitions(pointer) \
196
- ItemPointerSet((pointer), MovedPartitionsBlockNumber, MovedPartitionsOffsetNumber)
209
+ static inline void
210
+ ItemPointerSetMovedPartitions(ItemPointerData *pointer)
211
+ {
212
+ ItemPointerSet(pointer, MovedPartitionsBlockNumber, MovedPartitionsOffsetNumber);
213
+ }
197
214
 
198
215
  /* ----------------
199
216
  * externs
@@ -205,4 +222,24 @@ extern int32 ItemPointerCompare(ItemPointer arg1, ItemPointer arg2);
205
222
  extern void ItemPointerInc(ItemPointer pointer);
206
223
  extern void ItemPointerDec(ItemPointer pointer);
207
224
 
225
+ /* ----------------
226
+ * Datum conversion functions
227
+ * ----------------
228
+ */
229
+
230
+ static inline ItemPointer
231
+ DatumGetItemPointer(Datum X)
232
+ {
233
+ return (ItemPointer) DatumGetPointer(X);
234
+ }
235
+
236
+ static inline Datum
237
+ ItemPointerGetDatum(const ItemPointerData *X)
238
+ {
239
+ return PointerGetDatum(X);
240
+ }
241
+
242
+ #define PG_GETARG_ITEMPOINTER(n) DatumGetItemPointer(PG_GETARG_DATUM(n))
243
+ #define PG_RETURN_ITEMPOINTER(x) return ItemPointerGetDatum(x)
244
+
208
245
  #endif /* 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-2022, PostgreSQL Global Development Group
8
+ * Portions Copyright (c) 1996-2023, 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-2022, PostgreSQL Global Development Group
93
+ * Portions Copyright (c) 1996-2023, 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
@@ -135,9 +135,16 @@ typedef struct Latch
135
135
  #define WL_SOCKET_CONNECTED WL_SOCKET_WRITEABLE
136
136
  #endif
137
137
  #define WL_SOCKET_CLOSED (1 << 7)
138
+ #ifdef WIN32
139
+ #define WL_SOCKET_ACCEPT (1 << 8)
140
+ #else
141
+ /* avoid having to deal with case on platforms not requiring it */
142
+ #define WL_SOCKET_ACCEPT WL_SOCKET_READABLE
143
+ #endif
138
144
  #define WL_SOCKET_MASK (WL_SOCKET_READABLE | \
139
145
  WL_SOCKET_WRITEABLE | \
140
146
  WL_SOCKET_CONNECTED | \
147
+ WL_SOCKET_ACCEPT | \
141
148
  WL_SOCKET_CLOSED)
142
149
 
143
150
  typedef struct WaitEvent
@@ -168,6 +175,7 @@ extern void ShutdownLatchSupport(void);
168
175
 
169
176
  extern WaitEventSet *CreateWaitEventSet(MemoryContext context, int nevents);
170
177
  extern void FreeWaitEventSet(WaitEventSet *set);
178
+ extern void FreeWaitEventSetAfterFork(WaitEventSet *set);
171
179
  extern int AddWaitEventToSet(WaitEventSet *set, uint32 events, pgsocket fd,
172
180
  Latch *latch, void *user_data);
173
181
  extern void ModifyWaitEvent(WaitEventSet *set, int pos, uint32 events, Latch *latch);
@@ -4,7 +4,7 @@
4
4
  * POSTGRES lock manager definitions.
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2023, 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
@@ -107,6 +107,11 @@ extern void LockSharedObjectForSession(Oid classid, Oid objid, uint16 objsubid,
107
107
  extern void UnlockSharedObjectForSession(Oid classid, Oid objid, uint16 objsubid,
108
108
  LOCKMODE lockmode);
109
109
 
110
+ extern void LockApplyTransactionForSession(Oid suboid, TransactionId xid, uint16 objid,
111
+ LOCKMODE lockmode);
112
+ extern void UnlockApplyTransactionForSession(Oid suboid, TransactionId xid, uint16 objid,
113
+ LOCKMODE lockmode);
114
+
110
115
  /* Describe a locktag for error messages */
111
116
  extern void DescribeLockTag(StringInfo buf, const LOCKTAG *tag);
112
117
 
@@ -4,7 +4,7 @@
4
4
  * POSTGRES low-level lock mechanism
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/storage/lock.h
@@ -18,6 +18,7 @@
18
18
  #error "lock.h may not be included from frontend code"
19
19
  #endif
20
20
 
21
+ #include "lib/ilist.h"
21
22
  #include "storage/backendid.h"
22
23
  #include "storage/lockdefs.h"
23
24
  #include "storage/lwlock.h"
@@ -27,12 +28,6 @@
27
28
  /* struct PGPROC is declared in proc.h, but must forward-reference it */
28
29
  typedef struct PGPROC PGPROC;
29
30
 
30
- typedef struct PROC_QUEUE
31
- {
32
- SHM_QUEUE links; /* head of list of PGPROC objects */
33
- int size; /* number of entries in list */
34
- } PROC_QUEUE;
35
-
36
31
  /* GUC variables */
37
32
  extern PGDLLIMPORT int max_locks_per_xact;
38
33
 
@@ -149,10 +144,12 @@ typedef enum LockTagType
149
144
  LOCKTAG_SPECULATIVE_TOKEN, /* speculative insertion Xid and token */
150
145
  LOCKTAG_OBJECT, /* non-relation database object */
151
146
  LOCKTAG_USERLOCK, /* reserved for old contrib/userlock code */
152
- LOCKTAG_ADVISORY /* advisory user locks */
147
+ LOCKTAG_ADVISORY, /* advisory user locks */
148
+ LOCKTAG_APPLY_TRANSACTION /* transaction being applied on a logical
149
+ * replication subscriber */
153
150
  } LockTagType;
154
151
 
155
- #define LOCKTAG_LAST_TYPE LOCKTAG_ADVISORY
152
+ #define LOCKTAG_LAST_TYPE LOCKTAG_APPLY_TRANSACTION
156
153
 
157
154
  extern PGDLLIMPORT const char *const LockTagTypeNames[];
158
155
 
@@ -278,6 +275,17 @@ typedef struct LOCKTAG
278
275
  (locktag).locktag_type = LOCKTAG_ADVISORY, \
279
276
  (locktag).locktag_lockmethodid = USER_LOCKMETHOD)
280
277
 
278
+ /*
279
+ * ID info for a remote transaction on a logical replication subscriber is: DB
280
+ * OID + SUBSCRIPTION OID + TRANSACTION ID + OBJID
281
+ */
282
+ #define SET_LOCKTAG_APPLY_TRANSACTION(locktag,dboid,suboid,xid,objid) \
283
+ ((locktag).locktag_field1 = (dboid), \
284
+ (locktag).locktag_field2 = (suboid), \
285
+ (locktag).locktag_field3 = (xid), \
286
+ (locktag).locktag_field4 = (objid), \
287
+ (locktag).locktag_type = LOCKTAG_APPLY_TRANSACTION, \
288
+ (locktag).locktag_lockmethodid = DEFAULT_LOCKMETHOD)
281
289
 
282
290
  /*
283
291
  * Per-locked-object lock information:
@@ -305,8 +313,8 @@ typedef struct LOCK
305
313
  /* data */
306
314
  LOCKMASK grantMask; /* bitmask for lock types already granted */
307
315
  LOCKMASK waitMask; /* bitmask for lock types awaited */
308
- SHM_QUEUE procLocks; /* list of PROCLOCK objects assoc. with lock */
309
- PROC_QUEUE waitProcs; /* list of PGPROC objects waiting on lock */
316
+ dlist_head procLocks; /* list of PROCLOCK objects assoc. with lock */
317
+ dclist_head waitProcs; /* list of PGPROC objects waiting on lock */
310
318
  int requested[MAX_LOCKMODES]; /* counts of requested locks */
311
319
  int nRequested; /* total of requested[] array */
312
320
  int granted[MAX_LOCKMODES]; /* counts of granted locks */
@@ -367,8 +375,8 @@ typedef struct PROCLOCK
367
375
  PGPROC *groupLeader; /* proc's lock group leader, or proc itself */
368
376
  LOCKMASK holdMask; /* bitmask for lock types currently held */
369
377
  LOCKMASK releaseMask; /* bitmask for lock types to be released */
370
- SHM_QUEUE lockLink; /* list link in LOCK's list of proclocks */
371
- SHM_QUEUE procLink; /* list link in PGPROC's list of proclocks */
378
+ dlist_node lockLink; /* list link in LOCK's list of proclocks */
379
+ dlist_node procLink; /* list link in PGPROC's list of proclocks */
372
380
  } PROCLOCK;
373
381
 
374
382
  #define PROCLOCK_LOCKMETHOD(proclock) \
@@ -7,7 +7,7 @@
7
7
  * contains definition that have to (indirectly) be available when included by
8
8
  * FRONTEND code.
9
9
  *
10
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
10
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
11
11
  * Portions Copyright (c) 1994, Regents of the University of California
12
12
  *
13
13
  * src/include/storage/lockdefs.h
@@ -36,8 +36,8 @@ typedef int LOCKMODE;
36
36
  #define AccessShareLock 1 /* SELECT */
37
37
  #define RowShareLock 2 /* SELECT FOR UPDATE/FOR SHARE */
38
38
  #define RowExclusiveLock 3 /* INSERT, UPDATE, DELETE */
39
- #define ShareUpdateExclusiveLock 4 /* VACUUM (non-FULL),ANALYZE, CREATE INDEX
40
- * CONCURRENTLY */
39
+ #define ShareUpdateExclusiveLock 4 /* VACUUM (non-FULL), ANALYZE, CREATE
40
+ * INDEX CONCURRENTLY */
41
41
  #define ShareLock 5 /* CREATE INDEX (WITHOUT CONCURRENTLY) */
42
42
  #define ShareRowExclusiveLock 6 /* like EXCLUSIVE MODE, but allows ROW
43
43
  * SHARE */
@@ -4,7 +4,7 @@
4
4
  * Lightweight lock manager
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/storage/lwlock.h
@@ -23,6 +23,15 @@
23
23
 
24
24
  struct PGPROC;
25
25
 
26
+ /* what state of the wait process is a backend in */
27
+ typedef enum LWLockWaitState
28
+ {
29
+ LW_WS_NOT_WAITING, /* not currently waiting / woken up */
30
+ LW_WS_WAITING, /* currently waiting */
31
+ LW_WS_PENDING_WAKEUP, /* removed from waitlist, but not yet
32
+ * signalled */
33
+ } LWLockWaitState;
34
+
26
35
  /*
27
36
  * Code outside of lwlock.c should not manipulate the contents of this
28
37
  * structure directly, but we have to declare it here to allow LWLocks to be
@@ -51,6 +60,9 @@ typedef struct LWLock
51
60
  */
52
61
  #define LWLOCK_PADDED_SIZE PG_CACHE_LINE_SIZE
53
62
 
63
+ StaticAssertDecl(sizeof(LWLock) <= LWLOCK_PADDED_SIZE,
64
+ "Miscalculated LWLock padding");
65
+
54
66
  /* LWLock, padded to a full cache line size */
55
67
  typedef union LWLockPadded
56
68
  {
@@ -124,7 +136,7 @@ extern bool LWLockAnyHeldByMe(LWLock *lock, int nlocks, size_t stride);
124
136
  extern bool LWLockHeldByMeInMode(LWLock *lock, LWLockMode mode);
125
137
 
126
138
  extern bool LWLockWaitForVar(LWLock *lock, uint64 *valptr, uint64 oldval, uint64 *newval);
127
- extern void LWLockUpdateVar(LWLock *lock, uint64 *valptr, uint64 value);
139
+ extern void LWLockUpdateVar(LWLock *lock, uint64 *valptr, uint64 val);
128
140
 
129
141
  extern Size LWLockShmemSize(void);
130
142
  extern void CreateLWLocks(void);
@@ -193,6 +205,8 @@ typedef enum BuiltinTrancheIds
193
205
  LWTRANCHE_PGSTATS_DSA,
194
206
  LWTRANCHE_PGSTATS_HASH,
195
207
  LWTRANCHE_PGSTATS_DATA,
208
+ LWTRANCHE_LAUNCHER_DSA,
209
+ LWTRANCHE_LAUNCHER_HASH,
196
210
  LWTRANCHE_FIRST_USER_DEFINED
197
211
  } BuiltinTrancheIds;
198
212
 
@@ -4,7 +4,7 @@
4
4
  * POSTGRES disk "offset" definitions.
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/storage/off.h
@@ -10,7 +10,7 @@
10
10
  * be provided by each port.
11
11
  *
12
12
  *
13
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
13
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
14
14
  * Portions Copyright (c) 1994, Regents of the University of California
15
15
  *
16
16
  * src/include/storage/pg_sema.h
@@ -14,7 +14,7 @@
14
14
  * only one ID number.
15
15
  *
16
16
  *
17
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
17
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
18
18
  * Portions Copyright (c) 1994, Regents of the University of California
19
19
  *
20
20
  * src/include/storage/pg_shmem.h
@@ -4,7 +4,7 @@
4
4
  * routines for signaling between the postmaster and its child processes
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/storage/pmsignal.h
@@ -4,7 +4,7 @@
4
4
  * POSTGRES public predicate locking definitions.
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/storage/predicate.h
@@ -58,7 +58,7 @@ extern void RegisterPredicateLockingXid(TransactionId xid);
58
58
  extern void PredicateLockRelation(Relation relation, Snapshot snapshot);
59
59
  extern void PredicateLockPage(Relation relation, BlockNumber blkno, Snapshot snapshot);
60
60
  extern void PredicateLockTID(Relation relation, ItemPointer tid, Snapshot snapshot,
61
- TransactionId insert_xid);
61
+ TransactionId tuple_xid);
62
62
  extern void PredicateLockPageSplit(Relation relation, BlockNumber oldblkno, BlockNumber newblkno);
63
63
  extern void PredicateLockPageCombine(Relation relation, BlockNumber oldblkno, BlockNumber newblkno);
64
64
  extern void TransferPredicateLocksToHeapRelation(Relation relation);
@@ -4,7 +4,7 @@
4
4
  * per-process shared memory data structures
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/storage/proc.h
@@ -32,6 +32,8 @@
32
32
  * If none of the caches have overflowed, we can assume that an XID that's not
33
33
  * listed anywhere in the PGPROC array is not a running transaction. Else we
34
34
  * have to look at pg_subtrans.
35
+ *
36
+ * See src/test/isolation/specs/subxid-overflow.spec if you change this.
35
37
  */
36
38
  #define PGPROC_MAX_CACHED_SUBXIDS 64 /* XXX guessed-at value */
37
39
 
@@ -89,7 +91,7 @@ struct XidCache
89
91
  #define INVALID_PGPROCNO PG_INT32_MAX
90
92
 
91
93
  /*
92
- * Flags for PGPROC.delayChkpt
94
+ * Flags for PGPROC.delayChkptFlags
93
95
  *
94
96
  * These flags can be used to delay the start or completion of a checkpoint
95
97
  * for short periods. A flag is in effect if the corresponding bit is set in
@@ -116,7 +118,7 @@ struct XidCache
116
118
  * to phase 3. This is useful if we are performing a WAL-logged operation that
117
119
  * might invalidate buffers, such as relation truncation. In this case, we need
118
120
  * to ensure that any buffers which were invalidated and thus not flushed by
119
- * the checkpoint are actaully destroyed on disk. Replay can cope with a file
121
+ * the checkpoint are actually destroyed on disk. Replay can cope with a file
120
122
  * or block that doesn't exist, but not with a block that has the wrong
121
123
  * contents.
122
124
  */
@@ -147,7 +149,7 @@ typedef enum
147
149
  * but its myProcLocks[] lists are valid.
148
150
  *
149
151
  * We allow many fields of this struct to be accessed without locks, such as
150
- * delayChkpt and isBackgroundWorker. However, keep in mind that writing
152
+ * delayChkptFlags and isBackgroundWorker. However, keep in mind that writing
151
153
  * mirrored ones (see below) requires holding ProcArrayLock or XidGenLock in
152
154
  * at least shared mode, so that pgxactoff does not change concurrently.
153
155
  *
@@ -165,8 +167,8 @@ typedef enum
165
167
  struct PGPROC
166
168
  {
167
169
  /* proc->links MUST BE FIRST IN STRUCT (see ProcSleep,ProcWakeup,etc) */
168
- SHM_QUEUE links; /* list link if process is in a list */
169
- PGPROC **procgloballist; /* procglobal list that owns this PGPROC */
170
+ dlist_node links; /* list link if process is in a list */
171
+ dlist_head *procgloballist; /* procglobal list that owns this PGPROC */
170
172
 
171
173
  PGSemaphore sem; /* ONE semaphore to sleep on */
172
174
  ProcWaitStatus waitStatus;
@@ -191,7 +193,11 @@ struct PGPROC
191
193
 
192
194
  int pgxactoff; /* offset into various ProcGlobal->arrays with
193
195
  * data mirrored from this PGPROC */
194
- int pgprocno;
196
+
197
+ int pgprocno; /* Number of this PGPROC in
198
+ * ProcGlobal->allProcs array. This is set
199
+ * once by InitProcGlobal().
200
+ * ProcGlobal->allProcs[n].pgprocno == n */
195
201
 
196
202
  /* These fields are zero while a backend is still starting up: */
197
203
  BackendId backendId; /* This backend's backend ID (if assigned) */
@@ -211,7 +217,7 @@ struct PGPROC
211
217
  bool recoveryConflictPending;
212
218
 
213
219
  /* Info about LWLock the process is currently waiting for, if any. */
214
- bool lwWaiting; /* true if waiting for an LW lock */
220
+ uint8 lwWaiting; /* see LWLockWaitState */
215
221
  uint8 lwWaitMode; /* lwlock mode being waited for */
216
222
  proclist_node lwWaitLink; /* position in LW lock wait list */
217
223
 
@@ -242,14 +248,14 @@ struct PGPROC
242
248
  */
243
249
  XLogRecPtr waitLSN; /* waiting for this LSN or higher */
244
250
  int syncRepState; /* wait state for sync rep */
245
- SHM_QUEUE syncRepLinks; /* list link if process is in syncrep queue */
251
+ dlist_node syncRepLinks; /* list link if process is in syncrep queue */
246
252
 
247
253
  /*
248
254
  * All PROCLOCK objects for locks held or awaited by this backend are
249
255
  * linked into one of these lists, according to the partition number of
250
256
  * their lock.
251
257
  */
252
- SHM_QUEUE myProcLocks[NUM_LOCK_PARTITIONS];
258
+ dlist_head myProcLocks[NUM_LOCK_PARTITIONS];
253
259
 
254
260
  XidCacheStatus subxidStatus; /* mirrored with
255
261
  * ProcGlobal->subxidStates[i] */
@@ -379,13 +385,13 @@ typedef struct PROC_HDR
379
385
  /* Length of allProcs array */
380
386
  uint32 allProcCount;
381
387
  /* Head of list of free PGPROC structures */
382
- PGPROC *freeProcs;
388
+ dlist_head freeProcs;
383
389
  /* Head of list of autovacuum's free PGPROC structures */
384
- PGPROC *autovacFreeProcs;
390
+ dlist_head autovacFreeProcs;
385
391
  /* Head of list of bgworker free PGPROC structures */
386
- PGPROC *bgworkerFreeProcs;
392
+ dlist_head bgworkerFreeProcs;
387
393
  /* Head of list of walsender free PGPROC structures */
388
- PGPROC *walsenderFreeProcs;
394
+ dlist_head walsenderFreeProcs;
389
395
  /* First pgproc waiting for group XID clear */
390
396
  pg_atomic_uint32 procArrayGroupFirst;
391
397
  /* First pgproc waiting for group transaction status update */
@@ -439,12 +445,11 @@ extern void InitAuxiliaryProcess(void);
439
445
  extern void SetStartupBufferPinWaitBufId(int bufid);
440
446
  extern int GetStartupBufferPinWaitBufId(void);
441
447
 
442
- extern bool HaveNFreeProcs(int n);
448
+ extern bool HaveNFreeProcs(int n, int *nfree);
443
449
  extern void ProcReleaseLocks(bool isCommit);
444
450
 
445
- extern void ProcQueueInit(PROC_QUEUE *queue);
446
451
  extern ProcWaitStatus ProcSleep(LOCALLOCK *locallock, LockMethod lockMethodTable);
447
- extern PGPROC *ProcWakeup(PGPROC *proc, ProcWaitStatus waitStatus);
452
+ extern void ProcWakeup(PGPROC *proc, ProcWaitStatus waitStatus);
448
453
  extern void ProcLockWakeup(LockMethod lockMethodTable, LOCK *lock);
449
454
  extern void CheckDeadLockAlert(void);
450
455
  extern bool IsWaitingForLock(void);
@@ -4,7 +4,7 @@
4
4
  * POSTGRES process array definitions.
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/storage/procarray.h
@@ -39,6 +39,7 @@ extern void ExpireTreeKnownAssignedTransactionIds(TransactionId xid,
39
39
  TransactionId max_xid);
40
40
  extern void ExpireAllKnownAssignedTransactionIds(void);
41
41
  extern void ExpireOldKnownAssignedTransactionIds(TransactionId xid);
42
+ extern void KnownAssignedTransactionIdsIdleMaintenance(void);
42
43
 
43
44
  extern int GetMaxSnapshotXidCount(void);
44
45
  extern int GetMaxSnapshotSubxidCount(void);
@@ -57,7 +58,7 @@ extern TransactionId GetOldestNonRemovableTransactionId(Relation rel);
57
58
  extern TransactionId GetOldestTransactionIdConsideredRunning(void);
58
59
  extern TransactionId GetOldestActiveTransactionId(void);
59
60
  extern TransactionId GetOldestSafeDecodingTransactionId(bool catalogOnly);
60
- extern void GetReplicationHorizons(TransactionId *slot_xmin, TransactionId *catalog_xmin);
61
+ extern void GetReplicationHorizons(TransactionId *xmin, TransactionId *catalog_xmin);
61
62
 
62
63
  extern VirtualTransactionId *GetVirtualXIDsDelayingChkpt(int *nvxids, int type);
63
64
  extern bool HaveVirtualXIDsDelayingChkpt(VirtualTransactionId *vxids,