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 table access method 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/access/tableam.h
@@ -20,7 +20,7 @@
20
20
  #include "access/relscan.h"
21
21
  #include "access/sdir.h"
22
22
  #include "access/xact.h"
23
- #include "utils/guc.h"
23
+ #include "executor/tuptable.h"
24
24
  #include "utils/rel.h"
25
25
  #include "utils/snapshot.h"
26
26
 
@@ -102,6 +102,22 @@ typedef enum TM_Result
102
102
  TM_WouldBlock
103
103
  } TM_Result;
104
104
 
105
+ /*
106
+ * Result codes for table_update(..., update_indexes*..).
107
+ * Used to determine which indexes to update.
108
+ */
109
+ typedef enum TU_UpdateIndexes
110
+ {
111
+ /* No indexed columns were updated (incl. TID addressing of tuple) */
112
+ TU_None,
113
+
114
+ /* A non-summarizing indexed column was updated, or the TID has changed */
115
+ TU_All,
116
+
117
+ /* Only summarized columns were updated, TID is unchanged */
118
+ TU_Summarizing
119
+ } TU_UpdateIndexes;
120
+
105
121
  /*
106
122
  * When table_tuple_update, table_tuple_delete, or table_tuple_lock fail
107
123
  * because the target tuple is already outdated, they fill in this struct to
@@ -342,7 +358,7 @@ typedef struct TableAmRoutine
342
358
  * allowed by the AM.
343
359
  *
344
360
  * Implementations can assume that scan_set_tidrange is always called
345
- * before can_getnextslot_tidrange or after scan_rescan and before any
361
+ * before scan_getnextslot_tidrange or after scan_rescan and before any
346
362
  * further calls to scan_getnextslot_tidrange.
347
363
  */
348
364
  void (*scan_set_tidrange) (TableScanDesc scan,
@@ -526,7 +542,7 @@ typedef struct TableAmRoutine
526
542
  bool wait,
527
543
  TM_FailureData *tmfd,
528
544
  LockTupleMode *lockmode,
529
- bool *update_indexes);
545
+ TU_UpdateIndexes *update_indexes);
530
546
 
531
547
  /* see table_tuple_lock() for reference about parameters */
532
548
  TM_Result (*tuple_lock) (Relation rel,
@@ -560,32 +576,32 @@ typedef struct TableAmRoutine
560
576
  */
561
577
 
562
578
  /*
563
- * This callback needs to create a new relation filenode for `rel`, with
579
+ * This callback needs to create new relation storage for `rel`, with
564
580
  * appropriate durability behaviour for `persistence`.
565
581
  *
566
582
  * Note that only the subset of the relcache filled by
567
583
  * RelationBuildLocalRelation() can be relied upon and that the relation's
568
584
  * catalog entries will either not yet exist (new relation), or will still
569
- * reference the old relfilenode.
585
+ * reference the old relfilelocator.
570
586
  *
571
587
  * As output *freezeXid, *minmulti must be set to the values appropriate
572
588
  * for pg_class.{relfrozenxid, relminmxid}. For AMs that don't need those
573
589
  * fields to be filled they can be set to InvalidTransactionId and
574
590
  * InvalidMultiXactId, respectively.
575
591
  *
576
- * See also table_relation_set_new_filenode().
592
+ * See also table_relation_set_new_filelocator().
577
593
  */
578
- void (*relation_set_new_filenode) (Relation rel,
579
- const RelFileNode *newrnode,
580
- char persistence,
581
- TransactionId *freezeXid,
582
- MultiXactId *minmulti);
594
+ void (*relation_set_new_filelocator) (Relation rel,
595
+ const RelFileLocator *newrlocator,
596
+ char persistence,
597
+ TransactionId *freezeXid,
598
+ MultiXactId *minmulti);
583
599
 
584
600
  /*
585
601
  * This callback needs to remove all contents from `rel`'s current
586
- * relfilenode. No provisions for transactional behaviour need to be made.
587
- * Often this can be implemented by truncating the underlying storage to
588
- * its minimal size.
602
+ * relfilelocator. No provisions for transactional behaviour need to be
603
+ * made. Often this can be implemented by truncating the underlying
604
+ * storage to its minimal size.
589
605
  *
590
606
  * See also table_relation_nontransactional_truncate().
591
607
  */
@@ -598,7 +614,7 @@ typedef struct TableAmRoutine
598
614
  * storage, unless it contains references to the tablespace internally.
599
615
  */
600
616
  void (*relation_copy_data) (Relation rel,
601
- const RelFileNode *newrnode);
617
+ const RelFileLocator *newrlocator);
602
618
 
603
619
  /* See table_relation_copy_for_cluster() */
604
620
  void (*relation_copy_for_cluster) (Relation NewTable,
@@ -863,13 +879,13 @@ typedef struct TableAmRoutine
863
879
  * for the relation. Works for tables, views, foreign tables and partitioned
864
880
  * tables.
865
881
  */
866
- extern const TupleTableSlotOps *table_slot_callbacks(Relation rel);
882
+ extern const TupleTableSlotOps *table_slot_callbacks(Relation relation);
867
883
 
868
884
  /*
869
885
  * Returns slot using the callbacks returned by table_slot_callbacks(), and
870
886
  * registers it on *reglist.
871
887
  */
872
- extern TupleTableSlot *table_slot_create(Relation rel, List **reglist);
888
+ extern TupleTableSlot *table_slot_create(Relation relation, List **reglist);
873
889
 
874
890
 
875
891
  /* ----------------------------------------------------------------------------
@@ -886,7 +902,7 @@ table_beginscan(Relation rel, Snapshot snapshot,
886
902
  int nkeys, struct ScanKeyData *key)
887
903
  {
888
904
  uint32 flags = SO_TYPE_SEQSCAN |
889
- SO_ALLOW_STRAT | SO_ALLOW_SYNC | SO_ALLOW_PAGEMODE;
905
+ SO_ALLOW_STRAT | SO_ALLOW_SYNC | SO_ALLOW_PAGEMODE;
890
906
 
891
907
  return rel->rd_tableam->scan_begin(rel, snapshot, nkeys, key, NULL, flags);
892
908
  }
@@ -895,7 +911,7 @@ table_beginscan(Relation rel, Snapshot snapshot,
895
911
  * Like table_beginscan(), but for scanning catalog. It'll automatically use a
896
912
  * snapshot appropriate for scanning catalog relations.
897
913
  */
898
- extern TableScanDesc table_beginscan_catalog(Relation rel, int nkeys,
914
+ extern TableScanDesc table_beginscan_catalog(Relation relation, int nkeys,
899
915
  struct ScanKeyData *key);
900
916
 
901
917
  /*
@@ -1035,6 +1051,10 @@ table_scan_getnextslot(TableScanDesc sscan, ScanDirection direction, TupleTableS
1035
1051
  {
1036
1052
  slot->tts_tableOid = RelationGetRelid(sscan->rs_rd);
1037
1053
 
1054
+ /* We don't expect actual scans using NoMovementScanDirection */
1055
+ Assert(direction == ForwardScanDirection ||
1056
+ direction == BackwardScanDirection);
1057
+
1038
1058
  /*
1039
1059
  * We don't expect direct calls to table_scan_getnextslot with valid
1040
1060
  * CheckXidAlive for catalog or regular tables. See detailed comments in
@@ -1099,6 +1119,10 @@ table_scan_getnextslot_tidrange(TableScanDesc sscan, ScanDirection direction,
1099
1119
  /* Ensure table_beginscan_tidrange() was used. */
1100
1120
  Assert((sscan->rs_flags & SO_TYPE_TIDRANGESCAN) != 0);
1101
1121
 
1122
+ /* We don't expect actual scans using NoMovementScanDirection */
1123
+ Assert(direction == ForwardScanDirection ||
1124
+ direction == BackwardScanDirection);
1125
+
1102
1126
  return sscan->rs_rd->rd_tableam->scan_getnextslot_tidrange(sscan,
1103
1127
  direction,
1104
1128
  slot);
@@ -1133,7 +1157,7 @@ extern void table_parallelscan_initialize(Relation rel,
1133
1157
  *
1134
1158
  * Caller must hold a suitable lock on the relation.
1135
1159
  */
1136
- extern TableScanDesc table_beginscan_parallel(Relation rel,
1160
+ extern TableScanDesc table_beginscan_parallel(Relation relation,
1137
1161
  ParallelTableScanDesc pscan);
1138
1162
 
1139
1163
  /*
@@ -1318,7 +1342,7 @@ table_tuple_satisfies_snapshot(Relation rel, TupleTableSlot *slot,
1318
1342
  * marked as deletable. See comments above TM_IndexDelete and comments above
1319
1343
  * TM_IndexDeleteOp for full details.
1320
1344
  *
1321
- * Returns a latestRemovedXid transaction ID that caller generally places in
1345
+ * Returns a snapshotConflictHorizon transaction ID that caller places in
1322
1346
  * its index deletion WAL record. This might be used during subsequent REDO
1323
1347
  * of the WAL record when in Hot Standby mode -- a recovery conflict for the
1324
1348
  * index deletion operation might be required on the standby.
@@ -1348,7 +1372,7 @@ table_index_delete_tuples(Relation rel, TM_IndexDeleteOp *delstate)
1348
1372
  * RelationGetBufferForTuple. See that method for more information.
1349
1373
  *
1350
1374
  * TABLE_INSERT_FROZEN should only be specified for inserts into
1351
- * relfilenodes created during the current subtransaction and when
1375
+ * relation storage created during the current subtransaction and when
1352
1376
  * there are no prior snapshots or pre-existing portals open.
1353
1377
  * This causes rows to be frozen, which is an MVCC violation and
1354
1378
  * requires explicit options chosen by user.
@@ -1506,7 +1530,7 @@ static inline TM_Result
1506
1530
  table_tuple_update(Relation rel, ItemPointer otid, TupleTableSlot *slot,
1507
1531
  CommandId cid, Snapshot snapshot, Snapshot crosscheck,
1508
1532
  bool wait, TM_FailureData *tmfd, LockTupleMode *lockmode,
1509
- bool *update_indexes)
1533
+ TU_UpdateIndexes *update_indexes)
1510
1534
  {
1511
1535
  return rel->rd_tableam->tuple_update(rel, otid, slot,
1512
1536
  cid, snapshot, crosscheck,
@@ -1577,33 +1601,34 @@ table_finish_bulk_insert(Relation rel, int options)
1577
1601
  */
1578
1602
 
1579
1603
  /*
1580
- * Create storage for `rel` in `newrnode`, with persistence set to
1604
+ * Create storage for `rel` in `newrlocator`, with persistence set to
1581
1605
  * `persistence`.
1582
1606
  *
1583
1607
  * This is used both during relation creation and various DDL operations to
1584
- * create a new relfilenode that can be filled from scratch. When creating
1585
- * new storage for an existing relfilenode, this should be called before the
1608
+ * create new rel storage that can be filled from scratch. When creating
1609
+ * new storage for an existing relfilelocator, this should be called before the
1586
1610
  * relcache entry has been updated.
1587
1611
  *
1588
1612
  * *freezeXid, *minmulti are set to the xid / multixact horizon for the table
1589
1613
  * that pg_class.{relfrozenxid, relminmxid} have to be set to.
1590
1614
  */
1591
1615
  static inline void
1592
- table_relation_set_new_filenode(Relation rel,
1593
- const RelFileNode *newrnode,
1594
- char persistence,
1595
- TransactionId *freezeXid,
1596
- MultiXactId *minmulti)
1616
+ table_relation_set_new_filelocator(Relation rel,
1617
+ const RelFileLocator *newrlocator,
1618
+ char persistence,
1619
+ TransactionId *freezeXid,
1620
+ MultiXactId *minmulti)
1597
1621
  {
1598
- rel->rd_tableam->relation_set_new_filenode(rel, newrnode, persistence,
1599
- freezeXid, minmulti);
1622
+ rel->rd_tableam->relation_set_new_filelocator(rel, newrlocator,
1623
+ persistence, freezeXid,
1624
+ minmulti);
1600
1625
  }
1601
1626
 
1602
1627
  /*
1603
1628
  * Remove all table contents from `rel`, in a non-transactional manner.
1604
1629
  * Non-transactional meaning that there's no need to support rollbacks. This
1605
- * commonly only is used to perform truncations for relfilenodes created in the
1606
- * current transaction.
1630
+ * commonly only is used to perform truncations for relation storage created in
1631
+ * the current transaction.
1607
1632
  */
1608
1633
  static inline void
1609
1634
  table_relation_nontransactional_truncate(Relation rel)
@@ -1612,15 +1637,15 @@ table_relation_nontransactional_truncate(Relation rel)
1612
1637
  }
1613
1638
 
1614
1639
  /*
1615
- * Copy data from `rel` into the new relfilenode `newrnode`. The new
1616
- * relfilenode may not have storage associated before this function is
1640
+ * Copy data from `rel` into the new relfilelocator `newrlocator`. The new
1641
+ * relfilelocator may not have storage associated before this function is
1617
1642
  * called. This is only supposed to be used for low level operations like
1618
1643
  * changing a relation's tablespace.
1619
1644
  */
1620
1645
  static inline void
1621
- table_relation_copy_data(Relation rel, const RelFileNode *newrnode)
1646
+ table_relation_copy_data(Relation rel, const RelFileLocator *newrlocator)
1622
1647
  {
1623
- rel->rd_tableam->relation_copy_data(rel, newrnode);
1648
+ rel->rd_tableam->relation_copy_data(rel, newrlocator);
1624
1649
  }
1625
1650
 
1626
1651
  /*
@@ -1633,7 +1658,7 @@ table_relation_copy_data(Relation rel, const RelFileNode *newrnode)
1633
1658
  * in that index's order; if false and OldIndex is InvalidOid, no sorting is
1634
1659
  * performed
1635
1660
  * - OldIndex - see use_sort
1636
- * - OldestXmin - computed by vacuum_set_xid_limits(), even when
1661
+ * - OldestXmin - computed by vacuum_get_cutoffs(), even when
1637
1662
  * not needed for the relation's AM
1638
1663
  * - *xid_cutoff - ditto
1639
1664
  * - *multi_cutoff - ditto
@@ -1870,7 +1895,7 @@ table_relation_toast_am(Relation rel)
1870
1895
  *
1871
1896
  * toastrel is the relation in which the toasted value is stored.
1872
1897
  *
1873
- * valueid identifes which toast value is to be fetched. For the heap,
1898
+ * valueid identifies which toast value is to be fetched. For the heap,
1874
1899
  * this corresponds to the values stored in the chunk_id column.
1875
1900
  *
1876
1901
  * attrsize is the total size of the toast value to be fetched.
@@ -2029,7 +2054,7 @@ extern void simple_table_tuple_delete(Relation rel, ItemPointer tid,
2029
2054
  Snapshot snapshot);
2030
2055
  extern void simple_table_tuple_update(Relation rel, ItemPointer otid,
2031
2056
  TupleTableSlot *slot, Snapshot snapshot,
2032
- bool *update_indexes);
2057
+ TU_UpdateIndexes *update_indexes);
2033
2058
 
2034
2059
 
2035
2060
  /* ----------------------------------------------------------------------------
@@ -2071,7 +2096,5 @@ extern void table_block_relation_estimate_size(Relation rel,
2071
2096
 
2072
2097
  extern const TableAmRoutine *GetTableAmRoutine(Oid amhandler);
2073
2098
  extern const TableAmRoutine *GetHeapamTableAmRoutine(void);
2074
- extern bool check_default_table_access_method(char **newval, void **extra,
2075
- GucSource source);
2076
2099
 
2077
2100
  #endif /* TABLEAM_H */
@@ -3,7 +3,7 @@
3
3
  * toast_compression.h
4
4
  * Functions for toast compression.
5
5
  *
6
- * Copyright (c) 2021-2022, PostgreSQL Global Development Group
6
+ * Copyright (c) 2021-2023, PostgreSQL Global Development Group
7
7
  *
8
8
  * src/include/access/toast_compression.h
9
9
  *
@@ -4,7 +4,7 @@
4
4
  * postgres transaction access method support code
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/access/transam.h
@@ -0,0 +1,82 @@
1
+ /*-------------------------------------------------------------------------
2
+ *
3
+ * tsmapi.h
4
+ * API for tablesample methods
5
+ *
6
+ * Copyright (c) 2015-2023, PostgreSQL Global Development Group
7
+ *
8
+ * src/include/access/tsmapi.h
9
+ *
10
+ *-------------------------------------------------------------------------
11
+ */
12
+ #ifndef TSMAPI_H
13
+ #define TSMAPI_H
14
+
15
+ #include "nodes/execnodes.h"
16
+ #include "nodes/pathnodes.h"
17
+
18
+
19
+ /*
20
+ * Callback function signatures --- see tablesample-method.sgml for more info.
21
+ */
22
+
23
+ typedef void (*SampleScanGetSampleSize_function) (PlannerInfo *root,
24
+ RelOptInfo *baserel,
25
+ List *paramexprs,
26
+ BlockNumber *pages,
27
+ double *tuples);
28
+
29
+ typedef void (*InitSampleScan_function) (SampleScanState *node,
30
+ int eflags);
31
+
32
+ typedef void (*BeginSampleScan_function) (SampleScanState *node,
33
+ Datum *params,
34
+ int nparams,
35
+ uint32 seed);
36
+
37
+ typedef BlockNumber (*NextSampleBlock_function) (SampleScanState *node,
38
+ BlockNumber nblocks);
39
+
40
+ typedef OffsetNumber (*NextSampleTuple_function) (SampleScanState *node,
41
+ BlockNumber blockno,
42
+ OffsetNumber maxoffset);
43
+
44
+ typedef void (*EndSampleScan_function) (SampleScanState *node);
45
+
46
+ /*
47
+ * TsmRoutine is the struct returned by a tablesample method's handler
48
+ * function. It provides pointers to the callback functions needed by the
49
+ * planner and executor, as well as additional information about the method.
50
+ *
51
+ * More function pointers are likely to be added in the future.
52
+ * Therefore it's recommended that the handler initialize the struct with
53
+ * makeNode(TsmRoutine) so that all fields are set to NULL. This will
54
+ * ensure that no fields are accidentally left undefined.
55
+ */
56
+ typedef struct TsmRoutine
57
+ {
58
+ NodeTag type;
59
+
60
+ /* List of datatype OIDs for the arguments of the TABLESAMPLE clause */
61
+ List *parameterTypes;
62
+
63
+ /* Can method produce repeatable samples across, or even within, queries? */
64
+ bool repeatable_across_queries;
65
+ bool repeatable_across_scans;
66
+
67
+ /* Functions for planning a SampleScan on a physical table */
68
+ SampleScanGetSampleSize_function SampleScanGetSampleSize;
69
+
70
+ /* Functions for executing a SampleScan on a physical table */
71
+ InitSampleScan_function InitSampleScan; /* can be NULL */
72
+ BeginSampleScan_function BeginSampleScan;
73
+ NextSampleBlock_function NextSampleBlock; /* can be NULL */
74
+ NextSampleTuple_function NextSampleTuple;
75
+ EndSampleScan_function EndSampleScan; /* can be NULL */
76
+ } TsmRoutine;
77
+
78
+
79
+ /* Functions in access/tablesample/tablesample.c */
80
+ extern TsmRoutine *GetTsmRoutine(Oid tsmhandler);
81
+
82
+ #endif /* TSMAPI_H */
@@ -4,7 +4,7 @@
4
4
  * Tuple conversion support.
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/access/tupconvert.h
@@ -39,12 +39,15 @@ extern TupleConversionMap *convert_tuples_by_position(TupleDesc indesc,
39
39
 
40
40
  extern TupleConversionMap *convert_tuples_by_name(TupleDesc indesc,
41
41
  TupleDesc outdesc);
42
+ extern TupleConversionMap *convert_tuples_by_name_attrmap(TupleDesc indesc,
43
+ TupleDesc outdesc,
44
+ AttrMap *attrMap);
42
45
 
43
46
  extern HeapTuple execute_attr_map_tuple(HeapTuple tuple, TupleConversionMap *map);
44
47
  extern TupleTableSlot *execute_attr_map_slot(AttrMap *attrMap,
45
48
  TupleTableSlot *in_slot,
46
49
  TupleTableSlot *out_slot);
47
- extern Bitmapset *execute_attr_map_cols(AttrMap *attrMap, Bitmapset *inbitmap);
50
+ extern Bitmapset *execute_attr_map_cols(AttrMap *attrMap, Bitmapset *in_cols);
48
51
 
49
52
  extern void free_conversion_map(TupleConversionMap *map);
50
53
 
@@ -4,7 +4,7 @@
4
4
  * POSTGRES tuple descriptor 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/access/tupdesc.h
@@ -127,7 +127,7 @@ extern void DecrTupleDescRefCount(TupleDesc tupdesc);
127
127
 
128
128
  extern bool equalTupleDescs(TupleDesc tupdesc1, TupleDesc tupdesc2);
129
129
 
130
- extern uint32 hashTupleDesc(TupleDesc tupdesc);
130
+ extern uint32 hashTupleDesc(TupleDesc desc);
131
131
 
132
132
  extern void TupleDescInitEntry(TupleDesc desc,
133
133
  AttrNumber attributeNumber,
@@ -4,7 +4,7 @@
4
4
  * Tuple macros used by both index tuples and heap tuples.
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/access/tupmacs.h
@@ -22,8 +22,13 @@
22
22
  * Note that a 0 in the null bitmap indicates a null, while 1 indicates
23
23
  * non-null.
24
24
  */
25
- #define att_isnull(ATT, BITS) (!((BITS)[(ATT) >> 3] & (1 << ((ATT) & 0x07))))
25
+ static inline bool
26
+ att_isnull(int ATT, const bits8 *BITS)
27
+ {
28
+ return !(BITS[ATT >> 3] & (1 << (ATT & 0x07)));
29
+ }
26
30
 
31
+ #ifndef FRONTEND
27
32
  /*
28
33
  * Given a Form_pg_attribute and a pointer into a tuple's data area,
29
34
  * return the correct value or pointer.
@@ -43,56 +48,32 @@
43
48
  /*
44
49
  * Same, but work from byval/len parameters rather than Form_pg_attribute.
45
50
  */
51
+ static inline Datum
52
+ fetch_att(const void *T, bool attbyval, int attlen)
53
+ {
54
+ if (attbyval)
55
+ {
56
+ switch (attlen)
57
+ {
58
+ case sizeof(char):
59
+ return CharGetDatum(*((const char *) T));
60
+ case sizeof(int16):
61
+ return Int16GetDatum(*((const int16 *) T));
62
+ case sizeof(int32):
63
+ return Int32GetDatum(*((const int32 *) T));
46
64
  #if SIZEOF_DATUM == 8
47
-
48
- #define fetch_att(T,attbyval,attlen) \
49
- ( \
50
- (attbyval) ? \
51
- ( \
52
- (attlen) == (int) sizeof(Datum) ? \
53
- *((Datum *)(T)) \
54
- : \
55
- ( \
56
- (attlen) == (int) sizeof(int32) ? \
57
- Int32GetDatum(*((int32 *)(T))) \
58
- : \
59
- ( \
60
- (attlen) == (int) sizeof(int16) ? \
61
- Int16GetDatum(*((int16 *)(T))) \
62
- : \
63
- ( \
64
- AssertMacro((attlen) == 1), \
65
- CharGetDatum(*((char *)(T))) \
66
- ) \
67
- ) \
68
- ) \
69
- ) \
70
- : \
71
- PointerGetDatum((char *) (T)) \
72
- )
73
- #else /* SIZEOF_DATUM != 8 */
74
-
75
- #define fetch_att(T,attbyval,attlen) \
76
- ( \
77
- (attbyval) ? \
78
- ( \
79
- (attlen) == (int) sizeof(int32) ? \
80
- Int32GetDatum(*((int32 *)(T))) \
81
- : \
82
- ( \
83
- (attlen) == (int) sizeof(int16) ? \
84
- Int16GetDatum(*((int16 *)(T))) \
85
- : \
86
- ( \
87
- AssertMacro((attlen) == 1), \
88
- CharGetDatum(*((char *)(T))) \
89
- ) \
90
- ) \
91
- ) \
92
- : \
93
- PointerGetDatum((char *) (T)) \
94
- )
95
- #endif /* SIZEOF_DATUM == 8 */
65
+ case sizeof(Datum):
66
+ return *((const Datum *) T);
67
+ #endif
68
+ default:
69
+ elog(ERROR, "unsupported byval length: %d", attlen);
70
+ return 0;
71
+ }
72
+ }
73
+ else
74
+ return PointerGetDatum(T);
75
+ }
76
+ #endif /* FRONTEND */
96
77
 
97
78
  /*
98
79
  * att_align_datum aligns the given offset as needed for a datum of alignment
@@ -190,58 +171,37 @@
190
171
  )) \
191
172
  )
192
173
 
174
+ #ifndef FRONTEND
193
175
  /*
194
176
  * store_att_byval is a partial inverse of fetch_att: store a given Datum
195
177
  * value into a tuple data area at the specified address. However, it only
196
178
  * handles the byval case, because in typical usage the caller needs to
197
- * distinguish by-val and by-ref cases anyway, and so a do-it-all macro
179
+ * distinguish by-val and by-ref cases anyway, and so a do-it-all function
198
180
  * wouldn't be convenient.
199
181
  */
182
+ static inline void
183
+ store_att_byval(void *T, Datum newdatum, int attlen)
184
+ {
185
+ switch (attlen)
186
+ {
187
+ case sizeof(char):
188
+ *(char *) T = DatumGetChar(newdatum);
189
+ break;
190
+ case sizeof(int16):
191
+ *(int16 *) T = DatumGetInt16(newdatum);
192
+ break;
193
+ case sizeof(int32):
194
+ *(int32 *) T = DatumGetInt32(newdatum);
195
+ break;
200
196
  #if SIZEOF_DATUM == 8
201
-
202
- #define store_att_byval(T,newdatum,attlen) \
203
- do { \
204
- switch (attlen) \
205
- { \
206
- case sizeof(char): \
207
- *(char *) (T) = DatumGetChar(newdatum); \
208
- break; \
209
- case sizeof(int16): \
210
- *(int16 *) (T) = DatumGetInt16(newdatum); \
211
- break; \
212
- case sizeof(int32): \
213
- *(int32 *) (T) = DatumGetInt32(newdatum); \
214
- break; \
215
- case sizeof(Datum): \
216
- *(Datum *) (T) = (newdatum); \
217
- break; \
218
- default: \
219
- elog(ERROR, "unsupported byval length: %d", \
220
- (int) (attlen)); \
221
- break; \
222
- } \
223
- } while (0)
224
- #else /* SIZEOF_DATUM != 8 */
225
-
226
- #define store_att_byval(T,newdatum,attlen) \
227
- do { \
228
- switch (attlen) \
229
- { \
230
- case sizeof(char): \
231
- *(char *) (T) = DatumGetChar(newdatum); \
232
- break; \
233
- case sizeof(int16): \
234
- *(int16 *) (T) = DatumGetInt16(newdatum); \
235
- break; \
236
- case sizeof(int32): \
237
- *(int32 *) (T) = DatumGetInt32(newdatum); \
238
- break; \
239
- default: \
240
- elog(ERROR, "unsupported byval length: %d", \
241
- (int) (attlen)); \
242
- break; \
243
- } \
244
- } while (0)
245
- #endif /* SIZEOF_DATUM == 8 */
246
-
197
+ case sizeof(Datum):
198
+ *(Datum *) T = newdatum;
199
+ break;
247
200
  #endif
201
+ default:
202
+ elog(ERROR, "unsupported byval length: %d", attlen);
203
+ }
204
+ }
205
+ #endif /* FRONTEND */
206
+
207
+ #endif /* TUPMACS_H */
@@ -4,7 +4,7 @@
4
4
  * Two-phase-commit related declarations.
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/access/twophase.h
@@ -60,6 +60,6 @@ extern void PrepareRedoAdd(char *buf, XLogRecPtr start_lsn,
60
60
  XLogRecPtr end_lsn, RepOriginId origin_id);
61
61
  extern void PrepareRedoRemove(TransactionId xid, bool giveWarning);
62
62
  extern void restoreTwoPhaseData(void);
63
- extern bool LookupGXact(const char *gid, XLogRecPtr prepare_at_lsn,
63
+ extern bool LookupGXact(const char *gid, XLogRecPtr prepare_end_lsn,
64
64
  TimestampTz origin_prepare_timestamp);
65
65
  #endif /* TWOPHASE_H */