pg_query 2.2.0 → 4.2.1

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 (467) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +25 -0
  3. data/README.md +59 -31
  4. data/Rakefile +2 -2
  5. data/ext/pg_query/include/access/amapi.h +45 -1
  6. data/ext/pg_query/include/access/attmap.h +1 -1
  7. data/ext/pg_query/include/access/attnum.h +2 -2
  8. data/ext/pg_query/include/access/clog.h +4 -2
  9. data/ext/pg_query/include/access/commit_ts.h +6 -9
  10. data/ext/pg_query/include/access/detoast.h +1 -11
  11. data/ext/pg_query/include/access/genam.h +15 -12
  12. data/ext/pg_query/include/access/gin.h +2 -2
  13. data/ext/pg_query/include/access/htup.h +1 -1
  14. data/ext/pg_query/include/access/htup_details.h +75 -87
  15. data/ext/pg_query/include/access/itup.h +7 -1
  16. data/ext/pg_query/include/access/parallel.h +2 -2
  17. data/ext/pg_query/include/access/printtup.h +1 -1
  18. data/ext/pg_query/include/access/relation.h +1 -1
  19. data/ext/pg_query/include/access/relscan.h +17 -2
  20. data/ext/pg_query/include/access/rmgr.h +30 -3
  21. data/ext/pg_query/include/access/rmgrlist.h +23 -23
  22. data/ext/pg_query/include/access/sdir.h +1 -1
  23. data/ext/pg_query/include/access/skey.h +1 -1
  24. data/ext/pg_query/include/access/stratnum.h +4 -2
  25. data/ext/pg_query/include/access/sysattr.h +1 -1
  26. data/ext/pg_query/include/access/table.h +2 -1
  27. data/ext/pg_query/include/access/tableam.h +272 -20
  28. data/ext/pg_query/include/access/toast_compression.h +73 -0
  29. data/ext/pg_query/include/access/transam.h +123 -13
  30. data/ext/pg_query/include/access/tupconvert.h +1 -1
  31. data/ext/pg_query/include/access/tupdesc.h +1 -1
  32. data/ext/pg_query/include/access/tupmacs.h +3 -3
  33. data/ext/pg_query/include/access/twophase.h +3 -1
  34. data/ext/pg_query/include/access/xact.h +73 -19
  35. data/ext/pg_query/include/access/xlog.h +60 -155
  36. data/ext/pg_query/include/access/xlog_internal.h +40 -13
  37. data/ext/pg_query/include/access/xlogdefs.h +8 -16
  38. data/ext/pg_query/include/access/xlogprefetcher.h +55 -0
  39. data/ext/pg_query/include/access/xlogreader.h +145 -39
  40. data/ext/pg_query/include/access/xlogrecord.h +18 -9
  41. data/ext/pg_query/include/access/xlogrecovery.h +157 -0
  42. data/ext/pg_query/include/c.h +101 -44
  43. data/ext/pg_query/include/catalog/catalog.h +3 -1
  44. data/ext/pg_query/include/catalog/catversion.h +2 -2
  45. data/ext/pg_query/include/catalog/dependency.h +8 -16
  46. data/ext/pg_query/include/catalog/genbki.h +83 -5
  47. data/ext/pg_query/include/catalog/index.h +18 -3
  48. data/ext/pg_query/include/catalog/indexing.h +12 -324
  49. data/ext/pg_query/include/catalog/namespace.h +4 -2
  50. data/ext/pg_query/include/catalog/objectaccess.h +70 -2
  51. data/ext/pg_query/include/catalog/objectaddress.h +11 -6
  52. data/ext/pg_query/include/catalog/pg_aggregate.h +14 -10
  53. data/ext/pg_query/include/catalog/pg_aggregate_d.h +2 -1
  54. data/ext/pg_query/include/catalog/pg_am.h +4 -1
  55. data/ext/pg_query/include/catalog/pg_am_d.h +3 -1
  56. data/ext/pg_query/include/catalog/pg_attribute.h +27 -10
  57. data/ext/pg_query/include/catalog/pg_attribute_d.h +21 -18
  58. data/ext/pg_query/include/catalog/pg_authid.h +7 -2
  59. data/ext/pg_query/include/catalog/pg_authid_d.h +17 -9
  60. data/ext/pg_query/include/catalog/pg_class.h +44 -14
  61. data/ext/pg_query/include/catalog/pg_class_d.h +30 -1
  62. data/ext/pg_query/include/catalog/pg_collation.h +33 -8
  63. data/ext/pg_query/include/catalog/pg_collation_d.h +20 -3
  64. data/ext/pg_query/include/catalog/pg_constraint.h +38 -12
  65. data/ext/pg_query/include/catalog/pg_constraint_d.h +10 -4
  66. data/ext/pg_query/include/catalog/pg_control.h +3 -5
  67. data/ext/pg_query/include/catalog/pg_conversion.h +7 -4
  68. data/ext/pg_query/include/catalog/pg_conversion_d.h +4 -1
  69. data/ext/pg_query/include/catalog/pg_depend.h +11 -7
  70. data/ext/pg_query/include/catalog/pg_depend_d.h +3 -1
  71. data/ext/pg_query/include/catalog/pg_event_trigger.h +9 -3
  72. data/ext/pg_query/include/catalog/pg_event_trigger_d.h +3 -1
  73. data/ext/pg_query/include/catalog/pg_index.h +17 -7
  74. data/ext/pg_query/include/catalog/pg_index_d.h +20 -17
  75. data/ext/pg_query/include/catalog/pg_language.h +10 -5
  76. data/ext/pg_query/include/catalog/pg_language_d.h +3 -1
  77. data/ext/pg_query/include/catalog/pg_namespace.h +7 -2
  78. data/ext/pg_query/include/catalog/pg_namespace_d.h +3 -1
  79. data/ext/pg_query/include/catalog/pg_opclass.h +8 -5
  80. data/ext/pg_query/include/catalog/pg_opclass_d.h +3 -1
  81. data/ext/pg_query/include/catalog/pg_operator.h +18 -15
  82. data/ext/pg_query/include/catalog/pg_operator_d.h +37 -1
  83. data/ext/pg_query/include/catalog/pg_opfamily.h +6 -3
  84. data/ext/pg_query/include/catalog/pg_opfamily_d.h +3 -1
  85. data/ext/pg_query/include/catalog/pg_parameter_acl.h +60 -0
  86. data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +34 -0
  87. data/ext/pg_query/include/catalog/pg_partitioned_table.h +20 -9
  88. data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +2 -1
  89. data/ext/pg_query/include/catalog/pg_proc.h +20 -11
  90. data/ext/pg_query/include/catalog/pg_proc_d.h +10 -8
  91. data/ext/pg_query/include/catalog/pg_publication.h +50 -7
  92. data/ext/pg_query/include/catalog/pg_publication_d.h +3 -1
  93. data/ext/pg_query/include/catalog/pg_replication_origin.h +6 -1
  94. data/ext/pg_query/include/catalog/pg_replication_origin_d.h +5 -1
  95. data/ext/pg_query/include/catalog/pg_statistic.h +19 -12
  96. data/ext/pg_query/include/catalog/pg_statistic_d.h +2 -1
  97. data/ext/pg_query/include/catalog/pg_statistic_ext.h +19 -5
  98. data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +7 -2
  99. data/ext/pg_query/include/catalog/pg_transform.h +8 -5
  100. data/ext/pg_query/include/catalog/pg_transform_d.h +3 -1
  101. data/ext/pg_query/include/catalog/pg_trigger.h +24 -8
  102. data/ext/pg_query/include/catalog/pg_trigger_d.h +4 -1
  103. data/ext/pg_query/include/catalog/pg_ts_config.h +6 -3
  104. data/ext/pg_query/include/catalog/pg_ts_config_d.h +3 -1
  105. data/ext/pg_query/include/catalog/pg_ts_dict.h +8 -3
  106. data/ext/pg_query/include/catalog/pg_ts_dict_d.h +3 -1
  107. data/ext/pg_query/include/catalog/pg_ts_parser.h +6 -3
  108. data/ext/pg_query/include/catalog/pg_ts_parser_d.h +3 -1
  109. data/ext/pg_query/include/catalog/pg_ts_template.h +6 -3
  110. data/ext/pg_query/include/catalog/pg_ts_template_d.h +3 -1
  111. data/ext/pg_query/include/catalog/pg_type.h +55 -24
  112. data/ext/pg_query/include/catalog/pg_type_d.h +70 -31
  113. data/ext/pg_query/include/catalog/storage.h +5 -3
  114. data/ext/pg_query/include/commands/async.h +3 -4
  115. data/ext/pg_query/include/commands/dbcommands.h +2 -1
  116. data/ext/pg_query/include/commands/defrem.h +11 -24
  117. data/ext/pg_query/include/commands/event_trigger.h +2 -2
  118. data/ext/pg_query/include/commands/explain.h +1 -1
  119. data/ext/pg_query/include/commands/prepare.h +1 -1
  120. data/ext/pg_query/include/commands/tablespace.h +2 -2
  121. data/ext/pg_query/include/commands/trigger.h +18 -16
  122. data/ext/pg_query/include/commands/user.h +2 -2
  123. data/ext/pg_query/include/commands/vacuum.h +88 -41
  124. data/ext/pg_query/include/commands/variable.h +1 -1
  125. data/ext/pg_query/include/common/file_perm.h +4 -4
  126. data/ext/pg_query/include/common/hashfn.h +1 -1
  127. data/ext/pg_query/include/common/ip.h +1 -7
  128. data/ext/pg_query/include/common/keywords.h +2 -6
  129. data/ext/pg_query/include/common/kwlookup.h +1 -1
  130. data/ext/pg_query/include/common/pg_prng.h +60 -0
  131. data/ext/pg_query/include/common/relpath.h +2 -2
  132. data/ext/pg_query/include/common/string.h +24 -1
  133. data/ext/pg_query/include/common/unicode_combining_table.h +114 -2
  134. data/ext/pg_query/include/common/unicode_east_asian_fw_table.h +125 -0
  135. data/ext/pg_query/include/datatype/timestamp.h +40 -1
  136. data/ext/pg_query/include/executor/execdesc.h +1 -1
  137. data/ext/pg_query/include/executor/executor.h +65 -22
  138. data/ext/pg_query/include/executor/functions.h +17 -3
  139. data/ext/pg_query/include/executor/instrument.h +33 -16
  140. data/ext/pg_query/include/executor/spi.h +41 -3
  141. data/ext/pg_query/include/executor/tablefunc.h +1 -1
  142. data/ext/pg_query/include/executor/tuptable.h +1 -1
  143. data/ext/pg_query/include/fmgr.h +13 -7
  144. data/ext/pg_query/include/funcapi.h +16 -4
  145. data/ext/pg_query/include/getaddrinfo.h +1 -1
  146. data/ext/pg_query/include/jit/jit.h +11 -11
  147. data/ext/pg_query/include/kwlist_d.h +517 -494
  148. data/ext/pg_query/include/lib/dshash.h +112 -0
  149. data/ext/pg_query/include/lib/ilist.h +20 -1
  150. data/ext/pg_query/include/lib/pairingheap.h +1 -1
  151. data/ext/pg_query/include/lib/simplehash.h +140 -15
  152. data/ext/pg_query/include/lib/sort_template.h +432 -0
  153. data/ext/pg_query/include/lib/stringinfo.h +1 -1
  154. data/ext/pg_query/include/libpq/auth.h +6 -4
  155. data/ext/pg_query/include/libpq/crypt.h +5 -4
  156. data/ext/pg_query/include/libpq/hba.h +43 -4
  157. data/ext/pg_query/include/libpq/libpq-be.h +23 -6
  158. data/ext/pg_query/include/libpq/libpq.h +30 -20
  159. data/ext/pg_query/include/libpq/pqcomm.h +17 -31
  160. data/ext/pg_query/include/libpq/pqformat.h +1 -1
  161. data/ext/pg_query/include/libpq/pqsignal.h +4 -4
  162. data/ext/pg_query/include/mb/pg_wchar.h +105 -23
  163. data/ext/pg_query/include/mb/stringinfo_mb.h +1 -1
  164. data/ext/pg_query/include/miscadmin.h +47 -41
  165. data/ext/pg_query/include/nodes/bitmapset.h +1 -1
  166. data/ext/pg_query/include/nodes/execnodes.h +270 -78
  167. data/ext/pg_query/include/nodes/extensible.h +4 -2
  168. data/ext/pg_query/include/nodes/lockoptions.h +1 -1
  169. data/ext/pg_query/include/nodes/makefuncs.h +7 -6
  170. data/ext/pg_query/include/nodes/memnodes.h +5 -3
  171. data/ext/pg_query/include/nodes/nodeFuncs.h +1 -1
  172. data/ext/pg_query/include/nodes/nodes.h +30 -11
  173. data/ext/pg_query/include/nodes/params.h +1 -1
  174. data/ext/pg_query/include/nodes/parsenodes.h +322 -90
  175. data/ext/pg_query/include/nodes/pathnodes.h +243 -66
  176. data/ext/pg_query/include/nodes/pg_list.h +75 -69
  177. data/ext/pg_query/include/nodes/plannodes.h +111 -28
  178. data/ext/pg_query/include/nodes/primnodes.h +99 -47
  179. data/ext/pg_query/include/nodes/print.h +1 -1
  180. data/ext/pg_query/include/nodes/tidbitmap.h +1 -1
  181. data/ext/pg_query/include/nodes/value.h +58 -39
  182. data/ext/pg_query/include/optimizer/cost.h +9 -2
  183. data/ext/pg_query/include/optimizer/geqo.h +9 -7
  184. data/ext/pg_query/include/optimizer/geqo_gene.h +1 -1
  185. data/ext/pg_query/include/optimizer/optimizer.h +25 -17
  186. data/ext/pg_query/include/optimizer/paths.h +6 -6
  187. data/ext/pg_query/include/optimizer/planmain.h +15 -14
  188. data/ext/pg_query/include/parser/analyze.h +19 -5
  189. data/ext/pg_query/include/parser/gram.h +947 -913
  190. data/ext/pg_query/include/parser/gramparse.h +1 -1
  191. data/ext/pg_query/include/parser/kwlist.h +463 -453
  192. data/ext/pg_query/include/parser/parse_agg.h +2 -7
  193. data/ext/pg_query/include/parser/parse_coerce.h +3 -1
  194. data/ext/pg_query/include/parser/parse_expr.h +2 -3
  195. data/ext/pg_query/include/parser/parse_func.h +2 -1
  196. data/ext/pg_query/include/parser/parse_node.h +21 -9
  197. data/ext/pg_query/include/parser/parse_oper.h +1 -3
  198. data/ext/pg_query/include/parser/parse_relation.h +5 -4
  199. data/ext/pg_query/include/parser/parse_type.h +1 -1
  200. data/ext/pg_query/include/parser/parser.h +31 -4
  201. data/ext/pg_query/include/parser/parsetree.h +1 -1
  202. data/ext/pg_query/include/parser/scanner.h +1 -1
  203. data/ext/pg_query/include/parser/scansup.h +2 -5
  204. data/ext/pg_query/include/partitioning/partdefs.h +1 -1
  205. data/ext/pg_query/include/pg_config.h +83 -41
  206. data/ext/pg_query/include/pg_config_manual.h +74 -21
  207. data/ext/pg_query/include/pg_getopt.h +6 -6
  208. data/ext/pg_query/include/pg_query.h +5 -4
  209. data/ext/pg_query/include/pg_query_enum_defs.c +358 -241
  210. data/ext/pg_query/include/pg_query_fingerprint_conds.c +44 -7
  211. data/ext/pg_query/include/pg_query_fingerprint_defs.c +939 -113
  212. data/ext/pg_query/include/pg_query_outfuncs_conds.c +43 -13
  213. data/ext/pg_query/include/pg_query_outfuncs_defs.c +151 -26
  214. data/ext/pg_query/include/pg_query_readfuncs_conds.c +11 -2
  215. data/ext/pg_query/include/pg_query_readfuncs_defs.c +173 -30
  216. data/ext/pg_query/include/pg_trace.h +1 -1
  217. data/ext/pg_query/include/pgstat.h +449 -1238
  218. data/ext/pg_query/include/pgtime.h +14 -4
  219. data/ext/pg_query/include/pl_gram.h +126 -128
  220. data/ext/pg_query/include/pl_reserved_kwlist.h +1 -1
  221. data/ext/pg_query/include/pl_reserved_kwlist_d.h +10 -10
  222. data/ext/pg_query/include/pl_unreserved_kwlist.h +2 -3
  223. data/ext/pg_query/include/pl_unreserved_kwlist_d.h +54 -56
  224. data/ext/pg_query/include/plerrcodes.h +9 -1
  225. data/ext/pg_query/include/plpgsql.h +52 -54
  226. data/ext/pg_query/include/port/atomics/arch-arm.h +7 -1
  227. data/ext/pg_query/include/port/atomics/arch-ppc.h +1 -1
  228. data/ext/pg_query/include/port/atomics/arch-x86.h +1 -1
  229. data/ext/pg_query/include/port/atomics/fallback.h +1 -1
  230. data/ext/pg_query/include/port/atomics/generic-gcc.h +3 -3
  231. data/ext/pg_query/include/port/atomics/generic.h +1 -1
  232. data/ext/pg_query/include/port/atomics.h +1 -1
  233. data/ext/pg_query/include/port/pg_bitutils.h +40 -10
  234. data/ext/pg_query/include/port/pg_bswap.h +1 -1
  235. data/ext/pg_query/include/port/pg_crc32c.h +1 -1
  236. data/ext/pg_query/include/port.h +71 -46
  237. data/ext/pg_query/include/portability/instr_time.h +1 -1
  238. data/ext/pg_query/include/postgres.h +60 -16
  239. data/ext/pg_query/include/postmaster/autovacuum.h +17 -17
  240. data/ext/pg_query/include/postmaster/auxprocess.h +20 -0
  241. data/ext/pg_query/include/postmaster/bgworker.h +2 -1
  242. data/ext/pg_query/include/postmaster/bgworker_internals.h +2 -2
  243. data/ext/pg_query/include/postmaster/bgwriter.h +5 -5
  244. data/ext/pg_query/include/postmaster/fork_process.h +1 -1
  245. data/ext/pg_query/include/postmaster/interrupt.h +1 -1
  246. data/ext/pg_query/include/postmaster/pgarch.h +42 -8
  247. data/ext/pg_query/include/postmaster/postmaster.h +18 -17
  248. data/ext/pg_query/include/postmaster/startup.h +39 -0
  249. data/ext/pg_query/include/postmaster/syslogger.h +15 -10
  250. data/ext/pg_query/include/postmaster/walwriter.h +3 -3
  251. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +1419 -914
  252. data/ext/pg_query/include/protobuf/pg_query.pb.h +43678 -32769
  253. data/ext/pg_query/include/regex/regex.h +18 -16
  254. data/ext/pg_query/include/replication/logicallauncher.h +3 -5
  255. data/ext/pg_query/include/replication/logicalproto.h +161 -17
  256. data/ext/pg_query/include/replication/logicalworker.h +1 -1
  257. data/ext/pg_query/include/replication/origin.h +7 -7
  258. data/ext/pg_query/include/replication/reorderbuffer.h +259 -42
  259. data/ext/pg_query/include/replication/slot.h +22 -11
  260. data/ext/pg_query/include/replication/syncrep.h +5 -5
  261. data/ext/pg_query/include/replication/walreceiver.h +145 -13
  262. data/ext/pg_query/include/replication/walsender.h +8 -8
  263. data/ext/pg_query/include/rewrite/prs2lock.h +1 -1
  264. data/ext/pg_query/include/rewrite/rewriteHandler.h +1 -3
  265. data/ext/pg_query/include/rewrite/rewriteManip.h +1 -1
  266. data/ext/pg_query/include/rewrite/rewriteSupport.h +1 -1
  267. data/ext/pg_query/include/storage/backendid.h +3 -3
  268. data/ext/pg_query/include/storage/block.h +4 -10
  269. data/ext/pg_query/include/storage/buf.h +1 -1
  270. data/ext/pg_query/include/storage/bufmgr.h +19 -14
  271. data/ext/pg_query/include/storage/bufpage.h +6 -8
  272. data/ext/pg_query/include/storage/condition_variable.h +13 -2
  273. data/ext/pg_query/include/storage/dsm.h +4 -1
  274. data/ext/pg_query/include/storage/dsm_impl.h +3 -2
  275. data/ext/pg_query/include/storage/fd.h +33 -3
  276. data/ext/pg_query/include/storage/fileset.h +40 -0
  277. data/ext/pg_query/include/storage/ipc.h +4 -1
  278. data/ext/pg_query/include/storage/item.h +1 -1
  279. data/ext/pg_query/include/storage/itemid.h +1 -1
  280. data/ext/pg_query/include/storage/itemptr.h +3 -1
  281. data/ext/pg_query/include/storage/large_object.h +2 -2
  282. data/ext/pg_query/include/storage/latch.h +9 -13
  283. data/ext/pg_query/include/storage/lmgr.h +2 -1
  284. data/ext/pg_query/include/storage/lock.h +11 -8
  285. data/ext/pg_query/include/storage/lockdefs.h +2 -2
  286. data/ext/pg_query/include/storage/lwlock.h +5 -32
  287. data/ext/pg_query/include/storage/lwlocknames.h +0 -1
  288. data/ext/pg_query/include/storage/off.h +1 -1
  289. data/ext/pg_query/include/storage/pg_sema.h +1 -1
  290. data/ext/pg_query/include/storage/pg_shmem.h +9 -7
  291. data/ext/pg_query/include/storage/pmsignal.h +15 -4
  292. data/ext/pg_query/include/storage/predicate.h +4 -4
  293. data/ext/pg_query/include/storage/proc.h +173 -59
  294. data/ext/pg_query/include/storage/procarray.h +98 -0
  295. data/ext/pg_query/include/storage/proclist_types.h +1 -1
  296. data/ext/pg_query/include/storage/procsignal.h +3 -7
  297. data/ext/pg_query/include/storage/relfilenode.h +1 -1
  298. data/ext/pg_query/include/storage/s_lock.h +60 -21
  299. data/ext/pg_query/include/storage/sharedfileset.h +3 -11
  300. data/ext/pg_query/include/storage/shm_mq.h +5 -4
  301. data/ext/pg_query/include/storage/shm_toc.h +1 -1
  302. data/ext/pg_query/include/storage/shmem.h +1 -1
  303. data/ext/pg_query/include/storage/sinval.h +3 -3
  304. data/ext/pg_query/include/storage/sinvaladt.h +1 -1
  305. data/ext/pg_query/include/storage/smgr.h +10 -8
  306. data/ext/pg_query/include/storage/spin.h +2 -2
  307. data/ext/pg_query/include/storage/standby.h +13 -6
  308. data/ext/pg_query/include/storage/standbydefs.h +2 -2
  309. data/ext/pg_query/include/storage/sync.h +7 -3
  310. data/ext/pg_query/include/tcop/cmdtag.h +1 -1
  311. data/ext/pg_query/include/tcop/cmdtaglist.h +3 -2
  312. data/ext/pg_query/include/tcop/deparse_utility.h +1 -1
  313. data/ext/pg_query/include/tcop/dest.h +1 -1
  314. data/ext/pg_query/include/tcop/fastpath.h +1 -2
  315. data/ext/pg_query/include/tcop/pquery.h +1 -1
  316. data/ext/pg_query/include/tcop/tcopprot.h +19 -11
  317. data/ext/pg_query/include/tcop/utility.h +7 -3
  318. data/ext/pg_query/include/tsearch/ts_cache.h +2 -2
  319. data/ext/pg_query/include/utils/acl.h +24 -3
  320. data/ext/pg_query/include/utils/aclchk_internal.h +1 -1
  321. data/ext/pg_query/include/utils/array.h +7 -2
  322. data/ext/pg_query/include/utils/backend_progress.h +44 -0
  323. data/ext/pg_query/include/utils/backend_status.h +321 -0
  324. data/ext/pg_query/include/utils/builtins.h +10 -11
  325. data/ext/pg_query/include/utils/bytea.h +3 -2
  326. data/ext/pg_query/include/utils/catcache.h +1 -1
  327. data/ext/pg_query/include/utils/date.h +1 -1
  328. data/ext/pg_query/include/utils/datetime.h +8 -7
  329. data/ext/pg_query/include/utils/datum.h +9 -1
  330. data/ext/pg_query/include/utils/dsa.h +1 -1
  331. data/ext/pg_query/include/utils/dynahash.h +4 -3
  332. data/ext/pg_query/include/utils/elog.h +52 -21
  333. data/ext/pg_query/include/utils/errcodes.h +2 -0
  334. data/ext/pg_query/include/utils/expandeddatum.h +1 -1
  335. data/ext/pg_query/include/utils/expandedrecord.h +1 -1
  336. data/ext/pg_query/include/utils/float.h +7 -7
  337. data/ext/pg_query/include/utils/fmgroids.h +1300 -696
  338. data/ext/pg_query/include/utils/fmgrprotos.h +199 -16
  339. data/ext/pg_query/include/utils/fmgrtab.h +6 -5
  340. data/ext/pg_query/include/utils/guc.h +69 -43
  341. data/ext/pg_query/include/utils/guc_tables.h +23 -19
  342. data/ext/pg_query/include/utils/hsearch.h +15 -11
  343. data/ext/pg_query/include/utils/inval.h +4 -1
  344. data/ext/pg_query/include/utils/lsyscache.h +11 -1
  345. data/ext/pg_query/include/utils/memdebug.h +1 -1
  346. data/ext/pg_query/include/utils/memutils.h +8 -3
  347. data/ext/pg_query/include/utils/numeric.h +19 -5
  348. data/ext/pg_query/include/utils/palloc.h +25 -3
  349. data/ext/pg_query/include/utils/partcache.h +1 -1
  350. data/ext/pg_query/include/utils/pg_locale.h +17 -9
  351. data/ext/pg_query/include/utils/pg_lsn.h +1 -1
  352. data/ext/pg_query/include/utils/pgstat_internal.h +784 -0
  353. data/ext/pg_query/include/utils/pidfile.h +1 -1
  354. data/ext/pg_query/include/utils/plancache.h +6 -5
  355. data/ext/pg_query/include/utils/portal.h +10 -12
  356. data/ext/pg_query/include/utils/ps_status.h +1 -1
  357. data/ext/pg_query/include/utils/queryenvironment.h +1 -1
  358. data/ext/pg_query/include/utils/queryjumble.h +88 -0
  359. data/ext/pg_query/include/utils/regproc.h +14 -3
  360. data/ext/pg_query/include/utils/rel.h +71 -19
  361. data/ext/pg_query/include/utils/relcache.h +8 -5
  362. data/ext/pg_query/include/utils/reltrigger.h +1 -1
  363. data/ext/pg_query/include/utils/resowner.h +1 -1
  364. data/ext/pg_query/include/utils/rls.h +2 -2
  365. data/ext/pg_query/include/utils/ruleutils.h +4 -1
  366. data/ext/pg_query/include/utils/sharedtuplestore.h +1 -1
  367. data/ext/pg_query/include/utils/snapmgr.h +34 -14
  368. data/ext/pg_query/include/utils/snapshot.h +14 -1
  369. data/ext/pg_query/include/utils/sortsupport.h +117 -2
  370. data/ext/pg_query/include/utils/syscache.h +6 -1
  371. data/ext/pg_query/include/utils/timeout.h +11 -4
  372. data/ext/pg_query/include/utils/timestamp.h +6 -5
  373. data/ext/pg_query/include/utils/tuplesort.h +25 -11
  374. data/ext/pg_query/include/utils/tuplestore.h +2 -2
  375. data/ext/pg_query/include/utils/typcache.h +24 -17
  376. data/ext/pg_query/include/utils/tzparser.h +1 -1
  377. data/ext/pg_query/include/utils/varlena.h +5 -3
  378. data/ext/pg_query/include/utils/wait_event.h +289 -0
  379. data/ext/pg_query/include/utils/xml.h +4 -4
  380. data/ext/pg_query/pg_query.pb-c.c +4302 -2304
  381. data/ext/pg_query/pg_query_deparse.c +1106 -373
  382. data/ext/pg_query/pg_query_fingerprint.c +30 -10
  383. data/ext/pg_query/pg_query_json_plpgsql.c +0 -25
  384. data/ext/pg_query/pg_query_normalize.c +1 -1
  385. data/ext/pg_query/pg_query_outfuncs_json.c +54 -16
  386. data/ext/pg_query/pg_query_outfuncs_protobuf.c +70 -10
  387. data/ext/pg_query/pg_query_parse.c +1 -1
  388. data/ext/pg_query/pg_query_readfuncs_protobuf.c +42 -8
  389. data/ext/pg_query/pg_query_scan.c +2 -1
  390. data/ext/pg_query/pg_query_split.c +3 -2
  391. data/ext/pg_query/src_backend_catalog_namespace.c +20 -9
  392. data/ext/pg_query/src_backend_catalog_pg_proc.c +4 -1
  393. data/ext/pg_query/src_backend_commands_define.c +11 -1
  394. data/ext/pg_query/src_backend_nodes_bitmapset.c +3 -1
  395. data/ext/pg_query/src_backend_nodes_copyfuncs.c +401 -76
  396. data/ext/pg_query/src_backend_nodes_equalfuncs.c +290 -46
  397. data/ext/pg_query/src_backend_nodes_extensible.c +1 -1
  398. data/ext/pg_query/src_backend_nodes_list.c +74 -11
  399. data/ext/pg_query/src_backend_nodes_makefuncs.c +5 -4
  400. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +55 -12
  401. data/ext/pg_query/src_backend_nodes_value.c +28 -19
  402. data/ext/pg_query/src_backend_parser_gram.c +33874 -31261
  403. data/ext/pg_query/src_backend_parser_parser.c +26 -7
  404. data/ext/pg_query/src_backend_parser_scan.c +172 -209
  405. data/ext/pg_query/src_backend_parser_scansup.c +4 -28
  406. data/ext/pg_query/src_backend_postmaster_postmaster.c +77 -106
  407. data/ext/pg_query/src_backend_storage_ipc_ipc.c +13 -4
  408. data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +5 -4
  409. data/ext/pg_query/src_backend_tcop_postgres.c +62 -23
  410. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +140 -0
  411. data/ext/pg_query/src_backend_utils_adt_datum.c +13 -1
  412. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  413. data/ext/pg_query/src_backend_utils_adt_format_type.c +6 -2
  414. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +71 -5
  415. data/ext/pg_query/src_backend_utils_error_assert.c +16 -14
  416. data/ext/pg_query/src_backend_utils_error_elog.c +172 -99
  417. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +12 -17
  418. data/ext/pg_query/src_backend_utils_hash_dynahash.c +40 -10
  419. data/ext/pg_query/src_backend_utils_init_globals.c +5 -5
  420. data/ext/pg_query/src_backend_utils_mb_mbutils.c +55 -66
  421. data/ext/pg_query/src_backend_utils_misc_guc.c +206 -45
  422. data/ext/pg_query/src_backend_utils_mmgr_aset.c +7 -5
  423. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +123 -35
  424. data/ext/pg_query/src_common_encnames.c +1 -1
  425. data/ext/pg_query/src_common_hashfn.c +3 -3
  426. data/ext/pg_query/src_common_keywords.c +15 -2
  427. data/ext/pg_query/src_common_kwlist_d.h +517 -494
  428. data/ext/pg_query/src_common_kwlookup.c +1 -1
  429. data/ext/pg_query/src_common_pg_prng.c +152 -0
  430. data/ext/pg_query/src_common_psprintf.c +1 -1
  431. data/ext/pg_query/src_common_string.c +7 -1
  432. data/ext/pg_query/src_common_stringinfo.c +1 -1
  433. data/ext/pg_query/src_common_wchar.c +701 -109
  434. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +45 -20
  435. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +1 -18
  436. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1233 -1259
  437. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  438. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +10 -10
  439. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +2 -2
  440. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +54 -56
  441. data/ext/pg_query/src_port_pg_bitutils.c +41 -31
  442. data/ext/pg_query/src_port_pgsleep.c +1 -1
  443. data/ext/pg_query/src_port_pgstrcasecmp.c +1 -1
  444. data/ext/pg_query/src_port_qsort.c +12 -224
  445. data/ext/pg_query/src_port_snprintf.c +37 -13
  446. data/ext/pg_query/src_port_strerror.c +9 -19
  447. data/ext/pg_query/src_port_strnlen.c +1 -1
  448. data/lib/pg_query/filter_columns.rb +1 -1
  449. data/lib/pg_query/fingerprint.rb +5 -1
  450. data/lib/pg_query/node.rb +2 -2
  451. data/lib/pg_query/param_refs.rb +1 -1
  452. data/lib/pg_query/parse.rb +20 -8
  453. data/lib/pg_query/pg_query_pb.rb +1108 -942
  454. data/lib/pg_query/treewalker.rb +6 -0
  455. data/lib/pg_query/truncate.rb +1 -1
  456. data/lib/pg_query/version.rb +1 -1
  457. metadata +27 -17
  458. data/ext/pg_query/include/access/xloginsert.h +0 -64
  459. data/ext/pg_query/include/bootstrap/bootstrap.h +0 -62
  460. data/ext/pg_query/include/parser/parse_clause.h +0 -54
  461. data/ext/pg_query/include/parser/parse_collate.h +0 -27
  462. data/ext/pg_query/include/parser/parse_target.h +0 -46
  463. data/ext/pg_query/pg_query_ruby_freebsd.sym +0 -2
  464. data/ext/pg_query/src_backend_libpq_pqcomm.c +0 -659
  465. data/ext/pg_query/src_backend_parser_parse_expr.c +0 -313
  466. data/ext/pg_query/src_port_erand48.c +0 -127
  467. data/ext/pg_query/src_port_random.c +0 -31
@@ -59,15 +59,22 @@
59
59
  * - _equalAppendRelInfo
60
60
  * - _equalPlaceHolderInfo
61
61
  * - _equalList
62
- * - _equalValue
62
+ * - _equalInteger
63
+ * - _equalFloat
64
+ * - _equalBoolean
65
+ * - _equalString
66
+ * - _equalBitString
63
67
  * - _equalExtensibleNode
64
68
  * - _equalQuery
65
69
  * - _equalRawStmt
66
70
  * - _equalInsertStmt
67
71
  * - _equalDeleteStmt
68
72
  * - _equalUpdateStmt
73
+ * - _equalMergeStmt
69
74
  * - _equalSelectStmt
70
75
  * - _equalSetOperationStmt
76
+ * - _equalReturnStmt
77
+ * - _equalPLAssignStmt
71
78
  * - _equalAlterTableStmt
72
79
  * - _equalAlterTableCmd
73
80
  * - _equalAlterCollationStmt
@@ -119,6 +126,7 @@
119
126
  * - _equalAlterOpFamilyStmt
120
127
  * - _equalCreatedbStmt
121
128
  * - _equalAlterDatabaseStmt
129
+ * - _equalAlterDatabaseRefreshCollStmt
122
130
  * - _equalAlterDatabaseSetStmt
123
131
  * - _equalDropdbStmt
124
132
  * - _equalVacuumStmt
@@ -179,13 +187,13 @@
179
187
  * - _equalCreateSubscriptionStmt
180
188
  * - _equalAlterSubscriptionStmt
181
189
  * - _equalDropSubscriptionStmt
182
- * - _equalAExpr
190
+ * - _equalA_Expr
183
191
  * - _equalColumnRef
184
192
  * - _equalParamRef
185
- * - _equalAConst
193
+ * - _equalA_Const
186
194
  * - _equalFuncCall
187
- * - _equalAStar
188
- * - _equalAIndices
195
+ * - _equalA_Star
196
+ * - _equalA_Indices
189
197
  * - _equalA_Indirection
190
198
  * - _equalA_ArrayExpr
191
199
  * - _equalResTarget
@@ -201,6 +209,7 @@
201
209
  * - _equalRangeTableFuncCol
202
210
  * - _equalTypeName
203
211
  * - _equalIndexElem
212
+ * - _equalStatsElem
204
213
  * - _equalColumnDef
205
214
  * - _equalConstraint
206
215
  * - _equalDefElem
@@ -216,7 +225,11 @@
216
225
  * - _equalWithClause
217
226
  * - _equalInferClause
218
227
  * - _equalOnConflictClause
228
+ * - _equalCTESearchClause
229
+ * - _equalCTECycleClause
219
230
  * - _equalCommonTableExpr
231
+ * - _equalMergeWhenClause
232
+ * - _equalMergeAction
220
233
  * - _equalObjectWithArgs
221
234
  * - _equalAccessPriv
222
235
  * - _equalXmlSerialize
@@ -227,6 +240,8 @@
227
240
  * - _equalPartitionBoundSpec
228
241
  * - _equalPartitionRangeDatum
229
242
  * - _equalPartitionCmd
243
+ * - _equalPublicationObject
244
+ * - _equalPublicationTable
230
245
  *--------------------------------------------------------------------
231
246
  */
232
247
 
@@ -250,7 +265,7 @@
250
265
  * "x" to be considered equal() to another reference to "x" in the query.
251
266
  *
252
267
  *
253
- * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group
268
+ * Portions Copyright (c) 1996-2022, PostgreSQL Global Development Group
254
269
  * Portions Copyright (c) 1994, Regents of the University of California
255
270
  *
256
271
  * IDENTIFICATION
@@ -306,6 +321,13 @@
306
321
  #define equalstr(a, b) \
307
322
  (((a) != NULL && (b) != NULL) ? (strcmp(a, b) == 0) : (a) == (b))
308
323
 
324
+ /* Compare a field that is an inline array */
325
+ #define COMPARE_ARRAY_FIELD(fldname) \
326
+ do { \
327
+ if (memcmp(a->fldname, b->fldname, sizeof(a->fldname)) != 0) \
328
+ return false; \
329
+ } while (0)
330
+
309
331
  /* Compare a field that is a pointer to a simple palloc'd object of size sz */
310
332
  #define COMPARE_POINTER_FIELD(fldname, sz) \
311
333
  do { \
@@ -464,6 +486,8 @@ _equalAggref(const Aggref *a, const Aggref *b)
464
486
  COMPARE_SCALAR_FIELD(aggkind);
465
487
  COMPARE_SCALAR_FIELD(agglevelsup);
466
488
  COMPARE_SCALAR_FIELD(aggsplit);
489
+ COMPARE_SCALAR_FIELD(aggno);
490
+ COMPARE_SCALAR_FIELD(aggtransno);
467
491
  COMPARE_LOCATION_FIELD(location);
468
492
 
469
493
  return true;
@@ -506,6 +530,7 @@ _equalSubscriptingRef(const SubscriptingRef *a, const SubscriptingRef *b)
506
530
  {
507
531
  COMPARE_SCALAR_FIELD(refcontainertype);
508
532
  COMPARE_SCALAR_FIELD(refelemtype);
533
+ COMPARE_SCALAR_FIELD(refrestype);
509
534
  COMPARE_SCALAR_FIELD(reftypmod);
510
535
  COMPARE_SCALAR_FIELD(refcollid);
511
536
  COMPARE_NODE_FIELD(refupperindexpr);
@@ -637,6 +662,18 @@ _equalScalarArrayOpExpr(const ScalarArrayOpExpr *a, const ScalarArrayOpExpr *b)
637
662
  b->opfuncid != 0)
638
663
  return false;
639
664
 
665
+ /* As above, hashfuncid may differ too */
666
+ if (a->hashfuncid != b->hashfuncid &&
667
+ a->hashfuncid != 0 &&
668
+ b->hashfuncid != 0)
669
+ return false;
670
+
671
+ /* Likewise for the negfuncid */
672
+ if (a->negfuncid != b->negfuncid &&
673
+ a->negfuncid != 0 &&
674
+ b->negfuncid != 0)
675
+ return false;
676
+
640
677
  COMPARE_SCALAR_FIELD(useOr);
641
678
  COMPARE_SCALAR_FIELD(inputcollid);
642
679
  COMPARE_NODE_FIELD(args);
@@ -1019,6 +1056,7 @@ _equalJoinExpr(const JoinExpr *a, const JoinExpr *b)
1019
1056
  COMPARE_NODE_FIELD(larg);
1020
1057
  COMPARE_NODE_FIELD(rarg);
1021
1058
  COMPARE_NODE_FIELD(usingClause);
1059
+ COMPARE_NODE_FIELD(join_using_alias);
1022
1060
  COMPARE_NODE_FIELD(quals);
1023
1061
  COMPARE_NODE_FIELD(alias);
1024
1062
  COMPARE_SCALAR_FIELD(rtindex);
@@ -1198,6 +1236,7 @@ _equalQuery(const Query *a, const Query *b)
1198
1236
  COMPARE_SCALAR_FIELD(hasModifyingCTE);
1199
1237
  COMPARE_SCALAR_FIELD(hasForUpdate);
1200
1238
  COMPARE_SCALAR_FIELD(hasRowSecurity);
1239
+ COMPARE_SCALAR_FIELD(isReturn);
1201
1240
  COMPARE_NODE_FIELD(cteList);
1202
1241
  COMPARE_NODE_FIELD(rtable);
1203
1242
  COMPARE_NODE_FIELD(jointree);
@@ -1206,6 +1245,7 @@ _equalQuery(const Query *a, const Query *b)
1206
1245
  COMPARE_NODE_FIELD(onConflict);
1207
1246
  COMPARE_NODE_FIELD(returningList);
1208
1247
  COMPARE_NODE_FIELD(groupClause);
1248
+ COMPARE_SCALAR_FIELD(groupDistinct);
1209
1249
  COMPARE_NODE_FIELD(groupingSets);
1210
1250
  COMPARE_NODE_FIELD(havingQual);
1211
1251
  COMPARE_NODE_FIELD(windowClause);
@@ -1218,6 +1258,8 @@ _equalQuery(const Query *a, const Query *b)
1218
1258
  COMPARE_NODE_FIELD(setOperations);
1219
1259
  COMPARE_NODE_FIELD(constraintDeps);
1220
1260
  COMPARE_NODE_FIELD(withCheckOptions);
1261
+ COMPARE_NODE_FIELD(mergeActionList);
1262
+ COMPARE_SCALAR_FIELD(mergeUseOuterJoin);
1221
1263
  COMPARE_LOCATION_FIELD(stmt_location);
1222
1264
  COMPARE_SCALAR_FIELD(stmt_len);
1223
1265
 
@@ -1273,6 +1315,18 @@ _equalUpdateStmt(const UpdateStmt *a, const UpdateStmt *b)
1273
1315
  return true;
1274
1316
  }
1275
1317
 
1318
+ static bool
1319
+ _equalMergeStmt(const MergeStmt *a, const MergeStmt *b)
1320
+ {
1321
+ COMPARE_NODE_FIELD(relation);
1322
+ COMPARE_NODE_FIELD(sourceRelation);
1323
+ COMPARE_NODE_FIELD(joinCondition);
1324
+ COMPARE_NODE_FIELD(mergeWhenClauses);
1325
+ COMPARE_NODE_FIELD(withClause);
1326
+
1327
+ return true;
1328
+ }
1329
+
1276
1330
  static bool
1277
1331
  _equalSelectStmt(const SelectStmt *a, const SelectStmt *b)
1278
1332
  {
@@ -1282,6 +1336,7 @@ _equalSelectStmt(const SelectStmt *a, const SelectStmt *b)
1282
1336
  COMPARE_NODE_FIELD(fromClause);
1283
1337
  COMPARE_NODE_FIELD(whereClause);
1284
1338
  COMPARE_NODE_FIELD(groupClause);
1339
+ COMPARE_SCALAR_FIELD(groupDistinct);
1285
1340
  COMPARE_NODE_FIELD(havingClause);
1286
1341
  COMPARE_NODE_FIELD(windowClause);
1287
1342
  COMPARE_NODE_FIELD(valuesLists);
@@ -1314,12 +1369,32 @@ _equalSetOperationStmt(const SetOperationStmt *a, const SetOperationStmt *b)
1314
1369
  return true;
1315
1370
  }
1316
1371
 
1372
+ static bool
1373
+ _equalReturnStmt(const ReturnStmt *a, const ReturnStmt *b)
1374
+ {
1375
+ COMPARE_NODE_FIELD(returnval);
1376
+
1377
+ return true;
1378
+ }
1379
+
1380
+ static bool
1381
+ _equalPLAssignStmt(const PLAssignStmt *a, const PLAssignStmt *b)
1382
+ {
1383
+ COMPARE_STRING_FIELD(name);
1384
+ COMPARE_NODE_FIELD(indirection);
1385
+ COMPARE_SCALAR_FIELD(nnames);
1386
+ COMPARE_NODE_FIELD(val);
1387
+ COMPARE_LOCATION_FIELD(location);
1388
+
1389
+ return true;
1390
+ }
1391
+
1317
1392
  static bool
1318
1393
  _equalAlterTableStmt(const AlterTableStmt *a, const AlterTableStmt *b)
1319
1394
  {
1320
1395
  COMPARE_NODE_FIELD(relation);
1321
1396
  COMPARE_NODE_FIELD(cmds);
1322
- COMPARE_SCALAR_FIELD(relkind);
1397
+ COMPARE_SCALAR_FIELD(objtype);
1323
1398
  COMPARE_SCALAR_FIELD(missing_ok);
1324
1399
 
1325
1400
  return true;
@@ -1371,6 +1446,7 @@ _equalGrantStmt(const GrantStmt *a, const GrantStmt *b)
1371
1446
  COMPARE_NODE_FIELD(privileges);
1372
1447
  COMPARE_NODE_FIELD(grantees);
1373
1448
  COMPARE_SCALAR_FIELD(grant_option);
1449
+ COMPARE_NODE_FIELD(grantor);
1374
1450
  COMPARE_SCALAR_FIELD(behavior);
1375
1451
 
1376
1452
  return true;
@@ -1381,6 +1457,7 @@ _equalObjectWithArgs(const ObjectWithArgs *a, const ObjectWithArgs *b)
1381
1457
  {
1382
1458
  COMPARE_NODE_FIELD(objname);
1383
1459
  COMPARE_NODE_FIELD(objargs);
1460
+ COMPARE_NODE_FIELD(objfuncargs);
1384
1461
  COMPARE_SCALAR_FIELD(args_unspecified);
1385
1462
 
1386
1463
  return true;
@@ -1440,6 +1517,7 @@ _equalCallStmt(const CallStmt *a, const CallStmt *b)
1440
1517
  {
1441
1518
  COMPARE_NODE_FIELD(funccall);
1442
1519
  COMPARE_NODE_FIELD(funcexpr);
1520
+ COMPARE_NODE_FIELD(outargs);
1443
1521
 
1444
1522
  return true;
1445
1523
  }
@@ -1449,7 +1527,7 @@ _equalClusterStmt(const ClusterStmt *a, const ClusterStmt *b)
1449
1527
  {
1450
1528
  COMPARE_NODE_FIELD(relation);
1451
1529
  COMPARE_STRING_FIELD(indexname);
1452
- COMPARE_SCALAR_FIELD(options);
1530
+ COMPARE_NODE_FIELD(params);
1453
1531
 
1454
1532
  return true;
1455
1533
  }
@@ -1584,6 +1662,7 @@ _equalIndexStmt(const IndexStmt *a, const IndexStmt *b)
1584
1662
  COMPARE_SCALAR_FIELD(oldCreateSubid);
1585
1663
  COMPARE_SCALAR_FIELD(oldFirstRelfilenodeSubid);
1586
1664
  COMPARE_SCALAR_FIELD(unique);
1665
+ COMPARE_SCALAR_FIELD(nulls_not_distinct);
1587
1666
  COMPARE_SCALAR_FIELD(primary);
1588
1667
  COMPARE_SCALAR_FIELD(isconstraint);
1589
1668
  COMPARE_SCALAR_FIELD(deferrable);
@@ -1604,6 +1683,7 @@ _equalCreateStatsStmt(const CreateStatsStmt *a, const CreateStatsStmt *b)
1604
1683
  COMPARE_NODE_FIELD(exprs);
1605
1684
  COMPARE_NODE_FIELD(relations);
1606
1685
  COMPARE_STRING_FIELD(stxcomment);
1686
+ COMPARE_SCALAR_FIELD(transformed);
1607
1687
  COMPARE_SCALAR_FIELD(if_not_exists);
1608
1688
 
1609
1689
  return true;
@@ -1628,6 +1708,7 @@ _equalCreateFunctionStmt(const CreateFunctionStmt *a, const CreateFunctionStmt *
1628
1708
  COMPARE_NODE_FIELD(parameters);
1629
1709
  COMPARE_NODE_FIELD(returnType);
1630
1710
  COMPARE_NODE_FIELD(options);
1711
+ COMPARE_NODE_FIELD(sql_body);
1631
1712
 
1632
1713
  return true;
1633
1714
  }
@@ -1916,6 +1997,14 @@ _equalAlterDatabaseStmt(const AlterDatabaseStmt *a, const AlterDatabaseStmt *b)
1916
1997
  return true;
1917
1998
  }
1918
1999
 
2000
+ static bool
2001
+ _equalAlterDatabaseRefreshCollStmt(const AlterDatabaseRefreshCollStmt *a, const AlterDatabaseRefreshCollStmt *b)
2002
+ {
2003
+ COMPARE_STRING_FIELD(dbname);
2004
+
2005
+ return true;
2006
+ }
2007
+
1919
2008
  static bool
1920
2009
  _equalAlterDatabaseSetStmt(const AlterDatabaseSetStmt *a, const AlterDatabaseSetStmt *b)
1921
2010
  {
@@ -1969,7 +2058,7 @@ _equalCreateTableAsStmt(const CreateTableAsStmt *a, const CreateTableAsStmt *b)
1969
2058
  {
1970
2059
  COMPARE_NODE_FIELD(query);
1971
2060
  COMPARE_NODE_FIELD(into);
1972
- COMPARE_SCALAR_FIELD(relkind);
2061
+ COMPARE_SCALAR_FIELD(objtype);
1973
2062
  COMPARE_SCALAR_FIELD(is_select_into);
1974
2063
  COMPARE_SCALAR_FIELD(if_not_exists);
1975
2064
 
@@ -2253,6 +2342,8 @@ _equalCreateAmStmt(const CreateAmStmt *a, const CreateAmStmt *b)
2253
2342
  static bool
2254
2343
  _equalCreateTrigStmt(const CreateTrigStmt *a, const CreateTrigStmt *b)
2255
2344
  {
2345
+ COMPARE_SCALAR_FIELD(replace);
2346
+ COMPARE_SCALAR_FIELD(isconstraint);
2256
2347
  COMPARE_STRING_FIELD(trigname);
2257
2348
  COMPARE_NODE_FIELD(relation);
2258
2349
  COMPARE_NODE_FIELD(funcname);
@@ -2262,7 +2353,6 @@ _equalCreateTrigStmt(const CreateTrigStmt *a, const CreateTrigStmt *b)
2262
2353
  COMPARE_SCALAR_FIELD(events);
2263
2354
  COMPARE_NODE_FIELD(columns);
2264
2355
  COMPARE_NODE_FIELD(whenClause);
2265
- COMPARE_SCALAR_FIELD(isconstraint);
2266
2356
  COMPARE_NODE_FIELD(transitionRels);
2267
2357
  COMPARE_SCALAR_FIELD(deferrable);
2268
2358
  COMPARE_SCALAR_FIELD(initdeferred);
@@ -2368,8 +2458,7 @@ _equalReindexStmt(const ReindexStmt *a, const ReindexStmt *b)
2368
2458
  COMPARE_SCALAR_FIELD(kind);
2369
2459
  COMPARE_NODE_FIELD(relation);
2370
2460
  COMPARE_STRING_FIELD(name);
2371
- COMPARE_SCALAR_FIELD(options);
2372
- COMPARE_SCALAR_FIELD(concurrent);
2461
+ COMPARE_NODE_FIELD(params);
2373
2462
 
2374
2463
  return true;
2375
2464
  }
@@ -2478,13 +2567,35 @@ _equalAlterTSConfigurationStmt(const AlterTSConfigurationStmt *a,
2478
2567
  return true;
2479
2568
  }
2480
2569
 
2570
+ static bool
2571
+ _equalPublicationObject(const PublicationObjSpec *a,
2572
+ const PublicationObjSpec *b)
2573
+ {
2574
+ COMPARE_SCALAR_FIELD(pubobjtype);
2575
+ COMPARE_STRING_FIELD(name);
2576
+ COMPARE_NODE_FIELD(pubtable);
2577
+ COMPARE_LOCATION_FIELD(location);
2578
+
2579
+ return true;
2580
+ }
2581
+
2582
+ static bool
2583
+ _equalPublicationTable(const PublicationTable *a, const PublicationTable *b)
2584
+ {
2585
+ COMPARE_NODE_FIELD(relation);
2586
+ COMPARE_NODE_FIELD(whereClause);
2587
+ COMPARE_NODE_FIELD(columns);
2588
+
2589
+ return true;
2590
+ }
2591
+
2481
2592
  static bool
2482
2593
  _equalCreatePublicationStmt(const CreatePublicationStmt *a,
2483
2594
  const CreatePublicationStmt *b)
2484
2595
  {
2485
2596
  COMPARE_STRING_FIELD(pubname);
2486
2597
  COMPARE_NODE_FIELD(options);
2487
- COMPARE_NODE_FIELD(tables);
2598
+ COMPARE_NODE_FIELD(pubobjects);
2488
2599
  COMPARE_SCALAR_FIELD(for_all_tables);
2489
2600
 
2490
2601
  return true;
@@ -2496,9 +2607,9 @@ _equalAlterPublicationStmt(const AlterPublicationStmt *a,
2496
2607
  {
2497
2608
  COMPARE_STRING_FIELD(pubname);
2498
2609
  COMPARE_NODE_FIELD(options);
2499
- COMPARE_NODE_FIELD(tables);
2610
+ COMPARE_NODE_FIELD(pubobjects);
2500
2611
  COMPARE_SCALAR_FIELD(for_all_tables);
2501
- COMPARE_SCALAR_FIELD(tableAction);
2612
+ COMPARE_SCALAR_FIELD(action);
2502
2613
 
2503
2614
  return true;
2504
2615
  }
@@ -2566,7 +2677,7 @@ _equalAlterPolicyStmt(const AlterPolicyStmt *a, const AlterPolicyStmt *b)
2566
2677
  }
2567
2678
 
2568
2679
  static bool
2569
- _equalAExpr(const A_Expr *a, const A_Expr *b)
2680
+ _equalA_Expr(const A_Expr *a, const A_Expr *b)
2570
2681
  {
2571
2682
  COMPARE_SCALAR_FIELD(kind);
2572
2683
  COMPARE_NODE_FIELD(name);
@@ -2596,10 +2707,15 @@ _equalParamRef(const ParamRef *a, const ParamRef *b)
2596
2707
  }
2597
2708
 
2598
2709
  static bool
2599
- _equalAConst(const A_Const *a, const A_Const *b)
2710
+ _equalA_Const(const A_Const *a, const A_Const *b)
2600
2711
  {
2601
- if (!equal(&a->val, &b->val)) /* hack for in-line Value field */
2712
+ /*
2713
+ * Hack for in-line val field. Also val is not valid is isnull is true.
2714
+ */
2715
+ if (!a->isnull && !b->isnull &&
2716
+ !equal(&a->val, &b->val))
2602
2717
  return false;
2718
+ COMPARE_SCALAR_FIELD(isnull);
2603
2719
  COMPARE_LOCATION_FIELD(location);
2604
2720
 
2605
2721
  return true;
@@ -2612,24 +2728,25 @@ _equalFuncCall(const FuncCall *a, const FuncCall *b)
2612
2728
  COMPARE_NODE_FIELD(args);
2613
2729
  COMPARE_NODE_FIELD(agg_order);
2614
2730
  COMPARE_NODE_FIELD(agg_filter);
2731
+ COMPARE_NODE_FIELD(over);
2615
2732
  COMPARE_SCALAR_FIELD(agg_within_group);
2616
2733
  COMPARE_SCALAR_FIELD(agg_star);
2617
2734
  COMPARE_SCALAR_FIELD(agg_distinct);
2618
2735
  COMPARE_SCALAR_FIELD(func_variadic);
2619
- COMPARE_NODE_FIELD(over);
2736
+ COMPARE_COERCIONFORM_FIELD(funcformat);
2620
2737
  COMPARE_LOCATION_FIELD(location);
2621
2738
 
2622
2739
  return true;
2623
2740
  }
2624
2741
 
2625
2742
  static bool
2626
- _equalAStar(const A_Star *a, const A_Star *b)
2743
+ _equalA_Star(const A_Star *a, const A_Star *b)
2627
2744
  {
2628
2745
  return true;
2629
2746
  }
2630
2747
 
2631
2748
  static bool
2632
- _equalAIndices(const A_Indices *a, const A_Indices *b)
2749
+ _equalA_Indices(const A_Indices *a, const A_Indices *b)
2633
2750
  {
2634
2751
  COMPARE_SCALAR_FIELD(is_slice);
2635
2752
  COMPARE_NODE_FIELD(lidx);
@@ -2818,11 +2935,22 @@ _equalIndexElem(const IndexElem *a, const IndexElem *b)
2818
2935
  return true;
2819
2936
  }
2820
2937
 
2938
+
2939
+ static bool
2940
+ _equalStatsElem(const StatsElem *a, const StatsElem *b)
2941
+ {
2942
+ COMPARE_STRING_FIELD(name);
2943
+ COMPARE_NODE_FIELD(expr);
2944
+
2945
+ return true;
2946
+ }
2947
+
2821
2948
  static bool
2822
2949
  _equalColumnDef(const ColumnDef *a, const ColumnDef *b)
2823
2950
  {
2824
2951
  COMPARE_STRING_FIELD(colname);
2825
2952
  COMPARE_NODE_FIELD(typeName);
2953
+ COMPARE_STRING_FIELD(compression);
2826
2954
  COMPARE_SCALAR_FIELD(inhcount);
2827
2955
  COMPARE_SCALAR_FIELD(is_local);
2828
2956
  COMPARE_SCALAR_FIELD(is_not_null);
@@ -2854,6 +2982,7 @@ _equalConstraint(const Constraint *a, const Constraint *b)
2854
2982
  COMPARE_NODE_FIELD(raw_expr);
2855
2983
  COMPARE_STRING_FIELD(cooked_expr);
2856
2984
  COMPARE_SCALAR_FIELD(generated_when);
2985
+ COMPARE_SCALAR_FIELD(nulls_not_distinct);
2857
2986
  COMPARE_NODE_FIELD(keys);
2858
2987
  COMPARE_NODE_FIELD(including);
2859
2988
  COMPARE_NODE_FIELD(exclusions);
@@ -2869,6 +2998,7 @@ _equalConstraint(const Constraint *a, const Constraint *b)
2869
2998
  COMPARE_SCALAR_FIELD(fk_matchtype);
2870
2999
  COMPARE_SCALAR_FIELD(fk_upd_action);
2871
3000
  COMPARE_SCALAR_FIELD(fk_del_action);
3001
+ COMPARE_NODE_FIELD(fk_del_set_cols);
2872
3002
  COMPARE_NODE_FIELD(old_conpfeqop);
2873
3003
  COMPARE_SCALAR_FIELD(old_pktable_oid);
2874
3004
  COMPARE_SCALAR_FIELD(skip_validation);
@@ -2914,6 +3044,7 @@ _equalRangeTblEntry(const RangeTblEntry *a, const RangeTblEntry *b)
2914
3044
  COMPARE_NODE_FIELD(joinaliasvars);
2915
3045
  COMPARE_NODE_FIELD(joinleftcols);
2916
3046
  COMPARE_NODE_FIELD(joinrightcols);
3047
+ COMPARE_NODE_FIELD(join_using_alias);
2917
3048
  COMPARE_NODE_FIELD(functions);
2918
3049
  COMPARE_SCALAR_FIELD(funcordinality);
2919
3050
  COMPARE_NODE_FIELD(tablefunc);
@@ -3010,6 +3141,7 @@ _equalWindowClause(const WindowClause *a, const WindowClause *b)
3010
3141
  COMPARE_SCALAR_FIELD(frameOptions);
3011
3142
  COMPARE_NODE_FIELD(startOffset);
3012
3143
  COMPARE_NODE_FIELD(endOffset);
3144
+ COMPARE_NODE_FIELD(runCondition);
3013
3145
  COMPARE_SCALAR_FIELD(startInRangeFunc);
3014
3146
  COMPARE_SCALAR_FIELD(endInRangeFunc);
3015
3147
  COMPARE_SCALAR_FIELD(inRangeColl);
@@ -3065,6 +3197,34 @@ _equalOnConflictClause(const OnConflictClause *a, const OnConflictClause *b)
3065
3197
  return true;
3066
3198
  }
3067
3199
 
3200
+ static bool
3201
+ _equalCTESearchClause(const CTESearchClause *a, const CTESearchClause *b)
3202
+ {
3203
+ COMPARE_NODE_FIELD(search_col_list);
3204
+ COMPARE_SCALAR_FIELD(search_breadth_first);
3205
+ COMPARE_STRING_FIELD(search_seq_column);
3206
+ COMPARE_LOCATION_FIELD(location);
3207
+
3208
+ return true;
3209
+ }
3210
+
3211
+ static bool
3212
+ _equalCTECycleClause(const CTECycleClause *a, const CTECycleClause *b)
3213
+ {
3214
+ COMPARE_NODE_FIELD(cycle_col_list);
3215
+ COMPARE_STRING_FIELD(cycle_mark_column);
3216
+ COMPARE_NODE_FIELD(cycle_mark_value);
3217
+ COMPARE_NODE_FIELD(cycle_mark_default);
3218
+ COMPARE_STRING_FIELD(cycle_path_column);
3219
+ COMPARE_LOCATION_FIELD(location);
3220
+ COMPARE_SCALAR_FIELD(cycle_mark_type);
3221
+ COMPARE_SCALAR_FIELD(cycle_mark_typmod);
3222
+ COMPARE_SCALAR_FIELD(cycle_mark_collation);
3223
+ COMPARE_SCALAR_FIELD(cycle_mark_neop);
3224
+
3225
+ return true;
3226
+ }
3227
+
3068
3228
  static bool
3069
3229
  _equalCommonTableExpr(const CommonTableExpr *a, const CommonTableExpr *b)
3070
3230
  {
@@ -3072,6 +3232,8 @@ _equalCommonTableExpr(const CommonTableExpr *a, const CommonTableExpr *b)
3072
3232
  COMPARE_NODE_FIELD(aliascolnames);
3073
3233
  COMPARE_SCALAR_FIELD(ctematerialized);
3074
3234
  COMPARE_NODE_FIELD(ctequery);
3235
+ COMPARE_NODE_FIELD(search_clause);
3236
+ COMPARE_NODE_FIELD(cycle_clause);
3075
3237
  COMPARE_LOCATION_FIELD(location);
3076
3238
  COMPARE_SCALAR_FIELD(cterecursive);
3077
3239
  COMPARE_SCALAR_FIELD(cterefcount);
@@ -3083,6 +3245,32 @@ _equalCommonTableExpr(const CommonTableExpr *a, const CommonTableExpr *b)
3083
3245
  return true;
3084
3246
  }
3085
3247
 
3248
+ static bool
3249
+ _equalMergeWhenClause(const MergeWhenClause *a, const MergeWhenClause *b)
3250
+ {
3251
+ COMPARE_SCALAR_FIELD(matched);
3252
+ COMPARE_SCALAR_FIELD(commandType);
3253
+ COMPARE_SCALAR_FIELD(override);
3254
+ COMPARE_NODE_FIELD(condition);
3255
+ COMPARE_NODE_FIELD(targetList);
3256
+ COMPARE_NODE_FIELD(values);
3257
+
3258
+ return true;
3259
+ }
3260
+
3261
+ static bool
3262
+ _equalMergeAction(const MergeAction *a, const MergeAction *b)
3263
+ {
3264
+ COMPARE_SCALAR_FIELD(matched);
3265
+ COMPARE_SCALAR_FIELD(commandType);
3266
+ COMPARE_SCALAR_FIELD(override);
3267
+ COMPARE_NODE_FIELD(qual);
3268
+ COMPARE_NODE_FIELD(targetList);
3269
+ COMPARE_NODE_FIELD(updateColnos);
3270
+
3271
+ return true;
3272
+ }
3273
+
3086
3274
  static bool
3087
3275
  _equalXmlSerialize(const XmlSerialize *a, const XmlSerialize *b)
3088
3276
  {
@@ -3166,6 +3354,7 @@ _equalPartitionCmd(const PartitionCmd *a, const PartitionCmd *b)
3166
3354
  {
3167
3355
  COMPARE_NODE_FIELD(name);
3168
3356
  COMPARE_NODE_FIELD(bound);
3357
+ COMPARE_SCALAR_FIELD(concurrent);
3169
3358
 
3170
3359
  return true;
3171
3360
  }
@@ -3234,27 +3423,41 @@ _equalList(const List *a, const List *b)
3234
3423
  */
3235
3424
 
3236
3425
  static bool
3237
- _equalValue(const Value *a, const Value *b)
3426
+ _equalInteger(const Integer *a, const Integer *b)
3238
3427
  {
3239
- COMPARE_SCALAR_FIELD(type);
3428
+ COMPARE_SCALAR_FIELD(ival);
3240
3429
 
3241
- switch (a->type)
3242
- {
3243
- case T_Integer:
3244
- COMPARE_SCALAR_FIELD(val.ival);
3245
- break;
3246
- case T_Float:
3247
- case T_String:
3248
- case T_BitString:
3249
- COMPARE_STRING_FIELD(val.str);
3250
- break;
3251
- case T_Null:
3252
- /* nothing to do */
3253
- break;
3254
- default:
3255
- elog(ERROR, "unrecognized node type: %d", (int) a->type);
3256
- break;
3257
- }
3430
+ return true;
3431
+ }
3432
+
3433
+ static bool
3434
+ _equalFloat(const Float *a, const Float *b)
3435
+ {
3436
+ COMPARE_STRING_FIELD(fval);
3437
+
3438
+ return true;
3439
+ }
3440
+
3441
+ static bool
3442
+ _equalBoolean(const Boolean *a, const Boolean *b)
3443
+ {
3444
+ COMPARE_SCALAR_FIELD(boolval);
3445
+
3446
+ return true;
3447
+ }
3448
+
3449
+ static bool
3450
+ _equalString(const String *a, const String *b)
3451
+ {
3452
+ COMPARE_STRING_FIELD(sval);
3453
+
3454
+ return true;
3455
+ }
3456
+
3457
+ static bool
3458
+ _equalBitString(const BitString *a, const BitString *b)
3459
+ {
3460
+ COMPARE_STRING_FIELD(bsval);
3258
3461
 
3259
3462
  return true;
3260
3463
  }
@@ -3474,11 +3677,19 @@ equal(const void *a, const void *b)
3474
3677
  break;
3475
3678
 
3476
3679
  case T_Integer:
3680
+ retval = _equalInteger(a, b);
3681
+ break;
3477
3682
  case T_Float:
3683
+ retval = _equalFloat(a, b);
3684
+ break;
3685
+ case T_Boolean:
3686
+ retval = _equalBoolean(a, b);
3687
+ break;
3478
3688
  case T_String:
3689
+ retval = _equalString(a, b);
3690
+ break;
3479
3691
  case T_BitString:
3480
- case T_Null:
3481
- retval = _equalValue(a, b);
3692
+ retval = _equalBitString(a, b);
3482
3693
  break;
3483
3694
 
3484
3695
  /*
@@ -3506,12 +3717,21 @@ equal(const void *a, const void *b)
3506
3717
  case T_UpdateStmt:
3507
3718
  retval = _equalUpdateStmt(a, b);
3508
3719
  break;
3720
+ case T_MergeStmt:
3721
+ retval = _equalMergeStmt(a, b);
3722
+ break;
3509
3723
  case T_SelectStmt:
3510
3724
  retval = _equalSelectStmt(a, b);
3511
3725
  break;
3512
3726
  case T_SetOperationStmt:
3513
3727
  retval = _equalSetOperationStmt(a, b);
3514
3728
  break;
3729
+ case T_ReturnStmt:
3730
+ retval = _equalReturnStmt(a, b);
3731
+ break;
3732
+ case T_PLAssignStmt:
3733
+ retval = _equalPLAssignStmt(a, b);
3734
+ break;
3515
3735
  case T_AlterTableStmt:
3516
3736
  retval = _equalAlterTableStmt(a, b);
3517
3737
  break;
@@ -3665,6 +3885,9 @@ equal(const void *a, const void *b)
3665
3885
  case T_AlterDatabaseStmt:
3666
3886
  retval = _equalAlterDatabaseStmt(a, b);
3667
3887
  break;
3888
+ case T_AlterDatabaseRefreshCollStmt:
3889
+ retval = _equalAlterDatabaseRefreshCollStmt(a, b);
3890
+ break;
3668
3891
  case T_AlterDatabaseSetStmt:
3669
3892
  retval = _equalAlterDatabaseSetStmt(a, b);
3670
3893
  break;
@@ -3849,7 +4072,7 @@ equal(const void *a, const void *b)
3849
4072
  retval = _equalDropSubscriptionStmt(a, b);
3850
4073
  break;
3851
4074
  case T_A_Expr:
3852
- retval = _equalAExpr(a, b);
4075
+ retval = _equalA_Expr(a, b);
3853
4076
  break;
3854
4077
  case T_ColumnRef:
3855
4078
  retval = _equalColumnRef(a, b);
@@ -3858,16 +4081,16 @@ equal(const void *a, const void *b)
3858
4081
  retval = _equalParamRef(a, b);
3859
4082
  break;
3860
4083
  case T_A_Const:
3861
- retval = _equalAConst(a, b);
4084
+ retval = _equalA_Const(a, b);
3862
4085
  break;
3863
4086
  case T_FuncCall:
3864
4087
  retval = _equalFuncCall(a, b);
3865
4088
  break;
3866
4089
  case T_A_Star:
3867
- retval = _equalAStar(a, b);
4090
+ retval = _equalA_Star(a, b);
3868
4091
  break;
3869
4092
  case T_A_Indices:
3870
- retval = _equalAIndices(a, b);
4093
+ retval = _equalA_Indices(a, b);
3871
4094
  break;
3872
4095
  case T_A_Indirection:
3873
4096
  retval = _equalA_Indirection(a, b);
@@ -3914,6 +4137,9 @@ equal(const void *a, const void *b)
3914
4137
  case T_IndexElem:
3915
4138
  retval = _equalIndexElem(a, b);
3916
4139
  break;
4140
+ case T_StatsElem:
4141
+ retval = _equalStatsElem(a, b);
4142
+ break;
3917
4143
  case T_ColumnDef:
3918
4144
  retval = _equalColumnDef(a, b);
3919
4145
  break;
@@ -3959,9 +4185,21 @@ equal(const void *a, const void *b)
3959
4185
  case T_OnConflictClause:
3960
4186
  retval = _equalOnConflictClause(a, b);
3961
4187
  break;
4188
+ case T_CTESearchClause:
4189
+ retval = _equalCTESearchClause(a, b);
4190
+ break;
4191
+ case T_CTECycleClause:
4192
+ retval = _equalCTECycleClause(a, b);
4193
+ break;
3962
4194
  case T_CommonTableExpr:
3963
4195
  retval = _equalCommonTableExpr(a, b);
3964
4196
  break;
4197
+ case T_MergeWhenClause:
4198
+ retval = _equalMergeWhenClause(a, b);
4199
+ break;
4200
+ case T_MergeAction:
4201
+ retval = _equalMergeAction(a, b);
4202
+ break;
3965
4203
  case T_ObjectWithArgs:
3966
4204
  retval = _equalObjectWithArgs(a, b);
3967
4205
  break;
@@ -3992,6 +4230,12 @@ equal(const void *a, const void *b)
3992
4230
  case T_PartitionCmd:
3993
4231
  retval = _equalPartitionCmd(a, b);
3994
4232
  break;
4233
+ case T_PublicationObjSpec:
4234
+ retval = _equalPublicationObject(a, b);
4235
+ break;
4236
+ case T_PublicationTable:
4237
+ retval = _equalPublicationTable(a, b);
4238
+ break;
3995
4239
 
3996
4240
  default:
3997
4241
  elog(ERROR, "unrecognized node type: %d",