pg_query 4.2.3 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (486) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -0
  3. data/README.md +6 -8
  4. data/Rakefile +3 -3
  5. data/ext/pg_query/extconf.rb +1 -3
  6. data/ext/pg_query/include/access/amapi.h +3 -1
  7. data/ext/pg_query/include/access/attmap.h +5 -3
  8. data/ext/pg_query/include/access/attnum.h +1 -1
  9. data/ext/pg_query/include/access/clog.h +1 -1
  10. data/ext/pg_query/include/access/commit_ts.h +1 -1
  11. data/ext/pg_query/include/access/detoast.h +1 -1
  12. data/ext/pg_query/include/access/genam.h +7 -5
  13. data/ext/pg_query/include/access/gin.h +16 -3
  14. data/ext/pg_query/include/access/htup.h +1 -1
  15. data/ext/pg_query/include/access/htup_details.h +6 -2
  16. data/ext/pg_query/include/access/itup.h +61 -58
  17. data/ext/pg_query/include/access/parallel.h +2 -2
  18. data/ext/pg_query/include/access/printtup.h +1 -1
  19. data/ext/pg_query/include/access/relation.h +1 -1
  20. data/ext/pg_query/include/access/relscan.h +1 -1
  21. data/ext/pg_query/include/access/rmgrlist.h +2 -2
  22. data/ext/pg_query/include/access/sdir.h +12 -3
  23. data/ext/pg_query/include/access/skey.h +1 -1
  24. data/ext/pg_query/include/access/stratnum.h +1 -1
  25. data/ext/pg_query/include/access/sysattr.h +1 -1
  26. data/ext/pg_query/include/access/table.h +1 -1
  27. data/ext/pg_query/include/access/tableam.h +68 -45
  28. data/ext/pg_query/include/access/toast_compression.h +1 -1
  29. data/ext/pg_query/include/access/transam.h +1 -1
  30. data/ext/pg_query/include/access/tsmapi.h +82 -0
  31. data/ext/pg_query/include/access/tupconvert.h +5 -2
  32. data/ext/pg_query/include/access/tupdesc.h +2 -2
  33. data/ext/pg_query/include/access/tupmacs.h +58 -98
  34. data/ext/pg_query/include/access/twophase.h +2 -2
  35. data/ext/pg_query/include/access/xact.h +25 -18
  36. data/ext/pg_query/include/access/xlog.h +15 -16
  37. data/ext/pg_query/include/access/xlog_internal.h +100 -62
  38. data/ext/pg_query/include/access/xlogbackup.h +41 -0
  39. data/ext/pg_query/include/access/xlogdefs.h +6 -25
  40. data/ext/pg_query/include/access/xlogprefetcher.h +1 -1
  41. data/ext/pg_query/include/access/xlogreader.h +7 -6
  42. data/ext/pg_query/include/access/xlogrecord.h +17 -5
  43. data/ext/pg_query/include/access/xlogrecovery.h +4 -3
  44. data/ext/pg_query/include/archive/archive_module.h +59 -0
  45. data/ext/pg_query/include/c.h +144 -156
  46. data/ext/pg_query/include/catalog/catalog.h +4 -3
  47. data/ext/pg_query/include/catalog/catversion.h +6 -2
  48. data/ext/pg_query/include/catalog/dependency.h +5 -4
  49. data/ext/pg_query/include/catalog/genbki.h +7 -6
  50. data/ext/pg_query/include/catalog/index.h +4 -4
  51. data/ext/pg_query/include/catalog/indexing.h +1 -1
  52. data/ext/pg_query/include/catalog/namespace.h +2 -2
  53. data/ext/pg_query/include/catalog/objectaccess.h +10 -8
  54. data/ext/pg_query/include/catalog/objectaddress.h +3 -3
  55. data/ext/pg_query/include/catalog/pg_aggregate.h +1 -1
  56. data/ext/pg_query/include/catalog/pg_aggregate_d.h +1 -1
  57. data/ext/pg_query/include/catalog/pg_am.h +1 -1
  58. data/ext/pg_query/include/catalog/pg_am_d.h +1 -1
  59. data/ext/pg_query/include/catalog/pg_attribute.h +19 -17
  60. data/ext/pg_query/include/catalog/pg_attribute_d.h +19 -19
  61. data/ext/pg_query/include/catalog/pg_authid.h +1 -1
  62. data/ext/pg_query/include/catalog/pg_authid_d.h +3 -1
  63. data/ext/pg_query/include/catalog/pg_class.h +1 -1
  64. data/ext/pg_query/include/catalog/pg_class_d.h +1 -1
  65. data/ext/pg_query/include/catalog/pg_collation.h +3 -1
  66. data/ext/pg_query/include/catalog/pg_collation_d.h +4 -3
  67. data/ext/pg_query/include/catalog/pg_constraint.h +2 -2
  68. data/ext/pg_query/include/catalog/pg_constraint_d.h +1 -1
  69. data/ext/pg_query/include/catalog/pg_control.h +9 -1
  70. data/ext/pg_query/include/catalog/pg_conversion.h +2 -2
  71. data/ext/pg_query/include/catalog/pg_conversion_d.h +1 -1
  72. data/ext/pg_query/include/catalog/pg_database.h +124 -0
  73. data/ext/pg_query/include/catalog/pg_database_d.h +52 -0
  74. data/ext/pg_query/include/catalog/pg_depend.h +1 -1
  75. data/ext/pg_query/include/catalog/pg_depend_d.h +1 -1
  76. data/ext/pg_query/include/catalog/pg_event_trigger.h +1 -1
  77. data/ext/pg_query/include/catalog/pg_event_trigger_d.h +1 -1
  78. data/ext/pg_query/include/catalog/pg_index.h +1 -1
  79. data/ext/pg_query/include/catalog/pg_index_d.h +1 -1
  80. data/ext/pg_query/include/catalog/pg_language.h +1 -1
  81. data/ext/pg_query/include/catalog/pg_language_d.h +1 -1
  82. data/ext/pg_query/include/catalog/pg_namespace.h +1 -1
  83. data/ext/pg_query/include/catalog/pg_namespace_d.h +1 -1
  84. data/ext/pg_query/include/catalog/pg_opclass.h +1 -1
  85. data/ext/pg_query/include/catalog/pg_opclass_d.h +1 -1
  86. data/ext/pg_query/include/catalog/pg_operator.h +1 -1
  87. data/ext/pg_query/include/catalog/pg_operator_d.h +1 -1
  88. data/ext/pg_query/include/catalog/pg_opfamily.h +3 -2
  89. data/ext/pg_query/include/catalog/pg_opfamily_d.h +4 -2
  90. data/ext/pg_query/include/catalog/pg_partitioned_table.h +1 -1
  91. data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +1 -1
  92. data/ext/pg_query/include/catalog/pg_proc.h +1 -1
  93. data/ext/pg_query/include/catalog/pg_proc_d.h +1 -1
  94. data/ext/pg_query/include/catalog/pg_publication.h +2 -5
  95. data/ext/pg_query/include/catalog/pg_publication_d.h +1 -1
  96. data/ext/pg_query/include/catalog/pg_replication_origin.h +1 -1
  97. data/ext/pg_query/include/catalog/pg_replication_origin_d.h +1 -1
  98. data/ext/pg_query/include/catalog/pg_statistic.h +1 -1
  99. data/ext/pg_query/include/catalog/pg_statistic_d.h +1 -1
  100. data/ext/pg_query/include/catalog/pg_statistic_ext.h +1 -1
  101. data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +1 -1
  102. data/ext/pg_query/include/catalog/pg_transform.h +1 -1
  103. data/ext/pg_query/include/catalog/pg_transform_d.h +1 -1
  104. data/ext/pg_query/include/catalog/pg_trigger.h +1 -1
  105. data/ext/pg_query/include/catalog/pg_trigger_d.h +1 -1
  106. data/ext/pg_query/include/catalog/pg_ts_config.h +1 -1
  107. data/ext/pg_query/include/catalog/pg_ts_config_d.h +1 -1
  108. data/ext/pg_query/include/catalog/pg_ts_dict.h +1 -1
  109. data/ext/pg_query/include/catalog/pg_ts_dict_d.h +1 -1
  110. data/ext/pg_query/include/catalog/pg_ts_parser.h +1 -1
  111. data/ext/pg_query/include/catalog/pg_ts_parser_d.h +1 -1
  112. data/ext/pg_query/include/catalog/pg_ts_template.h +1 -1
  113. data/ext/pg_query/include/catalog/pg_ts_template_d.h +1 -1
  114. data/ext/pg_query/include/catalog/pg_type.h +1 -1
  115. data/ext/pg_query/include/catalog/pg_type_d.h +1 -1
  116. data/ext/pg_query/include/catalog/storage.h +6 -6
  117. data/ext/pg_query/include/commands/async.h +1 -1
  118. data/ext/pg_query/include/commands/dbcommands.h +2 -1
  119. data/ext/pg_query/include/commands/defrem.h +2 -1
  120. data/ext/pg_query/include/commands/event_trigger.h +1 -1
  121. data/ext/pg_query/include/commands/explain.h +3 -1
  122. data/ext/pg_query/include/commands/prepare.h +1 -1
  123. data/ext/pg_query/include/commands/tablespace.h +4 -4
  124. data/ext/pg_query/include/commands/trigger.h +15 -14
  125. data/ext/pg_query/include/commands/user.h +9 -3
  126. data/ext/pg_query/include/commands/vacuum.h +60 -14
  127. data/ext/pg_query/include/common/cryptohash.h +39 -0
  128. data/ext/pg_query/include/common/file_perm.h +1 -1
  129. data/ext/pg_query/include/common/hashfn.h +1 -1
  130. data/ext/pg_query/include/common/int.h +437 -0
  131. data/ext/pg_query/include/common/ip.h +4 -2
  132. data/ext/pg_query/include/common/keywords.h +1 -1
  133. data/ext/pg_query/include/common/kwlookup.h +2 -2
  134. data/ext/pg_query/include/common/pg_prng.h +3 -2
  135. data/ext/pg_query/include/common/relpath.h +20 -13
  136. data/ext/pg_query/include/common/scram-common.h +70 -0
  137. data/ext/pg_query/include/common/sha2.h +32 -0
  138. data/ext/pg_query/include/common/string.h +5 -3
  139. data/ext/pg_query/include/common/unicode_east_asian_fw_table.h +10 -10
  140. data/ext/pg_query/include/common/{unicode_combining_table.h → unicode_nonspacing_table.h} +31 -13
  141. data/ext/pg_query/include/copyfuncs.funcs.c +5013 -0
  142. data/ext/pg_query/include/copyfuncs.switch.c +938 -0
  143. data/ext/pg_query/include/datatype/timestamp.h +11 -4
  144. data/ext/pg_query/include/equalfuncs.funcs.c +3097 -0
  145. data/ext/pg_query/include/equalfuncs.switch.c +785 -0
  146. data/ext/pg_query/include/executor/execdesc.h +1 -1
  147. data/ext/pg_query/include/executor/executor.h +34 -17
  148. data/ext/pg_query/include/executor/functions.h +1 -1
  149. data/ext/pg_query/include/executor/instrument.h +1 -1
  150. data/ext/pg_query/include/executor/spi.h +2 -2
  151. data/ext/pg_query/include/executor/tablefunc.h +1 -1
  152. data/ext/pg_query/include/executor/tuptable.h +18 -11
  153. data/ext/pg_query/include/fmgr.h +21 -2
  154. data/ext/pg_query/include/foreign/fdwapi.h +294 -0
  155. data/ext/pg_query/include/funcapi.h +12 -12
  156. data/ext/pg_query/include/gram.h +1127 -0
  157. data/ext/pg_query/include/{parser/gramparse.h → gramparse.h} +4 -4
  158. data/ext/pg_query/include/jit/jit.h +2 -2
  159. data/ext/pg_query/include/kwlist_d.h +534 -510
  160. data/ext/pg_query/include/lib/dshash.h +4 -1
  161. data/ext/pg_query/include/lib/ilist.h +435 -22
  162. data/ext/pg_query/include/lib/pairingheap.h +1 -1
  163. data/ext/pg_query/include/lib/simplehash.h +9 -9
  164. data/ext/pg_query/include/lib/sort_template.h +1 -1
  165. data/ext/pg_query/include/lib/stringinfo.h +3 -3
  166. data/ext/pg_query/include/libpq/auth.h +8 -2
  167. data/ext/pg_query/include/libpq/crypt.h +1 -1
  168. data/ext/pg_query/include/libpq/hba.h +24 -17
  169. data/ext/pg_query/include/libpq/libpq-be.h +36 -25
  170. data/ext/pg_query/include/libpq/libpq.h +1 -1
  171. data/ext/pg_query/include/libpq/pqcomm.h +10 -41
  172. data/ext/pg_query/include/libpq/pqformat.h +2 -2
  173. data/ext/pg_query/include/libpq/pqsignal.h +22 -10
  174. data/ext/pg_query/include/libpq/sasl.h +136 -0
  175. data/ext/pg_query/include/libpq/scram.h +37 -0
  176. data/ext/pg_query/include/mb/pg_wchar.h +35 -18
  177. data/ext/pg_query/include/mb/stringinfo_mb.h +1 -1
  178. data/ext/pg_query/include/miscadmin.h +26 -14
  179. data/ext/pg_query/include/nodes/bitmapset.h +11 -7
  180. data/ext/pg_query/include/nodes/execnodes.h +83 -30
  181. data/ext/pg_query/include/nodes/extensible.h +5 -3
  182. data/ext/pg_query/include/nodes/lockoptions.h +1 -1
  183. data/ext/pg_query/include/nodes/makefuncs.h +14 -2
  184. data/ext/pg_query/include/nodes/memnodes.h +7 -4
  185. data/ext/pg_query/include/nodes/miscnodes.h +56 -0
  186. data/ext/pg_query/include/nodes/nodeFuncs.h +89 -29
  187. data/ext/pg_query/include/nodes/nodes.h +95 -510
  188. data/ext/pg_query/include/nodes/nodetags.h +471 -0
  189. data/ext/pg_query/include/nodes/params.h +3 -3
  190. data/ext/pg_query/include/nodes/parsenodes.h +377 -139
  191. data/ext/pg_query/include/nodes/pathnodes.h +1090 -440
  192. data/ext/pg_query/include/nodes/pg_list.h +30 -7
  193. data/ext/pg_query/include/nodes/plannodes.h +367 -124
  194. data/ext/pg_query/include/nodes/primnodes.h +670 -222
  195. data/ext/pg_query/include/nodes/print.h +1 -1
  196. data/ext/pg_query/include/{utils → nodes}/queryjumble.h +5 -7
  197. data/ext/pg_query/include/nodes/replnodes.h +111 -0
  198. data/ext/pg_query/include/nodes/supportnodes.h +346 -0
  199. data/ext/pg_query/include/nodes/tidbitmap.h +1 -1
  200. data/ext/pg_query/include/nodes/value.h +12 -2
  201. data/ext/pg_query/include/optimizer/cost.h +6 -4
  202. data/ext/pg_query/include/optimizer/geqo.h +1 -1
  203. data/ext/pg_query/include/optimizer/geqo_gene.h +1 -1
  204. data/ext/pg_query/include/optimizer/optimizer.h +8 -8
  205. data/ext/pg_query/include/optimizer/paths.h +16 -7
  206. data/ext/pg_query/include/optimizer/planmain.h +3 -6
  207. data/ext/pg_query/include/parser/analyze.h +4 -3
  208. data/ext/pg_query/include/parser/kwlist.h +12 -1
  209. data/ext/pg_query/include/parser/parse_agg.h +4 -2
  210. data/ext/pg_query/include/parser/parse_coerce.h +3 -1
  211. data/ext/pg_query/include/parser/parse_expr.h +1 -1
  212. data/ext/pg_query/include/parser/parse_func.h +1 -1
  213. data/ext/pg_query/include/parser/parse_node.h +22 -4
  214. data/ext/pg_query/include/parser/parse_oper.h +3 -3
  215. data/ext/pg_query/include/parser/parse_relation.h +8 -3
  216. data/ext/pg_query/include/parser/parse_type.h +4 -3
  217. data/ext/pg_query/include/parser/parser.h +1 -1
  218. data/ext/pg_query/include/parser/parsetree.h +1 -1
  219. data/ext/pg_query/include/parser/scanner.h +2 -2
  220. data/ext/pg_query/include/parser/scansup.h +1 -1
  221. data/ext/pg_query/include/partitioning/partdefs.h +1 -1
  222. data/ext/pg_query/include/pg_config.h +21 -216
  223. data/ext/pg_query/include/pg_config_manual.h +8 -46
  224. data/ext/pg_query/include/pg_getopt.h +1 -1
  225. data/ext/pg_query/include/pg_query.h +27 -3
  226. data/ext/pg_query/include/pg_query_enum_defs.c +311 -149
  227. data/ext/pg_query/include/pg_query_fingerprint_conds.c +545 -489
  228. data/ext/pg_query/include/pg_query_fingerprint_defs.c +5092 -4432
  229. data/ext/pg_query/include/pg_query_outfuncs_conds.c +385 -343
  230. data/ext/pg_query/include/pg_query_outfuncs_defs.c +1294 -1161
  231. data/ext/pg_query/include/pg_query_readfuncs_conds.c +137 -123
  232. data/ext/pg_query/include/pg_query_readfuncs_defs.c +1657 -1496
  233. data/ext/pg_query/include/pg_trace.h +1 -1
  234. data/ext/pg_query/include/pgstat.h +172 -93
  235. data/ext/pg_query/include/pgtime.h +3 -3
  236. data/ext/pg_query/include/pl_gram.h +64 -62
  237. data/ext/pg_query/include/pl_reserved_kwlist.h +1 -1
  238. data/ext/pg_query/include/pl_reserved_kwlist_d.h +1 -1
  239. data/ext/pg_query/include/pl_unreserved_kwlist.h +2 -1
  240. data/ext/pg_query/include/pl_unreserved_kwlist_d.h +48 -46
  241. data/ext/pg_query/include/plpgsql.h +17 -22
  242. data/ext/pg_query/include/port/atomics/arch-arm.h +3 -3
  243. data/ext/pg_query/include/port/atomics/arch-ppc.h +21 -21
  244. data/ext/pg_query/include/port/atomics/arch-x86.h +2 -2
  245. data/ext/pg_query/include/port/atomics/fallback.h +3 -3
  246. data/ext/pg_query/include/port/atomics/generic-gcc.h +1 -1
  247. data/ext/pg_query/include/port/atomics/generic.h +1 -1
  248. data/ext/pg_query/include/port/atomics.h +2 -7
  249. data/ext/pg_query/include/port/pg_bitutils.h +62 -25
  250. data/ext/pg_query/include/port/pg_bswap.h +1 -1
  251. data/ext/pg_query/include/port/pg_crc32c.h +1 -1
  252. data/ext/pg_query/include/port/simd.h +375 -0
  253. data/ext/pg_query/include/port.h +42 -75
  254. data/ext/pg_query/include/portability/instr_time.h +81 -140
  255. data/ext/pg_query/include/postgres.h +205 -434
  256. data/ext/pg_query/include/postgres_ext.h +0 -1
  257. data/ext/pg_query/include/postmaster/autovacuum.h +1 -4
  258. data/ext/pg_query/include/postmaster/auxprocess.h +1 -1
  259. data/ext/pg_query/include/postmaster/bgworker.h +2 -2
  260. data/ext/pg_query/include/postmaster/bgworker_internals.h +1 -1
  261. data/ext/pg_query/include/postmaster/bgwriter.h +2 -2
  262. data/ext/pg_query/include/postmaster/fork_process.h +1 -1
  263. data/ext/pg_query/include/postmaster/interrupt.h +1 -1
  264. data/ext/pg_query/include/postmaster/pgarch.h +1 -38
  265. data/ext/pg_query/include/postmaster/postmaster.h +5 -2
  266. data/ext/pg_query/include/postmaster/startup.h +3 -1
  267. data/ext/pg_query/include/postmaster/syslogger.h +2 -2
  268. data/ext/pg_query/include/postmaster/walwriter.h +3 -1
  269. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +6186 -5585
  270. data/ext/pg_query/include/protobuf/pg_query.pb.h +112443 -91222
  271. data/ext/pg_query/include/regex/regex.h +9 -6
  272. data/ext/pg_query/include/replication/logicallauncher.h +6 -1
  273. data/ext/pg_query/include/replication/logicalproto.h +30 -10
  274. data/ext/pg_query/include/replication/logicalworker.h +14 -1
  275. data/ext/pg_query/include/replication/origin.h +4 -4
  276. data/ext/pg_query/include/replication/reorderbuffer.h +113 -45
  277. data/ext/pg_query/include/replication/slot.h +25 -6
  278. data/ext/pg_query/include/replication/syncrep.h +2 -8
  279. data/ext/pg_query/include/replication/walreceiver.h +15 -9
  280. data/ext/pg_query/include/replication/walsender.h +13 -13
  281. data/ext/pg_query/include/rewrite/prs2lock.h +1 -1
  282. data/ext/pg_query/include/rewrite/rewriteHandler.h +1 -4
  283. data/ext/pg_query/include/rewrite/rewriteManip.h +11 -2
  284. data/ext/pg_query/include/rewrite/rewriteSupport.h +1 -1
  285. data/ext/pg_query/include/src_backend_nodes_copyfuncs.funcs.c +5321 -0
  286. data/ext/pg_query/include/src_backend_nodes_equalfuncs.funcs.c +3354 -0
  287. data/ext/pg_query/include/storage/backendid.h +1 -1
  288. data/ext/pg_query/include/storage/block.h +24 -31
  289. data/ext/pg_query/include/storage/buf.h +1 -1
  290. data/ext/pg_query/include/storage/bufmgr.h +183 -87
  291. data/ext/pg_query/include/storage/bufpage.h +146 -93
  292. data/ext/pg_query/include/storage/condition_variable.h +2 -2
  293. data/ext/pg_query/include/storage/dsm.h +3 -6
  294. data/ext/pg_query/include/storage/dsm_impl.h +4 -1
  295. data/ext/pg_query/include/storage/fd.h +24 -20
  296. data/ext/pg_query/include/storage/fileset.h +1 -1
  297. data/ext/pg_query/include/storage/ipc.h +1 -1
  298. data/ext/pg_query/include/storage/item.h +1 -1
  299. data/ext/pg_query/include/storage/itemid.h +1 -1
  300. data/ext/pg_query/include/storage/itemptr.h +94 -57
  301. data/ext/pg_query/include/storage/large_object.h +1 -1
  302. data/ext/pg_query/include/storage/latch.h +9 -1
  303. data/ext/pg_query/include/storage/lmgr.h +6 -1
  304. data/ext/pg_query/include/storage/lock.h +21 -13
  305. data/ext/pg_query/include/storage/lockdefs.h +3 -3
  306. data/ext/pg_query/include/storage/lwlock.h +16 -2
  307. data/ext/pg_query/include/storage/off.h +1 -1
  308. data/ext/pg_query/include/storage/pg_sema.h +1 -1
  309. data/ext/pg_query/include/storage/pg_shmem.h +1 -1
  310. data/ext/pg_query/include/storage/pmsignal.h +1 -1
  311. data/ext/pg_query/include/storage/predicate.h +2 -2
  312. data/ext/pg_query/include/storage/proc.h +22 -17
  313. data/ext/pg_query/include/storage/procarray.h +3 -2
  314. data/ext/pg_query/include/storage/proclist_types.h +1 -1
  315. data/ext/pg_query/include/storage/procsignal.h +3 -1
  316. data/ext/pg_query/include/storage/relfilelocator.h +99 -0
  317. data/ext/pg_query/include/storage/s_lock.h +66 -309
  318. data/ext/pg_query/include/storage/sharedfileset.h +1 -1
  319. data/ext/pg_query/include/storage/shm_mq.h +1 -1
  320. data/ext/pg_query/include/storage/shm_toc.h +1 -1
  321. data/ext/pg_query/include/storage/shmem.h +1 -23
  322. data/ext/pg_query/include/storage/sinval.h +3 -3
  323. data/ext/pg_query/include/storage/sinvaladt.h +4 -2
  324. data/ext/pg_query/include/storage/smgr.h +12 -10
  325. data/ext/pg_query/include/storage/spin.h +1 -1
  326. data/ext/pg_query/include/storage/standby.h +9 -8
  327. data/ext/pg_query/include/storage/standbydefs.h +1 -1
  328. data/ext/pg_query/include/storage/sync.h +3 -3
  329. data/ext/pg_query/include/tcop/cmdtag.h +7 -2
  330. data/ext/pg_query/include/tcop/cmdtaglist.h +1 -1
  331. data/ext/pg_query/include/tcop/deparse_utility.h +1 -1
  332. data/ext/pg_query/include/tcop/dest.h +1 -3
  333. data/ext/pg_query/include/tcop/fastpath.h +1 -1
  334. data/ext/pg_query/include/tcop/pquery.h +1 -1
  335. data/ext/pg_query/include/tcop/tcopprot.h +1 -4
  336. data/ext/pg_query/include/tcop/utility.h +1 -1
  337. data/ext/pg_query/include/tsearch/ts_cache.h +2 -4
  338. data/ext/pg_query/include/utils/acl.h +26 -81
  339. data/ext/pg_query/include/utils/aclchk_internal.h +1 -1
  340. data/ext/pg_query/include/utils/array.h +19 -1
  341. data/ext/pg_query/include/utils/backend_progress.h +2 -1
  342. data/ext/pg_query/include/utils/backend_status.h +24 -3
  343. data/ext/pg_query/include/utils/builtins.h +14 -5
  344. data/ext/pg_query/include/utils/bytea.h +1 -1
  345. data/ext/pg_query/include/utils/catcache.h +1 -1
  346. data/ext/pg_query/include/utils/date.h +37 -9
  347. data/ext/pg_query/include/utils/datetime.h +41 -21
  348. data/ext/pg_query/include/utils/datum.h +1 -1
  349. data/ext/pg_query/include/utils/dsa.h +5 -1
  350. data/ext/pg_query/include/utils/elog.h +101 -26
  351. data/ext/pg_query/include/utils/expandeddatum.h +14 -3
  352. data/ext/pg_query/include/utils/expandedrecord.h +14 -4
  353. data/ext/pg_query/include/utils/float.h +7 -6
  354. data/ext/pg_query/include/utils/fmgroids.h +54 -1
  355. data/ext/pg_query/include/utils/fmgrprotos.h +45 -3
  356. data/ext/pg_query/include/utils/fmgrtab.h +1 -1
  357. data/ext/pg_query/include/utils/guc.h +55 -82
  358. data/ext/pg_query/include/utils/guc_hooks.h +163 -0
  359. data/ext/pg_query/include/utils/guc_tables.h +49 -3
  360. data/ext/pg_query/include/utils/hsearch.h +1 -1
  361. data/ext/pg_query/include/utils/inval.h +3 -3
  362. data/ext/pg_query/include/utils/logtape.h +77 -0
  363. data/ext/pg_query/include/utils/lsyscache.h +5 -1
  364. data/ext/pg_query/include/utils/memdebug.h +1 -1
  365. data/ext/pg_query/include/utils/memutils.h +5 -49
  366. data/ext/pg_query/include/utils/memutils_internal.h +136 -0
  367. data/ext/pg_query/include/utils/memutils_memorychunk.h +237 -0
  368. data/ext/pg_query/include/utils/numeric.h +20 -5
  369. data/ext/pg_query/include/utils/palloc.h +8 -1
  370. data/ext/pg_query/include/utils/partcache.h +3 -2
  371. data/ext/pg_query/include/utils/pg_locale.h +22 -14
  372. data/ext/pg_query/include/utils/pgstat_internal.h +37 -7
  373. data/ext/pg_query/include/utils/pidfile.h +1 -1
  374. data/ext/pg_query/include/utils/plancache.h +1 -1
  375. data/ext/pg_query/include/utils/portal.h +1 -1
  376. data/ext/pg_query/include/utils/probes.h +6 -6
  377. data/ext/pg_query/include/utils/ps_status.h +23 -1
  378. data/ext/pg_query/include/utils/queryenvironment.h +1 -1
  379. data/ext/pg_query/include/utils/regproc.h +3 -3
  380. data/ext/pg_query/include/utils/rel.h +60 -43
  381. data/ext/pg_query/include/utils/relcache.h +13 -8
  382. data/ext/pg_query/include/utils/reltrigger.h +1 -1
  383. data/ext/pg_query/include/utils/resowner.h +1 -1
  384. data/ext/pg_query/include/utils/ruleutils.h +6 -1
  385. data/ext/pg_query/include/utils/sharedtuplestore.h +1 -1
  386. data/ext/pg_query/include/utils/snapmgr.h +4 -2
  387. data/ext/pg_query/include/utils/snapshot.h +1 -1
  388. data/ext/pg_query/include/utils/sortsupport.h +2 -2
  389. data/ext/pg_query/include/utils/syscache.h +4 -1
  390. data/ext/pg_query/include/utils/timeout.h +1 -1
  391. data/ext/pg_query/include/utils/timestamp.h +41 -11
  392. data/ext/pg_query/include/utils/tuplesort.h +189 -35
  393. data/ext/pg_query/include/utils/tuplestore.h +1 -1
  394. data/ext/pg_query/include/utils/typcache.h +1 -1
  395. data/ext/pg_query/include/utils/varlena.h +13 -1
  396. data/ext/pg_query/include/utils/wait_event.h +9 -4
  397. data/ext/pg_query/include/utils/xml.h +15 -5
  398. data/ext/pg_query/include/varatt.h +358 -0
  399. data/ext/pg_query/pg_query.c +1 -1
  400. data/ext/pg_query/pg_query.pb-c.c +19755 -17757
  401. data/ext/pg_query/pg_query_fingerprint.c +8 -3
  402. data/ext/pg_query/pg_query_fingerprint.h +1 -1
  403. data/ext/pg_query/pg_query_internal.h +1 -1
  404. data/ext/pg_query/pg_query_json_plpgsql.c +1 -0
  405. data/ext/pg_query/pg_query_normalize.c +1 -1
  406. data/ext/pg_query/pg_query_outfuncs_protobuf.c +2 -2
  407. data/ext/pg_query/pg_query_parse.c +46 -4
  408. data/ext/pg_query/pg_query_parse_plpgsql.c +1 -1
  409. data/ext/pg_query/pg_query_scan.c +1 -1
  410. data/ext/pg_query/pg_query_split.c +2 -2
  411. data/ext/pg_query/postgres_deparse.c +503 -105
  412. data/ext/pg_query/src_backend_catalog_namespace.c +7 -2
  413. data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -1
  414. data/ext/pg_query/src_backend_commands_define.c +1 -1
  415. data/ext/pg_query/src_backend_nodes_bitmapset.c +11 -70
  416. data/ext/pg_query/src_backend_nodes_copyfuncs.c +96 -6202
  417. data/ext/pg_query/src_backend_nodes_equalfuncs.c +95 -4068
  418. data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
  419. data/ext/pg_query/src_backend_nodes_list.c +14 -2
  420. data/ext/pg_query/src_backend_nodes_makefuncs.c +95 -1
  421. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +283 -132
  422. data/ext/pg_query/src_backend_nodes_value.c +1 -1
  423. data/ext/pg_query/src_backend_parser_gram.c +33208 -31806
  424. data/ext/pg_query/src_backend_parser_parser.c +28 -2
  425. data/ext/pg_query/src_backend_parser_scan.c +4318 -3329
  426. data/ext/pg_query/src_backend_parser_scansup.c +1 -1
  427. data/ext/pg_query/src_backend_postmaster_postmaster.c +129 -110
  428. data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
  429. data/ext/pg_query/src_backend_tcop_postgres.c +66 -87
  430. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +1 -1
  431. data/ext/pg_query/src_backend_utils_adt_datum.c +5 -7
  432. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  433. data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
  434. data/ext/pg_query/src_backend_utils_adt_numutils.c +489 -0
  435. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +79 -5
  436. data/ext/pg_query/src_backend_utils_error_assert.c +4 -7
  437. data/ext/pg_query/src_backend_utils_error_elog.c +354 -97
  438. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +33 -1
  439. data/ext/pg_query/src_backend_utils_init_globals.c +5 -2
  440. data/ext/pg_query/src_backend_utils_mb_mbutils.c +13 -4
  441. data/ext/pg_query/src_backend_utils_misc_guc_tables.c +494 -0
  442. data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +163 -0
  443. data/ext/pg_query/src_backend_utils_mmgr_aset.c +449 -312
  444. data/ext/pg_query/src_backend_utils_mmgr_generation.c +1039 -0
  445. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +398 -49
  446. data/ext/pg_query/src_backend_utils_mmgr_slab.c +1021 -0
  447. data/ext/pg_query/src_common_encnames.c +4 -1
  448. data/ext/pg_query/src_common_hashfn.c +1 -1
  449. data/ext/pg_query/src_common_keywords.c +1 -1
  450. data/ext/pg_query/src_common_kwlist_d.h +534 -510
  451. data/ext/pg_query/src_common_kwlookup.c +1 -1
  452. data/ext/pg_query/src_common_psprintf.c +1 -1
  453. data/ext/pg_query/src_common_stringinfo.c +4 -4
  454. data/ext/pg_query/src_common_wchar.c +9 -8
  455. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +1 -1
  456. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -1
  457. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +661 -694
  458. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  459. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
  460. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +1 -1
  461. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +48 -46
  462. data/ext/pg_query/src_port_pg_bitutils.c +1 -1
  463. data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
  464. data/ext/pg_query/src_port_snprintf.c +3 -7
  465. data/ext/pg_query/src_port_strerror.c +1 -1
  466. data/ext/pg_query/src_port_strnlen.c +1 -1
  467. data/lib/pg_query/pg_query_pb.rb +166 -3191
  468. data/lib/pg_query/treewalker.rb +7 -2
  469. data/lib/pg_query/version.rb +1 -1
  470. metadata +43 -24
  471. data/ext/pg_query/include/catalog/pg_parameter_acl.h +0 -60
  472. data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +0 -34
  473. data/ext/pg_query/include/commands/variable.h +0 -38
  474. data/ext/pg_query/include/getaddrinfo.h +0 -162
  475. data/ext/pg_query/include/parser/gram.h +0 -1101
  476. data/ext/pg_query/include/storage/relfilenode.h +0 -99
  477. data/ext/pg_query/include/utils/dynahash.h +0 -20
  478. data/ext/pg_query/include/utils/pg_lsn.h +0 -29
  479. data/ext/pg_query/include/utils/rls.h +0 -50
  480. data/ext/pg_query/include/utils/tzparser.h +0 -39
  481. data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -371
  482. data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1116
  483. data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1993
  484. data/ext/pg_query/src_common_pg_prng.c +0 -152
  485. data/ext/pg_query/src_common_string.c +0 -92
  486. data/ext/pg_query/src_port_pgsleep.c +0 -69
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7ef3b405c38280a7d7fd951b9b2d181d4b54b7c650817227a8fa5e4e0e9a38d8
4
- data.tar.gz: 4d76a4a3d25b847c2996613c761a5529f17e2e03d5f17257c39d02d8291e48b8
3
+ metadata.gz: b94d85770885d7cc76eea209b1de0ac6e7aa8d8408cb2a986e846852c26bbdd0
4
+ data.tar.gz: 01457cf09362555c92dc90116e3cce752c13778c4cb3daa852423e5e6a4df01f
5
5
  SHA512:
6
- metadata.gz: 9c5790923fd334079f84eb70154b330ba8dd1c61b8a54acc4248dcf7327a1137d32a29127c9aa8d6a3e87b3d5bfb47169f628fd54afb94c94c167658d37a2083
7
- data.tar.gz: 6c5954ddfd3c31dfeabb0747c505ed06094a892ac75e3de052aabb91f9edff3726d4c1f0d6da9324467d8ecf71434b92021f35cd6bb1e2ac1121684daafedf08
6
+ metadata.gz: 6b817e4f20f42d2497de9df7807d8e06100e81b863fd7a4a49f18840c32d1921c4c26a5c2382221102ab23b74859a9fd0708c0c7caff8806ffec012d31285116
7
+ data.tar.gz: 807ee8ff136dcfd0d0dd2d8c50613b33b032f4a37dd287ea83a671ed3afa0e1bba389c41b5d9955eb1ee8783640caf46bde91eeed6e710ac88fb524f03ce0318
data/CHANGELOG.md CHANGED
@@ -4,6 +4,12 @@
4
4
 
5
5
  * ...
6
6
 
7
+ ## 5.0.0 2023-12-22
8
+
9
+ * Upgrade to libpg_query 16-5.0.0
10
+ - Updates to the Postgres 16 parser
11
+ - Multiple deparser improvements
12
+
7
13
 
8
14
  ## 4.2.3 2023-08-04
9
15
 
data/README.md CHANGED
@@ -25,10 +25,10 @@ Due to compiling parts of PostgreSQL, installation might take a while on slower
25
25
  ```ruby
26
26
  PgQuery.parse("SELECT 1")
27
27
 
28
- => #<PgQuery::ParserResult:0x000000012000c438
28
+ => #<PgQuery::ParserResult:0x000000012ec4e9e0
29
29
  @query="SELECT 1",
30
30
  @tree=<PgQuery::ParseResult:
31
- version: 150001,
31
+ version: 160001,
32
32
  stmts: [
33
33
  <PgQuery::RawStmt:
34
34
  stmt: <PgQuery::Node:
@@ -41,11 +41,9 @@ PgQuery.parse("SELECT 1")
41
41
  indirection: [],
42
42
  val: <PgQuery::Node:
43
43
  a_const: <PgQuery::A_Const:
44
+ ival: <PgQuery::Integer: ival: 1>,
44
45
  isnull: false,
45
- location: 7,
46
- ival: <PgQuery::Integer:
47
- ival: 1
48
- >
46
+ location: 7
49
47
  >
50
48
  >,
51
49
  location: 7
@@ -139,7 +137,7 @@ PgQuery.fingerprint("SELECT $1")
139
137
  ```ruby
140
138
  PgQuery.scan('SELECT 1 --comment')
141
139
 
142
- => [<PgQuery::ScanResult: version: 150001, tokens: [
140
+ => [<PgQuery::ScanResult: version: 160001, tokens: [
143
141
  <PgQuery::ScanToken: start: 0, end: 6, token: :SELECT, keyword_kind: :RESERVED_KEYWORD>,
144
142
  <PgQuery::ScanToken: start: 7, end: 8, token: :ICONST, keyword_kind: :NO_KEYWORD>,
145
143
  <PgQuery::ScanToken: start: 9, end: 18, token: :SQL_COMMENT, keyword_kind: :NO_KEYWORD>]>,
@@ -160,7 +158,7 @@ parsed_query.walk! { |node, k, v, location| puts k }
160
158
  More usefully, this can be used to rewrite a query. For example:
161
159
 
162
160
  ```ruby
163
- parsed_query.walk! do |node, k, v, location| puts k
161
+ parsed_query.walk! do |node, k, v, location|
164
162
  next unless k.eql?(:range_var) || k.eql?(:relation)
165
163
  next if v.relname.nil?
166
164
  v.relname = "X_" + v.relname
data/Rakefile CHANGED
@@ -5,8 +5,8 @@ require 'rspec/core/rake_task'
5
5
  require 'rubocop/rake_task'
6
6
  require 'open-uri'
7
7
 
8
- LIB_PG_QUERY_TAG = '15-4.2.3'.freeze
9
- LIB_PG_QUERY_SHA256SUM = '8b820d63442b1677ce4f0df2a95b3fafdbc520a82901def81217559ec4df9e6b'.freeze
8
+ LIB_PG_QUERY_TAG = '16-5.0.0'.freeze
9
+ LIB_PG_QUERY_SHA256SUM = '7cf26922cbc41668fa79332504f2d5638339baa9411912b8df4526ccd1d7029e'.freeze
10
10
 
11
11
  Rake::ExtensionTask.new 'pg_query' do |ext|
12
12
  ext.lib_dir = 'lib/pg_query'
@@ -66,7 +66,7 @@ task :update_source do
66
66
  system("rmdir #{extdir}/postgres")
67
67
  system("cp -a #{libdir}/pg_query.h #{extdir}/include")
68
68
  # Make sure every .c file in the top-level directory is its own translation unit
69
- system("mv #{extdir}/*{_conds,_defs,_helper}.c #{extdir}/include")
69
+ system("mv #{extdir}/*{_conds,_defs,_helper,.funcs}.c #{extdir}/include")
70
70
  # Protobuf definitions
71
71
  system("protoc --proto_path=#{libdir}/protobuf --ruby_out=#{File.join(__dir__, 'lib/pg_query')} #{libdir}/protobuf/pg_query.proto")
72
72
  system("mkdir -p #{extdir}/include/protobuf")
@@ -7,9 +7,7 @@ require 'pathname'
7
7
 
8
8
  $objs = Dir.glob(File.join(__dir__, '*.c')).map { |f| Pathname.new(f).sub_ext('.o').to_s }
9
9
 
10
- # -Wno-deprecated-non-prototype avoids warnings on Clang 15.0+, this can be removed in Postgres 16:
11
- # https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=1c27d16e6e5c1f463bbe1e9ece88dda811235165
12
- $CFLAGS << " -fvisibility=hidden -O3 -Wall -fno-strict-aliasing -fwrapv -fstack-protector -Wno-unused-function -Wno-unused-variable -Wno-clobbered -Wno-sign-compare -Wno-discarded-qualifiers -Wno-deprecated-non-prototype -Wno-unknown-warning-option -g"
10
+ $CFLAGS << " -fvisibility=hidden -O3 -Wall -fno-strict-aliasing -fwrapv -fstack-protector -Wno-unused-function -Wno-unused-variable -Wno-clobbered -Wno-sign-compare -Wno-discarded-qualifiers -Wno-unknown-warning-option -g"
13
11
 
14
12
  $INCFLAGS = "-I#{File.join(__dir__, 'include')} " + $INCFLAGS
15
13
 
@@ -3,7 +3,7 @@
3
3
  * amapi.h
4
4
  * API for Postgres index access methods.
5
5
  *
6
- * Copyright (c) 2015-2022, PostgreSQL Global Development Group
6
+ * Copyright (c) 2015-2023, PostgreSQL Global Development Group
7
7
  *
8
8
  * src/include/access/amapi.h
9
9
  *
@@ -244,6 +244,8 @@ typedef struct IndexAmRoutine
244
244
  bool amcaninclude;
245
245
  /* does AM use maintenance_work_mem? */
246
246
  bool amusemaintenanceworkmem;
247
+ /* does AM store tuple information only at block granularity? */
248
+ bool amsummarizing;
247
249
  /* OR of parallel vacuum flags. See vacuum.h for flags. */
248
250
  uint8 amparallelvacuumoptions;
249
251
  /* type of data stored in index, or InvalidOid if variable */
@@ -4,7 +4,7 @@
4
4
  * Definitions for PostgreSQL attribute mappings
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/attmap.h
@@ -42,9 +42,11 @@ extern void free_attrmap(AttrMap *map);
42
42
 
43
43
  /* Conversion routines to build mappings */
44
44
  extern AttrMap *build_attrmap_by_name(TupleDesc indesc,
45
- TupleDesc outdesc);
45
+ TupleDesc outdesc,
46
+ bool missing_ok);
46
47
  extern AttrMap *build_attrmap_by_name_if_req(TupleDesc indesc,
47
- TupleDesc outdesc);
48
+ TupleDesc outdesc,
49
+ bool missing_ok);
48
50
  extern AttrMap *build_attrmap_by_position(TupleDesc indesc,
49
51
  TupleDesc outdesc,
50
52
  const char *msg);
@@ -4,7 +4,7 @@
4
4
  * POSTGRES attribute number 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/attnum.h
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * PostgreSQL transaction-commit-log manager
5
5
  *
6
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * src/include/access/clog.h
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * PostgreSQL commit timestamp manager
5
5
  *
6
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * src/include/access/commit_ts.h
@@ -3,7 +3,7 @@
3
3
  * detoast.h
4
4
  * Access to compressed and external varlena values.
5
5
  *
6
- * Copyright (c) 2000-2022, PostgreSQL Global Development Group
6
+ * Copyright (c) 2000-2023, PostgreSQL Global Development Group
7
7
  *
8
8
  * src/include/access/detoast.h
9
9
  *
@@ -4,7 +4,7 @@
4
4
  * POSTGRES generalized index 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/genam.h
@@ -44,6 +44,7 @@ typedef struct IndexBuildResult
44
44
  typedef struct IndexVacuumInfo
45
45
  {
46
46
  Relation index; /* the index being vacuumed */
47
+ Relation heaprel; /* the heap relation the index belongs to */
47
48
  bool analyze_only; /* ANALYZE (without any actual vacuum) */
48
49
  bool report_progress; /* emit progress.h status reports */
49
50
  bool estimated_count; /* num_heap_tuples is an estimate */
@@ -161,9 +162,10 @@ extern void index_rescan(IndexScanDesc scan,
161
162
  extern void index_endscan(IndexScanDesc scan);
162
163
  extern void index_markpos(IndexScanDesc scan);
163
164
  extern void index_restrpos(IndexScanDesc scan);
164
- extern Size index_parallelscan_estimate(Relation indexrel, Snapshot snapshot);
165
- extern void index_parallelscan_initialize(Relation heaprel, Relation indexrel,
166
- Snapshot snapshot, ParallelIndexScanDesc target);
165
+ extern Size index_parallelscan_estimate(Relation indexRelation, Snapshot snapshot);
166
+ extern void index_parallelscan_initialize(Relation heapRelation,
167
+ Relation indexRelation, Snapshot snapshot,
168
+ ParallelIndexScanDesc target);
167
169
  extern void index_parallelrescan(IndexScanDesc scan);
168
170
  extern IndexScanDesc index_beginscan_parallel(Relation heaprel,
169
171
  Relation indexrel, int nkeys, int norderbys,
@@ -191,7 +193,7 @@ extern void index_store_float8_orderby_distances(IndexScanDesc scan,
191
193
  Oid *orderByTypes,
192
194
  IndexOrderByDistance *distances,
193
195
  bool recheckOrderBy);
194
- extern bytea *index_opclass_options(Relation relation, AttrNumber attnum,
196
+ extern bytea *index_opclass_options(Relation indrel, AttrNumber attnum,
195
197
  Datum attoptions, bool validate);
196
198
 
197
199
 
@@ -2,7 +2,7 @@
2
2
  * gin.h
3
3
  * Public header file for Generalized Inverted Index access method.
4
4
  *
5
- * Copyright (c) 2006-2022, PostgreSQL Global Development Group
5
+ * Copyright (c) 2006-2023, PostgreSQL Global Development Group
6
6
  *
7
7
  * src/include/access/gin.h
8
8
  *--------------------------------------------------------------------------
@@ -57,13 +57,26 @@ typedef struct GinStatsData
57
57
  */
58
58
  typedef char GinTernaryValue;
59
59
 
60
+ StaticAssertDecl(sizeof(GinTernaryValue) == sizeof(bool),
61
+ "sizes of GinTernaryValue and bool are not equal");
62
+
60
63
  #define GIN_FALSE 0 /* item is not present / does not match */
61
64
  #define GIN_TRUE 1 /* item is present / matches */
62
65
  #define GIN_MAYBE 2 /* don't know if item is present / don't know
63
66
  * if matches */
64
67
 
65
- #define DatumGetGinTernaryValue(X) ((GinTernaryValue)(X))
66
- #define GinTernaryValueGetDatum(X) ((Datum)(X))
68
+ static inline GinTernaryValue
69
+ DatumGetGinTernaryValue(Datum X)
70
+ {
71
+ return (GinTernaryValue) X;
72
+ }
73
+
74
+ static inline Datum
75
+ GinTernaryValueGetDatum(GinTernaryValue X)
76
+ {
77
+ return (Datum) X;
78
+ }
79
+
67
80
  #define PG_RETURN_GIN_TERNARY_VALUE(x) return GinTernaryValueGetDatum(x)
68
81
 
69
82
  /* GUC parameters */
@@ -4,7 +4,7 @@
4
4
  * POSTGRES heap tuple 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/htup.h
@@ -4,7 +4,7 @@
4
4
  * POSTGRES heap tuple header 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/htup_details.h
@@ -19,6 +19,7 @@
19
19
  #include "access/tupdesc.h"
20
20
  #include "access/tupmacs.h"
21
21
  #include "storage/bufpage.h"
22
+ #include "varatt.h"
22
23
 
23
24
  /*
24
25
  * MaxTupleAttributeNumber limits the number of (user) columns in a tuple.
@@ -426,6 +427,9 @@ do { \
426
427
  (tup)->t_choice.t_heap.t_field3.t_xvac = (xid); \
427
428
  } while (0)
428
429
 
430
+ StaticAssertDecl(MaxOffsetNumber < SpecTokenOffsetNumber,
431
+ "invalid speculative token constant");
432
+
429
433
  #define HeapTupleHeaderIsSpeculative(tup) \
430
434
  ( \
431
435
  (ItemPointerGetOffsetNumberNoCheck(&(tup)->t_ctid) == SpecTokenOffsetNumber) \
@@ -699,7 +703,7 @@ extern void heap_fill_tuple(TupleDesc tupleDesc,
699
703
  uint16 *infomask, bits8 *bit);
700
704
  extern bool heap_attisnull(HeapTuple tup, int attnum, TupleDesc tupleDesc);
701
705
  extern Datum nocachegetattr(HeapTuple tup, int attnum,
702
- TupleDesc att);
706
+ TupleDesc tupleDesc);
703
707
  extern Datum heap_getsysattr(HeapTuple tup, int attnum, TupleDesc tupleDesc,
704
708
  bool *isnull);
705
709
  extern Datum getmissingattr(TupleDesc tupleDesc,
@@ -4,7 +4,7 @@
4
4
  * POSTGRES index tuple 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/itup.h
@@ -73,21 +73,38 @@ typedef IndexAttributeBitMapData * IndexAttributeBitMap;
73
73
  #define IndexTupleHasVarwidths(itup) ((((IndexTuple) (itup))->t_info & INDEX_VAR_MASK))
74
74
 
75
75
 
76
+ /* routines in indextuple.c */
77
+ extern IndexTuple index_form_tuple(TupleDesc tupleDescriptor,
78
+ Datum *values, bool *isnull);
79
+ extern IndexTuple index_form_tuple_context(TupleDesc tupleDescriptor,
80
+ Datum *values, bool *isnull,
81
+ MemoryContext context);
82
+ extern Datum nocache_index_getattr(IndexTuple tup, int attnum,
83
+ TupleDesc tupleDesc);
84
+ extern void index_deform_tuple(IndexTuple tup, TupleDesc tupleDescriptor,
85
+ Datum *values, bool *isnull);
86
+ extern void index_deform_tuple_internal(TupleDesc tupleDescriptor,
87
+ Datum *values, bool *isnull,
88
+ char *tp, bits8 *bp, int hasnulls);
89
+ extern IndexTuple CopyIndexTuple(IndexTuple source);
90
+ extern IndexTuple index_truncate_tuple(TupleDesc sourceDescriptor,
91
+ IndexTuple source, int leavenatts);
92
+
93
+
76
94
  /*
77
95
  * Takes an infomask as argument (primarily because this needs to be usable
78
96
  * at index_form_tuple time so enough space is allocated).
79
97
  */
80
- #define IndexInfoFindDataOffset(t_info) \
81
- ( \
82
- (!((t_info) & INDEX_NULL_MASK)) ? \
83
- ( \
84
- (Size)MAXALIGN(sizeof(IndexTupleData)) \
85
- ) \
86
- : \
87
- ( \
88
- (Size)MAXALIGN(sizeof(IndexTupleData) + sizeof(IndexAttributeBitMapData)) \
89
- ) \
90
- )
98
+ static inline Size
99
+ IndexInfoFindDataOffset(unsigned short t_info)
100
+ {
101
+ if (!(t_info & INDEX_NULL_MASK))
102
+ return MAXALIGN(sizeof(IndexTupleData));
103
+ else
104
+ return MAXALIGN(sizeof(IndexTupleData) + sizeof(IndexAttributeBitMapData));
105
+ }
106
+
107
+ #ifndef FRONTEND
91
108
 
92
109
  /* ----------------
93
110
  * index_getattr
@@ -97,34 +114,38 @@ typedef IndexAttributeBitMapData * IndexAttributeBitMap;
97
114
  *
98
115
  * ----------------
99
116
  */
100
- #define index_getattr(tup, attnum, tupleDesc, isnull) \
101
- ( \
102
- AssertMacro(PointerIsValid(isnull) && (attnum) > 0), \
103
- *(isnull) = false, \
104
- !IndexTupleHasNulls(tup) ? \
105
- ( \
106
- TupleDescAttr((tupleDesc), (attnum)-1)->attcacheoff >= 0 ? \
107
- ( \
108
- fetchatt(TupleDescAttr((tupleDesc), (attnum)-1), \
109
- (char *) (tup) + IndexInfoFindDataOffset((tup)->t_info) \
110
- + TupleDescAttr((tupleDesc), (attnum)-1)->attcacheoff) \
111
- ) \
112
- : \
113
- nocache_index_getattr((tup), (attnum), (tupleDesc)) \
114
- ) \
115
- : \
116
- ( \
117
- (att_isnull((attnum)-1, (char *)(tup) + sizeof(IndexTupleData))) ? \
118
- ( \
119
- *(isnull) = true, \
120
- (Datum)NULL \
121
- ) \
122
- : \
123
- ( \
124
- nocache_index_getattr((tup), (attnum), (tupleDesc)) \
125
- ) \
126
- ) \
127
- )
117
+ static inline Datum
118
+ index_getattr(IndexTuple tup, int attnum, TupleDesc tupleDesc, bool *isnull)
119
+ {
120
+ Assert(PointerIsValid(isnull));
121
+ Assert(attnum > 0);
122
+
123
+ *isnull = false;
124
+
125
+ if (!IndexTupleHasNulls(tup))
126
+ {
127
+ if (TupleDescAttr(tupleDesc, attnum - 1)->attcacheoff >= 0)
128
+ {
129
+ return fetchatt(TupleDescAttr(tupleDesc, attnum - 1),
130
+ (char *) tup + IndexInfoFindDataOffset(tup->t_info)
131
+ + TupleDescAttr(tupleDesc, attnum - 1)->attcacheoff);
132
+ }
133
+ else
134
+ return nocache_index_getattr(tup, attnum, tupleDesc);
135
+ }
136
+ else
137
+ {
138
+ if (att_isnull(attnum - 1, (bits8 *) tup + sizeof(IndexTupleData)))
139
+ {
140
+ *isnull = true;
141
+ return (Datum) NULL;
142
+ }
143
+ else
144
+ return nocache_index_getattr(tup, attnum, tupleDesc);
145
+ }
146
+ }
147
+
148
+ #endif
128
149
 
129
150
  /*
130
151
  * MaxIndexTuplesPerPage is an upper bound on the number of tuples that can
@@ -146,22 +167,4 @@ typedef IndexAttributeBitMapData * IndexAttributeBitMap;
146
167
  ((int) ((BLCKSZ - SizeOfPageHeaderData) / \
147
168
  (MAXALIGN(sizeof(IndexTupleData) + 1) + sizeof(ItemIdData))))
148
169
 
149
-
150
- /* routines in indextuple.c */
151
- extern IndexTuple index_form_tuple(TupleDesc tupleDescriptor,
152
- Datum *values, bool *isnull);
153
- extern IndexTuple index_form_tuple_context(TupleDesc tupleDescriptor,
154
- Datum *values, bool *isnull,
155
- MemoryContext context);
156
- extern Datum nocache_index_getattr(IndexTuple tup, int attnum,
157
- TupleDesc tupleDesc);
158
- extern void index_deform_tuple(IndexTuple tup, TupleDesc tupleDescriptor,
159
- Datum *values, bool *isnull);
160
- extern void index_deform_tuple_internal(TupleDesc tupleDescriptor,
161
- Datum *values, bool *isnull,
162
- char *tp, bits8 *bp, int hasnulls);
163
- extern IndexTuple CopyIndexTuple(IndexTuple source);
164
- extern IndexTuple index_truncate_tuple(TupleDesc sourceDescriptor,
165
- IndexTuple source, int leavenatts);
166
-
167
170
  #endif /* ITUP_H */
@@ -3,7 +3,7 @@
3
3
  * parallel.h
4
4
  * Infrastructure for launching parallel workers
5
5
  *
6
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * src/include/access/parallel.h
@@ -54,7 +54,7 @@ typedef struct ParallelWorkerContext
54
54
  shm_toc *toc;
55
55
  } ParallelWorkerContext;
56
56
 
57
- extern PGDLLIMPORT volatile bool ParallelMessagePending;
57
+ extern PGDLLIMPORT volatile sig_atomic_t ParallelMessagePending;
58
58
  extern PGDLLIMPORT int ParallelWorkerNumber;
59
59
  extern PGDLLIMPORT bool InitializingParallelWorker;
60
60
 
@@ -4,7 +4,7 @@
4
4
  *
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/printtup.h
@@ -4,7 +4,7 @@
4
4
  * Generic relation related routines.
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/relation.h
@@ -4,7 +4,7 @@
4
4
  * POSTGRES relation scan 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/relscan.h
@@ -6,7 +6,7 @@
6
6
  * by the PG_RMGR macro, which is not defined in this file; it can be
7
7
  * defined by the caller for special purposes.
8
8
  *
9
- * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
9
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
10
10
  * Portions Copyright (c) 1994, Regents of the University of California
11
11
  *
12
12
  * src/include/access/rmgrlist.h
@@ -24,7 +24,7 @@
24
24
  * Changes to this list possibly need an XLOG_PAGE_MAGIC bump.
25
25
  */
26
26
 
27
- /* symbol name, textual name, redo, desc, identify, startup, cleanup */
27
+ /* symbol name, textual name, redo, desc, identify, startup, cleanup, mask, decode */
28
28
  PG_RMGR(RM_XLOG_ID, "XLOG", xlog_redo, xlog_desc, xlog_identify, NULL, NULL, NULL, xlog_decode)
29
29
  PG_RMGR(RM_XACT_ID, "Transaction", xact_redo, xact_desc, xact_identify, NULL, NULL, NULL, xact_decode)
30
30
  PG_RMGR(RM_SMGR_ID, "Storage", smgr_redo, smgr_desc, smgr_identify, NULL, NULL, NULL, NULL)
@@ -4,7 +4,7 @@
4
4
  * POSTGRES scan direction 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/sdir.h
@@ -16,8 +16,10 @@
16
16
 
17
17
 
18
18
  /*
19
- * ScanDirection was an int8 for no apparent reason. I kept the original
20
- * values because I'm not sure if I'll break anything otherwise. -ay 2/95
19
+ * Defines the direction for scanning a table or an index. Scans are never
20
+ * invoked using NoMovementScanDirectionScans. For convenience, we use the
21
+ * values -1 and 1 for backward and forward scans. This allows us to perform
22
+ * a few mathematical tricks such as what is done in ScanDirectionCombine.
21
23
  */
22
24
  typedef enum ScanDirection
23
25
  {
@@ -26,6 +28,13 @@ typedef enum ScanDirection
26
28
  ForwardScanDirection = 1
27
29
  } ScanDirection;
28
30
 
31
+ /*
32
+ * Determine the net effect of two direction specifications.
33
+ * This relies on having ForwardScanDirection = +1, BackwardScanDirection = -1,
34
+ * and will probably not do what you want if applied to any other values.
35
+ */
36
+ #define ScanDirectionCombine(a, b) ((a) * (b))
37
+
29
38
  /*
30
39
  * ScanDirectionIsValid
31
40
  * True iff scan direction is valid.
@@ -4,7 +4,7 @@
4
4
  * POSTGRES scan key 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/skey.h
@@ -4,7 +4,7 @@
4
4
  * POSTGRES strategy number 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/stratnum.h
@@ -4,7 +4,7 @@
4
4
  * POSTGRES system attribute 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/sysattr.h
@@ -4,7 +4,7 @@
4
4
  * Generic routines for table related 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/table.h