pg_query 5.1.0 → 6.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (490) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +30 -0
  3. data/README.md +1 -1
  4. data/Rakefile +4 -4
  5. data/ext/pg_query/ext_symbols_freebsd.sym +1 -0
  6. data/ext/pg_query/ext_symbols_freebsd_with_ruby_abi_version.sym +2 -0
  7. data/ext/pg_query/ext_symbols_openbsd.sym +1 -0
  8. data/ext/pg_query/ext_symbols_openbsd_with_ruby_abi_version.sym +2 -0
  9. data/ext/pg_query/ext_symbols_with_ruby_abi_version.sym +2 -0
  10. data/ext/pg_query/extconf.rb +20 -6
  11. data/ext/pg_query/include/pg_query.h +4 -3
  12. data/ext/pg_query/include/pg_query_enum_defs.c +424 -154
  13. data/ext/pg_query/include/pg_query_fingerprint_conds.c +68 -4
  14. data/ext/pg_query/include/pg_query_fingerprint_defs.c +2952 -1845
  15. data/ext/pg_query/include/pg_query_outfuncs_conds.c +51 -3
  16. data/ext/pg_query/include/pg_query_outfuncs_defs.c +210 -23
  17. data/ext/pg_query/include/pg_query_readfuncs_conds.c +17 -1
  18. data/ext/pg_query/include/pg_query_readfuncs_defs.c +271 -52
  19. data/ext/pg_query/include/postgres/access/amapi.h +14 -3
  20. data/ext/pg_query/include/postgres/access/attmap.h +1 -1
  21. data/ext/pg_query/include/postgres/access/attnum.h +1 -1
  22. data/ext/pg_query/include/postgres/access/brin_internal.h +116 -0
  23. data/ext/pg_query/include/postgres/access/brin_tuple.h +112 -0
  24. data/ext/pg_query/include/postgres/access/clog.h +2 -3
  25. data/ext/pg_query/include/postgres/access/commit_ts.h +2 -3
  26. data/ext/pg_query/include/postgres/access/detoast.h +1 -1
  27. data/ext/pg_query/include/postgres/access/genam.h +17 -4
  28. data/ext/pg_query/include/postgres/access/gin.h +1 -1
  29. data/ext/pg_query/include/postgres/access/htup.h +1 -1
  30. data/ext/pg_query/include/postgres/access/htup_details.h +11 -11
  31. data/ext/pg_query/include/postgres/access/itup.h +3 -3
  32. data/ext/pg_query/include/postgres/access/parallel.h +1 -2
  33. data/ext/pg_query/include/postgres/access/printtup.h +1 -1
  34. data/ext/pg_query/include/postgres/access/relation.h +1 -1
  35. data/ext/pg_query/include/postgres/access/relscan.h +1 -1
  36. data/ext/pg_query/include/postgres/access/rmgrlist.h +1 -1
  37. data/ext/pg_query/include/postgres/access/sdir.h +1 -1
  38. data/ext/pg_query/include/postgres/access/skey.h +1 -1
  39. data/ext/pg_query/include/postgres/access/slru.h +218 -0
  40. data/ext/pg_query/include/postgres/access/stratnum.h +1 -1
  41. data/ext/pg_query/include/postgres/access/sysattr.h +1 -1
  42. data/ext/pg_query/include/postgres/access/table.h +1 -1
  43. data/ext/pg_query/include/postgres/access/tableam.h +35 -25
  44. data/ext/pg_query/include/postgres/access/tidstore.h +50 -0
  45. data/ext/pg_query/include/postgres/access/toast_compression.h +2 -2
  46. data/ext/pg_query/include/postgres/access/transam.h +50 -7
  47. data/ext/pg_query/include/postgres/access/tsmapi.h +1 -1
  48. data/ext/pg_query/include/postgres/access/tupconvert.h +1 -1
  49. data/ext/pg_query/include/postgres/access/tupdesc.h +5 -5
  50. data/ext/pg_query/include/postgres/access/tupmacs.h +1 -1
  51. data/ext/pg_query/include/postgres/access/twophase.h +2 -2
  52. data/ext/pg_query/include/postgres/access/xact.h +5 -5
  53. data/ext/pg_query/include/postgres/access/xlog.h +20 -12
  54. data/ext/pg_query/include/postgres/access/xlog_internal.h +4 -3
  55. data/ext/pg_query/include/postgres/access/xlogbackup.h +3 -1
  56. data/ext/pg_query/include/postgres/access/xlogdefs.h +5 -5
  57. data/ext/pg_query/include/postgres/access/xlogprefetcher.h +2 -2
  58. data/ext/pg_query/include/postgres/access/xlogreader.h +2 -2
  59. data/ext/pg_query/include/postgres/access/xlogrecord.h +3 -3
  60. data/ext/pg_query/include/postgres/access/xlogrecovery.h +4 -4
  61. data/ext/pg_query/include/postgres/archive/archive_module.h +9 -1
  62. data/ext/pg_query/include/postgres/c.h +32 -37
  63. data/ext/pg_query/include/postgres/catalog/catalog.h +3 -1
  64. data/ext/pg_query/include/postgres/catalog/catversion.h +2 -2
  65. data/ext/pg_query/include/postgres/catalog/dependency.h +17 -59
  66. data/ext/pg_query/include/postgres/catalog/genbki.h +12 -6
  67. data/ext/pg_query/include/postgres/catalog/index.h +22 -18
  68. data/ext/pg_query/include/postgres/catalog/indexing.h +1 -1
  69. data/ext/pg_query/include/postgres/catalog/namespace.h +18 -19
  70. data/ext/pg_query/include/postgres/catalog/objectaccess.h +2 -2
  71. data/ext/pg_query/include/postgres/catalog/objectaddress.h +5 -1
  72. data/ext/pg_query/include/postgres/catalog/pg_aggregate.h +4 -2
  73. data/ext/pg_query/include/postgres/catalog/pg_aggregate_d.h +1 -1
  74. data/ext/pg_query/include/postgres/catalog/pg_am.h +6 -3
  75. data/ext/pg_query/include/postgres/catalog/pg_am_d.h +1 -1
  76. data/ext/pg_query/include/postgres/catalog/pg_attribute.h +31 -14
  77. data/ext/pg_query/include/postgres/catalog/pg_attribute_d.h +3 -3
  78. data/ext/pg_query/include/postgres/catalog/pg_authid.h +6 -3
  79. data/ext/pg_query/include/postgres/catalog/pg_authid_d.h +2 -1
  80. data/ext/pg_query/include/postgres/catalog/pg_class.h +10 -5
  81. data/ext/pg_query/include/postgres/catalog/pg_class_d.h +4 -2
  82. data/ext/pg_query/include/postgres/catalog/pg_collation.h +11 -5
  83. data/ext/pg_query/include/postgres/catalog/pg_collation_d.h +5 -2
  84. data/ext/pg_query/include/postgres/catalog/pg_constraint.h +15 -10
  85. data/ext/pg_query/include/postgres/catalog/pg_constraint_d.h +2 -1
  86. data/ext/pg_query/include/postgres/catalog/pg_control.h +5 -3
  87. data/ext/pg_query/include/postgres/catalog/pg_conversion.h +8 -4
  88. data/ext/pg_query/include/postgres/catalog/pg_conversion_d.h +1 -1
  89. data/ext/pg_query/include/postgres/catalog/pg_database.h +9 -4
  90. data/ext/pg_query/include/postgres/catalog/pg_database_d.h +13 -12
  91. data/ext/pg_query/include/postgres/catalog/pg_depend.h +3 -3
  92. data/ext/pg_query/include/postgres/catalog/pg_depend_d.h +1 -1
  93. data/ext/pg_query/include/postgres/catalog/pg_event_trigger.h +6 -3
  94. data/ext/pg_query/include/postgres/catalog/pg_event_trigger_d.h +1 -1
  95. data/ext/pg_query/include/postgres/catalog/pg_index.h +5 -3
  96. data/ext/pg_query/include/postgres/catalog/pg_index_d.h +1 -1
  97. data/ext/pg_query/include/postgres/catalog/pg_language.h +6 -3
  98. data/ext/pg_query/include/postgres/catalog/pg_language_d.h +1 -1
  99. data/ext/pg_query/include/postgres/catalog/pg_namespace.h +6 -3
  100. data/ext/pg_query/include/postgres/catalog/pg_namespace_d.h +1 -1
  101. data/ext/pg_query/include/postgres/catalog/pg_opclass.h +6 -3
  102. data/ext/pg_query/include/postgres/catalog/pg_opclass_d.h +1 -1
  103. data/ext/pg_query/include/postgres/catalog/pg_operator.h +20 -3
  104. data/ext/pg_query/include/postgres/catalog/pg_operator_d.h +1 -1
  105. data/ext/pg_query/include/postgres/catalog/pg_opfamily.h +6 -3
  106. data/ext/pg_query/include/postgres/catalog/pg_opfamily_d.h +1 -1
  107. data/ext/pg_query/include/postgres/catalog/pg_partitioned_table.h +4 -2
  108. data/ext/pg_query/include/postgres/catalog/pg_partitioned_table_d.h +1 -1
  109. data/ext/pg_query/include/postgres/catalog/pg_proc.h +6 -3
  110. data/ext/pg_query/include/postgres/catalog/pg_proc_d.h +1 -1
  111. data/ext/pg_query/include/postgres/catalog/pg_publication.h +6 -3
  112. data/ext/pg_query/include/postgres/catalog/pg_publication_d.h +1 -1
  113. data/ext/pg_query/include/postgres/catalog/pg_replication_origin.h +6 -3
  114. data/ext/pg_query/include/postgres/catalog/pg_replication_origin_d.h +1 -1
  115. data/ext/pg_query/include/postgres/catalog/pg_statistic.h +10 -4
  116. data/ext/pg_query/include/postgres/catalog/pg_statistic_d.h +7 -3
  117. data/ext/pg_query/include/postgres/catalog/pg_statistic_ext.h +10 -7
  118. data/ext/pg_query/include/postgres/catalog/pg_statistic_ext_d.h +3 -3
  119. data/ext/pg_query/include/postgres/catalog/pg_transform.h +6 -3
  120. data/ext/pg_query/include/postgres/catalog/pg_transform_d.h +1 -1
  121. data/ext/pg_query/include/postgres/catalog/pg_trigger.h +4 -4
  122. data/ext/pg_query/include/postgres/catalog/pg_trigger_d.h +1 -1
  123. data/ext/pg_query/include/postgres/catalog/pg_ts_config.h +6 -3
  124. data/ext/pg_query/include/postgres/catalog/pg_ts_config_d.h +1 -1
  125. data/ext/pg_query/include/postgres/catalog/pg_ts_dict.h +6 -3
  126. data/ext/pg_query/include/postgres/catalog/pg_ts_dict_d.h +1 -1
  127. data/ext/pg_query/include/postgres/catalog/pg_ts_parser.h +6 -3
  128. data/ext/pg_query/include/postgres/catalog/pg_ts_parser_d.h +1 -1
  129. data/ext/pg_query/include/postgres/catalog/pg_ts_template.h +6 -3
  130. data/ext/pg_query/include/postgres/catalog/pg_ts_template_d.h +1 -1
  131. data/ext/pg_query/include/postgres/catalog/pg_type.h +6 -3
  132. data/ext/pg_query/include/postgres/catalog/pg_type_d.h +1 -1
  133. data/ext/pg_query/include/postgres/catalog/storage.h +1 -1
  134. data/ext/pg_query/include/postgres/catalog/syscache_ids.h +104 -0
  135. data/ext/pg_query/include/postgres/commands/async.h +2 -6
  136. data/ext/pg_query/include/postgres/commands/dbcommands.h +1 -1
  137. data/ext/pg_query/include/postgres/commands/defrem.h +6 -6
  138. data/ext/pg_query/include/postgres/commands/event_trigger.h +11 -2
  139. data/ext/pg_query/include/postgres/commands/explain.h +19 -3
  140. data/ext/pg_query/include/postgres/commands/prepare.h +1 -1
  141. data/ext/pg_query/include/postgres/commands/tablespace.h +1 -1
  142. data/ext/pg_query/include/postgres/commands/trigger.h +1 -1
  143. data/ext/pg_query/include/postgres/commands/vacuum.h +28 -26
  144. data/ext/pg_query/include/postgres/common/cryptohash.h +2 -2
  145. data/ext/pg_query/include/postgres/common/file_perm.h +1 -1
  146. data/ext/pg_query/include/postgres/common/file_utils.h +65 -0
  147. data/ext/pg_query/include/postgres/common/hashfn.h +16 -1
  148. data/ext/pg_query/include/postgres/common/hashfn_unstable.h +407 -0
  149. data/ext/pg_query/include/postgres/common/int.h +79 -4
  150. data/ext/pg_query/include/postgres/common/keywords.h +1 -1
  151. data/ext/pg_query/include/postgres/common/kwlookup.h +1 -1
  152. data/ext/pg_query/include/postgres/common/pg_prng.h +2 -1
  153. data/ext/pg_query/include/postgres/common/relpath.h +4 -4
  154. data/ext/pg_query/include/postgres/common/scram-common.h +1 -1
  155. data/ext/pg_query/include/postgres/common/sha2.h +1 -1
  156. data/ext/pg_query/include/postgres/common/string.h +1 -1
  157. data/ext/pg_query/include/postgres/common/unicode_east_asian_fw_table.h +2 -3
  158. data/ext/pg_query/include/postgres/copyfuncs.funcs.c +278 -30
  159. data/ext/pg_query/include/postgres/copyfuncs.switch.c +55 -4
  160. data/ext/pg_query/include/postgres/datatype/timestamp.h +29 -3
  161. data/ext/pg_query/include/postgres/equalfuncs.funcs.c +239 -26
  162. data/ext/pg_query/include/postgres/equalfuncs.switch.c +55 -4
  163. data/ext/pg_query/include/postgres/executor/execdesc.h +2 -2
  164. data/ext/pg_query/include/postgres/executor/executor.h +6 -5
  165. data/ext/pg_query/include/postgres/executor/functions.h +2 -1
  166. data/ext/pg_query/include/postgres/executor/instrument.h +5 -3
  167. data/ext/pg_query/include/postgres/executor/spi.h +2 -8
  168. data/ext/pg_query/include/postgres/executor/tablefunc.h +1 -1
  169. data/ext/pg_query/include/postgres/executor/tuptable.h +31 -2
  170. data/ext/pg_query/include/postgres/fmgr.h +2 -2
  171. data/ext/pg_query/include/postgres/foreign/fdwapi.h +1 -1
  172. data/ext/pg_query/include/postgres/funcapi.h +2 -2
  173. data/ext/pg_query/include/postgres/gram.h +871 -830
  174. data/ext/pg_query/include/postgres/gramparse.h +1 -1
  175. data/ext/pg_query/include/postgres/jit/jit.h +4 -3
  176. data/ext/pg_query/include/postgres/kwlist_d.h +511 -466
  177. data/ext/pg_query/include/postgres/lib/dshash.h +25 -10
  178. data/ext/pg_query/include/postgres/lib/ilist.h +1 -1
  179. data/ext/pg_query/include/postgres/lib/pairingheap.h +1 -1
  180. data/ext/pg_query/include/postgres/lib/simplehash.h +40 -18
  181. data/ext/pg_query/include/postgres/lib/sort_template.h +14 -1
  182. data/ext/pg_query/include/postgres/lib/stringinfo.h +93 -11
  183. data/ext/pg_query/include/postgres/libpq/auth.h +1 -1
  184. data/ext/pg_query/include/postgres/libpq/crypt.h +2 -2
  185. data/ext/pg_query/include/postgres/libpq/hba.h +4 -4
  186. data/ext/pg_query/include/postgres/libpq/libpq-be.h +35 -28
  187. data/ext/pg_query/include/postgres/libpq/libpq.h +6 -7
  188. data/ext/pg_query/include/postgres/libpq/pqcomm.h +26 -20
  189. data/ext/pg_query/include/postgres/libpq/pqformat.h +2 -3
  190. data/ext/pg_query/include/postgres/libpq/pqsignal.h +1 -1
  191. data/ext/pg_query/include/postgres/libpq/protocol.h +89 -0
  192. data/ext/pg_query/include/postgres/libpq/sasl.h +1 -1
  193. data/ext/pg_query/include/postgres/libpq/scram.h +1 -1
  194. data/ext/pg_query/include/postgres/mb/pg_wchar.h +103 -82
  195. data/ext/pg_query/include/postgres/mb/stringinfo_mb.h +1 -1
  196. data/ext/pg_query/include/postgres/miscadmin.h +72 -52
  197. data/ext/pg_query/include/postgres/nodes/bitmapset.h +17 -3
  198. data/ext/pg_query/include/postgres/nodes/execnodes.h +112 -25
  199. data/ext/pg_query/include/postgres/nodes/extensible.h +1 -1
  200. data/ext/pg_query/include/postgres/nodes/lockoptions.h +4 -4
  201. data/ext/pg_query/include/postgres/nodes/makefuncs.h +8 -2
  202. data/ext/pg_query/include/postgres/nodes/memnodes.h +43 -4
  203. data/ext/pg_query/include/postgres/nodes/miscnodes.h +1 -1
  204. data/ext/pg_query/include/postgres/nodes/nodeFuncs.h +1 -1
  205. data/ext/pg_query/include/postgres/nodes/nodes.h +30 -41
  206. data/ext/pg_query/include/postgres/nodes/nodetags.h +464 -444
  207. data/ext/pg_query/include/postgres/nodes/params.h +1 -1
  208. data/ext/pg_query/include/postgres/nodes/parsenodes.h +358 -175
  209. data/ext/pg_query/include/postgres/nodes/pathnodes.h +64 -10
  210. data/ext/pg_query/include/postgres/nodes/pg_list.h +62 -11
  211. data/ext/pg_query/include/postgres/nodes/plannodes.h +11 -10
  212. data/ext/pg_query/include/postgres/nodes/primnodes.h +352 -54
  213. data/ext/pg_query/include/postgres/nodes/print.h +1 -1
  214. data/ext/pg_query/include/postgres/nodes/queryjumble.h +2 -2
  215. data/ext/pg_query/include/postgres/nodes/replnodes.h +23 -2
  216. data/ext/pg_query/include/postgres/nodes/supportnodes.h +1 -1
  217. data/ext/pg_query/include/postgres/nodes/tidbitmap.h +1 -1
  218. data/ext/pg_query/include/postgres/nodes/value.h +1 -1
  219. data/ext/pg_query/include/postgres/optimizer/cost.h +5 -4
  220. data/ext/pg_query/include/postgres/optimizer/geqo.h +1 -1
  221. data/ext/pg_query/include/postgres/optimizer/geqo_gene.h +1 -1
  222. data/ext/pg_query/include/postgres/optimizer/optimizer.h +5 -2
  223. data/ext/pg_query/include/postgres/optimizer/paths.h +13 -8
  224. data/ext/pg_query/include/postgres/optimizer/planmain.h +7 -1
  225. data/ext/pg_query/include/postgres/parser/analyze.h +3 -1
  226. data/ext/pg_query/include/postgres/parser/kwlist.h +22 -2
  227. data/ext/pg_query/include/postgres/parser/parse_agg.h +1 -1
  228. data/ext/pg_query/include/postgres/parser/parse_coerce.h +5 -2
  229. data/ext/pg_query/include/postgres/parser/parse_expr.h +1 -1
  230. data/ext/pg_query/include/postgres/parser/parse_func.h +2 -2
  231. data/ext/pg_query/include/postgres/parser/parse_node.h +3 -2
  232. data/ext/pg_query/include/postgres/parser/parse_oper.h +4 -1
  233. data/ext/pg_query/include/postgres/parser/parse_relation.h +1 -1
  234. data/ext/pg_query/include/postgres/parser/parse_type.h +2 -2
  235. data/ext/pg_query/include/postgres/parser/parser.h +3 -3
  236. data/ext/pg_query/include/postgres/parser/parsetree.h +1 -1
  237. data/ext/pg_query/include/postgres/parser/scanner.h +1 -1
  238. data/ext/pg_query/include/postgres/parser/scansup.h +1 -1
  239. data/ext/pg_query/include/postgres/partitioning/partdefs.h +1 -1
  240. data/ext/pg_query/include/postgres/pg_config.h +53 -45
  241. data/ext/pg_query/include/postgres/pg_config_manual.h +21 -8
  242. data/ext/pg_query/include/postgres/pg_getopt.h +1 -1
  243. data/ext/pg_query/include/postgres/pg_trace.h +1 -1
  244. data/ext/pg_query/include/postgres/pgstat.h +13 -11
  245. data/ext/pg_query/include/postgres/pgtime.h +1 -1
  246. data/ext/pg_query/include/postgres/pl_reserved_kwlist.h +1 -1
  247. data/ext/pg_query/include/postgres/pl_reserved_kwlist_d.h +1 -1
  248. data/ext/pg_query/include/postgres/pl_unreserved_kwlist.h +1 -1
  249. data/ext/pg_query/include/postgres/pl_unreserved_kwlist_d.h +1 -1
  250. data/ext/pg_query/include/postgres/plerrcodes.h +4 -4
  251. data/ext/pg_query/include/postgres/plpgsql.h +15 -13
  252. data/ext/pg_query/include/postgres/port/atomics/arch-arm.h +1 -1
  253. data/ext/pg_query/include/postgres/port/atomics/arch-hppa.h +1 -1
  254. data/ext/pg_query/include/postgres/port/atomics/arch-ppc.h +3 -1
  255. data/ext/pg_query/include/postgres/port/atomics/arch-x86.h +3 -1
  256. data/ext/pg_query/include/postgres/port/atomics/fallback.h +1 -1
  257. data/ext/pg_query/include/postgres/port/atomics/generic-gcc.h +38 -1
  258. data/ext/pg_query/include/postgres/port/atomics/generic-msvc.h +19 -1
  259. data/ext/pg_query/include/postgres/port/atomics/generic-sunpro.h +16 -1
  260. data/ext/pg_query/include/postgres/port/atomics/generic.h +38 -2
  261. data/ext/pg_query/include/postgres/port/atomics.h +93 -6
  262. data/ext/pg_query/include/postgres/port/pg_bitutils.h +91 -9
  263. data/ext/pg_query/include/postgres/port/pg_bswap.h +1 -1
  264. data/ext/pg_query/include/postgres/port/pg_crc32c.h +10 -1
  265. data/ext/pg_query/include/postgres/port/pg_iovec.h +117 -0
  266. data/ext/pg_query/include/postgres/port/simd.h +48 -1
  267. data/ext/pg_query/include/postgres/port/win32/sys/socket.h +8 -0
  268. data/ext/pg_query/include/postgres/port/win32_port.h +1 -13
  269. data/ext/pg_query/include/postgres/port.h +39 -4
  270. data/ext/pg_query/include/postgres/portability/instr_time.h +1 -1
  271. data/ext/pg_query/include/postgres/postgres.h +1 -1
  272. data/ext/pg_query/include/postgres/postmaster/autovacuum.h +5 -16
  273. data/ext/pg_query/include/postgres/postmaster/bgworker.h +8 -6
  274. data/ext/pg_query/include/postgres/postmaster/bgworker_internals.h +3 -7
  275. data/ext/pg_query/include/postgres/postmaster/bgwriter.h +3 -3
  276. data/ext/pg_query/include/postgres/postmaster/interrupt.h +1 -1
  277. data/ext/pg_query/include/postgres/postmaster/pgarch.h +2 -2
  278. data/ext/pg_query/include/postgres/postmaster/postmaster.h +25 -5
  279. data/ext/pg_query/include/postgres/postmaster/startup.h +2 -2
  280. data/ext/pg_query/include/postgres/postmaster/syslogger.h +2 -4
  281. data/ext/pg_query/include/postgres/postmaster/walsummarizer.h +35 -0
  282. data/ext/pg_query/include/postgres/postmaster/walwriter.h +2 -2
  283. data/ext/pg_query/include/postgres/regex/regex.h +92 -9
  284. data/ext/pg_query/include/postgres/replication/logicallauncher.h +1 -1
  285. data/ext/pg_query/include/postgres/replication/logicalproto.h +2 -2
  286. data/ext/pg_query/include/postgres/replication/logicalworker.h +2 -1
  287. data/ext/pg_query/include/postgres/replication/origin.h +1 -1
  288. data/ext/pg_query/include/postgres/replication/reorderbuffer.h +27 -46
  289. data/ext/pg_query/include/postgres/replication/slot.h +45 -5
  290. data/ext/pg_query/include/postgres/replication/slotsync.h +38 -0
  291. data/ext/pg_query/include/postgres/replication/syncrep.h +1 -1
  292. data/ext/pg_query/include/postgres/replication/walreceiver.h +37 -11
  293. data/ext/pg_query/include/postgres/replication/walsender.h +5 -3
  294. data/ext/pg_query/include/postgres/rewrite/prs2lock.h +1 -1
  295. data/ext/pg_query/include/postgres/rewrite/rewriteHandler.h +7 -1
  296. data/ext/pg_query/include/postgres/rewrite/rewriteManip.h +2 -2
  297. data/ext/pg_query/include/postgres/rewrite/rewriteSupport.h +1 -1
  298. data/ext/pg_query/include/postgres/storage/block.h +1 -1
  299. data/ext/pg_query/include/postgres/storage/buf.h +1 -1
  300. data/ext/pg_query/include/postgres/storage/bufmgr.h +59 -41
  301. data/ext/pg_query/include/postgres/storage/bufpage.h +1 -1
  302. data/ext/pg_query/include/postgres/storage/condition_variable.h +1 -1
  303. data/ext/pg_query/include/postgres/storage/dsm.h +1 -1
  304. data/ext/pg_query/include/postgres/storage/dsm_impl.h +2 -2
  305. data/ext/pg_query/include/postgres/storage/fd.h +30 -13
  306. data/ext/pg_query/include/postgres/storage/fileset.h +1 -1
  307. data/ext/pg_query/include/postgres/storage/ipc.h +4 -1
  308. data/ext/pg_query/include/postgres/storage/item.h +1 -1
  309. data/ext/pg_query/include/postgres/storage/itemid.h +1 -1
  310. data/ext/pg_query/include/postgres/storage/itemptr.h +1 -1
  311. data/ext/pg_query/include/postgres/storage/large_object.h +1 -1
  312. data/ext/pg_query/include/postgres/storage/latch.h +4 -2
  313. data/ext/pg_query/include/postgres/storage/lmgr.h +8 -2
  314. data/ext/pg_query/include/postgres/storage/lock.h +19 -19
  315. data/ext/pg_query/include/postgres/storage/lockdefs.h +3 -1
  316. data/ext/pg_query/include/postgres/storage/lwlock.h +17 -9
  317. data/ext/pg_query/include/postgres/storage/lwlocknames.h +7 -10
  318. data/ext/pg_query/include/postgres/storage/off.h +1 -1
  319. data/ext/pg_query/include/postgres/storage/pg_sema.h +1 -1
  320. data/ext/pg_query/include/postgres/storage/pg_shmem.h +5 -4
  321. data/ext/pg_query/include/postgres/storage/pmsignal.h +2 -2
  322. data/ext/pg_query/include/postgres/storage/predicate.h +1 -5
  323. data/ext/pg_query/include/postgres/storage/proc.h +48 -26
  324. data/ext/pg_query/include/postgres/storage/procarray.h +5 -1
  325. data/ext/pg_query/include/postgres/storage/proclist_types.h +11 -9
  326. data/ext/pg_query/include/postgres/storage/procnumber.h +43 -0
  327. data/ext/pg_query/include/postgres/storage/procsignal.h +8 -6
  328. data/ext/pg_query/include/postgres/storage/read_stream.h +65 -0
  329. data/ext/pg_query/include/postgres/storage/relfilelocator.h +16 -15
  330. data/ext/pg_query/include/postgres/storage/s_lock.h +7 -27
  331. data/ext/pg_query/include/postgres/storage/sharedfileset.h +1 -1
  332. data/ext/pg_query/include/postgres/storage/shm_mq.h +2 -2
  333. data/ext/pg_query/include/postgres/storage/shm_toc.h +1 -1
  334. data/ext/pg_query/include/postgres/storage/shmem.h +1 -1
  335. data/ext/pg_query/include/postgres/storage/sinval.h +3 -3
  336. data/ext/pg_query/include/postgres/storage/smgr.h +46 -29
  337. data/ext/pg_query/include/postgres/storage/spin.h +1 -1
  338. data/ext/pg_query/include/postgres/storage/standby.h +13 -3
  339. data/ext/pg_query/include/postgres/storage/standbydefs.h +2 -2
  340. data/ext/pg_query/include/postgres/storage/sync.h +4 -4
  341. data/ext/pg_query/include/postgres/tcop/cmdtag.h +1 -2
  342. data/ext/pg_query/include/postgres/tcop/cmdtaglist.h +3 -2
  343. data/ext/pg_query/include/postgres/tcop/deparse_utility.h +2 -2
  344. data/ext/pg_query/include/postgres/tcop/dest.h +3 -2
  345. data/ext/pg_query/include/postgres/tcop/fastpath.h +1 -1
  346. data/ext/pg_query/include/postgres/tcop/pquery.h +1 -1
  347. data/ext/pg_query/include/postgres/tcop/tcopprot.h +9 -5
  348. data/ext/pg_query/include/postgres/tcop/utility.h +2 -2
  349. data/ext/pg_query/include/postgres/tsearch/ts_cache.h +1 -1
  350. data/ext/pg_query/include/postgres/utils/acl.h +19 -7
  351. data/ext/pg_query/include/postgres/utils/aclchk_internal.h +1 -1
  352. data/ext/pg_query/include/postgres/utils/array.h +1 -2
  353. data/ext/pg_query/include/postgres/utils/ascii.h +84 -0
  354. data/ext/pg_query/include/postgres/utils/backend_progress.h +3 -2
  355. data/ext/pg_query/include/postgres/utils/backend_status.h +8 -10
  356. data/ext/pg_query/include/postgres/utils/builtins.h +4 -1
  357. data/ext/pg_query/include/postgres/utils/bytea.h +2 -2
  358. data/ext/pg_query/include/postgres/utils/catcache.h +6 -6
  359. data/ext/pg_query/include/postgres/utils/date.h +1 -1
  360. data/ext/pg_query/include/postgres/utils/datetime.h +4 -1
  361. data/ext/pg_query/include/postgres/utils/datum.h +1 -1
  362. data/ext/pg_query/include/postgres/utils/dsa.h +44 -5
  363. data/ext/pg_query/include/postgres/utils/elog.h +3 -8
  364. data/ext/pg_query/include/postgres/utils/errcodes.h +1 -3
  365. data/ext/pg_query/include/postgres/utils/expandeddatum.h +1 -1
  366. data/ext/pg_query/include/postgres/utils/expandedrecord.h +1 -1
  367. data/ext/pg_query/include/postgres/utils/float.h +1 -1
  368. data/ext/pg_query/include/postgres/utils/fmgroids.h +49 -16
  369. data/ext/pg_query/include/postgres/utils/fmgrprotos.h +47 -14
  370. data/ext/pg_query/include/postgres/utils/fmgrtab.h +1 -1
  371. data/ext/pg_query/include/postgres/utils/guc.h +20 -6
  372. data/ext/pg_query/include/postgres/utils/guc_hooks.h +23 -2
  373. data/ext/pg_query/include/postgres/utils/guc_tables.h +6 -5
  374. data/ext/pg_query/include/postgres/utils/hsearch.h +2 -2
  375. data/ext/pg_query/include/postgres/utils/injection_point.h +44 -0
  376. data/ext/pg_query/include/postgres/utils/inval.h +1 -1
  377. data/ext/pg_query/include/postgres/utils/logtape.h +5 -5
  378. data/ext/pg_query/include/postgres/utils/lsyscache.h +6 -3
  379. data/ext/pg_query/include/postgres/utils/memdebug.h +1 -1
  380. data/ext/pg_query/include/postgres/utils/memutils.h +12 -5
  381. data/ext/pg_query/include/postgres/utils/memutils_internal.h +53 -13
  382. data/ext/pg_query/include/postgres/utils/memutils_memorychunk.h +25 -9
  383. data/ext/pg_query/include/postgres/utils/numeric.h +6 -1
  384. data/ext/pg_query/include/postgres/utils/palloc.h +1 -15
  385. data/ext/pg_query/include/postgres/utils/partcache.h +1 -1
  386. data/ext/pg_query/include/postgres/utils/pg_locale.h +8 -7
  387. data/ext/pg_query/include/postgres/utils/pgstat_internal.h +30 -17
  388. data/ext/pg_query/include/postgres/utils/plancache.h +5 -3
  389. data/ext/pg_query/include/postgres/utils/portal.h +10 -10
  390. data/ext/pg_query/include/postgres/utils/queryenvironment.h +2 -2
  391. data/ext/pg_query/include/postgres/utils/regproc.h +1 -1
  392. data/ext/pg_query/include/postgres/utils/rel.h +14 -15
  393. data/ext/pg_query/include/postgres/utils/relcache.h +2 -5
  394. data/ext/pg_query/include/postgres/utils/reltrigger.h +1 -1
  395. data/ext/pg_query/include/postgres/utils/resowner.h +90 -9
  396. data/ext/pg_query/include/postgres/utils/ruleutils.h +1 -1
  397. data/ext/pg_query/include/postgres/utils/sharedtuplestore.h +1 -1
  398. data/ext/pg_query/include/postgres/utils/snapmgr.h +1 -52
  399. data/ext/pg_query/include/postgres/utils/snapshot.h +2 -2
  400. data/ext/pg_query/include/postgres/utils/sortsupport.h +1 -1
  401. data/ext/pg_query/include/postgres/utils/syscache.h +7 -98
  402. data/ext/pg_query/include/postgres/utils/timeout.h +3 -2
  403. data/ext/pg_query/include/postgres/utils/timestamp.h +1 -1
  404. data/ext/pg_query/include/postgres/utils/tuplesort.h +36 -9
  405. data/ext/pg_query/include/postgres/utils/tuplestore.h +2 -5
  406. data/ext/pg_query/include/postgres/utils/typcache.h +2 -1
  407. data/ext/pg_query/include/postgres/utils/varlena.h +1 -1
  408. data/ext/pg_query/include/postgres/utils/wait_event.h +28 -214
  409. data/ext/pg_query/include/postgres/utils/wait_event_types.h +218 -0
  410. data/ext/pg_query/include/postgres/utils/xml.h +4 -4
  411. data/ext/pg_query/include/postgres/varatt.h +1 -1
  412. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +1546 -792
  413. data/ext/pg_query/include/protobuf/pg_query.pb.h +58365 -46595
  414. data/ext/pg_query/pg_query.pb-c.c +6598 -3739
  415. data/ext/pg_query/pg_query_normalize.c +42 -1
  416. data/ext/pg_query/pg_query_outfuncs_json.c +3 -1
  417. data/ext/pg_query/pg_query_parse_plpgsql.c +12 -13
  418. data/ext/pg_query/pg_query_readfuncs_protobuf.c +2 -2
  419. data/ext/pg_query/pg_query_scan.c +1 -1
  420. data/ext/pg_query/postgres_deparse.c +601 -172
  421. data/ext/pg_query/src_backend_catalog_namespace.c +241 -66
  422. data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -3
  423. data/ext/pg_query/src_backend_commands_define.c +2 -3
  424. data/ext/pg_query/src_backend_nodes_bitmapset.c +137 -94
  425. data/ext/pg_query/src_backend_nodes_copyfuncs.c +1 -1
  426. data/ext/pg_query/src_backend_nodes_equalfuncs.c +1 -1
  427. data/ext/pg_query/src_backend_nodes_extensible.c +1 -1
  428. data/ext/pg_query/src_backend_nodes_list.c +3 -7
  429. data/ext/pg_query/src_backend_nodes_makefuncs.c +59 -20
  430. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +109 -2
  431. data/ext/pg_query/src_backend_nodes_value.c +1 -1
  432. data/ext/pg_query/src_backend_parser_gram.c +34491 -32136
  433. data/ext/pg_query/src_backend_parser_parser.c +8 -8
  434. data/ext/pg_query/src_backend_parser_scan.c +5637 -3028
  435. data/ext/pg_query/src_backend_parser_scansup.c +2 -1
  436. data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
  437. data/ext/pg_query/src_backend_tcop_postgres.c +34 -10
  438. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +2 -2
  439. data/ext/pg_query/src_backend_utils_adt_datum.c +8 -6
  440. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  441. data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
  442. data/ext/pg_query/src_backend_utils_adt_numutils.c +4 -5
  443. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +101 -28
  444. data/ext/pg_query/src_backend_utils_error_assert.c +1 -1
  445. data/ext/pg_query/src_backend_utils_error_elog.c +47 -42
  446. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +4 -2
  447. data/ext/pg_query/src_backend_utils_init_globals.c +15 -3
  448. data/ext/pg_query/src_backend_utils_mb_mbutils.c +11 -18
  449. data/ext/pg_query/src_backend_utils_misc_guc_tables.c +16 -6
  450. data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +8 -5
  451. data/ext/pg_query/src_backend_utils_mmgr_aset.c +308 -238
  452. data/ext/pg_query/src_backend_utils_mmgr_bump.c +728 -0
  453. data/ext/pg_query/src_backend_utils_mmgr_generation.c +273 -197
  454. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +270 -215
  455. data/ext/pg_query/src_backend_utils_mmgr_slab.c +154 -96
  456. data/ext/pg_query/src_common_encnames.c +43 -44
  457. data/ext/pg_query/src_common_hashfn.c +1 -1
  458. data/ext/pg_query/src_common_keywords.c +1 -1
  459. data/ext/pg_query/src_common_kwlist_d.h +511 -466
  460. data/ext/pg_query/src_common_kwlookup.c +1 -1
  461. data/ext/pg_query/src_common_psprintf.c +3 -3
  462. data/ext/pg_query/src_common_stringinfo.c +18 -1
  463. data/ext/pg_query/src_common_wchar.c +92 -109
  464. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +99 -5
  465. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +1 -1
  466. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +242 -143
  467. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  468. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
  469. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +19 -1
  470. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +1 -1
  471. data/ext/pg_query/src_port_pg_bitutils.c +173 -28
  472. data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
  473. data/ext/pg_query/src_port_snprintf.c +15 -18
  474. data/ext/pg_query/src_port_strerror.c +1 -3
  475. data/ext/pg_query/src_port_strlcpy.c +1 -1
  476. data/lib/pg_query/fingerprint.rb +3 -5
  477. data/lib/pg_query/param_refs.rb +2 -2
  478. data/lib/pg_query/parse.rb +5 -7
  479. data/lib/pg_query/parse_error.rb +1 -0
  480. data/lib/pg_query/pg_query_pb.rb +27 -25
  481. data/lib/pg_query/scan.rb +1 -0
  482. data/lib/pg_query/treewalker.rb +38 -15
  483. data/lib/pg_query/truncate.rb +18 -20
  484. data/lib/pg_query/version.rb +1 -1
  485. metadata +31 -82
  486. data/ext/pg_query/include/postgres/storage/backendid.h +0 -37
  487. data/ext/pg_query/include/postgres/storage/sinvaladt.h +0 -45
  488. data/ext/pg_query/pg_query_ruby_freebsd.sym +0 -2
  489. data/ext/pg_query/src_backend_nodes_nodes.c +0 -38
  490. /data/ext/pg_query/{pg_query_ruby.sym → ext_symbols.sym} +0 -0
@@ -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
  /*
@@ -476,6 +484,9 @@ typedef struct ResultRelInfo
476
484
  /* Have the projection and the slots above been initialized? */
477
485
  bool ri_projectNewInfoValid;
478
486
 
487
+ /* updates do LockTuple() before oldtup read; see README.tuplock */
488
+ bool ri_needLockTagTuple;
489
+
479
490
  /* triggers to be fired, if any */
480
491
  TriggerDesc *ri_TrigDesc;
481
492
 
@@ -538,9 +549,11 @@ typedef struct ResultRelInfo
538
549
  /* ON CONFLICT evaluation state */
539
550
  OnConflictSetState *ri_onConflict;
540
551
 
541
- /* for MERGE, lists of MergeActionState */
542
- List *ri_matchedMergeAction;
543
- List *ri_notMatchedMergeAction;
552
+ /* for MERGE, lists of MergeActionState (one per MergeMatchKind) */
553
+ List *ri_MergeActions[NUM_MERGE_MATCH_KINDS];
554
+
555
+ /* for MERGE, expr state for checking the join condition */
556
+ ExprState *ri_MergeJoinCondition;
544
557
 
545
558
  /* partition check expression state (NULL if not set up yet) */
546
559
  ExprState *ri_PartitionCheckExpr;
@@ -990,7 +1003,7 @@ typedef struct SubPlanState
990
1003
  typedef enum DomainConstraintType
991
1004
  {
992
1005
  DOM_CONSTRAINT_NOTNULL,
993
- DOM_CONSTRAINT_CHECK
1006
+ DOM_CONSTRAINT_CHECK,
994
1007
  } DomainConstraintType;
995
1008
 
996
1009
  typedef struct DomainConstraintState
@@ -1002,6 +1015,77 @@ typedef struct DomainConstraintState
1002
1015
  ExprState *check_exprstate; /* check_expr's eval state, or NULL */
1003
1016
  } DomainConstraintState;
1004
1017
 
1018
+ /*
1019
+ * State for JsonExpr evaluation, too big to inline.
1020
+ *
1021
+ * This contains the information going into and coming out of the
1022
+ * EEOP_JSONEXPR_PATH eval step.
1023
+ */
1024
+ typedef struct JsonExprState
1025
+ {
1026
+ /* original expression node */
1027
+ JsonExpr *jsexpr;
1028
+
1029
+ /* value/isnull for formatted_expr */
1030
+ NullableDatum formatted_expr;
1031
+
1032
+ /* value/isnull for pathspec */
1033
+ NullableDatum pathspec;
1034
+
1035
+ /* JsonPathVariable entries for passing_values */
1036
+ List *args;
1037
+
1038
+ /*
1039
+ * Output variables that drive the EEOP_JUMP_IF_NOT_TRUE steps that are
1040
+ * added for ON ERROR and ON EMPTY expressions, if any.
1041
+ *
1042
+ * Reset for each evaluation of EEOP_JSONEXPR_PATH.
1043
+ */
1044
+
1045
+ /* Set to true if jsonpath evaluation cause an error. */
1046
+ NullableDatum error;
1047
+
1048
+ /* Set to true if the jsonpath evaluation returned 0 items. */
1049
+ NullableDatum empty;
1050
+
1051
+ /*
1052
+ * Addresses of steps that implement the non-ERROR variant of ON EMPTY and
1053
+ * ON ERROR behaviors, respectively.
1054
+ */
1055
+ int jump_empty;
1056
+ int jump_error;
1057
+
1058
+ /*
1059
+ * Address of the step to coerce the result value of jsonpath evaluation
1060
+ * to the RETURNING type. -1 if no coercion if JsonExpr.use_io_coercion
1061
+ * is true.
1062
+ */
1063
+ int jump_eval_coercion;
1064
+
1065
+ /*
1066
+ * Address to jump to when skipping all the steps after performing
1067
+ * ExecEvalJsonExprPath() so as to return whatever the JsonPath* function
1068
+ * returned as is, that is, in the cases where there's no error and no
1069
+ * coercion is necessary.
1070
+ */
1071
+ int jump_end;
1072
+
1073
+ /*
1074
+ * RETURNING type input function invocation info when
1075
+ * JsonExpr.use_io_coercion is true.
1076
+ */
1077
+ FunctionCallInfo input_fcinfo;
1078
+
1079
+ /*
1080
+ * For error-safe evaluation of coercions. When the ON ERROR behavior is
1081
+ * not ERROR, a pointer to this is passed to ExecInitExprRec() when
1082
+ * initializing the coercion expressions or to ExecInitJsonCoercion().
1083
+ *
1084
+ * Reset for each evaluation of EEOP_JSONEXPR_PATH.
1085
+ */
1086
+ ErrorSaveContext escontext;
1087
+ } JsonExprState;
1088
+
1005
1089
 
1006
1090
  /* ----------------------------------------------------------------
1007
1091
  * Executor State Trees
@@ -1319,6 +1403,16 @@ typedef struct ModifyTableState
1319
1403
  /* Flags showing which subcommands are present INS/UPD/DEL/DO NOTHING */
1320
1404
  int mt_merge_subcommands;
1321
1405
 
1406
+ /* For MERGE, the action currently being executed */
1407
+ MergeActionState *mt_merge_action;
1408
+
1409
+ /*
1410
+ * For MERGE, if there is a pending NOT MATCHED [BY TARGET] action to be
1411
+ * performed, this will be the last tuple read from the subplan; otherwise
1412
+ * it will be NULL --- see the comments in ExecMerge().
1413
+ */
1414
+ TupleTableSlot *mt_merge_pending_not_matched;
1415
+
1322
1416
  /* tuple counters for MERGE */
1323
1417
  double mt_merge_inserted;
1324
1418
  double mt_merge_updated;
@@ -1600,6 +1694,8 @@ typedef struct IndexScanState
1600
1694
  * TableSlot slot for holding tuples fetched from the table
1601
1695
  * VMBuffer buffer in use for visibility map testing, if any
1602
1696
  * PscanLen size of parallel index-only scan descriptor
1697
+ * NameCStringAttNums attnums of name typed columns to pad to NAMEDATALEN
1698
+ * NameCStringCount number of elements in the NameCStringAttNums array
1603
1699
  * ----------------
1604
1700
  */
1605
1701
  typedef struct IndexOnlyScanState
@@ -1619,6 +1715,8 @@ typedef struct IndexOnlyScanState
1619
1715
  TupleTableSlot *ioss_TableSlot;
1620
1716
  Buffer ioss_VMBuffer;
1621
1717
  Size ioss_PscanLen;
1718
+ AttrNumber *ioss_NameCStringAttNums;
1719
+ int ioss_NameCStringCount;
1622
1720
  } IndexOnlyScanState;
1623
1721
 
1624
1722
  /* ----------------
@@ -1670,7 +1768,7 @@ typedef enum
1670
1768
  {
1671
1769
  BM_INITIAL,
1672
1770
  BM_INPROGRESS,
1673
- BM_FINISHED
1771
+ BM_FINISHED,
1674
1772
  } SharedBitmapState;
1675
1773
 
1676
1774
  /* ----------------
@@ -1683,7 +1781,6 @@ typedef enum
1683
1781
  * prefetch_target current target prefetch distance
1684
1782
  * state current state of the TIDBitmap
1685
1783
  * cv conditional wait variable
1686
- * phs_snapshot_data snapshot data shared to workers
1687
1784
  * ----------------
1688
1785
  */
1689
1786
  typedef struct ParallelBitmapHeapState
@@ -1695,7 +1792,6 @@ typedef struct ParallelBitmapHeapState
1695
1792
  int prefetch_target;
1696
1793
  SharedBitmapState state;
1697
1794
  ConditionVariable cv;
1698
- char phs_snapshot_data[FLEXIBLE_ARRAY_MEMBER];
1699
1795
  } ParallelBitmapHeapState;
1700
1796
 
1701
1797
  /* ----------------
@@ -1705,17 +1801,13 @@ typedef struct ParallelBitmapHeapState
1705
1801
  * tbm bitmap obtained from child index scan(s)
1706
1802
  * tbmiterator iterator for scanning current pages
1707
1803
  * 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
1804
+ * pvmbuffer buffer for visibility-map lookups of prefetched pages
1712
1805
  * exact_pages total number of exact pages retrieved
1713
1806
  * lossy_pages total number of lossy pages retrieved
1714
1807
  * prefetch_iterator iterator for prefetching ahead of current page
1715
1808
  * prefetch_pages # pages prefetch iterator is ahead of current
1716
1809
  * prefetch_target current target prefetch distance
1717
1810
  * prefetch_maximum maximum value for prefetch_target
1718
- * pscan_len size of the shared memory for parallel bitmap
1719
1811
  * initialized is node is ready to iterate
1720
1812
  * shared_tbmiterator shared iterator
1721
1813
  * shared_prefetch_iterator shared iterator for prefetching
@@ -1729,9 +1821,6 @@ typedef struct BitmapHeapScanState
1729
1821
  TIDBitmap *tbm;
1730
1822
  TBMIterator *tbmiterator;
1731
1823
  TBMIterateResult *tbmres;
1732
- bool can_skip_fetch;
1733
- int return_empty_tuples;
1734
- Buffer vmbuffer;
1735
1824
  Buffer pvmbuffer;
1736
1825
  long exact_pages;
1737
1826
  long lossy_pages;
@@ -1739,7 +1828,6 @@ typedef struct BitmapHeapScanState
1739
1828
  int prefetch_pages;
1740
1829
  int prefetch_target;
1741
1830
  int prefetch_maximum;
1742
- Size pscan_len;
1743
1831
  bool initialized;
1744
1832
  TBMSharedIterator *shared_tbmiterator;
1745
1833
  TBMSharedIterator *shared_prefetch_iterator;
@@ -1754,7 +1842,6 @@ typedef struct BitmapHeapScanState
1754
1842
  * NumTids number of tids in this scan
1755
1843
  * TidPtr index of currently fetched tid
1756
1844
  * TidList evaluated item pointers (array of size NumTids)
1757
- * htup currently-fetched tuple, if any
1758
1845
  * ----------------
1759
1846
  */
1760
1847
  typedef struct TidScanState
@@ -1765,7 +1852,6 @@ typedef struct TidScanState
1765
1852
  int tss_NumTids;
1766
1853
  int tss_TidPtr;
1767
1854
  ItemPointerData *tss_TidList;
1768
- HeapTupleData tss_htup;
1769
1855
  } TidScanState;
1770
1856
 
1771
1857
  /* ----------------
@@ -1876,6 +1962,8 @@ typedef struct TableFuncScanState
1876
1962
  ExprState *rowexpr; /* state for row-generating expression */
1877
1963
  List *colexprs; /* state for column-generating expression */
1878
1964
  List *coldefexprs; /* state for column default expressions */
1965
+ List *colvalexprs; /* state for column value expressions */
1966
+ List *passingvalexprs; /* state for PASSING argument expressions */
1879
1967
  List *ns_names; /* same as TableFunc.ns_names */
1880
1968
  List *ns_uris; /* list of states of namespace URI exprs */
1881
1969
  Bitmapset *notnulls; /* nullability flag for each output column */
@@ -2447,7 +2535,6 @@ typedef struct AggState
2447
2535
  #define FIELDNO_AGGSTATE_ALL_PERGROUPS 53
2448
2536
  AggStatePerGroup *all_pergroups; /* array of first ->pergroups, than
2449
2537
  * ->hash_pergroup */
2450
- ProjectionInfo *combinedproj; /* projection machinery */
2451
2538
  SharedAggInfo *shared_info; /* one entry per worker */
2452
2539
  } AggState;
2453
2540
 
@@ -2467,7 +2554,7 @@ typedef enum WindowAggStatus
2467
2554
  WINDOWAGG_DONE, /* No more processing to do */
2468
2555
  WINDOWAGG_RUN, /* Normal processing of window funcs */
2469
2556
  WINDOWAGG_PASSTHROUGH, /* Don't eval window funcs */
2470
- WINDOWAGG_PASSTHROUGH_STRICT /* Pass-through plus don't store new
2557
+ WINDOWAGG_PASSTHROUGH_STRICT, /* Pass-through plus don't store new
2471
2558
  * tuples during spool */
2472
2559
  } WindowAggStatus;
2473
2560
 
@@ -2745,7 +2832,7 @@ typedef enum
2745
2832
  LIMIT_WINDOWEND_TIES, /* have returned a tied row */
2746
2833
  LIMIT_SUBPLANEOF, /* at EOF of subplan (within window) */
2747
2834
  LIMIT_WINDOWEND, /* stepped off end of window */
2748
- LIMIT_WINDOWSTART /* stepped off beginning of window */
2835
+ LIMIT_WINDOWSTART, /* stepped off beginning of window */
2749
2836
  } LimitStateCond;
2750
2837
 
2751
2838
  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
  /*