pg_query 2.1.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 (472) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +104 -0
  3. data/README.md +59 -31
  4. data/Rakefile +2 -2
  5. data/ext/pg_query/extconf.rb +8 -2
  6. data/ext/pg_query/include/access/amapi.h +45 -1
  7. data/ext/pg_query/include/access/attmap.h +1 -1
  8. data/ext/pg_query/include/access/attnum.h +2 -2
  9. data/ext/pg_query/include/access/clog.h +4 -2
  10. data/ext/pg_query/include/access/commit_ts.h +6 -9
  11. data/ext/pg_query/include/access/detoast.h +1 -11
  12. data/ext/pg_query/include/access/genam.h +15 -12
  13. data/ext/pg_query/include/access/gin.h +2 -2
  14. data/ext/pg_query/include/access/htup.h +1 -1
  15. data/ext/pg_query/include/access/htup_details.h +75 -87
  16. data/ext/pg_query/include/access/itup.h +7 -1
  17. data/ext/pg_query/include/access/parallel.h +2 -2
  18. data/ext/pg_query/include/access/printtup.h +1 -1
  19. data/ext/pg_query/include/access/relation.h +1 -1
  20. data/ext/pg_query/include/access/relscan.h +17 -2
  21. data/ext/pg_query/include/access/rmgr.h +30 -3
  22. data/ext/pg_query/include/access/rmgrlist.h +23 -23
  23. data/ext/pg_query/include/access/sdir.h +1 -1
  24. data/ext/pg_query/include/access/skey.h +1 -1
  25. data/ext/pg_query/include/access/stratnum.h +4 -2
  26. data/ext/pg_query/include/access/sysattr.h +1 -1
  27. data/ext/pg_query/include/access/table.h +2 -1
  28. data/ext/pg_query/include/access/tableam.h +272 -20
  29. data/ext/pg_query/include/access/toast_compression.h +73 -0
  30. data/ext/pg_query/include/access/transam.h +123 -13
  31. data/ext/pg_query/include/access/tupconvert.h +1 -1
  32. data/ext/pg_query/include/access/tupdesc.h +1 -1
  33. data/ext/pg_query/include/access/tupmacs.h +3 -3
  34. data/ext/pg_query/include/access/twophase.h +5 -1
  35. data/ext/pg_query/include/access/xact.h +79 -19
  36. data/ext/pg_query/include/access/xlog.h +60 -155
  37. data/ext/pg_query/include/access/xlog_internal.h +50 -14
  38. data/ext/pg_query/include/access/xlogdefs.h +8 -16
  39. data/ext/pg_query/include/access/xlogprefetcher.h +55 -0
  40. data/ext/pg_query/include/access/xlogreader.h +148 -32
  41. data/ext/pg_query/include/access/xlogrecord.h +18 -9
  42. data/ext/pg_query/include/access/xlogrecovery.h +157 -0
  43. data/ext/pg_query/include/c.h +101 -44
  44. data/ext/pg_query/include/catalog/catalog.h +3 -1
  45. data/ext/pg_query/include/catalog/catversion.h +2 -2
  46. data/ext/pg_query/include/catalog/dependency.h +10 -16
  47. data/ext/pg_query/include/catalog/genbki.h +83 -5
  48. data/ext/pg_query/include/catalog/index.h +18 -3
  49. data/ext/pg_query/include/catalog/indexing.h +12 -324
  50. data/ext/pg_query/include/catalog/namespace.h +4 -2
  51. data/ext/pg_query/include/catalog/objectaccess.h +70 -2
  52. data/ext/pg_query/include/catalog/objectaddress.h +11 -6
  53. data/ext/pg_query/include/catalog/pg_aggregate.h +14 -10
  54. data/ext/pg_query/include/catalog/pg_aggregate_d.h +2 -1
  55. data/ext/pg_query/include/catalog/pg_am.h +4 -1
  56. data/ext/pg_query/include/catalog/pg_am_d.h +3 -1
  57. data/ext/pg_query/include/catalog/pg_attribute.h +27 -10
  58. data/ext/pg_query/include/catalog/pg_attribute_d.h +21 -18
  59. data/ext/pg_query/include/catalog/pg_authid.h +7 -2
  60. data/ext/pg_query/include/catalog/pg_authid_d.h +17 -9
  61. data/ext/pg_query/include/catalog/pg_class.h +45 -15
  62. data/ext/pg_query/include/catalog/pg_class_d.h +31 -2
  63. data/ext/pg_query/include/catalog/pg_collation.h +33 -8
  64. data/ext/pg_query/include/catalog/pg_collation_d.h +20 -3
  65. data/ext/pg_query/include/catalog/pg_constraint.h +38 -12
  66. data/ext/pg_query/include/catalog/pg_constraint_d.h +10 -4
  67. data/ext/pg_query/include/catalog/pg_control.h +5 -5
  68. data/ext/pg_query/include/catalog/pg_conversion.h +7 -4
  69. data/ext/pg_query/include/catalog/pg_conversion_d.h +4 -1
  70. data/ext/pg_query/include/catalog/pg_depend.h +11 -7
  71. data/ext/pg_query/include/catalog/pg_depend_d.h +3 -1
  72. data/ext/pg_query/include/catalog/pg_event_trigger.h +9 -3
  73. data/ext/pg_query/include/catalog/pg_event_trigger_d.h +3 -1
  74. data/ext/pg_query/include/catalog/pg_index.h +17 -7
  75. data/ext/pg_query/include/catalog/pg_index_d.h +20 -17
  76. data/ext/pg_query/include/catalog/pg_language.h +10 -5
  77. data/ext/pg_query/include/catalog/pg_language_d.h +3 -1
  78. data/ext/pg_query/include/catalog/pg_namespace.h +7 -2
  79. data/ext/pg_query/include/catalog/pg_namespace_d.h +3 -1
  80. data/ext/pg_query/include/catalog/pg_opclass.h +8 -5
  81. data/ext/pg_query/include/catalog/pg_opclass_d.h +3 -1
  82. data/ext/pg_query/include/catalog/pg_operator.h +21 -16
  83. data/ext/pg_query/include/catalog/pg_operator_d.h +37 -1
  84. data/ext/pg_query/include/catalog/pg_opfamily.h +6 -3
  85. data/ext/pg_query/include/catalog/pg_opfamily_d.h +3 -1
  86. data/ext/pg_query/include/catalog/pg_parameter_acl.h +60 -0
  87. data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +34 -0
  88. data/ext/pg_query/include/catalog/pg_partitioned_table.h +20 -9
  89. data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +2 -1
  90. data/ext/pg_query/include/catalog/pg_proc.h +20 -11
  91. data/ext/pg_query/include/catalog/pg_proc_d.h +10 -8
  92. data/ext/pg_query/include/catalog/pg_publication.h +50 -4
  93. data/ext/pg_query/include/catalog/pg_publication_d.h +3 -1
  94. data/ext/pg_query/include/catalog/pg_replication_origin.h +6 -1
  95. data/ext/pg_query/include/catalog/pg_replication_origin_d.h +5 -1
  96. data/ext/pg_query/include/catalog/pg_statistic.h +19 -12
  97. data/ext/pg_query/include/catalog/pg_statistic_d.h +2 -1
  98. data/ext/pg_query/include/catalog/pg_statistic_ext.h +19 -5
  99. data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +7 -2
  100. data/ext/pg_query/include/catalog/pg_transform.h +8 -5
  101. data/ext/pg_query/include/catalog/pg_transform_d.h +3 -1
  102. data/ext/pg_query/include/catalog/pg_trigger.h +24 -8
  103. data/ext/pg_query/include/catalog/pg_trigger_d.h +4 -1
  104. data/ext/pg_query/include/catalog/pg_ts_config.h +6 -3
  105. data/ext/pg_query/include/catalog/pg_ts_config_d.h +3 -1
  106. data/ext/pg_query/include/catalog/pg_ts_dict.h +8 -3
  107. data/ext/pg_query/include/catalog/pg_ts_dict_d.h +3 -1
  108. data/ext/pg_query/include/catalog/pg_ts_parser.h +6 -3
  109. data/ext/pg_query/include/catalog/pg_ts_parser_d.h +3 -1
  110. data/ext/pg_query/include/catalog/pg_ts_template.h +6 -3
  111. data/ext/pg_query/include/catalog/pg_ts_template_d.h +3 -1
  112. data/ext/pg_query/include/catalog/pg_type.h +56 -24
  113. data/ext/pg_query/include/catalog/pg_type_d.h +70 -31
  114. data/ext/pg_query/include/catalog/storage.h +5 -3
  115. data/ext/pg_query/include/commands/async.h +4 -5
  116. data/ext/pg_query/include/commands/dbcommands.h +2 -1
  117. data/ext/pg_query/include/commands/defrem.h +11 -24
  118. data/ext/pg_query/include/commands/event_trigger.h +2 -2
  119. data/ext/pg_query/include/commands/explain.h +1 -1
  120. data/ext/pg_query/include/commands/prepare.h +1 -1
  121. data/ext/pg_query/include/commands/tablespace.h +3 -1
  122. data/ext/pg_query/include/commands/trigger.h +27 -17
  123. data/ext/pg_query/include/commands/user.h +2 -2
  124. data/ext/pg_query/include/commands/vacuum.h +88 -41
  125. data/ext/pg_query/include/commands/variable.h +1 -1
  126. data/ext/pg_query/include/common/file_perm.h +4 -4
  127. data/ext/pg_query/include/common/hashfn.h +1 -1
  128. data/ext/pg_query/include/common/ip.h +1 -7
  129. data/ext/pg_query/include/common/keywords.h +2 -6
  130. data/ext/pg_query/include/common/kwlookup.h +1 -1
  131. data/ext/pg_query/include/common/pg_prng.h +60 -0
  132. data/ext/pg_query/include/common/relpath.h +2 -2
  133. data/ext/pg_query/include/common/string.h +24 -1
  134. data/ext/pg_query/include/common/unicode_combining_table.h +114 -2
  135. data/ext/pg_query/include/common/unicode_east_asian_fw_table.h +125 -0
  136. data/ext/pg_query/include/datatype/timestamp.h +40 -1
  137. data/ext/pg_query/include/executor/execdesc.h +1 -1
  138. data/ext/pg_query/include/executor/executor.h +65 -22
  139. data/ext/pg_query/include/executor/functions.h +17 -3
  140. data/ext/pg_query/include/executor/instrument.h +33 -16
  141. data/ext/pg_query/include/executor/spi.h +41 -3
  142. data/ext/pg_query/include/executor/tablefunc.h +1 -1
  143. data/ext/pg_query/include/executor/tuptable.h +1 -1
  144. data/ext/pg_query/include/fmgr.h +13 -7
  145. data/ext/pg_query/include/funcapi.h +16 -4
  146. data/ext/pg_query/include/getaddrinfo.h +1 -1
  147. data/ext/pg_query/include/jit/jit.h +11 -11
  148. data/ext/pg_query/include/kwlist_d.h +517 -494
  149. data/ext/pg_query/include/lib/dshash.h +112 -0
  150. data/ext/pg_query/include/lib/ilist.h +20 -1
  151. data/ext/pg_query/include/lib/pairingheap.h +1 -1
  152. data/ext/pg_query/include/lib/simplehash.h +150 -25
  153. data/ext/pg_query/include/lib/sort_template.h +432 -0
  154. data/ext/pg_query/include/lib/stringinfo.h +1 -1
  155. data/ext/pg_query/include/libpq/auth.h +6 -4
  156. data/ext/pg_query/include/libpq/crypt.h +5 -4
  157. data/ext/pg_query/include/libpq/hba.h +43 -4
  158. data/ext/pg_query/include/libpq/libpq-be.h +23 -6
  159. data/ext/pg_query/include/libpq/libpq.h +31 -20
  160. data/ext/pg_query/include/libpq/pqcomm.h +17 -31
  161. data/ext/pg_query/include/libpq/pqformat.h +1 -1
  162. data/ext/pg_query/include/libpq/pqsignal.h +4 -4
  163. data/ext/pg_query/include/mb/pg_wchar.h +106 -23
  164. data/ext/pg_query/include/mb/stringinfo_mb.h +1 -1
  165. data/ext/pg_query/include/miscadmin.h +71 -52
  166. data/ext/pg_query/include/nodes/bitmapset.h +1 -1
  167. data/ext/pg_query/include/nodes/execnodes.h +272 -80
  168. data/ext/pg_query/include/nodes/extensible.h +4 -2
  169. data/ext/pg_query/include/nodes/lockoptions.h +1 -1
  170. data/ext/pg_query/include/nodes/makefuncs.h +7 -6
  171. data/ext/pg_query/include/nodes/memnodes.h +5 -3
  172. data/ext/pg_query/include/nodes/nodeFuncs.h +1 -1
  173. data/ext/pg_query/include/nodes/nodes.h +30 -11
  174. data/ext/pg_query/include/nodes/params.h +1 -1
  175. data/ext/pg_query/include/nodes/parsenodes.h +327 -94
  176. data/ext/pg_query/include/nodes/pathnodes.h +245 -67
  177. data/ext/pg_query/include/nodes/pg_list.h +75 -68
  178. data/ext/pg_query/include/nodes/plannodes.h +128 -30
  179. data/ext/pg_query/include/nodes/primnodes.h +99 -47
  180. data/ext/pg_query/include/nodes/print.h +1 -1
  181. data/ext/pg_query/include/nodes/tidbitmap.h +1 -1
  182. data/ext/pg_query/include/nodes/value.h +58 -39
  183. data/ext/pg_query/include/optimizer/cost.h +9 -2
  184. data/ext/pg_query/include/optimizer/geqo.h +9 -7
  185. data/ext/pg_query/include/optimizer/geqo_gene.h +1 -1
  186. data/ext/pg_query/include/optimizer/optimizer.h +25 -22
  187. data/ext/pg_query/include/optimizer/paths.h +6 -6
  188. data/ext/pg_query/include/optimizer/planmain.h +15 -14
  189. data/ext/pg_query/include/parser/analyze.h +19 -5
  190. data/ext/pg_query/include/parser/gram.h +947 -913
  191. data/ext/pg_query/include/parser/gramparse.h +1 -1
  192. data/ext/pg_query/include/parser/kwlist.h +463 -453
  193. data/ext/pg_query/include/parser/parse_agg.h +2 -7
  194. data/ext/pg_query/include/parser/parse_coerce.h +4 -1
  195. data/ext/pg_query/include/parser/parse_expr.h +2 -3
  196. data/ext/pg_query/include/parser/parse_func.h +2 -1
  197. data/ext/pg_query/include/parser/parse_node.h +21 -9
  198. data/ext/pg_query/include/parser/parse_oper.h +1 -3
  199. data/ext/pg_query/include/parser/parse_relation.h +5 -4
  200. data/ext/pg_query/include/parser/parse_type.h +1 -1
  201. data/ext/pg_query/include/parser/parser.h +31 -4
  202. data/ext/pg_query/include/parser/parsetree.h +1 -1
  203. data/ext/pg_query/include/parser/scanner.h +1 -1
  204. data/ext/pg_query/include/parser/scansup.h +2 -5
  205. data/ext/pg_query/include/partitioning/partdefs.h +1 -1
  206. data/ext/pg_query/include/pg_config.h +94 -46
  207. data/ext/pg_query/include/pg_config_manual.h +74 -21
  208. data/ext/pg_query/include/pg_getopt.h +6 -6
  209. data/ext/pg_query/include/pg_query.h +5 -4
  210. data/ext/pg_query/include/pg_query_enum_defs.c +358 -241
  211. data/ext/pg_query/include/pg_query_fingerprint_conds.c +44 -7
  212. data/ext/pg_query/include/pg_query_fingerprint_defs.c +1220 -422
  213. data/ext/pg_query/include/pg_query_outfuncs_conds.c +43 -13
  214. data/ext/pg_query/include/pg_query_outfuncs_defs.c +152 -26
  215. data/ext/pg_query/include/pg_query_readfuncs_conds.c +11 -2
  216. data/ext/pg_query/include/pg_query_readfuncs_defs.c +174 -30
  217. data/ext/pg_query/include/pg_trace.h +1 -1
  218. data/ext/pg_query/include/pgstat.h +449 -1237
  219. data/ext/pg_query/include/pgtime.h +14 -4
  220. data/ext/pg_query/include/pl_gram.h +126 -128
  221. data/ext/pg_query/include/pl_reserved_kwlist.h +1 -1
  222. data/ext/pg_query/include/pl_reserved_kwlist_d.h +10 -10
  223. data/ext/pg_query/include/pl_unreserved_kwlist.h +2 -3
  224. data/ext/pg_query/include/pl_unreserved_kwlist_d.h +54 -56
  225. data/ext/pg_query/include/plerrcodes.h +9 -1
  226. data/ext/pg_query/include/plpgsql.h +52 -54
  227. data/ext/pg_query/include/port/atomics/arch-arm.h +7 -1
  228. data/ext/pg_query/include/port/atomics/arch-ppc.h +1 -1
  229. data/ext/pg_query/include/port/atomics/arch-x86.h +1 -1
  230. data/ext/pg_query/include/port/atomics/fallback.h +1 -1
  231. data/ext/pg_query/include/port/atomics/generic-gcc.h +3 -3
  232. data/ext/pg_query/include/port/atomics/generic.h +1 -1
  233. data/ext/pg_query/include/port/atomics.h +1 -1
  234. data/ext/pg_query/include/port/pg_bitutils.h +88 -12
  235. data/ext/pg_query/include/port/pg_bswap.h +1 -1
  236. data/ext/pg_query/include/port/pg_crc32c.h +1 -1
  237. data/ext/pg_query/include/port.h +72 -43
  238. data/ext/pg_query/include/portability/instr_time.h +1 -1
  239. data/ext/pg_query/include/postgres.h +60 -16
  240. data/ext/pg_query/include/postmaster/autovacuum.h +17 -17
  241. data/ext/pg_query/include/postmaster/auxprocess.h +20 -0
  242. data/ext/pg_query/include/postmaster/bgworker.h +2 -1
  243. data/ext/pg_query/include/postmaster/bgworker_internals.h +2 -2
  244. data/ext/pg_query/include/postmaster/bgwriter.h +5 -5
  245. data/ext/pg_query/include/postmaster/fork_process.h +1 -1
  246. data/ext/pg_query/include/postmaster/interrupt.h +1 -1
  247. data/ext/pg_query/include/postmaster/pgarch.h +42 -8
  248. data/ext/pg_query/include/postmaster/postmaster.h +18 -17
  249. data/ext/pg_query/include/postmaster/startup.h +39 -0
  250. data/ext/pg_query/include/postmaster/syslogger.h +15 -10
  251. data/ext/pg_query/include/postmaster/walwriter.h +3 -3
  252. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +1422 -916
  253. data/ext/pg_query/include/protobuf/pg_query.pb.h +43678 -32769
  254. data/ext/pg_query/include/regex/regex.h +18 -16
  255. data/ext/pg_query/include/replication/logicallauncher.h +3 -5
  256. data/ext/pg_query/include/replication/logicalproto.h +161 -17
  257. data/ext/pg_query/include/replication/logicalworker.h +1 -1
  258. data/ext/pg_query/include/replication/origin.h +7 -7
  259. data/ext/pg_query/include/replication/reorderbuffer.h +262 -44
  260. data/ext/pg_query/include/replication/slot.h +23 -12
  261. data/ext/pg_query/include/replication/syncrep.h +5 -5
  262. data/ext/pg_query/include/replication/walreceiver.h +145 -13
  263. data/ext/pg_query/include/replication/walsender.h +8 -8
  264. data/ext/pg_query/include/rewrite/prs2lock.h +1 -1
  265. data/ext/pg_query/include/rewrite/rewriteHandler.h +1 -3
  266. data/ext/pg_query/include/rewrite/rewriteManip.h +1 -1
  267. data/ext/pg_query/include/rewrite/rewriteSupport.h +1 -1
  268. data/ext/pg_query/include/storage/backendid.h +3 -3
  269. data/ext/pg_query/include/storage/block.h +4 -10
  270. data/ext/pg_query/include/storage/buf.h +1 -1
  271. data/ext/pg_query/include/storage/bufmgr.h +19 -14
  272. data/ext/pg_query/include/storage/bufpage.h +6 -8
  273. data/ext/pg_query/include/storage/condition_variable.h +13 -2
  274. data/ext/pg_query/include/storage/dsm.h +4 -1
  275. data/ext/pg_query/include/storage/dsm_impl.h +3 -2
  276. data/ext/pg_query/include/storage/fd.h +33 -3
  277. data/ext/pg_query/include/storage/fileset.h +40 -0
  278. data/ext/pg_query/include/storage/ipc.h +4 -1
  279. data/ext/pg_query/include/storage/item.h +1 -1
  280. data/ext/pg_query/include/storage/itemid.h +1 -1
  281. data/ext/pg_query/include/storage/itemptr.h +3 -1
  282. data/ext/pg_query/include/storage/large_object.h +2 -2
  283. data/ext/pg_query/include/storage/latch.h +9 -13
  284. data/ext/pg_query/include/storage/lmgr.h +2 -1
  285. data/ext/pg_query/include/storage/lock.h +17 -13
  286. data/ext/pg_query/include/storage/lockdefs.h +2 -2
  287. data/ext/pg_query/include/storage/lwlock.h +6 -32
  288. data/ext/pg_query/include/storage/lwlocknames.h +0 -1
  289. data/ext/pg_query/include/storage/off.h +1 -1
  290. data/ext/pg_query/include/storage/pg_sema.h +1 -1
  291. data/ext/pg_query/include/storage/pg_shmem.h +9 -7
  292. data/ext/pg_query/include/storage/pmsignal.h +15 -4
  293. data/ext/pg_query/include/storage/predicate.h +4 -4
  294. data/ext/pg_query/include/storage/proc.h +183 -55
  295. data/ext/pg_query/include/storage/procarray.h +98 -0
  296. data/ext/pg_query/include/storage/proclist_types.h +1 -1
  297. data/ext/pg_query/include/storage/procsignal.h +3 -7
  298. data/ext/pg_query/include/storage/relfilenode.h +1 -1
  299. data/ext/pg_query/include/storage/s_lock.h +67 -4
  300. data/ext/pg_query/include/storage/sharedfileset.h +3 -11
  301. data/ext/pg_query/include/storage/shm_mq.h +5 -4
  302. data/ext/pg_query/include/storage/shm_toc.h +1 -1
  303. data/ext/pg_query/include/storage/shmem.h +1 -1
  304. data/ext/pg_query/include/storage/sinval.h +3 -3
  305. data/ext/pg_query/include/storage/sinvaladt.h +1 -1
  306. data/ext/pg_query/include/storage/smgr.h +10 -8
  307. data/ext/pg_query/include/storage/spin.h +2 -2
  308. data/ext/pg_query/include/storage/standby.h +13 -6
  309. data/ext/pg_query/include/storage/standbydefs.h +2 -2
  310. data/ext/pg_query/include/storage/sync.h +7 -3
  311. data/ext/pg_query/include/tcop/cmdtag.h +1 -1
  312. data/ext/pg_query/include/tcop/cmdtaglist.h +3 -2
  313. data/ext/pg_query/include/tcop/deparse_utility.h +1 -1
  314. data/ext/pg_query/include/tcop/dest.h +1 -1
  315. data/ext/pg_query/include/tcop/fastpath.h +1 -2
  316. data/ext/pg_query/include/tcop/pquery.h +7 -1
  317. data/ext/pg_query/include/tcop/tcopprot.h +19 -11
  318. data/ext/pg_query/include/tcop/utility.h +7 -3
  319. data/ext/pg_query/include/tsearch/ts_cache.h +2 -2
  320. data/ext/pg_query/include/utils/acl.h +24 -3
  321. data/ext/pg_query/include/utils/aclchk_internal.h +1 -1
  322. data/ext/pg_query/include/utils/array.h +7 -2
  323. data/ext/pg_query/include/utils/backend_progress.h +44 -0
  324. data/ext/pg_query/include/utils/backend_status.h +321 -0
  325. data/ext/pg_query/include/utils/builtins.h +11 -11
  326. data/ext/pg_query/include/utils/bytea.h +3 -2
  327. data/ext/pg_query/include/utils/catcache.h +1 -1
  328. data/ext/pg_query/include/utils/date.h +1 -1
  329. data/ext/pg_query/include/utils/datetime.h +8 -7
  330. data/ext/pg_query/include/utils/datum.h +9 -1
  331. data/ext/pg_query/include/utils/dsa.h +1 -1
  332. data/ext/pg_query/include/utils/dynahash.h +4 -3
  333. data/ext/pg_query/include/utils/elog.h +52 -21
  334. data/ext/pg_query/include/utils/errcodes.h +2 -0
  335. data/ext/pg_query/include/utils/expandeddatum.h +1 -1
  336. data/ext/pg_query/include/utils/expandedrecord.h +1 -1
  337. data/ext/pg_query/include/utils/float.h +7 -7
  338. data/ext/pg_query/include/utils/fmgroids.h +1300 -696
  339. data/ext/pg_query/include/utils/fmgrprotos.h +199 -16
  340. data/ext/pg_query/include/utils/fmgrtab.h +6 -5
  341. data/ext/pg_query/include/utils/guc.h +69 -43
  342. data/ext/pg_query/include/utils/guc_tables.h +23 -19
  343. data/ext/pg_query/include/utils/hsearch.h +15 -11
  344. data/ext/pg_query/include/utils/inval.h +5 -1
  345. data/ext/pg_query/include/utils/lsyscache.h +11 -1
  346. data/ext/pg_query/include/utils/memdebug.h +1 -1
  347. data/ext/pg_query/include/utils/memutils.h +8 -3
  348. data/ext/pg_query/include/utils/numeric.h +19 -5
  349. data/ext/pg_query/include/utils/palloc.h +25 -3
  350. data/ext/pg_query/include/utils/partcache.h +1 -1
  351. data/ext/pg_query/include/utils/pg_locale.h +17 -9
  352. data/ext/pg_query/include/utils/pg_lsn.h +1 -1
  353. data/ext/pg_query/include/utils/pgstat_internal.h +784 -0
  354. data/ext/pg_query/include/utils/pidfile.h +1 -1
  355. data/ext/pg_query/include/utils/plancache.h +6 -5
  356. data/ext/pg_query/include/utils/portal.h +12 -1
  357. data/ext/pg_query/include/utils/ps_status.h +1 -1
  358. data/ext/pg_query/include/utils/queryenvironment.h +1 -1
  359. data/ext/pg_query/include/utils/queryjumble.h +88 -0
  360. data/ext/pg_query/include/utils/regproc.h +14 -3
  361. data/ext/pg_query/include/utils/rel.h +71 -20
  362. data/ext/pg_query/include/utils/relcache.h +9 -7
  363. data/ext/pg_query/include/utils/reltrigger.h +1 -1
  364. data/ext/pg_query/include/utils/resowner.h +1 -1
  365. data/ext/pg_query/include/utils/rls.h +2 -2
  366. data/ext/pg_query/include/utils/ruleutils.h +4 -1
  367. data/ext/pg_query/include/utils/sharedtuplestore.h +1 -1
  368. data/ext/pg_query/include/utils/snapmgr.h +35 -14
  369. data/ext/pg_query/include/utils/snapshot.h +14 -1
  370. data/ext/pg_query/include/utils/sortsupport.h +117 -2
  371. data/ext/pg_query/include/utils/syscache.h +6 -1
  372. data/ext/pg_query/include/utils/timeout.h +11 -4
  373. data/ext/pg_query/include/utils/timestamp.h +6 -5
  374. data/ext/pg_query/include/utils/tuplesort.h +25 -11
  375. data/ext/pg_query/include/utils/tuplestore.h +2 -2
  376. data/ext/pg_query/include/utils/typcache.h +24 -17
  377. data/ext/pg_query/include/utils/tzparser.h +1 -1
  378. data/ext/pg_query/include/utils/varlena.h +5 -3
  379. data/ext/pg_query/include/utils/wait_event.h +289 -0
  380. data/ext/pg_query/include/utils/xml.h +4 -4
  381. data/ext/pg_query/pg_query.pb-c.c +4318 -2307
  382. data/ext/pg_query/pg_query_deparse.c +1114 -381
  383. data/ext/pg_query/pg_query_fingerprint.c +46 -10
  384. data/ext/pg_query/pg_query_fingerprint.h +3 -1
  385. data/ext/pg_query/pg_query_json_plpgsql.c +55 -12
  386. data/ext/pg_query/pg_query_normalize.c +163 -20
  387. data/ext/pg_query/pg_query_outfuncs.h +1 -0
  388. data/ext/pg_query/pg_query_outfuncs_json.c +65 -16
  389. data/ext/pg_query/pg_query_outfuncs_protobuf.c +70 -10
  390. data/ext/pg_query/pg_query_parse.c +1 -1
  391. data/ext/pg_query/pg_query_parse_plpgsql.c +79 -16
  392. data/ext/pg_query/pg_query_readfuncs_protobuf.c +42 -8
  393. data/ext/pg_query/pg_query_ruby.c +1 -1
  394. data/ext/pg_query/pg_query_scan.c +2 -1
  395. data/ext/pg_query/pg_query_split.c +3 -2
  396. data/ext/pg_query/src_backend_catalog_namespace.c +21 -9
  397. data/ext/pg_query/src_backend_catalog_pg_proc.c +4 -1
  398. data/ext/pg_query/src_backend_commands_define.c +11 -1
  399. data/ext/pg_query/src_backend_nodes_bitmapset.c +3 -1
  400. data/ext/pg_query/src_backend_nodes_copyfuncs.c +424 -109
  401. data/ext/pg_query/src_backend_nodes_equalfuncs.c +291 -46
  402. data/ext/pg_query/src_backend_nodes_extensible.c +1 -1
  403. data/ext/pg_query/src_backend_nodes_list.c +86 -11
  404. data/ext/pg_query/src_backend_nodes_makefuncs.c +5 -4
  405. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +55 -12
  406. data/ext/pg_query/src_backend_nodes_value.c +28 -19
  407. data/ext/pg_query/src_backend_parser_gram.c +33890 -31262
  408. data/ext/pg_query/src_backend_parser_parser.c +26 -7
  409. data/ext/pg_query/src_backend_parser_scan.c +644 -441
  410. data/ext/pg_query/src_backend_parser_scansup.c +4 -28
  411. data/ext/pg_query/src_backend_postmaster_postmaster.c +77 -106
  412. data/ext/pg_query/src_backend_storage_ipc_ipc.c +13 -4
  413. data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +5 -4
  414. data/ext/pg_query/src_backend_tcop_postgres.c +73 -24
  415. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +140 -0
  416. data/ext/pg_query/src_backend_utils_adt_datum.c +13 -1
  417. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  418. data/ext/pg_query/src_backend_utils_adt_format_type.c +6 -2
  419. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +109 -15
  420. data/ext/pg_query/src_backend_utils_error_assert.c +16 -14
  421. data/ext/pg_query/src_backend_utils_error_elog.c +172 -99
  422. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +12 -17
  423. data/ext/pg_query/src_backend_utils_hash_dynahash.c +40 -10
  424. data/ext/pg_query/src_backend_utils_init_globals.c +5 -5
  425. data/ext/pg_query/src_backend_utils_mb_mbutils.c +55 -66
  426. data/ext/pg_query/src_backend_utils_misc_guc.c +207 -45
  427. data/ext/pg_query/src_backend_utils_mmgr_aset.c +7 -5
  428. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +123 -35
  429. data/ext/pg_query/src_common_encnames.c +1 -1
  430. data/ext/pg_query/src_common_hashfn.c +3 -3
  431. data/ext/pg_query/src_common_keywords.c +15 -2
  432. data/ext/pg_query/src_common_kwlist_d.h +517 -494
  433. data/ext/pg_query/src_common_kwlookup.c +1 -1
  434. data/ext/pg_query/src_common_pg_prng.c +152 -0
  435. data/ext/pg_query/src_common_psprintf.c +1 -1
  436. data/ext/pg_query/src_common_string.c +7 -1
  437. data/ext/pg_query/src_common_stringinfo.c +1 -1
  438. data/ext/pg_query/src_common_wchar.c +712 -109
  439. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +49 -22
  440. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +1 -18
  441. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +1235 -1261
  442. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  443. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +10 -10
  444. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +2 -2
  445. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +54 -56
  446. data/ext/pg_query/src_port_pg_bitutils.c +41 -52
  447. data/ext/pg_query/src_port_pgsleep.c +1 -1
  448. data/ext/pg_query/src_port_pgstrcasecmp.c +1 -1
  449. data/ext/pg_query/src_port_qsort.c +12 -224
  450. data/ext/pg_query/src_port_snprintf.c +46 -20
  451. data/ext/pg_query/src_port_strerror.c +9 -19
  452. data/ext/pg_query/src_port_strnlen.c +1 -1
  453. data/lib/pg_query/deparse.rb +7 -1
  454. data/lib/pg_query/filter_columns.rb +6 -4
  455. data/lib/pg_query/fingerprint.rb +18 -3
  456. data/lib/pg_query/node.rb +2 -2
  457. data/lib/pg_query/param_refs.rb +1 -1
  458. data/lib/pg_query/parse.rb +87 -51
  459. data/lib/pg_query/pg_query_pb.rb +1109 -942
  460. data/lib/pg_query/treewalker.rb +6 -0
  461. data/lib/pg_query/truncate.rb +54 -8
  462. data/lib/pg_query/version.rb +1 -1
  463. metadata +29 -18
  464. data/ext/pg_query/include/access/xloginsert.h +0 -64
  465. data/ext/pg_query/include/bootstrap/bootstrap.h +0 -62
  466. data/ext/pg_query/include/parser/parse_clause.h +0 -54
  467. data/ext/pg_query/include/parser/parse_collate.h +0 -27
  468. data/ext/pg_query/include/parser/parse_target.h +0 -46
  469. data/ext/pg_query/src_backend_libpq_pqcomm.c +0 -651
  470. data/ext/pg_query/src_backend_parser_parse_expr.c +0 -313
  471. data/ext/pg_query/src_port_erand48.c +0 -127
  472. 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;
@@ -1335,6 +1410,7 @@ _equalAlterTableCmd(const AlterTableCmd *a, const AlterTableCmd *b)
1335
1410
  COMPARE_NODE_FIELD(def);
1336
1411
  COMPARE_SCALAR_FIELD(behavior);
1337
1412
  COMPARE_SCALAR_FIELD(missing_ok);
1413
+ COMPARE_SCALAR_FIELD(recurse);
1338
1414
 
1339
1415
  return true;
1340
1416
  }
@@ -1370,6 +1446,7 @@ _equalGrantStmt(const GrantStmt *a, const GrantStmt *b)
1370
1446
  COMPARE_NODE_FIELD(privileges);
1371
1447
  COMPARE_NODE_FIELD(grantees);
1372
1448
  COMPARE_SCALAR_FIELD(grant_option);
1449
+ COMPARE_NODE_FIELD(grantor);
1373
1450
  COMPARE_SCALAR_FIELD(behavior);
1374
1451
 
1375
1452
  return true;
@@ -1380,6 +1457,7 @@ _equalObjectWithArgs(const ObjectWithArgs *a, const ObjectWithArgs *b)
1380
1457
  {
1381
1458
  COMPARE_NODE_FIELD(objname);
1382
1459
  COMPARE_NODE_FIELD(objargs);
1460
+ COMPARE_NODE_FIELD(objfuncargs);
1383
1461
  COMPARE_SCALAR_FIELD(args_unspecified);
1384
1462
 
1385
1463
  return true;
@@ -1439,6 +1517,7 @@ _equalCallStmt(const CallStmt *a, const CallStmt *b)
1439
1517
  {
1440
1518
  COMPARE_NODE_FIELD(funccall);
1441
1519
  COMPARE_NODE_FIELD(funcexpr);
1520
+ COMPARE_NODE_FIELD(outargs);
1442
1521
 
1443
1522
  return true;
1444
1523
  }
@@ -1448,7 +1527,7 @@ _equalClusterStmt(const ClusterStmt *a, const ClusterStmt *b)
1448
1527
  {
1449
1528
  COMPARE_NODE_FIELD(relation);
1450
1529
  COMPARE_STRING_FIELD(indexname);
1451
- COMPARE_SCALAR_FIELD(options);
1530
+ COMPARE_NODE_FIELD(params);
1452
1531
 
1453
1532
  return true;
1454
1533
  }
@@ -1583,6 +1662,7 @@ _equalIndexStmt(const IndexStmt *a, const IndexStmt *b)
1583
1662
  COMPARE_SCALAR_FIELD(oldCreateSubid);
1584
1663
  COMPARE_SCALAR_FIELD(oldFirstRelfilenodeSubid);
1585
1664
  COMPARE_SCALAR_FIELD(unique);
1665
+ COMPARE_SCALAR_FIELD(nulls_not_distinct);
1586
1666
  COMPARE_SCALAR_FIELD(primary);
1587
1667
  COMPARE_SCALAR_FIELD(isconstraint);
1588
1668
  COMPARE_SCALAR_FIELD(deferrable);
@@ -1603,6 +1683,7 @@ _equalCreateStatsStmt(const CreateStatsStmt *a, const CreateStatsStmt *b)
1603
1683
  COMPARE_NODE_FIELD(exprs);
1604
1684
  COMPARE_NODE_FIELD(relations);
1605
1685
  COMPARE_STRING_FIELD(stxcomment);
1686
+ COMPARE_SCALAR_FIELD(transformed);
1606
1687
  COMPARE_SCALAR_FIELD(if_not_exists);
1607
1688
 
1608
1689
  return true;
@@ -1627,6 +1708,7 @@ _equalCreateFunctionStmt(const CreateFunctionStmt *a, const CreateFunctionStmt *
1627
1708
  COMPARE_NODE_FIELD(parameters);
1628
1709
  COMPARE_NODE_FIELD(returnType);
1629
1710
  COMPARE_NODE_FIELD(options);
1711
+ COMPARE_NODE_FIELD(sql_body);
1630
1712
 
1631
1713
  return true;
1632
1714
  }
@@ -1915,6 +1997,14 @@ _equalAlterDatabaseStmt(const AlterDatabaseStmt *a, const AlterDatabaseStmt *b)
1915
1997
  return true;
1916
1998
  }
1917
1999
 
2000
+ static bool
2001
+ _equalAlterDatabaseRefreshCollStmt(const AlterDatabaseRefreshCollStmt *a, const AlterDatabaseRefreshCollStmt *b)
2002
+ {
2003
+ COMPARE_STRING_FIELD(dbname);
2004
+
2005
+ return true;
2006
+ }
2007
+
1918
2008
  static bool
1919
2009
  _equalAlterDatabaseSetStmt(const AlterDatabaseSetStmt *a, const AlterDatabaseSetStmt *b)
1920
2010
  {
@@ -1968,7 +2058,7 @@ _equalCreateTableAsStmt(const CreateTableAsStmt *a, const CreateTableAsStmt *b)
1968
2058
  {
1969
2059
  COMPARE_NODE_FIELD(query);
1970
2060
  COMPARE_NODE_FIELD(into);
1971
- COMPARE_SCALAR_FIELD(relkind);
2061
+ COMPARE_SCALAR_FIELD(objtype);
1972
2062
  COMPARE_SCALAR_FIELD(is_select_into);
1973
2063
  COMPARE_SCALAR_FIELD(if_not_exists);
1974
2064
 
@@ -2252,6 +2342,8 @@ _equalCreateAmStmt(const CreateAmStmt *a, const CreateAmStmt *b)
2252
2342
  static bool
2253
2343
  _equalCreateTrigStmt(const CreateTrigStmt *a, const CreateTrigStmt *b)
2254
2344
  {
2345
+ COMPARE_SCALAR_FIELD(replace);
2346
+ COMPARE_SCALAR_FIELD(isconstraint);
2255
2347
  COMPARE_STRING_FIELD(trigname);
2256
2348
  COMPARE_NODE_FIELD(relation);
2257
2349
  COMPARE_NODE_FIELD(funcname);
@@ -2261,7 +2353,6 @@ _equalCreateTrigStmt(const CreateTrigStmt *a, const CreateTrigStmt *b)
2261
2353
  COMPARE_SCALAR_FIELD(events);
2262
2354
  COMPARE_NODE_FIELD(columns);
2263
2355
  COMPARE_NODE_FIELD(whenClause);
2264
- COMPARE_SCALAR_FIELD(isconstraint);
2265
2356
  COMPARE_NODE_FIELD(transitionRels);
2266
2357
  COMPARE_SCALAR_FIELD(deferrable);
2267
2358
  COMPARE_SCALAR_FIELD(initdeferred);
@@ -2367,8 +2458,7 @@ _equalReindexStmt(const ReindexStmt *a, const ReindexStmt *b)
2367
2458
  COMPARE_SCALAR_FIELD(kind);
2368
2459
  COMPARE_NODE_FIELD(relation);
2369
2460
  COMPARE_STRING_FIELD(name);
2370
- COMPARE_SCALAR_FIELD(options);
2371
- COMPARE_SCALAR_FIELD(concurrent);
2461
+ COMPARE_NODE_FIELD(params);
2372
2462
 
2373
2463
  return true;
2374
2464
  }
@@ -2477,13 +2567,35 @@ _equalAlterTSConfigurationStmt(const AlterTSConfigurationStmt *a,
2477
2567
  return true;
2478
2568
  }
2479
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
+
2480
2592
  static bool
2481
2593
  _equalCreatePublicationStmt(const CreatePublicationStmt *a,
2482
2594
  const CreatePublicationStmt *b)
2483
2595
  {
2484
2596
  COMPARE_STRING_FIELD(pubname);
2485
2597
  COMPARE_NODE_FIELD(options);
2486
- COMPARE_NODE_FIELD(tables);
2598
+ COMPARE_NODE_FIELD(pubobjects);
2487
2599
  COMPARE_SCALAR_FIELD(for_all_tables);
2488
2600
 
2489
2601
  return true;
@@ -2495,9 +2607,9 @@ _equalAlterPublicationStmt(const AlterPublicationStmt *a,
2495
2607
  {
2496
2608
  COMPARE_STRING_FIELD(pubname);
2497
2609
  COMPARE_NODE_FIELD(options);
2498
- COMPARE_NODE_FIELD(tables);
2610
+ COMPARE_NODE_FIELD(pubobjects);
2499
2611
  COMPARE_SCALAR_FIELD(for_all_tables);
2500
- COMPARE_SCALAR_FIELD(tableAction);
2612
+ COMPARE_SCALAR_FIELD(action);
2501
2613
 
2502
2614
  return true;
2503
2615
  }
@@ -2565,7 +2677,7 @@ _equalAlterPolicyStmt(const AlterPolicyStmt *a, const AlterPolicyStmt *b)
2565
2677
  }
2566
2678
 
2567
2679
  static bool
2568
- _equalAExpr(const A_Expr *a, const A_Expr *b)
2680
+ _equalA_Expr(const A_Expr *a, const A_Expr *b)
2569
2681
  {
2570
2682
  COMPARE_SCALAR_FIELD(kind);
2571
2683
  COMPARE_NODE_FIELD(name);
@@ -2595,10 +2707,15 @@ _equalParamRef(const ParamRef *a, const ParamRef *b)
2595
2707
  }
2596
2708
 
2597
2709
  static bool
2598
- _equalAConst(const A_Const *a, const A_Const *b)
2710
+ _equalA_Const(const A_Const *a, const A_Const *b)
2599
2711
  {
2600
- 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))
2601
2717
  return false;
2718
+ COMPARE_SCALAR_FIELD(isnull);
2602
2719
  COMPARE_LOCATION_FIELD(location);
2603
2720
 
2604
2721
  return true;
@@ -2611,24 +2728,25 @@ _equalFuncCall(const FuncCall *a, const FuncCall *b)
2611
2728
  COMPARE_NODE_FIELD(args);
2612
2729
  COMPARE_NODE_FIELD(agg_order);
2613
2730
  COMPARE_NODE_FIELD(agg_filter);
2731
+ COMPARE_NODE_FIELD(over);
2614
2732
  COMPARE_SCALAR_FIELD(agg_within_group);
2615
2733
  COMPARE_SCALAR_FIELD(agg_star);
2616
2734
  COMPARE_SCALAR_FIELD(agg_distinct);
2617
2735
  COMPARE_SCALAR_FIELD(func_variadic);
2618
- COMPARE_NODE_FIELD(over);
2736
+ COMPARE_COERCIONFORM_FIELD(funcformat);
2619
2737
  COMPARE_LOCATION_FIELD(location);
2620
2738
 
2621
2739
  return true;
2622
2740
  }
2623
2741
 
2624
2742
  static bool
2625
- _equalAStar(const A_Star *a, const A_Star *b)
2743
+ _equalA_Star(const A_Star *a, const A_Star *b)
2626
2744
  {
2627
2745
  return true;
2628
2746
  }
2629
2747
 
2630
2748
  static bool
2631
- _equalAIndices(const A_Indices *a, const A_Indices *b)
2749
+ _equalA_Indices(const A_Indices *a, const A_Indices *b)
2632
2750
  {
2633
2751
  COMPARE_SCALAR_FIELD(is_slice);
2634
2752
  COMPARE_NODE_FIELD(lidx);
@@ -2817,11 +2935,22 @@ _equalIndexElem(const IndexElem *a, const IndexElem *b)
2817
2935
  return true;
2818
2936
  }
2819
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
+
2820
2948
  static bool
2821
2949
  _equalColumnDef(const ColumnDef *a, const ColumnDef *b)
2822
2950
  {
2823
2951
  COMPARE_STRING_FIELD(colname);
2824
2952
  COMPARE_NODE_FIELD(typeName);
2953
+ COMPARE_STRING_FIELD(compression);
2825
2954
  COMPARE_SCALAR_FIELD(inhcount);
2826
2955
  COMPARE_SCALAR_FIELD(is_local);
2827
2956
  COMPARE_SCALAR_FIELD(is_not_null);
@@ -2853,6 +2982,7 @@ _equalConstraint(const Constraint *a, const Constraint *b)
2853
2982
  COMPARE_NODE_FIELD(raw_expr);
2854
2983
  COMPARE_STRING_FIELD(cooked_expr);
2855
2984
  COMPARE_SCALAR_FIELD(generated_when);
2985
+ COMPARE_SCALAR_FIELD(nulls_not_distinct);
2856
2986
  COMPARE_NODE_FIELD(keys);
2857
2987
  COMPARE_NODE_FIELD(including);
2858
2988
  COMPARE_NODE_FIELD(exclusions);
@@ -2868,6 +2998,7 @@ _equalConstraint(const Constraint *a, const Constraint *b)
2868
2998
  COMPARE_SCALAR_FIELD(fk_matchtype);
2869
2999
  COMPARE_SCALAR_FIELD(fk_upd_action);
2870
3000
  COMPARE_SCALAR_FIELD(fk_del_action);
3001
+ COMPARE_NODE_FIELD(fk_del_set_cols);
2871
3002
  COMPARE_NODE_FIELD(old_conpfeqop);
2872
3003
  COMPARE_SCALAR_FIELD(old_pktable_oid);
2873
3004
  COMPARE_SCALAR_FIELD(skip_validation);
@@ -2913,6 +3044,7 @@ _equalRangeTblEntry(const RangeTblEntry *a, const RangeTblEntry *b)
2913
3044
  COMPARE_NODE_FIELD(joinaliasvars);
2914
3045
  COMPARE_NODE_FIELD(joinleftcols);
2915
3046
  COMPARE_NODE_FIELD(joinrightcols);
3047
+ COMPARE_NODE_FIELD(join_using_alias);
2916
3048
  COMPARE_NODE_FIELD(functions);
2917
3049
  COMPARE_SCALAR_FIELD(funcordinality);
2918
3050
  COMPARE_NODE_FIELD(tablefunc);
@@ -3009,6 +3141,7 @@ _equalWindowClause(const WindowClause *a, const WindowClause *b)
3009
3141
  COMPARE_SCALAR_FIELD(frameOptions);
3010
3142
  COMPARE_NODE_FIELD(startOffset);
3011
3143
  COMPARE_NODE_FIELD(endOffset);
3144
+ COMPARE_NODE_FIELD(runCondition);
3012
3145
  COMPARE_SCALAR_FIELD(startInRangeFunc);
3013
3146
  COMPARE_SCALAR_FIELD(endInRangeFunc);
3014
3147
  COMPARE_SCALAR_FIELD(inRangeColl);
@@ -3064,6 +3197,34 @@ _equalOnConflictClause(const OnConflictClause *a, const OnConflictClause *b)
3064
3197
  return true;
3065
3198
  }
3066
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
+
3067
3228
  static bool
3068
3229
  _equalCommonTableExpr(const CommonTableExpr *a, const CommonTableExpr *b)
3069
3230
  {
@@ -3071,6 +3232,8 @@ _equalCommonTableExpr(const CommonTableExpr *a, const CommonTableExpr *b)
3071
3232
  COMPARE_NODE_FIELD(aliascolnames);
3072
3233
  COMPARE_SCALAR_FIELD(ctematerialized);
3073
3234
  COMPARE_NODE_FIELD(ctequery);
3235
+ COMPARE_NODE_FIELD(search_clause);
3236
+ COMPARE_NODE_FIELD(cycle_clause);
3074
3237
  COMPARE_LOCATION_FIELD(location);
3075
3238
  COMPARE_SCALAR_FIELD(cterecursive);
3076
3239
  COMPARE_SCALAR_FIELD(cterefcount);
@@ -3082,6 +3245,32 @@ _equalCommonTableExpr(const CommonTableExpr *a, const CommonTableExpr *b)
3082
3245
  return true;
3083
3246
  }
3084
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
+
3085
3274
  static bool
3086
3275
  _equalXmlSerialize(const XmlSerialize *a, const XmlSerialize *b)
3087
3276
  {
@@ -3165,6 +3354,7 @@ _equalPartitionCmd(const PartitionCmd *a, const PartitionCmd *b)
3165
3354
  {
3166
3355
  COMPARE_NODE_FIELD(name);
3167
3356
  COMPARE_NODE_FIELD(bound);
3357
+ COMPARE_SCALAR_FIELD(concurrent);
3168
3358
 
3169
3359
  return true;
3170
3360
  }
@@ -3233,27 +3423,41 @@ _equalList(const List *a, const List *b)
3233
3423
  */
3234
3424
 
3235
3425
  static bool
3236
- _equalValue(const Value *a, const Value *b)
3426
+ _equalInteger(const Integer *a, const Integer *b)
3237
3427
  {
3238
- COMPARE_SCALAR_FIELD(type);
3428
+ COMPARE_SCALAR_FIELD(ival);
3239
3429
 
3240
- switch (a->type)
3241
- {
3242
- case T_Integer:
3243
- COMPARE_SCALAR_FIELD(val.ival);
3244
- break;
3245
- case T_Float:
3246
- case T_String:
3247
- case T_BitString:
3248
- COMPARE_STRING_FIELD(val.str);
3249
- break;
3250
- case T_Null:
3251
- /* nothing to do */
3252
- break;
3253
- default:
3254
- elog(ERROR, "unrecognized node type: %d", (int) a->type);
3255
- break;
3256
- }
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);
3257
3461
 
3258
3462
  return true;
3259
3463
  }
@@ -3473,11 +3677,19 @@ equal(const void *a, const void *b)
3473
3677
  break;
3474
3678
 
3475
3679
  case T_Integer:
3680
+ retval = _equalInteger(a, b);
3681
+ break;
3476
3682
  case T_Float:
3683
+ retval = _equalFloat(a, b);
3684
+ break;
3685
+ case T_Boolean:
3686
+ retval = _equalBoolean(a, b);
3687
+ break;
3477
3688
  case T_String:
3689
+ retval = _equalString(a, b);
3690
+ break;
3478
3691
  case T_BitString:
3479
- case T_Null:
3480
- retval = _equalValue(a, b);
3692
+ retval = _equalBitString(a, b);
3481
3693
  break;
3482
3694
 
3483
3695
  /*
@@ -3505,12 +3717,21 @@ equal(const void *a, const void *b)
3505
3717
  case T_UpdateStmt:
3506
3718
  retval = _equalUpdateStmt(a, b);
3507
3719
  break;
3720
+ case T_MergeStmt:
3721
+ retval = _equalMergeStmt(a, b);
3722
+ break;
3508
3723
  case T_SelectStmt:
3509
3724
  retval = _equalSelectStmt(a, b);
3510
3725
  break;
3511
3726
  case T_SetOperationStmt:
3512
3727
  retval = _equalSetOperationStmt(a, b);
3513
3728
  break;
3729
+ case T_ReturnStmt:
3730
+ retval = _equalReturnStmt(a, b);
3731
+ break;
3732
+ case T_PLAssignStmt:
3733
+ retval = _equalPLAssignStmt(a, b);
3734
+ break;
3514
3735
  case T_AlterTableStmt:
3515
3736
  retval = _equalAlterTableStmt(a, b);
3516
3737
  break;
@@ -3664,6 +3885,9 @@ equal(const void *a, const void *b)
3664
3885
  case T_AlterDatabaseStmt:
3665
3886
  retval = _equalAlterDatabaseStmt(a, b);
3666
3887
  break;
3888
+ case T_AlterDatabaseRefreshCollStmt:
3889
+ retval = _equalAlterDatabaseRefreshCollStmt(a, b);
3890
+ break;
3667
3891
  case T_AlterDatabaseSetStmt:
3668
3892
  retval = _equalAlterDatabaseSetStmt(a, b);
3669
3893
  break;
@@ -3848,7 +4072,7 @@ equal(const void *a, const void *b)
3848
4072
  retval = _equalDropSubscriptionStmt(a, b);
3849
4073
  break;
3850
4074
  case T_A_Expr:
3851
- retval = _equalAExpr(a, b);
4075
+ retval = _equalA_Expr(a, b);
3852
4076
  break;
3853
4077
  case T_ColumnRef:
3854
4078
  retval = _equalColumnRef(a, b);
@@ -3857,16 +4081,16 @@ equal(const void *a, const void *b)
3857
4081
  retval = _equalParamRef(a, b);
3858
4082
  break;
3859
4083
  case T_A_Const:
3860
- retval = _equalAConst(a, b);
4084
+ retval = _equalA_Const(a, b);
3861
4085
  break;
3862
4086
  case T_FuncCall:
3863
4087
  retval = _equalFuncCall(a, b);
3864
4088
  break;
3865
4089
  case T_A_Star:
3866
- retval = _equalAStar(a, b);
4090
+ retval = _equalA_Star(a, b);
3867
4091
  break;
3868
4092
  case T_A_Indices:
3869
- retval = _equalAIndices(a, b);
4093
+ retval = _equalA_Indices(a, b);
3870
4094
  break;
3871
4095
  case T_A_Indirection:
3872
4096
  retval = _equalA_Indirection(a, b);
@@ -3913,6 +4137,9 @@ equal(const void *a, const void *b)
3913
4137
  case T_IndexElem:
3914
4138
  retval = _equalIndexElem(a, b);
3915
4139
  break;
4140
+ case T_StatsElem:
4141
+ retval = _equalStatsElem(a, b);
4142
+ break;
3916
4143
  case T_ColumnDef:
3917
4144
  retval = _equalColumnDef(a, b);
3918
4145
  break;
@@ -3958,9 +4185,21 @@ equal(const void *a, const void *b)
3958
4185
  case T_OnConflictClause:
3959
4186
  retval = _equalOnConflictClause(a, b);
3960
4187
  break;
4188
+ case T_CTESearchClause:
4189
+ retval = _equalCTESearchClause(a, b);
4190
+ break;
4191
+ case T_CTECycleClause:
4192
+ retval = _equalCTECycleClause(a, b);
4193
+ break;
3961
4194
  case T_CommonTableExpr:
3962
4195
  retval = _equalCommonTableExpr(a, b);
3963
4196
  break;
4197
+ case T_MergeWhenClause:
4198
+ retval = _equalMergeWhenClause(a, b);
4199
+ break;
4200
+ case T_MergeAction:
4201
+ retval = _equalMergeAction(a, b);
4202
+ break;
3964
4203
  case T_ObjectWithArgs:
3965
4204
  retval = _equalObjectWithArgs(a, b);
3966
4205
  break;
@@ -3991,6 +4230,12 @@ equal(const void *a, const void *b)
3991
4230
  case T_PartitionCmd:
3992
4231
  retval = _equalPartitionCmd(a, b);
3993
4232
  break;
4233
+ case T_PublicationObjSpec:
4234
+ retval = _equalPublicationObject(a, b);
4235
+ break;
4236
+ case T_PublicationTable:
4237
+ retval = _equalPublicationTable(a, b);
4238
+ break;
3994
4239
 
3995
4240
  default:
3996
4241
  elog(ERROR, "unrecognized node type: %d",