pg_query 5.1.0 → 6.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (479) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +18 -0
  3. data/README.md +1 -1
  4. data/Rakefile +2 -2
  5. data/ext/pg_query/include/pg_query.h +4 -3
  6. data/ext/pg_query/include/pg_query_enum_defs.c +424 -154
  7. data/ext/pg_query/include/pg_query_fingerprint_conds.c +68 -4
  8. data/ext/pg_query/include/pg_query_fingerprint_defs.c +2952 -1845
  9. data/ext/pg_query/include/pg_query_outfuncs_conds.c +51 -3
  10. data/ext/pg_query/include/pg_query_outfuncs_defs.c +210 -23
  11. data/ext/pg_query/include/pg_query_readfuncs_conds.c +17 -1
  12. data/ext/pg_query/include/pg_query_readfuncs_defs.c +271 -52
  13. data/ext/pg_query/include/postgres/access/amapi.h +10 -3
  14. data/ext/pg_query/include/postgres/access/attmap.h +1 -1
  15. data/ext/pg_query/include/postgres/access/attnum.h +1 -1
  16. data/ext/pg_query/include/postgres/access/brin_internal.h +116 -0
  17. data/ext/pg_query/include/postgres/access/brin_tuple.h +112 -0
  18. data/ext/pg_query/include/postgres/access/clog.h +2 -3
  19. data/ext/pg_query/include/postgres/access/commit_ts.h +2 -3
  20. data/ext/pg_query/include/postgres/access/detoast.h +1 -1
  21. data/ext/pg_query/include/postgres/access/genam.h +8 -4
  22. data/ext/pg_query/include/postgres/access/gin.h +1 -1
  23. data/ext/pg_query/include/postgres/access/htup.h +1 -1
  24. data/ext/pg_query/include/postgres/access/htup_details.h +11 -11
  25. data/ext/pg_query/include/postgres/access/itup.h +3 -3
  26. data/ext/pg_query/include/postgres/access/parallel.h +1 -2
  27. data/ext/pg_query/include/postgres/access/printtup.h +1 -1
  28. data/ext/pg_query/include/postgres/access/relation.h +1 -1
  29. data/ext/pg_query/include/postgres/access/relscan.h +1 -1
  30. data/ext/pg_query/include/postgres/access/rmgrlist.h +1 -1
  31. data/ext/pg_query/include/postgres/access/sdir.h +1 -1
  32. data/ext/pg_query/include/postgres/access/skey.h +1 -1
  33. data/ext/pg_query/include/postgres/access/slru.h +221 -0
  34. data/ext/pg_query/include/postgres/access/stratnum.h +1 -1
  35. data/ext/pg_query/include/postgres/access/sysattr.h +1 -1
  36. data/ext/pg_query/include/postgres/access/table.h +1 -1
  37. data/ext/pg_query/include/postgres/access/tableam.h +33 -24
  38. data/ext/pg_query/include/postgres/access/tidstore.h +50 -0
  39. data/ext/pg_query/include/postgres/access/toast_compression.h +2 -2
  40. data/ext/pg_query/include/postgres/access/transam.h +7 -7
  41. data/ext/pg_query/include/postgres/access/tsmapi.h +1 -1
  42. data/ext/pg_query/include/postgres/access/tupconvert.h +1 -1
  43. data/ext/pg_query/include/postgres/access/tupdesc.h +5 -5
  44. data/ext/pg_query/include/postgres/access/tupmacs.h +1 -1
  45. data/ext/pg_query/include/postgres/access/twophase.h +2 -2
  46. data/ext/pg_query/include/postgres/access/xact.h +5 -5
  47. data/ext/pg_query/include/postgres/access/xlog.h +20 -12
  48. data/ext/pg_query/include/postgres/access/xlog_internal.h +4 -3
  49. data/ext/pg_query/include/postgres/access/xlogbackup.h +3 -1
  50. data/ext/pg_query/include/postgres/access/xlogdefs.h +5 -5
  51. data/ext/pg_query/include/postgres/access/xlogprefetcher.h +2 -2
  52. data/ext/pg_query/include/postgres/access/xlogreader.h +2 -2
  53. data/ext/pg_query/include/postgres/access/xlogrecord.h +3 -3
  54. data/ext/pg_query/include/postgres/access/xlogrecovery.h +4 -4
  55. data/ext/pg_query/include/postgres/archive/archive_module.h +9 -1
  56. data/ext/pg_query/include/postgres/c.h +31 -36
  57. data/ext/pg_query/include/postgres/catalog/catalog.h +3 -1
  58. data/ext/pg_query/include/postgres/catalog/catversion.h +2 -2
  59. data/ext/pg_query/include/postgres/catalog/dependency.h +17 -59
  60. data/ext/pg_query/include/postgres/catalog/genbki.h +12 -6
  61. data/ext/pg_query/include/postgres/catalog/index.h +22 -18
  62. data/ext/pg_query/include/postgres/catalog/indexing.h +1 -1
  63. data/ext/pg_query/include/postgres/catalog/namespace.h +18 -19
  64. data/ext/pg_query/include/postgres/catalog/objectaccess.h +2 -2
  65. data/ext/pg_query/include/postgres/catalog/objectaddress.h +1 -1
  66. data/ext/pg_query/include/postgres/catalog/pg_aggregate.h +4 -2
  67. data/ext/pg_query/include/postgres/catalog/pg_aggregate_d.h +1 -1
  68. data/ext/pg_query/include/postgres/catalog/pg_am.h +6 -3
  69. data/ext/pg_query/include/postgres/catalog/pg_am_d.h +1 -1
  70. data/ext/pg_query/include/postgres/catalog/pg_attribute.h +31 -14
  71. data/ext/pg_query/include/postgres/catalog/pg_attribute_d.h +3 -3
  72. data/ext/pg_query/include/postgres/catalog/pg_authid.h +6 -3
  73. data/ext/pg_query/include/postgres/catalog/pg_authid_d.h +2 -1
  74. data/ext/pg_query/include/postgres/catalog/pg_class.h +10 -5
  75. data/ext/pg_query/include/postgres/catalog/pg_class_d.h +4 -2
  76. data/ext/pg_query/include/postgres/catalog/pg_collation.h +11 -5
  77. data/ext/pg_query/include/postgres/catalog/pg_collation_d.h +5 -2
  78. data/ext/pg_query/include/postgres/catalog/pg_constraint.h +15 -10
  79. data/ext/pg_query/include/postgres/catalog/pg_constraint_d.h +2 -1
  80. data/ext/pg_query/include/postgres/catalog/pg_control.h +5 -3
  81. data/ext/pg_query/include/postgres/catalog/pg_conversion.h +8 -4
  82. data/ext/pg_query/include/postgres/catalog/pg_conversion_d.h +1 -1
  83. data/ext/pg_query/include/postgres/catalog/pg_database.h +9 -4
  84. data/ext/pg_query/include/postgres/catalog/pg_database_d.h +13 -12
  85. data/ext/pg_query/include/postgres/catalog/pg_depend.h +3 -3
  86. data/ext/pg_query/include/postgres/catalog/pg_depend_d.h +1 -1
  87. data/ext/pg_query/include/postgres/catalog/pg_event_trigger.h +6 -3
  88. data/ext/pg_query/include/postgres/catalog/pg_event_trigger_d.h +1 -1
  89. data/ext/pg_query/include/postgres/catalog/pg_index.h +5 -3
  90. data/ext/pg_query/include/postgres/catalog/pg_index_d.h +1 -1
  91. data/ext/pg_query/include/postgres/catalog/pg_language.h +6 -3
  92. data/ext/pg_query/include/postgres/catalog/pg_language_d.h +1 -1
  93. data/ext/pg_query/include/postgres/catalog/pg_namespace.h +6 -3
  94. data/ext/pg_query/include/postgres/catalog/pg_namespace_d.h +1 -1
  95. data/ext/pg_query/include/postgres/catalog/pg_opclass.h +6 -3
  96. data/ext/pg_query/include/postgres/catalog/pg_opclass_d.h +1 -1
  97. data/ext/pg_query/include/postgres/catalog/pg_operator.h +20 -3
  98. data/ext/pg_query/include/postgres/catalog/pg_operator_d.h +1 -1
  99. data/ext/pg_query/include/postgres/catalog/pg_opfamily.h +6 -3
  100. data/ext/pg_query/include/postgres/catalog/pg_opfamily_d.h +1 -1
  101. data/ext/pg_query/include/postgres/catalog/pg_partitioned_table.h +4 -2
  102. data/ext/pg_query/include/postgres/catalog/pg_partitioned_table_d.h +1 -1
  103. data/ext/pg_query/include/postgres/catalog/pg_proc.h +6 -3
  104. data/ext/pg_query/include/postgres/catalog/pg_proc_d.h +1 -1
  105. data/ext/pg_query/include/postgres/catalog/pg_publication.h +6 -3
  106. data/ext/pg_query/include/postgres/catalog/pg_publication_d.h +1 -1
  107. data/ext/pg_query/include/postgres/catalog/pg_replication_origin.h +6 -3
  108. data/ext/pg_query/include/postgres/catalog/pg_replication_origin_d.h +1 -1
  109. data/ext/pg_query/include/postgres/catalog/pg_statistic.h +10 -4
  110. data/ext/pg_query/include/postgres/catalog/pg_statistic_d.h +7 -3
  111. data/ext/pg_query/include/postgres/catalog/pg_statistic_ext.h +10 -7
  112. data/ext/pg_query/include/postgres/catalog/pg_statistic_ext_d.h +3 -3
  113. data/ext/pg_query/include/postgres/catalog/pg_transform.h +6 -3
  114. data/ext/pg_query/include/postgres/catalog/pg_transform_d.h +1 -1
  115. data/ext/pg_query/include/postgres/catalog/pg_trigger.h +4 -4
  116. data/ext/pg_query/include/postgres/catalog/pg_trigger_d.h +1 -1
  117. data/ext/pg_query/include/postgres/catalog/pg_ts_config.h +6 -3
  118. data/ext/pg_query/include/postgres/catalog/pg_ts_config_d.h +1 -1
  119. data/ext/pg_query/include/postgres/catalog/pg_ts_dict.h +6 -3
  120. data/ext/pg_query/include/postgres/catalog/pg_ts_dict_d.h +1 -1
  121. data/ext/pg_query/include/postgres/catalog/pg_ts_parser.h +6 -3
  122. data/ext/pg_query/include/postgres/catalog/pg_ts_parser_d.h +1 -1
  123. data/ext/pg_query/include/postgres/catalog/pg_ts_template.h +6 -3
  124. data/ext/pg_query/include/postgres/catalog/pg_ts_template_d.h +1 -1
  125. data/ext/pg_query/include/postgres/catalog/pg_type.h +6 -3
  126. data/ext/pg_query/include/postgres/catalog/pg_type_d.h +1 -1
  127. data/ext/pg_query/include/postgres/catalog/storage.h +1 -1
  128. data/ext/pg_query/include/postgres/catalog/syscache_ids.h +104 -0
  129. data/ext/pg_query/include/postgres/commands/async.h +2 -6
  130. data/ext/pg_query/include/postgres/commands/dbcommands.h +1 -1
  131. data/ext/pg_query/include/postgres/commands/defrem.h +6 -6
  132. data/ext/pg_query/include/postgres/commands/event_trigger.h +5 -2
  133. data/ext/pg_query/include/postgres/commands/explain.h +19 -3
  134. data/ext/pg_query/include/postgres/commands/prepare.h +1 -1
  135. data/ext/pg_query/include/postgres/commands/tablespace.h +1 -1
  136. data/ext/pg_query/include/postgres/commands/trigger.h +1 -1
  137. data/ext/pg_query/include/postgres/commands/vacuum.h +28 -26
  138. data/ext/pg_query/include/postgres/common/cryptohash.h +2 -2
  139. data/ext/pg_query/include/postgres/common/file_perm.h +1 -1
  140. data/ext/pg_query/include/postgres/common/file_utils.h +65 -0
  141. data/ext/pg_query/include/postgres/common/hashfn.h +16 -1
  142. data/ext/pg_query/include/postgres/common/hashfn_unstable.h +453 -0
  143. data/ext/pg_query/include/postgres/common/int.h +79 -4
  144. data/ext/pg_query/include/postgres/common/keywords.h +1 -1
  145. data/ext/pg_query/include/postgres/common/kwlookup.h +1 -1
  146. data/ext/pg_query/include/postgres/common/pg_prng.h +2 -1
  147. data/ext/pg_query/include/postgres/common/relpath.h +4 -4
  148. data/ext/pg_query/include/postgres/common/scram-common.h +1 -1
  149. data/ext/pg_query/include/postgres/common/sha2.h +1 -1
  150. data/ext/pg_query/include/postgres/common/string.h +1 -1
  151. data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +2 -3
  152. data/ext/pg_query/include/postgres/copyfuncs.funcs.c +278 -30
  153. data/ext/pg_query/include/postgres/copyfuncs.switch.c +55 -4
  154. data/ext/pg_query/include/postgres/datatype/timestamp.h +28 -2
  155. data/ext/pg_query/include/postgres/equalfuncs.funcs.c +239 -26
  156. data/ext/pg_query/include/postgres/equalfuncs.switch.c +55 -4
  157. data/ext/pg_query/include/postgres/executor/execdesc.h +1 -1
  158. data/ext/pg_query/include/postgres/executor/executor.h +6 -5
  159. data/ext/pg_query/include/postgres/executor/functions.h +2 -1
  160. data/ext/pg_query/include/postgres/executor/instrument.h +5 -3
  161. data/ext/pg_query/include/postgres/executor/spi.h +2 -8
  162. data/ext/pg_query/include/postgres/executor/tablefunc.h +1 -1
  163. data/ext/pg_query/include/postgres/executor/tuptable.h +31 -2
  164. data/ext/pg_query/include/postgres/fmgr.h +2 -2
  165. data/ext/pg_query/include/postgres/foreign/fdwapi.h +1 -1
  166. data/ext/pg_query/include/postgres/funcapi.h +2 -2
  167. data/ext/pg_query/include/postgres/gram.h +871 -830
  168. data/ext/pg_query/include/postgres/gramparse.h +1 -1
  169. data/ext/pg_query/include/postgres/jit/jit.h +4 -3
  170. data/ext/pg_query/include/postgres/kwlist_d.h +511 -466
  171. data/ext/pg_query/include/postgres/lib/dshash.h +25 -10
  172. data/ext/pg_query/include/postgres/lib/ilist.h +1 -1
  173. data/ext/pg_query/include/postgres/lib/pairingheap.h +1 -1
  174. data/ext/pg_query/include/postgres/lib/simplehash.h +40 -18
  175. data/ext/pg_query/include/postgres/lib/sort_template.h +14 -1
  176. data/ext/pg_query/include/postgres/lib/stringinfo.h +93 -11
  177. data/ext/pg_query/include/postgres/libpq/auth.h +1 -1
  178. data/ext/pg_query/include/postgres/libpq/crypt.h +2 -2
  179. data/ext/pg_query/include/postgres/libpq/hba.h +4 -4
  180. data/ext/pg_query/include/postgres/libpq/libpq-be.h +29 -25
  181. data/ext/pg_query/include/postgres/libpq/libpq.h +6 -7
  182. data/ext/pg_query/include/postgres/libpq/pqcomm.h +26 -20
  183. data/ext/pg_query/include/postgres/libpq/pqformat.h +2 -3
  184. data/ext/pg_query/include/postgres/libpq/pqsignal.h +1 -1
  185. data/ext/pg_query/include/postgres/libpq/protocol.h +89 -0
  186. data/ext/pg_query/include/postgres/libpq/sasl.h +1 -1
  187. data/ext/pg_query/include/postgres/libpq/scram.h +1 -1
  188. data/ext/pg_query/include/postgres/mb/pg_wchar.h +102 -82
  189. data/ext/pg_query/include/postgres/mb/stringinfo_mb.h +1 -1
  190. data/ext/pg_query/include/postgres/miscadmin.h +64 -52
  191. data/ext/pg_query/include/postgres/nodes/bitmapset.h +17 -3
  192. data/ext/pg_query/include/postgres/nodes/execnodes.h +109 -25
  193. data/ext/pg_query/include/postgres/nodes/extensible.h +1 -1
  194. data/ext/pg_query/include/postgres/nodes/lockoptions.h +4 -4
  195. data/ext/pg_query/include/postgres/nodes/makefuncs.h +8 -2
  196. data/ext/pg_query/include/postgres/nodes/memnodes.h +43 -4
  197. data/ext/pg_query/include/postgres/nodes/miscnodes.h +1 -1
  198. data/ext/pg_query/include/postgres/nodes/nodeFuncs.h +1 -1
  199. data/ext/pg_query/include/postgres/nodes/nodes.h +30 -41
  200. data/ext/pg_query/include/postgres/nodes/nodetags.h +464 -444
  201. data/ext/pg_query/include/postgres/nodes/params.h +1 -1
  202. data/ext/pg_query/include/postgres/nodes/parsenodes.h +358 -175
  203. data/ext/pg_query/include/postgres/nodes/pathnodes.h +60 -9
  204. data/ext/pg_query/include/postgres/nodes/pg_list.h +62 -11
  205. data/ext/pg_query/include/postgres/nodes/plannodes.h +11 -10
  206. data/ext/pg_query/include/postgres/nodes/primnodes.h +344 -50
  207. data/ext/pg_query/include/postgres/nodes/print.h +1 -1
  208. data/ext/pg_query/include/postgres/nodes/queryjumble.h +2 -2
  209. data/ext/pg_query/include/postgres/nodes/replnodes.h +23 -2
  210. data/ext/pg_query/include/postgres/nodes/supportnodes.h +1 -1
  211. data/ext/pg_query/include/postgres/nodes/tidbitmap.h +1 -1
  212. data/ext/pg_query/include/postgres/nodes/value.h +1 -1
  213. data/ext/pg_query/include/postgres/optimizer/cost.h +5 -4
  214. data/ext/pg_query/include/postgres/optimizer/geqo.h +1 -1
  215. data/ext/pg_query/include/postgres/optimizer/geqo_gene.h +1 -1
  216. data/ext/pg_query/include/postgres/optimizer/optimizer.h +5 -2
  217. data/ext/pg_query/include/postgres/optimizer/paths.h +13 -8
  218. data/ext/pg_query/include/postgres/optimizer/planmain.h +7 -1
  219. data/ext/pg_query/include/postgres/parser/analyze.h +3 -1
  220. data/ext/pg_query/include/postgres/parser/kwlist.h +22 -2
  221. data/ext/pg_query/include/postgres/parser/parse_agg.h +1 -1
  222. data/ext/pg_query/include/postgres/parser/parse_coerce.h +2 -2
  223. data/ext/pg_query/include/postgres/parser/parse_expr.h +1 -1
  224. data/ext/pg_query/include/postgres/parser/parse_func.h +2 -2
  225. data/ext/pg_query/include/postgres/parser/parse_node.h +3 -2
  226. data/ext/pg_query/include/postgres/parser/parse_oper.h +4 -1
  227. data/ext/pg_query/include/postgres/parser/parse_relation.h +1 -1
  228. data/ext/pg_query/include/postgres/parser/parse_type.h +2 -2
  229. data/ext/pg_query/include/postgres/parser/parser.h +3 -3
  230. data/ext/pg_query/include/postgres/parser/parsetree.h +1 -1
  231. data/ext/pg_query/include/postgres/parser/scanner.h +1 -1
  232. data/ext/pg_query/include/postgres/parser/scansup.h +1 -1
  233. data/ext/pg_query/include/postgres/partitioning/partdefs.h +1 -1
  234. data/ext/pg_query/include/postgres/pg_config.h +34 -34
  235. data/ext/pg_query/include/postgres/pg_config_manual.h +21 -8
  236. data/ext/pg_query/include/postgres/pg_getopt.h +1 -1
  237. data/ext/pg_query/include/postgres/pg_trace.h +1 -1
  238. data/ext/pg_query/include/postgres/pgstat.h +13 -11
  239. data/ext/pg_query/include/postgres/pgtime.h +1 -1
  240. data/ext/pg_query/include/postgres/pl_reserved_kwlist.h +1 -1
  241. data/ext/pg_query/include/postgres/pl_reserved_kwlist_d.h +1 -1
  242. data/ext/pg_query/include/postgres/pl_unreserved_kwlist.h +1 -1
  243. data/ext/pg_query/include/postgres/pl_unreserved_kwlist_d.h +1 -1
  244. data/ext/pg_query/include/postgres/plerrcodes.h +4 -4
  245. data/ext/pg_query/include/postgres/plpgsql.h +15 -13
  246. data/ext/pg_query/include/postgres/port/atomics/arch-arm.h +1 -1
  247. data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +1 -1
  248. data/ext/pg_query/include/postgres/port/atomics/arch-ppc.h +3 -1
  249. data/ext/pg_query/include/postgres/port/atomics/arch-x86.h +3 -1
  250. data/ext/pg_query/include/postgres/port/atomics/fallback.h +1 -1
  251. data/ext/pg_query/include/postgres/port/atomics/generic-gcc.h +38 -1
  252. data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +19 -1
  253. data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +16 -1
  254. data/ext/pg_query/include/postgres/port/atomics/generic.h +38 -2
  255. data/ext/pg_query/include/postgres/port/atomics.h +93 -6
  256. data/ext/pg_query/include/postgres/port/pg_bitutils.h +91 -9
  257. data/ext/pg_query/include/postgres/port/pg_bswap.h +1 -1
  258. data/ext/pg_query/include/postgres/port/pg_crc32c.h +10 -1
  259. data/ext/pg_query/include/postgres/port/pg_iovec.h +117 -0
  260. data/ext/pg_query/include/postgres/port/simd.h +48 -1
  261. data/ext/pg_query/include/postgres/port/win32/sys/socket.h +8 -0
  262. data/ext/pg_query/include/postgres/port/win32_port.h +1 -11
  263. data/ext/pg_query/include/postgres/port.h +7 -3
  264. data/ext/pg_query/include/postgres/portability/instr_time.h +1 -1
  265. data/ext/pg_query/include/postgres/postgres.h +1 -1
  266. data/ext/pg_query/include/postgres/postmaster/autovacuum.h +5 -16
  267. data/ext/pg_query/include/postgres/postmaster/bgworker.h +8 -6
  268. data/ext/pg_query/include/postgres/postmaster/bgworker_internals.h +3 -7
  269. data/ext/pg_query/include/postgres/postmaster/bgwriter.h +3 -3
  270. data/ext/pg_query/include/postgres/postmaster/interrupt.h +1 -1
  271. data/ext/pg_query/include/postgres/postmaster/pgarch.h +2 -2
  272. data/ext/pg_query/include/postgres/postmaster/postmaster.h +25 -5
  273. data/ext/pg_query/include/postgres/postmaster/startup.h +2 -2
  274. data/ext/pg_query/include/postgres/postmaster/syslogger.h +2 -4
  275. data/ext/pg_query/include/postgres/postmaster/walsummarizer.h +35 -0
  276. data/ext/pg_query/include/postgres/postmaster/walwriter.h +2 -2
  277. data/ext/pg_query/include/postgres/regex/regex.h +92 -9
  278. data/ext/pg_query/include/postgres/replication/logicallauncher.h +1 -1
  279. data/ext/pg_query/include/postgres/replication/logicalproto.h +2 -2
  280. data/ext/pg_query/include/postgres/replication/logicalworker.h +2 -1
  281. data/ext/pg_query/include/postgres/replication/origin.h +1 -1
  282. data/ext/pg_query/include/postgres/replication/reorderbuffer.h +18 -28
  283. data/ext/pg_query/include/postgres/replication/slot.h +41 -5
  284. data/ext/pg_query/include/postgres/replication/slotsync.h +38 -0
  285. data/ext/pg_query/include/postgres/replication/syncrep.h +1 -1
  286. data/ext/pg_query/include/postgres/replication/walreceiver.h +37 -11
  287. data/ext/pg_query/include/postgres/replication/walsender.h +5 -3
  288. data/ext/pg_query/include/postgres/rewrite/prs2lock.h +1 -1
  289. data/ext/pg_query/include/postgres/rewrite/rewriteHandler.h +7 -1
  290. data/ext/pg_query/include/postgres/rewrite/rewriteManip.h +2 -2
  291. data/ext/pg_query/include/postgres/rewrite/rewriteSupport.h +1 -1
  292. data/ext/pg_query/include/postgres/storage/block.h +1 -1
  293. data/ext/pg_query/include/postgres/storage/buf.h +1 -1
  294. data/ext/pg_query/include/postgres/storage/bufmgr.h +59 -41
  295. data/ext/pg_query/include/postgres/storage/bufpage.h +1 -1
  296. data/ext/pg_query/include/postgres/storage/condition_variable.h +1 -1
  297. data/ext/pg_query/include/postgres/storage/dsm.h +1 -1
  298. data/ext/pg_query/include/postgres/storage/dsm_impl.h +2 -2
  299. data/ext/pg_query/include/postgres/storage/fd.h +30 -13
  300. data/ext/pg_query/include/postgres/storage/fileset.h +1 -1
  301. data/ext/pg_query/include/postgres/storage/ipc.h +4 -1
  302. data/ext/pg_query/include/postgres/storage/item.h +1 -1
  303. data/ext/pg_query/include/postgres/storage/itemid.h +1 -1
  304. data/ext/pg_query/include/postgres/storage/itemptr.h +1 -1
  305. data/ext/pg_query/include/postgres/storage/large_object.h +1 -1
  306. data/ext/pg_query/include/postgres/storage/latch.h +4 -2
  307. data/ext/pg_query/include/postgres/storage/lmgr.h +8 -2
  308. data/ext/pg_query/include/postgres/storage/lock.h +19 -19
  309. data/ext/pg_query/include/postgres/storage/lockdefs.h +1 -1
  310. data/ext/pg_query/include/postgres/storage/lwlock.h +17 -9
  311. data/ext/pg_query/include/postgres/storage/lwlocknames.h +7 -10
  312. data/ext/pg_query/include/postgres/storage/off.h +1 -1
  313. data/ext/pg_query/include/postgres/storage/pg_sema.h +1 -1
  314. data/ext/pg_query/include/postgres/storage/pg_shmem.h +5 -4
  315. data/ext/pg_query/include/postgres/storage/pmsignal.h +2 -2
  316. data/ext/pg_query/include/postgres/storage/predicate.h +1 -5
  317. data/ext/pg_query/include/postgres/storage/proc.h +48 -23
  318. data/ext/pg_query/include/postgres/storage/procarray.h +5 -1
  319. data/ext/pg_query/include/postgres/storage/proclist_types.h +11 -9
  320. data/ext/pg_query/include/postgres/storage/procnumber.h +43 -0
  321. data/ext/pg_query/include/postgres/storage/procsignal.h +8 -6
  322. data/ext/pg_query/include/postgres/storage/read_stream.h +65 -0
  323. data/ext/pg_query/include/postgres/storage/relfilelocator.h +16 -15
  324. data/ext/pg_query/include/postgres/storage/s_lock.h +7 -27
  325. data/ext/pg_query/include/postgres/storage/sharedfileset.h +1 -1
  326. data/ext/pg_query/include/postgres/storage/shm_mq.h +2 -2
  327. data/ext/pg_query/include/postgres/storage/shm_toc.h +1 -1
  328. data/ext/pg_query/include/postgres/storage/shmem.h +1 -1
  329. data/ext/pg_query/include/postgres/storage/sinval.h +3 -3
  330. data/ext/pg_query/include/postgres/storage/smgr.h +41 -27
  331. data/ext/pg_query/include/postgres/storage/spin.h +1 -1
  332. data/ext/pg_query/include/postgres/storage/standby.h +13 -3
  333. data/ext/pg_query/include/postgres/storage/standbydefs.h +2 -2
  334. data/ext/pg_query/include/postgres/storage/sync.h +4 -4
  335. data/ext/pg_query/include/postgres/tcop/cmdtag.h +1 -2
  336. data/ext/pg_query/include/postgres/tcop/cmdtaglist.h +3 -2
  337. data/ext/pg_query/include/postgres/tcop/deparse_utility.h +2 -2
  338. data/ext/pg_query/include/postgres/tcop/dest.h +3 -2
  339. data/ext/pg_query/include/postgres/tcop/fastpath.h +1 -1
  340. data/ext/pg_query/include/postgres/tcop/pquery.h +1 -1
  341. data/ext/pg_query/include/postgres/tcop/tcopprot.h +9 -5
  342. data/ext/pg_query/include/postgres/tcop/utility.h +2 -2
  343. data/ext/pg_query/include/postgres/tsearch/ts_cache.h +1 -1
  344. data/ext/pg_query/include/postgres/utils/acl.h +19 -7
  345. data/ext/pg_query/include/postgres/utils/aclchk_internal.h +1 -1
  346. data/ext/pg_query/include/postgres/utils/array.h +1 -2
  347. data/ext/pg_query/include/postgres/utils/ascii.h +84 -0
  348. data/ext/pg_query/include/postgres/utils/backend_progress.h +3 -2
  349. data/ext/pg_query/include/postgres/utils/backend_status.h +8 -10
  350. data/ext/pg_query/include/postgres/utils/builtins.h +4 -1
  351. data/ext/pg_query/include/postgres/utils/bytea.h +2 -2
  352. data/ext/pg_query/include/postgres/utils/catcache.h +5 -6
  353. data/ext/pg_query/include/postgres/utils/date.h +1 -1
  354. data/ext/pg_query/include/postgres/utils/datetime.h +4 -1
  355. data/ext/pg_query/include/postgres/utils/datum.h +1 -1
  356. data/ext/pg_query/include/postgres/utils/dsa.h +44 -5
  357. data/ext/pg_query/include/postgres/utils/elog.h +3 -8
  358. data/ext/pg_query/include/postgres/utils/errcodes.h +1 -3
  359. data/ext/pg_query/include/postgres/utils/expandeddatum.h +1 -1
  360. data/ext/pg_query/include/postgres/utils/expandedrecord.h +1 -1
  361. data/ext/pg_query/include/postgres/utils/float.h +1 -1
  362. data/ext/pg_query/include/postgres/utils/fmgroids.h +49 -16
  363. data/ext/pg_query/include/postgres/utils/fmgrprotos.h +47 -14
  364. data/ext/pg_query/include/postgres/utils/fmgrtab.h +1 -1
  365. data/ext/pg_query/include/postgres/utils/guc.h +20 -6
  366. data/ext/pg_query/include/postgres/utils/guc_hooks.h +23 -2
  367. data/ext/pg_query/include/postgres/utils/guc_tables.h +6 -5
  368. data/ext/pg_query/include/postgres/utils/hsearch.h +2 -2
  369. data/ext/pg_query/include/postgres/utils/injection_point.h +44 -0
  370. data/ext/pg_query/include/postgres/utils/inval.h +1 -1
  371. data/ext/pg_query/include/postgres/utils/logtape.h +5 -5
  372. data/ext/pg_query/include/postgres/utils/lsyscache.h +6 -3
  373. data/ext/pg_query/include/postgres/utils/memdebug.h +1 -1
  374. data/ext/pg_query/include/postgres/utils/memutils.h +12 -5
  375. data/ext/pg_query/include/postgres/utils/memutils_internal.h +53 -13
  376. data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +25 -9
  377. data/ext/pg_query/include/postgres/utils/numeric.h +6 -1
  378. data/ext/pg_query/include/postgres/utils/palloc.h +1 -15
  379. data/ext/pg_query/include/postgres/utils/partcache.h +1 -1
  380. data/ext/pg_query/include/postgres/utils/pg_locale.h +8 -7
  381. data/ext/pg_query/include/postgres/utils/pgstat_internal.h +11 -17
  382. data/ext/pg_query/include/postgres/utils/plancache.h +5 -3
  383. data/ext/pg_query/include/postgres/utils/portal.h +9 -9
  384. data/ext/pg_query/include/postgres/utils/queryenvironment.h +2 -2
  385. data/ext/pg_query/include/postgres/utils/regproc.h +1 -1
  386. data/ext/pg_query/include/postgres/utils/rel.h +14 -15
  387. data/ext/pg_query/include/postgres/utils/relcache.h +2 -5
  388. data/ext/pg_query/include/postgres/utils/reltrigger.h +1 -1
  389. data/ext/pg_query/include/postgres/utils/resowner.h +90 -9
  390. data/ext/pg_query/include/postgres/utils/ruleutils.h +1 -1
  391. data/ext/pg_query/include/postgres/utils/sharedtuplestore.h +1 -1
  392. data/ext/pg_query/include/postgres/utils/snapmgr.h +1 -52
  393. data/ext/pg_query/include/postgres/utils/snapshot.h +2 -2
  394. data/ext/pg_query/include/postgres/utils/sortsupport.h +1 -1
  395. data/ext/pg_query/include/postgres/utils/syscache.h +2 -98
  396. data/ext/pg_query/include/postgres/utils/timeout.h +3 -2
  397. data/ext/pg_query/include/postgres/utils/timestamp.h +1 -1
  398. data/ext/pg_query/include/postgres/utils/tuplesort.h +36 -9
  399. data/ext/pg_query/include/postgres/utils/tuplestore.h +2 -5
  400. data/ext/pg_query/include/postgres/utils/typcache.h +2 -1
  401. data/ext/pg_query/include/postgres/utils/varlena.h +1 -1
  402. data/ext/pg_query/include/postgres/utils/wait_event.h +28 -214
  403. data/ext/pg_query/include/postgres/utils/wait_event_types.h +218 -0
  404. data/ext/pg_query/include/postgres/utils/xml.h +4 -4
  405. data/ext/pg_query/include/postgres/varatt.h +1 -1
  406. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +1546 -792
  407. data/ext/pg_query/include/protobuf/pg_query.pb.h +58365 -46595
  408. data/ext/pg_query/pg_query.pb-c.c +6598 -3739
  409. data/ext/pg_query/pg_query_normalize.c +42 -1
  410. data/ext/pg_query/pg_query_outfuncs_json.c +3 -1
  411. data/ext/pg_query/pg_query_parse_plpgsql.c +12 -13
  412. data/ext/pg_query/pg_query_readfuncs_protobuf.c +2 -2
  413. data/ext/pg_query/pg_query_ruby_freebsd.sym +0 -1
  414. data/ext/pg_query/pg_query_scan.c +1 -1
  415. data/ext/pg_query/postgres_deparse.c +409 -21
  416. data/ext/pg_query/src_backend_catalog_namespace.c +241 -66
  417. data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -3
  418. data/ext/pg_query/src_backend_commands_define.c +2 -3
  419. data/ext/pg_query/src_backend_nodes_bitmapset.c +137 -94
  420. data/ext/pg_query/src_backend_nodes_copyfuncs.c +1 -1
  421. data/ext/pg_query/src_backend_nodes_equalfuncs.c +1 -1
  422. data/ext/pg_query/src_backend_nodes_extensible.c +1 -1
  423. data/ext/pg_query/src_backend_nodes_list.c +3 -7
  424. data/ext/pg_query/src_backend_nodes_makefuncs.c +59 -20
  425. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +109 -2
  426. data/ext/pg_query/src_backend_nodes_value.c +1 -1
  427. data/ext/pg_query/src_backend_parser_gram.c +34490 -32135
  428. data/ext/pg_query/src_backend_parser_parser.c +8 -8
  429. data/ext/pg_query/src_backend_parser_scan.c +5637 -3028
  430. data/ext/pg_query/src_backend_parser_scansup.c +2 -1
  431. data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
  432. data/ext/pg_query/src_backend_tcop_postgres.c +34 -10
  433. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +2 -2
  434. data/ext/pg_query/src_backend_utils_adt_datum.c +8 -6
  435. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  436. data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
  437. data/ext/pg_query/src_backend_utils_adt_numutils.c +4 -5
  438. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +101 -28
  439. data/ext/pg_query/src_backend_utils_error_assert.c +1 -1
  440. data/ext/pg_query/src_backend_utils_error_elog.c +47 -42
  441. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +4 -2
  442. data/ext/pg_query/src_backend_utils_init_globals.c +15 -3
  443. data/ext/pg_query/src_backend_utils_mb_mbutils.c +11 -18
  444. data/ext/pg_query/src_backend_utils_misc_guc_tables.c +16 -6
  445. data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +8 -5
  446. data/ext/pg_query/src_backend_utils_mmgr_aset.c +308 -238
  447. data/ext/pg_query/src_backend_utils_mmgr_bump.c +728 -0
  448. data/ext/pg_query/src_backend_utils_mmgr_generation.c +273 -197
  449. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +270 -215
  450. data/ext/pg_query/src_backend_utils_mmgr_slab.c +154 -96
  451. data/ext/pg_query/src_common_encnames.c +43 -44
  452. data/ext/pg_query/src_common_hashfn.c +1 -1
  453. data/ext/pg_query/src_common_keywords.c +1 -1
  454. data/ext/pg_query/src_common_kwlist_d.h +511 -466
  455. data/ext/pg_query/src_common_kwlookup.c +1 -1
  456. data/ext/pg_query/src_common_psprintf.c +3 -3
  457. data/ext/pg_query/src_common_stringinfo.c +18 -1
  458. data/ext/pg_query/src_common_wchar.c +45 -108
  459. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +99 -5
  460. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +1 -1
  461. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +242 -143
  462. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  463. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
  464. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +19 -1
  465. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +1 -1
  466. data/ext/pg_query/src_port_pg_bitutils.c +173 -28
  467. data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
  468. data/ext/pg_query/src_port_snprintf.c +1 -1
  469. data/ext/pg_query/src_port_strerror.c +1 -3
  470. data/ext/pg_query/src_port_strlcpy.c +1 -1
  471. data/lib/pg_query/param_refs.rb +1 -1
  472. data/lib/pg_query/pg_query_pb.rb +26 -3
  473. data/lib/pg_query/treewalker.rb +38 -11
  474. data/lib/pg_query/truncate.rb +1 -1
  475. data/lib/pg_query/version.rb +1 -1
  476. metadata +25 -11
  477. data/ext/pg_query/include/postgres/storage/backendid.h +0 -37
  478. data/ext/pg_query/include/postgres/storage/sinvaladt.h +0 -45
  479. data/ext/pg_query/src_backend_nodes_nodes.c +0 -38
@@ -9,7 +9,7 @@
9
9
  * empty set by a NULL pointer.
10
10
  *
11
11
  *
12
- * Copyright (c) 2003-2023, PostgreSQL Global Development Group
12
+ * Copyright (c) 2003-2024, PostgreSQL Global Development Group
13
13
  *
14
14
  * src/include/nodes/bitmapset.h
15
15
  *
@@ -62,7 +62,7 @@ typedef enum
62
62
  BMS_EQUAL, /* sets are equal */
63
63
  BMS_SUBSET1, /* first set is a subset of the second */
64
64
  BMS_SUBSET2, /* second set is a subset of the first */
65
- BMS_DIFFERENT /* neither set is a subset of the other */
65
+ BMS_DIFFERENT, /* neither set is a subset of the other */
66
66
  } BMS_Comparison;
67
67
 
68
68
  /* result of bms_membership */
@@ -70,9 +70,22 @@ typedef enum
70
70
  {
71
71
  BMS_EMPTY_SET, /* 0 members */
72
72
  BMS_SINGLETON, /* 1 member */
73
- BMS_MULTIPLE /* >1 member */
73
+ BMS_MULTIPLE, /* >1 member */
74
74
  } BMS_Membership;
75
75
 
76
+ /* Select appropriate bit-twiddling functions for bitmap word size */
77
+ #if BITS_PER_BITMAPWORD == 32
78
+ #define bmw_leftmost_one_pos(w) pg_leftmost_one_pos32(w)
79
+ #define bmw_rightmost_one_pos(w) pg_rightmost_one_pos32(w)
80
+ #define bmw_popcount(w) pg_popcount32(w)
81
+ #elif BITS_PER_BITMAPWORD == 64
82
+ #define bmw_leftmost_one_pos(w) pg_leftmost_one_pos64(w)
83
+ #define bmw_rightmost_one_pos(w) pg_rightmost_one_pos64(w)
84
+ #define bmw_popcount(w) pg_popcount64(w)
85
+ #else
86
+ #error "invalid BITS_PER_BITMAPWORD"
87
+ #endif
88
+
76
89
 
77
90
  /*
78
91
  * function prototypes in nodes/bitmapset.c
@@ -109,6 +122,7 @@ extern BMS_Membership bms_membership(const Bitmapset *a);
109
122
  extern Bitmapset *bms_add_member(Bitmapset *a, int x);
110
123
  extern Bitmapset *bms_del_member(Bitmapset *a, int x);
111
124
  extern Bitmapset *bms_add_members(Bitmapset *a, const Bitmapset *b);
125
+ extern Bitmapset *bms_replace_members(Bitmapset *a, const Bitmapset *b);
112
126
  extern Bitmapset *bms_add_range(Bitmapset *a, int lower, int upper);
113
127
  extern Bitmapset *bms_int_members(Bitmapset *a, const Bitmapset *b);
114
128
  extern Bitmapset *bms_del_members(Bitmapset *a, const Bitmapset *b);
@@ -19,7 +19,7 @@
19
19
  * not provided.
20
20
  *
21
21
  *
22
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
22
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
23
23
  * Portions Copyright (c) 1994, Regents of the University of California
24
24
  *
25
25
  * src/include/nodes/execnodes.h
@@ -34,6 +34,7 @@
34
34
  #include "fmgr.h"
35
35
  #include "lib/ilist.h"
36
36
  #include "lib/pairingheap.h"
37
+ #include "nodes/miscnodes.h"
37
38
  #include "nodes/params.h"
38
39
  #include "nodes/plannodes.h"
39
40
  #include "nodes/tidbitmap.h"
@@ -129,6 +130,14 @@ typedef struct ExprState
129
130
 
130
131
  Datum *innermost_domainval;
131
132
  bool *innermost_domainnull;
133
+
134
+ /*
135
+ * For expression nodes that support soft errors. Should be set to NULL if
136
+ * the caller wants errors to be thrown. Callers that do not want errors
137
+ * thrown should set it to a valid ErrorSaveContext before calling
138
+ * ExecInitExprRec().
139
+ */
140
+ ErrorSaveContext *escontext;
132
141
  } ExprState;
133
142
 
134
143
 
@@ -187,7 +196,6 @@ typedef struct IndexInfo
187
196
  Oid *ii_UniqueOps; /* array with one entry per column */
188
197
  Oid *ii_UniqueProcs; /* array with one entry per column */
189
198
  uint16 *ii_UniqueStrats; /* array with one entry per column */
190
- Datum *ii_OpclassOptions; /* array with one entry per column */
191
199
  bool ii_Unique;
192
200
  bool ii_NullsNotDistinct;
193
201
  bool ii_ReadyForInserts;
@@ -296,7 +304,7 @@ typedef enum
296
304
  {
297
305
  ExprSingleResult, /* expression does not return a set */
298
306
  ExprMultipleResult, /* this result is an element of a set */
299
- ExprEndResult /* there are no more elements in the set */
307
+ ExprEndResult, /* there are no more elements in the set */
300
308
  } ExprDoneCond;
301
309
 
302
310
  /*
@@ -310,7 +318,7 @@ typedef enum
310
318
  SFRM_ValuePerCall = 0x01, /* one value returned per call */
311
319
  SFRM_Materialize = 0x02, /* result set instantiated in Tuplestore */
312
320
  SFRM_Materialize_Random = 0x04, /* Tuplestore needs randomAccess */
313
- SFRM_Materialize_Preferred = 0x08 /* caller prefers Tuplestore */
321
+ SFRM_Materialize_Preferred = 0x08, /* caller prefers Tuplestore */
314
322
  } SetFunctionReturnMode;
315
323
 
316
324
  /*
@@ -538,9 +546,11 @@ typedef struct ResultRelInfo
538
546
  /* ON CONFLICT evaluation state */
539
547
  OnConflictSetState *ri_onConflict;
540
548
 
541
- /* for MERGE, lists of MergeActionState */
542
- List *ri_matchedMergeAction;
543
- List *ri_notMatchedMergeAction;
549
+ /* for MERGE, lists of MergeActionState (one per MergeMatchKind) */
550
+ List *ri_MergeActions[NUM_MERGE_MATCH_KINDS];
551
+
552
+ /* for MERGE, expr state for checking the join condition */
553
+ ExprState *ri_MergeJoinCondition;
544
554
 
545
555
  /* partition check expression state (NULL if not set up yet) */
546
556
  ExprState *ri_PartitionCheckExpr;
@@ -990,7 +1000,7 @@ typedef struct SubPlanState
990
1000
  typedef enum DomainConstraintType
991
1001
  {
992
1002
  DOM_CONSTRAINT_NOTNULL,
993
- DOM_CONSTRAINT_CHECK
1003
+ DOM_CONSTRAINT_CHECK,
994
1004
  } DomainConstraintType;
995
1005
 
996
1006
  typedef struct DomainConstraintState
@@ -1002,6 +1012,77 @@ typedef struct DomainConstraintState
1002
1012
  ExprState *check_exprstate; /* check_expr's eval state, or NULL */
1003
1013
  } DomainConstraintState;
1004
1014
 
1015
+ /*
1016
+ * State for JsonExpr evaluation, too big to inline.
1017
+ *
1018
+ * This contains the information going into and coming out of the
1019
+ * EEOP_JSONEXPR_PATH eval step.
1020
+ */
1021
+ typedef struct JsonExprState
1022
+ {
1023
+ /* original expression node */
1024
+ JsonExpr *jsexpr;
1025
+
1026
+ /* value/isnull for formatted_expr */
1027
+ NullableDatum formatted_expr;
1028
+
1029
+ /* value/isnull for pathspec */
1030
+ NullableDatum pathspec;
1031
+
1032
+ /* JsonPathVariable entries for passing_values */
1033
+ List *args;
1034
+
1035
+ /*
1036
+ * Output variables that drive the EEOP_JUMP_IF_NOT_TRUE steps that are
1037
+ * added for ON ERROR and ON EMPTY expressions, if any.
1038
+ *
1039
+ * Reset for each evaluation of EEOP_JSONEXPR_PATH.
1040
+ */
1041
+
1042
+ /* Set to true if jsonpath evaluation cause an error. */
1043
+ NullableDatum error;
1044
+
1045
+ /* Set to true if the jsonpath evaluation returned 0 items. */
1046
+ NullableDatum empty;
1047
+
1048
+ /*
1049
+ * Addresses of steps that implement the non-ERROR variant of ON EMPTY and
1050
+ * ON ERROR behaviors, respectively.
1051
+ */
1052
+ int jump_empty;
1053
+ int jump_error;
1054
+
1055
+ /*
1056
+ * Address of the step to coerce the result value of jsonpath evaluation
1057
+ * to the RETURNING type. -1 if no coercion if JsonExpr.use_io_coercion
1058
+ * is true.
1059
+ */
1060
+ int jump_eval_coercion;
1061
+
1062
+ /*
1063
+ * Address to jump to when skipping all the steps after performing
1064
+ * ExecEvalJsonExprPath() so as to return whatever the JsonPath* function
1065
+ * returned as is, that is, in the cases where there's no error and no
1066
+ * coercion is necessary.
1067
+ */
1068
+ int jump_end;
1069
+
1070
+ /*
1071
+ * RETURNING type input function invocation info when
1072
+ * JsonExpr.use_io_coercion is true.
1073
+ */
1074
+ FunctionCallInfo input_fcinfo;
1075
+
1076
+ /*
1077
+ * For error-safe evaluation of coercions. When the ON ERROR behavior is
1078
+ * not ERROR, a pointer to this is passed to ExecInitExprRec() when
1079
+ * initializing the coercion expressions or to ExecInitJsonCoercion().
1080
+ *
1081
+ * Reset for each evaluation of EEOP_JSONEXPR_PATH.
1082
+ */
1083
+ ErrorSaveContext escontext;
1084
+ } JsonExprState;
1085
+
1005
1086
 
1006
1087
  /* ----------------------------------------------------------------
1007
1088
  * Executor State Trees
@@ -1319,6 +1400,16 @@ typedef struct ModifyTableState
1319
1400
  /* Flags showing which subcommands are present INS/UPD/DEL/DO NOTHING */
1320
1401
  int mt_merge_subcommands;
1321
1402
 
1403
+ /* For MERGE, the action currently being executed */
1404
+ MergeActionState *mt_merge_action;
1405
+
1406
+ /*
1407
+ * For MERGE, if there is a pending NOT MATCHED [BY TARGET] action to be
1408
+ * performed, this will be the last tuple read from the subplan; otherwise
1409
+ * it will be NULL --- see the comments in ExecMerge().
1410
+ */
1411
+ TupleTableSlot *mt_merge_pending_not_matched;
1412
+
1322
1413
  /* tuple counters for MERGE */
1323
1414
  double mt_merge_inserted;
1324
1415
  double mt_merge_updated;
@@ -1600,6 +1691,8 @@ typedef struct IndexScanState
1600
1691
  * TableSlot slot for holding tuples fetched from the table
1601
1692
  * VMBuffer buffer in use for visibility map testing, if any
1602
1693
  * PscanLen size of parallel index-only scan descriptor
1694
+ * NameCStringAttNums attnums of name typed columns to pad to NAMEDATALEN
1695
+ * NameCStringCount number of elements in the NameCStringAttNums array
1603
1696
  * ----------------
1604
1697
  */
1605
1698
  typedef struct IndexOnlyScanState
@@ -1619,6 +1712,8 @@ typedef struct IndexOnlyScanState
1619
1712
  TupleTableSlot *ioss_TableSlot;
1620
1713
  Buffer ioss_VMBuffer;
1621
1714
  Size ioss_PscanLen;
1715
+ AttrNumber *ioss_NameCStringAttNums;
1716
+ int ioss_NameCStringCount;
1622
1717
  } IndexOnlyScanState;
1623
1718
 
1624
1719
  /* ----------------
@@ -1670,7 +1765,7 @@ typedef enum
1670
1765
  {
1671
1766
  BM_INITIAL,
1672
1767
  BM_INPROGRESS,
1673
- BM_FINISHED
1768
+ BM_FINISHED,
1674
1769
  } SharedBitmapState;
1675
1770
 
1676
1771
  /* ----------------
@@ -1683,7 +1778,6 @@ typedef enum
1683
1778
  * prefetch_target current target prefetch distance
1684
1779
  * state current state of the TIDBitmap
1685
1780
  * cv conditional wait variable
1686
- * phs_snapshot_data snapshot data shared to workers
1687
1781
  * ----------------
1688
1782
  */
1689
1783
  typedef struct ParallelBitmapHeapState
@@ -1695,7 +1789,6 @@ typedef struct ParallelBitmapHeapState
1695
1789
  int prefetch_target;
1696
1790
  SharedBitmapState state;
1697
1791
  ConditionVariable cv;
1698
- char phs_snapshot_data[FLEXIBLE_ARRAY_MEMBER];
1699
1792
  } ParallelBitmapHeapState;
1700
1793
 
1701
1794
  /* ----------------
@@ -1705,17 +1798,13 @@ typedef struct ParallelBitmapHeapState
1705
1798
  * tbm bitmap obtained from child index scan(s)
1706
1799
  * tbmiterator iterator for scanning current pages
1707
1800
  * tbmres current-page data
1708
- * can_skip_fetch can we potentially skip tuple fetches in this scan?
1709
- * return_empty_tuples number of empty tuples to return
1710
- * vmbuffer buffer for visibility-map lookups
1711
- * pvmbuffer ditto, for prefetched pages
1801
+ * pvmbuffer buffer for visibility-map lookups of prefetched pages
1712
1802
  * exact_pages total number of exact pages retrieved
1713
1803
  * lossy_pages total number of lossy pages retrieved
1714
1804
  * prefetch_iterator iterator for prefetching ahead of current page
1715
1805
  * prefetch_pages # pages prefetch iterator is ahead of current
1716
1806
  * prefetch_target current target prefetch distance
1717
1807
  * prefetch_maximum maximum value for prefetch_target
1718
- * pscan_len size of the shared memory for parallel bitmap
1719
1808
  * initialized is node is ready to iterate
1720
1809
  * shared_tbmiterator shared iterator
1721
1810
  * shared_prefetch_iterator shared iterator for prefetching
@@ -1729,9 +1818,6 @@ typedef struct BitmapHeapScanState
1729
1818
  TIDBitmap *tbm;
1730
1819
  TBMIterator *tbmiterator;
1731
1820
  TBMIterateResult *tbmres;
1732
- bool can_skip_fetch;
1733
- int return_empty_tuples;
1734
- Buffer vmbuffer;
1735
1821
  Buffer pvmbuffer;
1736
1822
  long exact_pages;
1737
1823
  long lossy_pages;
@@ -1739,7 +1825,6 @@ typedef struct BitmapHeapScanState
1739
1825
  int prefetch_pages;
1740
1826
  int prefetch_target;
1741
1827
  int prefetch_maximum;
1742
- Size pscan_len;
1743
1828
  bool initialized;
1744
1829
  TBMSharedIterator *shared_tbmiterator;
1745
1830
  TBMSharedIterator *shared_prefetch_iterator;
@@ -1754,7 +1839,6 @@ typedef struct BitmapHeapScanState
1754
1839
  * NumTids number of tids in this scan
1755
1840
  * TidPtr index of currently fetched tid
1756
1841
  * TidList evaluated item pointers (array of size NumTids)
1757
- * htup currently-fetched tuple, if any
1758
1842
  * ----------------
1759
1843
  */
1760
1844
  typedef struct TidScanState
@@ -1765,7 +1849,6 @@ typedef struct TidScanState
1765
1849
  int tss_NumTids;
1766
1850
  int tss_TidPtr;
1767
1851
  ItemPointerData *tss_TidList;
1768
- HeapTupleData tss_htup;
1769
1852
  } TidScanState;
1770
1853
 
1771
1854
  /* ----------------
@@ -1876,6 +1959,8 @@ typedef struct TableFuncScanState
1876
1959
  ExprState *rowexpr; /* state for row-generating expression */
1877
1960
  List *colexprs; /* state for column-generating expression */
1878
1961
  List *coldefexprs; /* state for column default expressions */
1962
+ List *colvalexprs; /* state for column value expressions */
1963
+ List *passingvalexprs; /* state for PASSING argument expressions */
1879
1964
  List *ns_names; /* same as TableFunc.ns_names */
1880
1965
  List *ns_uris; /* list of states of namespace URI exprs */
1881
1966
  Bitmapset *notnulls; /* nullability flag for each output column */
@@ -2447,7 +2532,6 @@ typedef struct AggState
2447
2532
  #define FIELDNO_AGGSTATE_ALL_PERGROUPS 53
2448
2533
  AggStatePerGroup *all_pergroups; /* array of first ->pergroups, than
2449
2534
  * ->hash_pergroup */
2450
- ProjectionInfo *combinedproj; /* projection machinery */
2451
2535
  SharedAggInfo *shared_info; /* one entry per worker */
2452
2536
  } AggState;
2453
2537
 
@@ -2467,7 +2551,7 @@ typedef enum WindowAggStatus
2467
2551
  WINDOWAGG_DONE, /* No more processing to do */
2468
2552
  WINDOWAGG_RUN, /* Normal processing of window funcs */
2469
2553
  WINDOWAGG_PASSTHROUGH, /* Don't eval window funcs */
2470
- WINDOWAGG_PASSTHROUGH_STRICT /* Pass-through plus don't store new
2554
+ WINDOWAGG_PASSTHROUGH_STRICT, /* Pass-through plus don't store new
2471
2555
  * tuples during spool */
2472
2556
  } WindowAggStatus;
2473
2557
 
@@ -2745,7 +2829,7 @@ typedef enum
2745
2829
  LIMIT_WINDOWEND_TIES, /* have returned a tied row */
2746
2830
  LIMIT_SUBPLANEOF, /* at EOF of subplan (within window) */
2747
2831
  LIMIT_WINDOWEND, /* stepped off end of window */
2748
- LIMIT_WINDOWSTART /* stepped off beginning of window */
2832
+ LIMIT_WINDOWSTART, /* stepped off beginning of window */
2749
2833
  } LimitStateCond;
2750
2834
 
2751
2835
  typedef struct LimitState
@@ -4,7 +4,7 @@
4
4
  * Definitions for extensible nodes and custom scans
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/nodes/extensible.h
@@ -4,7 +4,7 @@
4
4
  * Common header for some locking-related declarations.
5
5
  *
6
6
  *
7
- * Copyright (c) 2014-2023, PostgreSQL Global Development Group
7
+ * Copyright (c) 2014-2024, PostgreSQL Global Development Group
8
8
  *
9
9
  * src/include/nodes/lockoptions.h
10
10
  *
@@ -24,7 +24,7 @@ typedef enum LockClauseStrength
24
24
  LCS_FORKEYSHARE, /* FOR KEY SHARE */
25
25
  LCS_FORSHARE, /* FOR SHARE */
26
26
  LCS_FORNOKEYUPDATE, /* FOR NO KEY UPDATE */
27
- LCS_FORUPDATE /* FOR UPDATE */
27
+ LCS_FORUPDATE, /* FOR UPDATE */
28
28
  } LockClauseStrength;
29
29
 
30
30
  /*
@@ -40,7 +40,7 @@ typedef enum LockWaitPolicy
40
40
  /* Skip rows that can't be locked (SKIP LOCKED) */
41
41
  LockWaitSkip,
42
42
  /* Raise an error if a row cannot be locked (NOWAIT) */
43
- LockWaitError
43
+ LockWaitError,
44
44
  } LockWaitPolicy;
45
45
 
46
46
  /*
@@ -55,7 +55,7 @@ typedef enum LockTupleMode
55
55
  /* SELECT FOR NO KEY UPDATE, and UPDATEs that don't modify key columns */
56
56
  LockTupleNoKeyExclusive,
57
57
  /* SELECT FOR UPDATE, UPDATEs that modify key columns, and DELETE */
58
- LockTupleExclusive
58
+ LockTupleExclusive,
59
59
  } LockTupleMode;
60
60
 
61
61
  #endif /* LOCKOPTIONS_H */
@@ -4,7 +4,7 @@
4
4
  * prototypes for the creator functions of various nodes
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/nodes/makefuncs.h
@@ -100,6 +100,7 @@ extern IndexInfo *makeIndexInfo(int numattrs, int numkeyattrs, Oid amoid,
100
100
  bool isready, bool concurrent,
101
101
  bool summarizing);
102
102
 
103
+ extern Node *makeStringConst(char *str, int location);
103
104
  extern DefElem *makeDefElem(char *name, Node *arg, int location);
104
105
  extern DefElem *makeDefElemExtended(char *nameSpace, char *name, Node *arg,
105
106
  DefElemAction defaction, int location);
@@ -116,6 +117,11 @@ extern Node *makeJsonKeyValue(Node *key, Node *value);
116
117
  extern Node *makeJsonIsPredicate(Node *expr, JsonFormat *format,
117
118
  JsonValueType item_type, bool unique_keys,
118
119
  int location);
119
- extern JsonEncoding makeJsonEncoding(char *name);
120
+ extern JsonBehavior *makeJsonBehavior(JsonBehaviorType btype, Node *expr,
121
+ int location);
122
+ extern JsonTablePath *makeJsonTablePath(Const *pathvalue, char *pathname);
123
+ extern JsonTablePathSpec *makeJsonTablePathSpec(char *string, char *name,
124
+ int string_location,
125
+ int name_location);
120
126
 
121
127
  #endif /* MAKEFUNC_H */
@@ -4,7 +4,7 @@
4
4
  * POSTGRES memory context node definitions.
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/nodes/memnodes.h
@@ -57,20 +57,58 @@ typedef void (*MemoryStatsPrintFunc) (MemoryContext context, void *passthru,
57
57
 
58
58
  typedef struct MemoryContextMethods
59
59
  {
60
- void *(*alloc) (MemoryContext context, Size size);
60
+ /*
61
+ * Function to handle memory allocation requests of 'size' to allocate
62
+ * memory into the given 'context'. The function must handle flags
63
+ * MCXT_ALLOC_HUGE and MCXT_ALLOC_NO_OOM. MCXT_ALLOC_ZERO is handled by
64
+ * the calling function.
65
+ */
66
+ void *(*alloc) (MemoryContext context, Size size, int flags);
67
+
61
68
  /* call this free_p in case someone #define's free() */
62
69
  void (*free_p) (void *pointer);
63
- void *(*realloc) (void *pointer, Size size);
70
+
71
+ /*
72
+ * Function to handle a size change request for an existing allocation.
73
+ * The implementation must handle flags MCXT_ALLOC_HUGE and
74
+ * MCXT_ALLOC_NO_OOM. MCXT_ALLOC_ZERO is handled by the calling function.
75
+ */
76
+ void *(*realloc) (void *pointer, Size size, int flags);
77
+
78
+ /*
79
+ * Invalidate all previous allocations in the given memory context and
80
+ * prepare the context for a new set of allocations. Implementations may
81
+ * optionally free() excess memory back to the OS during this time.
82
+ */
64
83
  void (*reset) (MemoryContext context);
84
+
85
+ /* Free all memory consumed by the given MemoryContext. */
65
86
  void (*delete_context) (MemoryContext context);
87
+
88
+ /* Return the MemoryContext that the given pointer belongs to. */
66
89
  MemoryContext (*get_chunk_context) (void *pointer);
90
+
91
+ /*
92
+ * Return the number of bytes consumed by the given pointer within its
93
+ * memory context, including the overhead of alignment and chunk headers.
94
+ */
67
95
  Size (*get_chunk_space) (void *pointer);
96
+
97
+ /*
98
+ * Return true if the given MemoryContext has not had any allocations
99
+ * since it was created or last reset.
100
+ */
68
101
  bool (*is_empty) (MemoryContext context);
69
102
  void (*stats) (MemoryContext context,
70
103
  MemoryStatsPrintFunc printfunc, void *passthru,
71
104
  MemoryContextCounters *totals,
72
105
  bool print_to_stderr);
73
106
  #ifdef MEMORY_CONTEXT_CHECKING
107
+
108
+ /*
109
+ * Perform validation checks on the given context and raise any discovered
110
+ * anomalies as WARNINGs.
111
+ */
74
112
  void (*check) (MemoryContext context);
75
113
  #endif
76
114
  } MemoryContextMethods;
@@ -108,6 +146,7 @@ typedef struct MemoryContextData
108
146
  ((context) != NULL && \
109
147
  (IsA((context), AllocSetContext) || \
110
148
  IsA((context), SlabContext) || \
111
- IsA((context), GenerationContext)))
149
+ IsA((context), GenerationContext) || \
150
+ IsA((context), BumpContext)))
112
151
 
113
152
  #endif /* MEMNODES_H */
@@ -10,7 +10,7 @@
10
10
  * "context" pointers.
11
11
  *
12
12
  *
13
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
13
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
14
14
  * Portions Copyright (c) 1994, Regents of the University of California
15
15
  *
16
16
  * src/include/nodes/miscnodes.h
@@ -3,7 +3,7 @@
3
3
  * nodeFuncs.h
4
4
  * Various general-purpose manipulations of Node trees
5
5
  *
6
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
6
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
7
7
  * Portions Copyright (c) 1994, Regents of the University of California
8
8
  *
9
9
  * src/include/nodes/nodeFuncs.h
@@ -4,7 +4,7 @@
4
4
  * Definitions for tagged nodes.
5
5
  *
6
6
  *
7
- * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
7
+ * Portions Copyright (c) 1996-2024, PostgreSQL Global Development Group
8
8
  * Portions Copyright (c) 1994, Regents of the University of California
9
9
  *
10
10
  * src/include/nodes/nodes.h
@@ -139,39 +139,18 @@ typedef struct Node
139
139
  *
140
140
  * !WARNING!: Avoid using newNode directly. You should be using the
141
141
  * macro makeNode. eg. to create a Query node, use makeNode(Query)
142
- *
143
- * Note: the size argument should always be a compile-time constant, so the
144
- * apparent risk of multiple evaluation doesn't matter in practice.
145
- */
146
- #ifdef __GNUC__
147
-
148
- /* With GCC, we can use a compound statement within an expression */
149
- #define newNode(size, tag) \
150
- ({ Node *_result; \
151
- AssertMacro((size) >= sizeof(Node)); /* need the tag, at least */ \
152
- _result = (Node *) palloc0fast(size); \
153
- _result->type = (tag); \
154
- _result; \
155
- })
156
- #else
157
-
158
- /*
159
- * There is no way to dereference the palloc'ed pointer to assign the
160
- * tag, and also return the pointer itself, so we need a holder variable.
161
- * Fortunately, this macro isn't recursive so we just define
162
- * a global variable for this purpose.
163
142
  */
164
- extern PGDLLIMPORT __thread Node *newNodeMacroHolder;
143
+ static inline Node *
144
+ newNode(size_t size, NodeTag tag)
145
+ {
146
+ Node *result;
165
147
 
166
- #define newNode(size, tag) \
167
- ( \
168
- AssertMacro((size) >= sizeof(Node)), /* need the tag, at least */ \
169
- newNodeMacroHolder = (Node *) palloc0fast(size), \
170
- newNodeMacroHolder->type = (tag), \
171
- newNodeMacroHolder \
172
- )
173
- #endif /* __GNUC__ */
148
+ Assert(size >= sizeof(Node)); /* need the tag, at least */
149
+ result = (Node *) palloc0(size);
150
+ result->type = tag;
174
151
 
152
+ return result;
153
+ }
175
154
 
176
155
  #define makeNode(_type_) ((_type_ *) newNode(sizeof(_type_),T_##_type_))
177
156
  #define NodeSetTag(nodeptr,t) (((Node*)(nodeptr))->type = (t))
@@ -216,6 +195,7 @@ extern void outBitmapset(struct StringInfoData *str,
216
195
  extern void outDatum(struct StringInfoData *str, uintptr_t value,
217
196
  int typlen, bool typbyval);
218
197
  extern char *nodeToString(const void *obj);
198
+ extern char *nodeToStringWithLocations(const void *obj);
219
199
  extern char *bmsToString(const struct Bitmapset *bms);
220
200
 
221
201
  /*
@@ -251,9 +231,18 @@ extern bool equal(const void *a, const void *b);
251
231
 
252
232
 
253
233
  /*
254
- * Typedefs for identifying qualifier selectivities and plan costs as such.
255
- * These are just plain "double"s, but declaring a variable as Selectivity
256
- * or Cost makes the intent more obvious.
234
+ * Typedef for parse location. This is just an int, but this way
235
+ * gen_node_support.pl knows which fields should get special treatment for
236
+ * location values.
237
+ *
238
+ * -1 is used for unknown.
239
+ */
240
+ typedef int ParseLoc;
241
+
242
+ /*
243
+ * Typedefs for identifying qualifier selectivities, plan costs, and row
244
+ * counts as such. These are just plain "double"s, but declaring a variable
245
+ * as Selectivity, Cost, or Cardinality makes the intent more obvious.
257
246
  *
258
247
  * These could have gone into plannodes.h or some such, but many files
259
248
  * depend on them...
@@ -280,7 +269,7 @@ typedef enum CmdType
280
269
  CMD_MERGE, /* merge stmt */
281
270
  CMD_UTILITY, /* cmds like create, destroy, copy, vacuum,
282
271
  * etc. */
283
- CMD_NOTHING /* dummy command for instead nothing rules
272
+ CMD_NOTHING, /* dummy command for instead nothing rules
284
273
  * with qual */
285
274
  } CmdType;
286
275
 
@@ -324,7 +313,7 @@ typedef enum JoinType
324
313
  * by the executor (nor, indeed, by most of the planner).
325
314
  */
326
315
  JOIN_UNIQUE_OUTER, /* LHS path must be made unique */
327
- JOIN_UNIQUE_INNER /* RHS path must be made unique */
316
+ JOIN_UNIQUE_INNER, /* RHS path must be made unique */
328
317
 
329
318
  /*
330
319
  * We might need additional join types someday.
@@ -364,7 +353,7 @@ typedef enum AggStrategy
364
353
  AGG_PLAIN, /* simple agg across all input rows */
365
354
  AGG_SORTED, /* grouped agg, input must be sorted */
366
355
  AGG_HASHED, /* grouped agg, use internal hashtable */
367
- AGG_MIXED /* grouped agg, hash and sort both used */
356
+ AGG_MIXED, /* grouped agg, hash and sort both used */
368
357
  } AggStrategy;
369
358
 
370
359
  /*
@@ -388,7 +377,7 @@ typedef enum AggSplit
388
377
  /* Initial phase of partial aggregation, with serialization: */
389
378
  AGGSPLIT_INITIAL_SERIAL = AGGSPLITOP_SKIPFINAL | AGGSPLITOP_SERIALIZE,
390
379
  /* Final phase of partial aggregation, with deserialization: */
391
- AGGSPLIT_FINAL_DESERIAL = AGGSPLITOP_COMBINE | AGGSPLITOP_DESERIALIZE
380
+ AGGSPLIT_FINAL_DESERIAL = AGGSPLITOP_COMBINE | AGGSPLITOP_DESERIALIZE,
392
381
  } AggSplit;
393
382
 
394
383
  /* Test whether an AggSplit value selects each primitive option: */
@@ -408,13 +397,13 @@ typedef enum SetOpCmd
408
397
  SETOPCMD_INTERSECT,
409
398
  SETOPCMD_INTERSECT_ALL,
410
399
  SETOPCMD_EXCEPT,
411
- SETOPCMD_EXCEPT_ALL
400
+ SETOPCMD_EXCEPT_ALL,
412
401
  } SetOpCmd;
413
402
 
414
403
  typedef enum SetOpStrategy
415
404
  {
416
405
  SETOP_SORTED, /* input must be sorted */
417
- SETOP_HASHED /* use internal hashtable */
406
+ SETOP_HASHED, /* use internal hashtable */
418
407
  } SetOpStrategy;
419
408
 
420
409
  /*
@@ -427,7 +416,7 @@ typedef enum OnConflictAction
427
416
  {
428
417
  ONCONFLICT_NONE, /* No "ON CONFLICT" clause */
429
418
  ONCONFLICT_NOTHING, /* ON CONFLICT ... DO NOTHING */
430
- ONCONFLICT_UPDATE /* ON CONFLICT ... DO UPDATE */
419
+ ONCONFLICT_UPDATE, /* ON CONFLICT ... DO UPDATE */
431
420
  } OnConflictAction;
432
421
 
433
422
  /*