pg_query 4.2.2 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (486) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +12 -0
  3. data/README.md +6 -8
  4. data/Rakefile +3 -3
  5. data/ext/pg_query/extconf.rb +1 -3
  6. data/ext/pg_query/include/access/amapi.h +3 -1
  7. data/ext/pg_query/include/access/attmap.h +5 -3
  8. data/ext/pg_query/include/access/attnum.h +1 -1
  9. data/ext/pg_query/include/access/clog.h +1 -1
  10. data/ext/pg_query/include/access/commit_ts.h +1 -1
  11. data/ext/pg_query/include/access/detoast.h +1 -1
  12. data/ext/pg_query/include/access/genam.h +7 -5
  13. data/ext/pg_query/include/access/gin.h +16 -3
  14. data/ext/pg_query/include/access/htup.h +1 -1
  15. data/ext/pg_query/include/access/htup_details.h +6 -2
  16. data/ext/pg_query/include/access/itup.h +61 -58
  17. data/ext/pg_query/include/access/parallel.h +2 -2
  18. data/ext/pg_query/include/access/printtup.h +1 -1
  19. data/ext/pg_query/include/access/relation.h +1 -1
  20. data/ext/pg_query/include/access/relscan.h +1 -1
  21. data/ext/pg_query/include/access/rmgrlist.h +2 -2
  22. data/ext/pg_query/include/access/sdir.h +12 -3
  23. data/ext/pg_query/include/access/skey.h +1 -1
  24. data/ext/pg_query/include/access/stratnum.h +1 -1
  25. data/ext/pg_query/include/access/sysattr.h +1 -1
  26. data/ext/pg_query/include/access/table.h +1 -1
  27. data/ext/pg_query/include/access/tableam.h +68 -45
  28. data/ext/pg_query/include/access/toast_compression.h +1 -1
  29. data/ext/pg_query/include/access/transam.h +1 -1
  30. data/ext/pg_query/include/access/tsmapi.h +82 -0
  31. data/ext/pg_query/include/access/tupconvert.h +5 -2
  32. data/ext/pg_query/include/access/tupdesc.h +2 -2
  33. data/ext/pg_query/include/access/tupmacs.h +58 -98
  34. data/ext/pg_query/include/access/twophase.h +2 -2
  35. data/ext/pg_query/include/access/xact.h +25 -18
  36. data/ext/pg_query/include/access/xlog.h +15 -16
  37. data/ext/pg_query/include/access/xlog_internal.h +100 -62
  38. data/ext/pg_query/include/access/xlogbackup.h +41 -0
  39. data/ext/pg_query/include/access/xlogdefs.h +6 -25
  40. data/ext/pg_query/include/access/xlogprefetcher.h +1 -1
  41. data/ext/pg_query/include/access/xlogreader.h +7 -6
  42. data/ext/pg_query/include/access/xlogrecord.h +17 -5
  43. data/ext/pg_query/include/access/xlogrecovery.h +4 -3
  44. data/ext/pg_query/include/archive/archive_module.h +59 -0
  45. data/ext/pg_query/include/c.h +144 -156
  46. data/ext/pg_query/include/catalog/catalog.h +4 -3
  47. data/ext/pg_query/include/catalog/catversion.h +6 -2
  48. data/ext/pg_query/include/catalog/dependency.h +5 -4
  49. data/ext/pg_query/include/catalog/genbki.h +7 -6
  50. data/ext/pg_query/include/catalog/index.h +4 -4
  51. data/ext/pg_query/include/catalog/indexing.h +1 -1
  52. data/ext/pg_query/include/catalog/namespace.h +2 -2
  53. data/ext/pg_query/include/catalog/objectaccess.h +10 -8
  54. data/ext/pg_query/include/catalog/objectaddress.h +3 -3
  55. data/ext/pg_query/include/catalog/pg_aggregate.h +1 -1
  56. data/ext/pg_query/include/catalog/pg_aggregate_d.h +1 -1
  57. data/ext/pg_query/include/catalog/pg_am.h +1 -1
  58. data/ext/pg_query/include/catalog/pg_am_d.h +1 -1
  59. data/ext/pg_query/include/catalog/pg_attribute.h +19 -17
  60. data/ext/pg_query/include/catalog/pg_attribute_d.h +19 -19
  61. data/ext/pg_query/include/catalog/pg_authid.h +1 -1
  62. data/ext/pg_query/include/catalog/pg_authid_d.h +3 -1
  63. data/ext/pg_query/include/catalog/pg_class.h +1 -1
  64. data/ext/pg_query/include/catalog/pg_class_d.h +1 -1
  65. data/ext/pg_query/include/catalog/pg_collation.h +3 -1
  66. data/ext/pg_query/include/catalog/pg_collation_d.h +4 -3
  67. data/ext/pg_query/include/catalog/pg_constraint.h +2 -2
  68. data/ext/pg_query/include/catalog/pg_constraint_d.h +1 -1
  69. data/ext/pg_query/include/catalog/pg_control.h +9 -1
  70. data/ext/pg_query/include/catalog/pg_conversion.h +2 -2
  71. data/ext/pg_query/include/catalog/pg_conversion_d.h +1 -1
  72. data/ext/pg_query/include/catalog/pg_database.h +124 -0
  73. data/ext/pg_query/include/catalog/pg_database_d.h +52 -0
  74. data/ext/pg_query/include/catalog/pg_depend.h +1 -1
  75. data/ext/pg_query/include/catalog/pg_depend_d.h +1 -1
  76. data/ext/pg_query/include/catalog/pg_event_trigger.h +1 -1
  77. data/ext/pg_query/include/catalog/pg_event_trigger_d.h +1 -1
  78. data/ext/pg_query/include/catalog/pg_index.h +1 -1
  79. data/ext/pg_query/include/catalog/pg_index_d.h +1 -1
  80. data/ext/pg_query/include/catalog/pg_language.h +1 -1
  81. data/ext/pg_query/include/catalog/pg_language_d.h +1 -1
  82. data/ext/pg_query/include/catalog/pg_namespace.h +1 -1
  83. data/ext/pg_query/include/catalog/pg_namespace_d.h +1 -1
  84. data/ext/pg_query/include/catalog/pg_opclass.h +1 -1
  85. data/ext/pg_query/include/catalog/pg_opclass_d.h +1 -1
  86. data/ext/pg_query/include/catalog/pg_operator.h +1 -1
  87. data/ext/pg_query/include/catalog/pg_operator_d.h +1 -1
  88. data/ext/pg_query/include/catalog/pg_opfamily.h +3 -2
  89. data/ext/pg_query/include/catalog/pg_opfamily_d.h +4 -2
  90. data/ext/pg_query/include/catalog/pg_partitioned_table.h +1 -1
  91. data/ext/pg_query/include/catalog/pg_partitioned_table_d.h +1 -1
  92. data/ext/pg_query/include/catalog/pg_proc.h +1 -1
  93. data/ext/pg_query/include/catalog/pg_proc_d.h +1 -1
  94. data/ext/pg_query/include/catalog/pg_publication.h +2 -5
  95. data/ext/pg_query/include/catalog/pg_publication_d.h +1 -1
  96. data/ext/pg_query/include/catalog/pg_replication_origin.h +1 -1
  97. data/ext/pg_query/include/catalog/pg_replication_origin_d.h +1 -1
  98. data/ext/pg_query/include/catalog/pg_statistic.h +1 -1
  99. data/ext/pg_query/include/catalog/pg_statistic_d.h +1 -1
  100. data/ext/pg_query/include/catalog/pg_statistic_ext.h +1 -1
  101. data/ext/pg_query/include/catalog/pg_statistic_ext_d.h +1 -1
  102. data/ext/pg_query/include/catalog/pg_transform.h +1 -1
  103. data/ext/pg_query/include/catalog/pg_transform_d.h +1 -1
  104. data/ext/pg_query/include/catalog/pg_trigger.h +1 -1
  105. data/ext/pg_query/include/catalog/pg_trigger_d.h +1 -1
  106. data/ext/pg_query/include/catalog/pg_ts_config.h +1 -1
  107. data/ext/pg_query/include/catalog/pg_ts_config_d.h +1 -1
  108. data/ext/pg_query/include/catalog/pg_ts_dict.h +1 -1
  109. data/ext/pg_query/include/catalog/pg_ts_dict_d.h +1 -1
  110. data/ext/pg_query/include/catalog/pg_ts_parser.h +1 -1
  111. data/ext/pg_query/include/catalog/pg_ts_parser_d.h +1 -1
  112. data/ext/pg_query/include/catalog/pg_ts_template.h +1 -1
  113. data/ext/pg_query/include/catalog/pg_ts_template_d.h +1 -1
  114. data/ext/pg_query/include/catalog/pg_type.h +1 -1
  115. data/ext/pg_query/include/catalog/pg_type_d.h +1 -1
  116. data/ext/pg_query/include/catalog/storage.h +6 -6
  117. data/ext/pg_query/include/commands/async.h +1 -1
  118. data/ext/pg_query/include/commands/dbcommands.h +2 -1
  119. data/ext/pg_query/include/commands/defrem.h +2 -1
  120. data/ext/pg_query/include/commands/event_trigger.h +1 -1
  121. data/ext/pg_query/include/commands/explain.h +3 -1
  122. data/ext/pg_query/include/commands/prepare.h +1 -1
  123. data/ext/pg_query/include/commands/tablespace.h +4 -4
  124. data/ext/pg_query/include/commands/trigger.h +15 -14
  125. data/ext/pg_query/include/commands/user.h +9 -3
  126. data/ext/pg_query/include/commands/vacuum.h +60 -14
  127. data/ext/pg_query/include/common/cryptohash.h +39 -0
  128. data/ext/pg_query/include/common/file_perm.h +1 -1
  129. data/ext/pg_query/include/common/hashfn.h +1 -1
  130. data/ext/pg_query/include/common/int.h +437 -0
  131. data/ext/pg_query/include/common/ip.h +4 -2
  132. data/ext/pg_query/include/common/keywords.h +1 -1
  133. data/ext/pg_query/include/common/kwlookup.h +2 -2
  134. data/ext/pg_query/include/common/pg_prng.h +3 -2
  135. data/ext/pg_query/include/common/relpath.h +20 -13
  136. data/ext/pg_query/include/common/scram-common.h +70 -0
  137. data/ext/pg_query/include/common/sha2.h +32 -0
  138. data/ext/pg_query/include/common/string.h +5 -3
  139. data/ext/pg_query/include/common/unicode_east_asian_fw_table.h +10 -10
  140. data/ext/pg_query/include/common/{unicode_combining_table.h → unicode_nonspacing_table.h} +31 -13
  141. data/ext/pg_query/include/copyfuncs.funcs.c +5013 -0
  142. data/ext/pg_query/include/copyfuncs.switch.c +938 -0
  143. data/ext/pg_query/include/datatype/timestamp.h +11 -4
  144. data/ext/pg_query/include/equalfuncs.funcs.c +3097 -0
  145. data/ext/pg_query/include/equalfuncs.switch.c +785 -0
  146. data/ext/pg_query/include/executor/execdesc.h +1 -1
  147. data/ext/pg_query/include/executor/executor.h +34 -17
  148. data/ext/pg_query/include/executor/functions.h +1 -1
  149. data/ext/pg_query/include/executor/instrument.h +1 -1
  150. data/ext/pg_query/include/executor/spi.h +2 -2
  151. data/ext/pg_query/include/executor/tablefunc.h +1 -1
  152. data/ext/pg_query/include/executor/tuptable.h +18 -11
  153. data/ext/pg_query/include/fmgr.h +21 -2
  154. data/ext/pg_query/include/foreign/fdwapi.h +294 -0
  155. data/ext/pg_query/include/funcapi.h +12 -12
  156. data/ext/pg_query/include/gram.h +1127 -0
  157. data/ext/pg_query/include/{parser/gramparse.h → gramparse.h} +4 -4
  158. data/ext/pg_query/include/jit/jit.h +2 -2
  159. data/ext/pg_query/include/kwlist_d.h +534 -510
  160. data/ext/pg_query/include/lib/dshash.h +4 -1
  161. data/ext/pg_query/include/lib/ilist.h +435 -22
  162. data/ext/pg_query/include/lib/pairingheap.h +1 -1
  163. data/ext/pg_query/include/lib/simplehash.h +9 -9
  164. data/ext/pg_query/include/lib/sort_template.h +1 -1
  165. data/ext/pg_query/include/lib/stringinfo.h +3 -3
  166. data/ext/pg_query/include/libpq/auth.h +8 -2
  167. data/ext/pg_query/include/libpq/crypt.h +1 -1
  168. data/ext/pg_query/include/libpq/hba.h +24 -17
  169. data/ext/pg_query/include/libpq/libpq-be.h +36 -25
  170. data/ext/pg_query/include/libpq/libpq.h +1 -1
  171. data/ext/pg_query/include/libpq/pqcomm.h +10 -41
  172. data/ext/pg_query/include/libpq/pqformat.h +2 -2
  173. data/ext/pg_query/include/libpq/pqsignal.h +22 -10
  174. data/ext/pg_query/include/libpq/sasl.h +136 -0
  175. data/ext/pg_query/include/libpq/scram.h +37 -0
  176. data/ext/pg_query/include/mb/pg_wchar.h +35 -18
  177. data/ext/pg_query/include/mb/stringinfo_mb.h +1 -1
  178. data/ext/pg_query/include/miscadmin.h +26 -14
  179. data/ext/pg_query/include/nodes/bitmapset.h +11 -7
  180. data/ext/pg_query/include/nodes/execnodes.h +83 -30
  181. data/ext/pg_query/include/nodes/extensible.h +5 -3
  182. data/ext/pg_query/include/nodes/lockoptions.h +1 -1
  183. data/ext/pg_query/include/nodes/makefuncs.h +14 -2
  184. data/ext/pg_query/include/nodes/memnodes.h +7 -4
  185. data/ext/pg_query/include/nodes/miscnodes.h +56 -0
  186. data/ext/pg_query/include/nodes/nodeFuncs.h +89 -29
  187. data/ext/pg_query/include/nodes/nodes.h +95 -510
  188. data/ext/pg_query/include/nodes/nodetags.h +471 -0
  189. data/ext/pg_query/include/nodes/params.h +3 -3
  190. data/ext/pg_query/include/nodes/parsenodes.h +377 -139
  191. data/ext/pg_query/include/nodes/pathnodes.h +1090 -440
  192. data/ext/pg_query/include/nodes/pg_list.h +30 -7
  193. data/ext/pg_query/include/nodes/plannodes.h +367 -124
  194. data/ext/pg_query/include/nodes/primnodes.h +670 -222
  195. data/ext/pg_query/include/nodes/print.h +1 -1
  196. data/ext/pg_query/include/{utils → nodes}/queryjumble.h +5 -7
  197. data/ext/pg_query/include/nodes/replnodes.h +111 -0
  198. data/ext/pg_query/include/nodes/supportnodes.h +346 -0
  199. data/ext/pg_query/include/nodes/tidbitmap.h +1 -1
  200. data/ext/pg_query/include/nodes/value.h +12 -2
  201. data/ext/pg_query/include/optimizer/cost.h +6 -4
  202. data/ext/pg_query/include/optimizer/geqo.h +1 -1
  203. data/ext/pg_query/include/optimizer/geqo_gene.h +1 -1
  204. data/ext/pg_query/include/optimizer/optimizer.h +8 -8
  205. data/ext/pg_query/include/optimizer/paths.h +16 -7
  206. data/ext/pg_query/include/optimizer/planmain.h +3 -6
  207. data/ext/pg_query/include/parser/analyze.h +4 -3
  208. data/ext/pg_query/include/parser/kwlist.h +12 -1
  209. data/ext/pg_query/include/parser/parse_agg.h +4 -2
  210. data/ext/pg_query/include/parser/parse_coerce.h +3 -1
  211. data/ext/pg_query/include/parser/parse_expr.h +1 -1
  212. data/ext/pg_query/include/parser/parse_func.h +1 -1
  213. data/ext/pg_query/include/parser/parse_node.h +22 -4
  214. data/ext/pg_query/include/parser/parse_oper.h +3 -3
  215. data/ext/pg_query/include/parser/parse_relation.h +8 -3
  216. data/ext/pg_query/include/parser/parse_type.h +4 -3
  217. data/ext/pg_query/include/parser/parser.h +1 -1
  218. data/ext/pg_query/include/parser/parsetree.h +1 -1
  219. data/ext/pg_query/include/parser/scanner.h +2 -2
  220. data/ext/pg_query/include/parser/scansup.h +1 -1
  221. data/ext/pg_query/include/partitioning/partdefs.h +1 -1
  222. data/ext/pg_query/include/pg_config.h +23 -217
  223. data/ext/pg_query/include/pg_config_manual.h +8 -46
  224. data/ext/pg_query/include/pg_getopt.h +1 -1
  225. data/ext/pg_query/include/pg_query.h +27 -3
  226. data/ext/pg_query/include/pg_query_enum_defs.c +311 -149
  227. data/ext/pg_query/include/pg_query_fingerprint_conds.c +545 -489
  228. data/ext/pg_query/include/pg_query_fingerprint_defs.c +5092 -4432
  229. data/ext/pg_query/include/pg_query_outfuncs_conds.c +385 -343
  230. data/ext/pg_query/include/pg_query_outfuncs_defs.c +1294 -1161
  231. data/ext/pg_query/include/pg_query_readfuncs_conds.c +137 -123
  232. data/ext/pg_query/include/pg_query_readfuncs_defs.c +1657 -1496
  233. data/ext/pg_query/include/pg_trace.h +1 -1
  234. data/ext/pg_query/include/pgstat.h +172 -93
  235. data/ext/pg_query/include/pgtime.h +3 -3
  236. data/ext/pg_query/include/pl_gram.h +64 -62
  237. data/ext/pg_query/include/pl_reserved_kwlist.h +1 -1
  238. data/ext/pg_query/include/pl_reserved_kwlist_d.h +1 -1
  239. data/ext/pg_query/include/pl_unreserved_kwlist.h +2 -1
  240. data/ext/pg_query/include/pl_unreserved_kwlist_d.h +48 -46
  241. data/ext/pg_query/include/plpgsql.h +17 -22
  242. data/ext/pg_query/include/port/atomics/arch-arm.h +3 -3
  243. data/ext/pg_query/include/port/atomics/arch-ppc.h +21 -21
  244. data/ext/pg_query/include/port/atomics/arch-x86.h +2 -2
  245. data/ext/pg_query/include/port/atomics/fallback.h +3 -3
  246. data/ext/pg_query/include/port/atomics/generic-gcc.h +1 -1
  247. data/ext/pg_query/include/port/atomics/generic.h +1 -1
  248. data/ext/pg_query/include/port/atomics.h +2 -7
  249. data/ext/pg_query/include/port/pg_bitutils.h +62 -25
  250. data/ext/pg_query/include/port/pg_bswap.h +1 -1
  251. data/ext/pg_query/include/port/pg_crc32c.h +1 -1
  252. data/ext/pg_query/include/port/simd.h +375 -0
  253. data/ext/pg_query/include/port.h +42 -75
  254. data/ext/pg_query/include/portability/instr_time.h +81 -140
  255. data/ext/pg_query/include/postgres.h +205 -434
  256. data/ext/pg_query/include/postgres_ext.h +0 -1
  257. data/ext/pg_query/include/postmaster/autovacuum.h +1 -4
  258. data/ext/pg_query/include/postmaster/auxprocess.h +1 -1
  259. data/ext/pg_query/include/postmaster/bgworker.h +2 -2
  260. data/ext/pg_query/include/postmaster/bgworker_internals.h +1 -1
  261. data/ext/pg_query/include/postmaster/bgwriter.h +2 -2
  262. data/ext/pg_query/include/postmaster/fork_process.h +1 -1
  263. data/ext/pg_query/include/postmaster/interrupt.h +1 -1
  264. data/ext/pg_query/include/postmaster/pgarch.h +1 -38
  265. data/ext/pg_query/include/postmaster/postmaster.h +5 -2
  266. data/ext/pg_query/include/postmaster/startup.h +3 -1
  267. data/ext/pg_query/include/postmaster/syslogger.h +2 -2
  268. data/ext/pg_query/include/postmaster/walwriter.h +3 -1
  269. data/ext/pg_query/include/protobuf/pg_query.pb-c.h +6186 -5585
  270. data/ext/pg_query/include/protobuf/pg_query.pb.h +112443 -91222
  271. data/ext/pg_query/include/regex/regex.h +9 -6
  272. data/ext/pg_query/include/replication/logicallauncher.h +6 -1
  273. data/ext/pg_query/include/replication/logicalproto.h +30 -10
  274. data/ext/pg_query/include/replication/logicalworker.h +14 -1
  275. data/ext/pg_query/include/replication/origin.h +4 -4
  276. data/ext/pg_query/include/replication/reorderbuffer.h +113 -45
  277. data/ext/pg_query/include/replication/slot.h +25 -6
  278. data/ext/pg_query/include/replication/syncrep.h +2 -8
  279. data/ext/pg_query/include/replication/walreceiver.h +15 -9
  280. data/ext/pg_query/include/replication/walsender.h +13 -13
  281. data/ext/pg_query/include/rewrite/prs2lock.h +1 -1
  282. data/ext/pg_query/include/rewrite/rewriteHandler.h +1 -4
  283. data/ext/pg_query/include/rewrite/rewriteManip.h +11 -2
  284. data/ext/pg_query/include/rewrite/rewriteSupport.h +1 -1
  285. data/ext/pg_query/include/src_backend_nodes_copyfuncs.funcs.c +5321 -0
  286. data/ext/pg_query/include/src_backend_nodes_equalfuncs.funcs.c +3354 -0
  287. data/ext/pg_query/include/storage/backendid.h +1 -1
  288. data/ext/pg_query/include/storage/block.h +24 -31
  289. data/ext/pg_query/include/storage/buf.h +1 -1
  290. data/ext/pg_query/include/storage/bufmgr.h +183 -87
  291. data/ext/pg_query/include/storage/bufpage.h +146 -93
  292. data/ext/pg_query/include/storage/condition_variable.h +2 -2
  293. data/ext/pg_query/include/storage/dsm.h +3 -6
  294. data/ext/pg_query/include/storage/dsm_impl.h +4 -1
  295. data/ext/pg_query/include/storage/fd.h +24 -20
  296. data/ext/pg_query/include/storage/fileset.h +1 -1
  297. data/ext/pg_query/include/storage/ipc.h +1 -1
  298. data/ext/pg_query/include/storage/item.h +1 -1
  299. data/ext/pg_query/include/storage/itemid.h +1 -1
  300. data/ext/pg_query/include/storage/itemptr.h +94 -57
  301. data/ext/pg_query/include/storage/large_object.h +1 -1
  302. data/ext/pg_query/include/storage/latch.h +9 -1
  303. data/ext/pg_query/include/storage/lmgr.h +6 -1
  304. data/ext/pg_query/include/storage/lock.h +21 -13
  305. data/ext/pg_query/include/storage/lockdefs.h +3 -3
  306. data/ext/pg_query/include/storage/lwlock.h +16 -2
  307. data/ext/pg_query/include/storage/off.h +1 -1
  308. data/ext/pg_query/include/storage/pg_sema.h +1 -1
  309. data/ext/pg_query/include/storage/pg_shmem.h +1 -1
  310. data/ext/pg_query/include/storage/pmsignal.h +1 -1
  311. data/ext/pg_query/include/storage/predicate.h +2 -2
  312. data/ext/pg_query/include/storage/proc.h +22 -17
  313. data/ext/pg_query/include/storage/procarray.h +3 -2
  314. data/ext/pg_query/include/storage/proclist_types.h +1 -1
  315. data/ext/pg_query/include/storage/procsignal.h +3 -1
  316. data/ext/pg_query/include/storage/relfilelocator.h +99 -0
  317. data/ext/pg_query/include/storage/s_lock.h +66 -309
  318. data/ext/pg_query/include/storage/sharedfileset.h +1 -1
  319. data/ext/pg_query/include/storage/shm_mq.h +1 -1
  320. data/ext/pg_query/include/storage/shm_toc.h +1 -1
  321. data/ext/pg_query/include/storage/shmem.h +1 -23
  322. data/ext/pg_query/include/storage/sinval.h +3 -3
  323. data/ext/pg_query/include/storage/sinvaladt.h +4 -2
  324. data/ext/pg_query/include/storage/smgr.h +12 -10
  325. data/ext/pg_query/include/storage/spin.h +1 -1
  326. data/ext/pg_query/include/storage/standby.h +9 -8
  327. data/ext/pg_query/include/storage/standbydefs.h +1 -1
  328. data/ext/pg_query/include/storage/sync.h +3 -3
  329. data/ext/pg_query/include/tcop/cmdtag.h +7 -2
  330. data/ext/pg_query/include/tcop/cmdtaglist.h +1 -1
  331. data/ext/pg_query/include/tcop/deparse_utility.h +1 -1
  332. data/ext/pg_query/include/tcop/dest.h +1 -3
  333. data/ext/pg_query/include/tcop/fastpath.h +1 -1
  334. data/ext/pg_query/include/tcop/pquery.h +1 -1
  335. data/ext/pg_query/include/tcop/tcopprot.h +1 -4
  336. data/ext/pg_query/include/tcop/utility.h +1 -1
  337. data/ext/pg_query/include/tsearch/ts_cache.h +2 -4
  338. data/ext/pg_query/include/utils/acl.h +26 -81
  339. data/ext/pg_query/include/utils/aclchk_internal.h +1 -1
  340. data/ext/pg_query/include/utils/array.h +19 -1
  341. data/ext/pg_query/include/utils/backend_progress.h +2 -1
  342. data/ext/pg_query/include/utils/backend_status.h +24 -3
  343. data/ext/pg_query/include/utils/builtins.h +14 -5
  344. data/ext/pg_query/include/utils/bytea.h +1 -1
  345. data/ext/pg_query/include/utils/catcache.h +1 -1
  346. data/ext/pg_query/include/utils/date.h +37 -9
  347. data/ext/pg_query/include/utils/datetime.h +41 -21
  348. data/ext/pg_query/include/utils/datum.h +1 -1
  349. data/ext/pg_query/include/utils/dsa.h +5 -1
  350. data/ext/pg_query/include/utils/elog.h +101 -26
  351. data/ext/pg_query/include/utils/expandeddatum.h +14 -3
  352. data/ext/pg_query/include/utils/expandedrecord.h +14 -4
  353. data/ext/pg_query/include/utils/float.h +7 -6
  354. data/ext/pg_query/include/utils/fmgroids.h +54 -1
  355. data/ext/pg_query/include/utils/fmgrprotos.h +45 -3
  356. data/ext/pg_query/include/utils/fmgrtab.h +1 -1
  357. data/ext/pg_query/include/utils/guc.h +55 -82
  358. data/ext/pg_query/include/utils/guc_hooks.h +163 -0
  359. data/ext/pg_query/include/utils/guc_tables.h +49 -3
  360. data/ext/pg_query/include/utils/hsearch.h +1 -1
  361. data/ext/pg_query/include/utils/inval.h +3 -3
  362. data/ext/pg_query/include/utils/logtape.h +77 -0
  363. data/ext/pg_query/include/utils/lsyscache.h +5 -1
  364. data/ext/pg_query/include/utils/memdebug.h +1 -1
  365. data/ext/pg_query/include/utils/memutils.h +5 -49
  366. data/ext/pg_query/include/utils/memutils_internal.h +136 -0
  367. data/ext/pg_query/include/utils/memutils_memorychunk.h +237 -0
  368. data/ext/pg_query/include/utils/numeric.h +20 -5
  369. data/ext/pg_query/include/utils/palloc.h +8 -1
  370. data/ext/pg_query/include/utils/partcache.h +3 -2
  371. data/ext/pg_query/include/utils/pg_locale.h +22 -14
  372. data/ext/pg_query/include/utils/pgstat_internal.h +37 -7
  373. data/ext/pg_query/include/utils/pidfile.h +1 -1
  374. data/ext/pg_query/include/utils/plancache.h +1 -1
  375. data/ext/pg_query/include/utils/portal.h +1 -1
  376. data/ext/pg_query/include/utils/probes.h +6 -6
  377. data/ext/pg_query/include/utils/ps_status.h +23 -1
  378. data/ext/pg_query/include/utils/queryenvironment.h +1 -1
  379. data/ext/pg_query/include/utils/regproc.h +3 -3
  380. data/ext/pg_query/include/utils/rel.h +60 -43
  381. data/ext/pg_query/include/utils/relcache.h +13 -8
  382. data/ext/pg_query/include/utils/reltrigger.h +1 -1
  383. data/ext/pg_query/include/utils/resowner.h +1 -1
  384. data/ext/pg_query/include/utils/ruleutils.h +6 -1
  385. data/ext/pg_query/include/utils/sharedtuplestore.h +1 -1
  386. data/ext/pg_query/include/utils/snapmgr.h +4 -2
  387. data/ext/pg_query/include/utils/snapshot.h +1 -1
  388. data/ext/pg_query/include/utils/sortsupport.h +2 -2
  389. data/ext/pg_query/include/utils/syscache.h +4 -1
  390. data/ext/pg_query/include/utils/timeout.h +1 -1
  391. data/ext/pg_query/include/utils/timestamp.h +41 -11
  392. data/ext/pg_query/include/utils/tuplesort.h +189 -35
  393. data/ext/pg_query/include/utils/tuplestore.h +1 -1
  394. data/ext/pg_query/include/utils/typcache.h +1 -1
  395. data/ext/pg_query/include/utils/varlena.h +13 -1
  396. data/ext/pg_query/include/utils/wait_event.h +9 -4
  397. data/ext/pg_query/include/utils/xml.h +15 -5
  398. data/ext/pg_query/include/varatt.h +358 -0
  399. data/ext/pg_query/pg_query.c +1 -1
  400. data/ext/pg_query/pg_query.pb-c.c +19755 -17757
  401. data/ext/pg_query/pg_query_fingerprint.c +8 -3
  402. data/ext/pg_query/pg_query_fingerprint.h +1 -1
  403. data/ext/pg_query/pg_query_internal.h +1 -1
  404. data/ext/pg_query/pg_query_json_plpgsql.c +1 -0
  405. data/ext/pg_query/pg_query_normalize.c +1 -1
  406. data/ext/pg_query/pg_query_outfuncs_protobuf.c +2 -2
  407. data/ext/pg_query/pg_query_parse.c +46 -4
  408. data/ext/pg_query/pg_query_parse_plpgsql.c +1 -1
  409. data/ext/pg_query/pg_query_scan.c +1 -1
  410. data/ext/pg_query/pg_query_split.c +2 -2
  411. data/ext/pg_query/postgres_deparse.c +511 -109
  412. data/ext/pg_query/src_backend_catalog_namespace.c +7 -2
  413. data/ext/pg_query/src_backend_catalog_pg_proc.c +1 -1
  414. data/ext/pg_query/src_backend_commands_define.c +1 -1
  415. data/ext/pg_query/src_backend_nodes_bitmapset.c +11 -70
  416. data/ext/pg_query/src_backend_nodes_copyfuncs.c +96 -6202
  417. data/ext/pg_query/src_backend_nodes_equalfuncs.c +95 -4068
  418. data/ext/pg_query/src_backend_nodes_extensible.c +6 -29
  419. data/ext/pg_query/src_backend_nodes_list.c +14 -2
  420. data/ext/pg_query/src_backend_nodes_makefuncs.c +95 -1
  421. data/ext/pg_query/src_backend_nodes_nodeFuncs.c +283 -132
  422. data/ext/pg_query/src_backend_nodes_value.c +1 -1
  423. data/ext/pg_query/src_backend_parser_gram.c +33208 -31806
  424. data/ext/pg_query/src_backend_parser_parser.c +28 -2
  425. data/ext/pg_query/src_backend_parser_scan.c +4318 -3329
  426. data/ext/pg_query/src_backend_parser_scansup.c +1 -1
  427. data/ext/pg_query/src_backend_postmaster_postmaster.c +129 -110
  428. data/ext/pg_query/src_backend_storage_ipc_ipc.c +1 -1
  429. data/ext/pg_query/src_backend_tcop_postgres.c +66 -87
  430. data/ext/pg_query/src_backend_utils_activity_pgstat_database.c +1 -1
  431. data/ext/pg_query/src_backend_utils_adt_datum.c +5 -7
  432. data/ext/pg_query/src_backend_utils_adt_expandeddatum.c +1 -1
  433. data/ext/pg_query/src_backend_utils_adt_format_type.c +1 -1
  434. data/ext/pg_query/src_backend_utils_adt_numutils.c +489 -0
  435. data/ext/pg_query/src_backend_utils_adt_ruleutils.c +79 -5
  436. data/ext/pg_query/src_backend_utils_error_assert.c +4 -7
  437. data/ext/pg_query/src_backend_utils_error_elog.c +354 -97
  438. data/ext/pg_query/src_backend_utils_fmgr_fmgr.c +33 -1
  439. data/ext/pg_query/src_backend_utils_init_globals.c +5 -2
  440. data/ext/pg_query/src_backend_utils_mb_mbutils.c +13 -4
  441. data/ext/pg_query/src_backend_utils_misc_guc_tables.c +494 -0
  442. data/ext/pg_query/src_backend_utils_mmgr_alignedalloc.c +163 -0
  443. data/ext/pg_query/src_backend_utils_mmgr_aset.c +449 -312
  444. data/ext/pg_query/src_backend_utils_mmgr_generation.c +1039 -0
  445. data/ext/pg_query/src_backend_utils_mmgr_mcxt.c +398 -49
  446. data/ext/pg_query/src_backend_utils_mmgr_slab.c +1021 -0
  447. data/ext/pg_query/src_common_encnames.c +4 -1
  448. data/ext/pg_query/src_common_hashfn.c +1 -1
  449. data/ext/pg_query/src_common_keywords.c +1 -1
  450. data/ext/pg_query/src_common_kwlist_d.h +534 -510
  451. data/ext/pg_query/src_common_kwlookup.c +1 -1
  452. data/ext/pg_query/src_common_psprintf.c +1 -1
  453. data/ext/pg_query/src_common_stringinfo.c +4 -4
  454. data/ext/pg_query/src_common_wchar.c +9 -8
  455. data/ext/pg_query/src_pl_plpgsql_src_pl_comp.c +1 -1
  456. data/ext/pg_query/src_pl_plpgsql_src_pl_funcs.c +3 -1
  457. data/ext/pg_query/src_pl_plpgsql_src_pl_gram.c +661 -694
  458. data/ext/pg_query/src_pl_plpgsql_src_pl_handler.c +1 -1
  459. data/ext/pg_query/src_pl_plpgsql_src_pl_reserved_kwlist_d.h +1 -1
  460. data/ext/pg_query/src_pl_plpgsql_src_pl_scanner.c +1 -1
  461. data/ext/pg_query/src_pl_plpgsql_src_pl_unreserved_kwlist_d.h +48 -46
  462. data/ext/pg_query/src_port_pg_bitutils.c +1 -1
  463. data/ext/pg_query/src_port_pgstrcasecmp.c +29 -1
  464. data/ext/pg_query/src_port_snprintf.c +3 -7
  465. data/ext/pg_query/src_port_strerror.c +1 -1
  466. data/ext/pg_query/src_port_strnlen.c +1 -1
  467. data/lib/pg_query/pg_query_pb.rb +166 -3191
  468. data/lib/pg_query/treewalker.rb +7 -2
  469. data/lib/pg_query/version.rb +1 -1
  470. metadata +43 -24
  471. data/ext/pg_query/include/catalog/pg_parameter_acl.h +0 -60
  472. data/ext/pg_query/include/catalog/pg_parameter_acl_d.h +0 -34
  473. data/ext/pg_query/include/commands/variable.h +0 -38
  474. data/ext/pg_query/include/getaddrinfo.h +0 -162
  475. data/ext/pg_query/include/parser/gram.h +0 -1101
  476. data/ext/pg_query/include/storage/relfilenode.h +0 -99
  477. data/ext/pg_query/include/utils/dynahash.h +0 -20
  478. data/ext/pg_query/include/utils/pg_lsn.h +0 -29
  479. data/ext/pg_query/include/utils/rls.h +0 -50
  480. data/ext/pg_query/include/utils/tzparser.h +0 -39
  481. data/ext/pg_query/src_backend_storage_lmgr_s_lock.c +0 -371
  482. data/ext/pg_query/src_backend_utils_hash_dynahash.c +0 -1116
  483. data/ext/pg_query/src_backend_utils_misc_guc.c +0 -1993
  484. data/ext/pg_query/src_common_pg_prng.c +0 -152
  485. data/ext/pg_query/src_common_string.c +0 -92
  486. data/ext/pg_query/src_port_pgsleep.c +0 -69
@@ -0,0 +1,3354 @@
1
+ /*--------------------------------------------------------------------
2
+ * Symbols referenced in this file:
3
+ * - _equalAlias
4
+ * - _equalRangeVar
5
+ * - _equalTableFunc
6
+ * - _equalIntoClause
7
+ * - _equalVar
8
+ * - _equalParam
9
+ * - _equalAggref
10
+ * - _equalGroupingFunc
11
+ * - _equalWindowFunc
12
+ * - _equalSubscriptingRef
13
+ * - _equalFuncExpr
14
+ * - _equalNamedArgExpr
15
+ * - _equalOpExpr
16
+ * - _equalDistinctExpr
17
+ * - _equalNullIfExpr
18
+ * - _equalScalarArrayOpExpr
19
+ * - _equalBoolExpr
20
+ * - _equalSubLink
21
+ * - _equalSubPlan
22
+ * - _equalAlternativeSubPlan
23
+ * - _equalFieldSelect
24
+ * - _equalFieldStore
25
+ * - _equalRelabelType
26
+ * - _equalCoerceViaIO
27
+ * - _equalArrayCoerceExpr
28
+ * - _equalConvertRowtypeExpr
29
+ * - _equalCollateExpr
30
+ * - _equalCaseExpr
31
+ * - _equalCaseWhen
32
+ * - _equalCaseTestExpr
33
+ * - _equalArrayExpr
34
+ * - _equalRowExpr
35
+ * - _equalRowCompareExpr
36
+ * - _equalCoalesceExpr
37
+ * - _equalMinMaxExpr
38
+ * - _equalSQLValueFunction
39
+ * - _equalXmlExpr
40
+ * - _equalJsonFormat
41
+ * - _equalJsonReturning
42
+ * - _equalJsonValueExpr
43
+ * - _equalJsonConstructorExpr
44
+ * - _equalJsonIsPredicate
45
+ * - _equalNullTest
46
+ * - _equalBooleanTest
47
+ * - _equalCoerceToDomain
48
+ * - _equalCoerceToDomainValue
49
+ * - _equalSetToDefault
50
+ * - _equalCurrentOfExpr
51
+ * - _equalNextValueExpr
52
+ * - _equalInferenceElem
53
+ * - _equalTargetEntry
54
+ * - _equalRangeTblRef
55
+ * - _equalJoinExpr
56
+ * - _equalFromExpr
57
+ * - _equalOnConflictExpr
58
+ * - _equalQuery
59
+ * - _equalTypeName
60
+ * - _equalColumnRef
61
+ * - _equalParamRef
62
+ * - _equalA_Expr
63
+ * - _equalTypeCast
64
+ * - _equalCollateClause
65
+ * - _equalRoleSpec
66
+ * - _equalFuncCall
67
+ * - _equalA_Star
68
+ * - _equalA_Indices
69
+ * - _equalA_Indirection
70
+ * - _equalA_ArrayExpr
71
+ * - _equalResTarget
72
+ * - _equalMultiAssignRef
73
+ * - _equalSortBy
74
+ * - _equalWindowDef
75
+ * - _equalRangeSubselect
76
+ * - _equalRangeFunction
77
+ * - _equalRangeTableFunc
78
+ * - _equalRangeTableFuncCol
79
+ * - _equalRangeTableSample
80
+ * - _equalColumnDef
81
+ * - _equalTableLikeClause
82
+ * - _equalIndexElem
83
+ * - _equalDefElem
84
+ * - _equalLockingClause
85
+ * - _equalXmlSerialize
86
+ * - _equalPartitionElem
87
+ * - _equalPartitionSpec
88
+ * - _equalPartitionBoundSpec
89
+ * - _equalPartitionRangeDatum
90
+ * - _equalPartitionCmd
91
+ * - _equalRangeTblEntry
92
+ * - _equalRTEPermissionInfo
93
+ * - _equalRangeTblFunction
94
+ * - _equalTableSampleClause
95
+ * - _equalWithCheckOption
96
+ * - _equalSortGroupClause
97
+ * - _equalGroupingSet
98
+ * - _equalWindowClause
99
+ * - _equalRowMarkClause
100
+ * - _equalWithClause
101
+ * - _equalInferClause
102
+ * - _equalOnConflictClause
103
+ * - _equalCTESearchClause
104
+ * - _equalCTECycleClause
105
+ * - _equalCommonTableExpr
106
+ * - _equalMergeWhenClause
107
+ * - _equalMergeAction
108
+ * - _equalTriggerTransition
109
+ * - _equalJsonOutput
110
+ * - _equalJsonKeyValue
111
+ * - _equalJsonObjectConstructor
112
+ * - _equalJsonArrayConstructor
113
+ * - _equalJsonArrayQueryConstructor
114
+ * - _equalJsonAggConstructor
115
+ * - _equalJsonObjectAgg
116
+ * - _equalJsonArrayAgg
117
+ * - _equalRawStmt
118
+ * - _equalInsertStmt
119
+ * - _equalDeleteStmt
120
+ * - _equalUpdateStmt
121
+ * - _equalMergeStmt
122
+ * - _equalSelectStmt
123
+ * - _equalSetOperationStmt
124
+ * - _equalReturnStmt
125
+ * - _equalPLAssignStmt
126
+ * - _equalCreateSchemaStmt
127
+ * - _equalAlterTableStmt
128
+ * - _equalReplicaIdentityStmt
129
+ * - _equalAlterTableCmd
130
+ * - _equalAlterCollationStmt
131
+ * - _equalAlterDomainStmt
132
+ * - _equalGrantStmt
133
+ * - _equalObjectWithArgs
134
+ * - _equalAccessPriv
135
+ * - _equalGrantRoleStmt
136
+ * - _equalAlterDefaultPrivilegesStmt
137
+ * - _equalCopyStmt
138
+ * - _equalVariableSetStmt
139
+ * - _equalVariableShowStmt
140
+ * - _equalCreateStmt
141
+ * - _equalConstraint
142
+ * - _equalCreateTableSpaceStmt
143
+ * - _equalDropTableSpaceStmt
144
+ * - _equalAlterTableSpaceOptionsStmt
145
+ * - _equalAlterTableMoveAllStmt
146
+ * - _equalCreateExtensionStmt
147
+ * - _equalAlterExtensionStmt
148
+ * - _equalAlterExtensionContentsStmt
149
+ * - _equalCreateFdwStmt
150
+ * - _equalAlterFdwStmt
151
+ * - _equalCreateForeignServerStmt
152
+ * - _equalAlterForeignServerStmt
153
+ * - _equalCreateForeignTableStmt
154
+ * - _equalCreateUserMappingStmt
155
+ * - _equalAlterUserMappingStmt
156
+ * - _equalDropUserMappingStmt
157
+ * - _equalImportForeignSchemaStmt
158
+ * - _equalCreatePolicyStmt
159
+ * - _equalAlterPolicyStmt
160
+ * - _equalCreateAmStmt
161
+ * - _equalCreateTrigStmt
162
+ * - _equalCreateEventTrigStmt
163
+ * - _equalAlterEventTrigStmt
164
+ * - _equalCreatePLangStmt
165
+ * - _equalCreateRoleStmt
166
+ * - _equalAlterRoleStmt
167
+ * - _equalAlterRoleSetStmt
168
+ * - _equalDropRoleStmt
169
+ * - _equalCreateSeqStmt
170
+ * - _equalAlterSeqStmt
171
+ * - _equalDefineStmt
172
+ * - _equalCreateDomainStmt
173
+ * - _equalCreateOpClassStmt
174
+ * - _equalCreateOpClassItem
175
+ * - _equalCreateOpFamilyStmt
176
+ * - _equalAlterOpFamilyStmt
177
+ * - _equalDropStmt
178
+ * - _equalTruncateStmt
179
+ * - _equalCommentStmt
180
+ * - _equalSecLabelStmt
181
+ * - _equalDeclareCursorStmt
182
+ * - _equalClosePortalStmt
183
+ * - _equalFetchStmt
184
+ * - _equalIndexStmt
185
+ * - _equalCreateStatsStmt
186
+ * - _equalStatsElem
187
+ * - _equalAlterStatsStmt
188
+ * - _equalCreateFunctionStmt
189
+ * - _equalFunctionParameter
190
+ * - _equalAlterFunctionStmt
191
+ * - _equalDoStmt
192
+ * - _equalCallStmt
193
+ * - _equalRenameStmt
194
+ * - _equalAlterObjectDependsStmt
195
+ * - _equalAlterObjectSchemaStmt
196
+ * - _equalAlterOwnerStmt
197
+ * - _equalAlterOperatorStmt
198
+ * - _equalAlterTypeStmt
199
+ * - _equalRuleStmt
200
+ * - _equalNotifyStmt
201
+ * - _equalListenStmt
202
+ * - _equalUnlistenStmt
203
+ * - _equalTransactionStmt
204
+ * - _equalCompositeTypeStmt
205
+ * - _equalCreateEnumStmt
206
+ * - _equalCreateRangeStmt
207
+ * - _equalAlterEnumStmt
208
+ * - _equalViewStmt
209
+ * - _equalLoadStmt
210
+ * - _equalCreatedbStmt
211
+ * - _equalAlterDatabaseStmt
212
+ * - _equalAlterDatabaseRefreshCollStmt
213
+ * - _equalAlterDatabaseSetStmt
214
+ * - _equalDropdbStmt
215
+ * - _equalAlterSystemStmt
216
+ * - _equalClusterStmt
217
+ * - _equalVacuumStmt
218
+ * - _equalVacuumRelation
219
+ * - _equalExplainStmt
220
+ * - _equalCreateTableAsStmt
221
+ * - _equalRefreshMatViewStmt
222
+ * - _equalCheckPointStmt
223
+ * - _equalDiscardStmt
224
+ * - _equalLockStmt
225
+ * - _equalConstraintsSetStmt
226
+ * - _equalReindexStmt
227
+ * - _equalCreateConversionStmt
228
+ * - _equalCreateCastStmt
229
+ * - _equalCreateTransformStmt
230
+ * - _equalPrepareStmt
231
+ * - _equalExecuteStmt
232
+ * - _equalDeallocateStmt
233
+ * - _equalDropOwnedStmt
234
+ * - _equalReassignOwnedStmt
235
+ * - _equalAlterTSDictionaryStmt
236
+ * - _equalAlterTSConfigurationStmt
237
+ * - _equalPublicationTable
238
+ * - _equalPublicationObjSpec
239
+ * - _equalCreatePublicationStmt
240
+ * - _equalAlterPublicationStmt
241
+ * - _equalCreateSubscriptionStmt
242
+ * - _equalAlterSubscriptionStmt
243
+ * - _equalDropSubscriptionStmt
244
+ * - _equalPathKey
245
+ * - _equalRestrictInfo
246
+ * - _equalPlaceHolderVar
247
+ * - _equalSpecialJoinInfo
248
+ * - _equalAppendRelInfo
249
+ * - _equalPlaceHolderInfo
250
+ * - _equalInteger
251
+ * - _equalFloat
252
+ * - _equalBoolean
253
+ * - _equalString
254
+ * - _equalBitString
255
+ *--------------------------------------------------------------------
256
+ */
257
+
258
+ /*-------------------------------------------------------------------------
259
+ *
260
+ * equalfuncs.funcs.c
261
+ * Generated node infrastructure code
262
+ *
263
+ * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group
264
+ * Portions Copyright (c) 1994, Regents of the University of California
265
+ *
266
+ * NOTES
267
+ * ******************************
268
+ * *** DO NOT EDIT THIS FILE! ***
269
+ * ******************************
270
+ *
271
+ * It has been GENERATED by src/backend/nodes/gen_node_support.pl
272
+ *
273
+ *-------------------------------------------------------------------------
274
+ */
275
+ #include "access/amapi.h"
276
+ #include "access/sdir.h"
277
+ #include "access/tableam.h"
278
+ #include "access/tsmapi.h"
279
+ #include "commands/event_trigger.h"
280
+ #include "commands/trigger.h"
281
+ #include "executor/tuptable.h"
282
+ #include "foreign/fdwapi.h"
283
+ #include "nodes/bitmapset.h"
284
+ #include "nodes/execnodes.h"
285
+ #include "nodes/extensible.h"
286
+ #include "nodes/lockoptions.h"
287
+ #include "nodes/miscnodes.h"
288
+ #include "nodes/nodes.h"
289
+ #include "nodes/parsenodes.h"
290
+ #include "nodes/pathnodes.h"
291
+ #include "nodes/plannodes.h"
292
+ #include "nodes/primnodes.h"
293
+ #include "nodes/replnodes.h"
294
+ #include "nodes/supportnodes.h"
295
+ #include "nodes/value.h"
296
+ #include "utils/rel.h"
297
+
298
+ static bool
299
+ _equalAlias(const Alias *a, const Alias *b)
300
+ {
301
+ COMPARE_STRING_FIELD(aliasname);
302
+ COMPARE_NODE_FIELD(colnames);
303
+
304
+ return true;
305
+ }
306
+
307
+ static bool
308
+ _equalRangeVar(const RangeVar *a, const RangeVar *b)
309
+ {
310
+ COMPARE_STRING_FIELD(catalogname);
311
+ COMPARE_STRING_FIELD(schemaname);
312
+ COMPARE_STRING_FIELD(relname);
313
+ COMPARE_SCALAR_FIELD(inh);
314
+ COMPARE_SCALAR_FIELD(relpersistence);
315
+ COMPARE_NODE_FIELD(alias);
316
+ COMPARE_LOCATION_FIELD(location);
317
+
318
+ return true;
319
+ }
320
+
321
+ static bool
322
+ _equalTableFunc(const TableFunc *a, const TableFunc *b)
323
+ {
324
+ COMPARE_NODE_FIELD(ns_uris);
325
+ COMPARE_NODE_FIELD(ns_names);
326
+ COMPARE_NODE_FIELD(docexpr);
327
+ COMPARE_NODE_FIELD(rowexpr);
328
+ COMPARE_NODE_FIELD(colnames);
329
+ COMPARE_NODE_FIELD(coltypes);
330
+ COMPARE_NODE_FIELD(coltypmods);
331
+ COMPARE_NODE_FIELD(colcollations);
332
+ COMPARE_NODE_FIELD(colexprs);
333
+ COMPARE_NODE_FIELD(coldefexprs);
334
+ COMPARE_BITMAPSET_FIELD(notnulls);
335
+ COMPARE_SCALAR_FIELD(ordinalitycol);
336
+ COMPARE_LOCATION_FIELD(location);
337
+
338
+ return true;
339
+ }
340
+
341
+ static bool
342
+ _equalIntoClause(const IntoClause *a, const IntoClause *b)
343
+ {
344
+ COMPARE_NODE_FIELD(rel);
345
+ COMPARE_NODE_FIELD(colNames);
346
+ COMPARE_STRING_FIELD(accessMethod);
347
+ COMPARE_NODE_FIELD(options);
348
+ COMPARE_SCALAR_FIELD(onCommit);
349
+ COMPARE_STRING_FIELD(tableSpaceName);
350
+ COMPARE_NODE_FIELD(viewQuery);
351
+ COMPARE_SCALAR_FIELD(skipData);
352
+
353
+ return true;
354
+ }
355
+
356
+ static bool
357
+ _equalVar(const Var *a, const Var *b)
358
+ {
359
+ COMPARE_SCALAR_FIELD(varno);
360
+ COMPARE_SCALAR_FIELD(varattno);
361
+ COMPARE_SCALAR_FIELD(vartype);
362
+ COMPARE_SCALAR_FIELD(vartypmod);
363
+ COMPARE_SCALAR_FIELD(varcollid);
364
+ COMPARE_BITMAPSET_FIELD(varnullingrels);
365
+ COMPARE_SCALAR_FIELD(varlevelsup);
366
+ COMPARE_LOCATION_FIELD(location);
367
+
368
+ return true;
369
+ }
370
+
371
+ static bool
372
+ _equalParam(const Param *a, const Param *b)
373
+ {
374
+ COMPARE_SCALAR_FIELD(paramkind);
375
+ COMPARE_SCALAR_FIELD(paramid);
376
+ COMPARE_SCALAR_FIELD(paramtype);
377
+ COMPARE_SCALAR_FIELD(paramtypmod);
378
+ COMPARE_SCALAR_FIELD(paramcollid);
379
+ COMPARE_LOCATION_FIELD(location);
380
+
381
+ return true;
382
+ }
383
+
384
+ static bool
385
+ _equalAggref(const Aggref *a, const Aggref *b)
386
+ {
387
+ COMPARE_SCALAR_FIELD(aggfnoid);
388
+ COMPARE_SCALAR_FIELD(aggtype);
389
+ COMPARE_SCALAR_FIELD(aggcollid);
390
+ COMPARE_SCALAR_FIELD(inputcollid);
391
+ COMPARE_NODE_FIELD(aggargtypes);
392
+ COMPARE_NODE_FIELD(aggdirectargs);
393
+ COMPARE_NODE_FIELD(args);
394
+ COMPARE_NODE_FIELD(aggorder);
395
+ COMPARE_NODE_FIELD(aggdistinct);
396
+ COMPARE_NODE_FIELD(aggfilter);
397
+ COMPARE_SCALAR_FIELD(aggstar);
398
+ COMPARE_SCALAR_FIELD(aggvariadic);
399
+ COMPARE_SCALAR_FIELD(aggkind);
400
+ COMPARE_SCALAR_FIELD(agglevelsup);
401
+ COMPARE_SCALAR_FIELD(aggsplit);
402
+ COMPARE_SCALAR_FIELD(aggno);
403
+ COMPARE_SCALAR_FIELD(aggtransno);
404
+ COMPARE_LOCATION_FIELD(location);
405
+
406
+ return true;
407
+ }
408
+
409
+ static bool
410
+ _equalGroupingFunc(const GroupingFunc *a, const GroupingFunc *b)
411
+ {
412
+ COMPARE_NODE_FIELD(args);
413
+ COMPARE_SCALAR_FIELD(agglevelsup);
414
+ COMPARE_LOCATION_FIELD(location);
415
+
416
+ return true;
417
+ }
418
+
419
+ static bool
420
+ _equalWindowFunc(const WindowFunc *a, const WindowFunc *b)
421
+ {
422
+ COMPARE_SCALAR_FIELD(winfnoid);
423
+ COMPARE_SCALAR_FIELD(wintype);
424
+ COMPARE_SCALAR_FIELD(wincollid);
425
+ COMPARE_SCALAR_FIELD(inputcollid);
426
+ COMPARE_NODE_FIELD(args);
427
+ COMPARE_NODE_FIELD(aggfilter);
428
+ COMPARE_SCALAR_FIELD(winref);
429
+ COMPARE_SCALAR_FIELD(winstar);
430
+ COMPARE_SCALAR_FIELD(winagg);
431
+ COMPARE_LOCATION_FIELD(location);
432
+
433
+ return true;
434
+ }
435
+
436
+ static bool
437
+ _equalSubscriptingRef(const SubscriptingRef *a, const SubscriptingRef *b)
438
+ {
439
+ COMPARE_SCALAR_FIELD(refcontainertype);
440
+ COMPARE_SCALAR_FIELD(refelemtype);
441
+ COMPARE_SCALAR_FIELD(refrestype);
442
+ COMPARE_SCALAR_FIELD(reftypmod);
443
+ COMPARE_SCALAR_FIELD(refcollid);
444
+ COMPARE_NODE_FIELD(refupperindexpr);
445
+ COMPARE_NODE_FIELD(reflowerindexpr);
446
+ COMPARE_NODE_FIELD(refexpr);
447
+ COMPARE_NODE_FIELD(refassgnexpr);
448
+
449
+ return true;
450
+ }
451
+
452
+ static bool
453
+ _equalFuncExpr(const FuncExpr *a, const FuncExpr *b)
454
+ {
455
+ COMPARE_SCALAR_FIELD(funcid);
456
+ COMPARE_SCALAR_FIELD(funcresulttype);
457
+ COMPARE_SCALAR_FIELD(funcretset);
458
+ COMPARE_SCALAR_FIELD(funcvariadic);
459
+ COMPARE_SCALAR_FIELD(funccollid);
460
+ COMPARE_SCALAR_FIELD(inputcollid);
461
+ COMPARE_NODE_FIELD(args);
462
+ COMPARE_LOCATION_FIELD(location);
463
+
464
+ return true;
465
+ }
466
+
467
+ static bool
468
+ _equalNamedArgExpr(const NamedArgExpr *a, const NamedArgExpr *b)
469
+ {
470
+ COMPARE_NODE_FIELD(arg);
471
+ COMPARE_STRING_FIELD(name);
472
+ COMPARE_SCALAR_FIELD(argnumber);
473
+ COMPARE_LOCATION_FIELD(location);
474
+
475
+ return true;
476
+ }
477
+
478
+ static bool
479
+ _equalOpExpr(const OpExpr *a, const OpExpr *b)
480
+ {
481
+ COMPARE_SCALAR_FIELD(opno);
482
+ if (a->opfuncid != b->opfuncid && a->opfuncid != 0 && b->opfuncid != 0)
483
+ return false;
484
+ COMPARE_SCALAR_FIELD(opresulttype);
485
+ COMPARE_SCALAR_FIELD(opretset);
486
+ COMPARE_SCALAR_FIELD(opcollid);
487
+ COMPARE_SCALAR_FIELD(inputcollid);
488
+ COMPARE_NODE_FIELD(args);
489
+ COMPARE_LOCATION_FIELD(location);
490
+
491
+ return true;
492
+ }
493
+
494
+ static bool
495
+ _equalDistinctExpr(const DistinctExpr *a, const DistinctExpr *b)
496
+ {
497
+ COMPARE_SCALAR_FIELD(opno);
498
+ if (a->opfuncid != b->opfuncid && a->opfuncid != 0 && b->opfuncid != 0)
499
+ return false;
500
+ COMPARE_SCALAR_FIELD(opresulttype);
501
+ COMPARE_SCALAR_FIELD(opretset);
502
+ COMPARE_SCALAR_FIELD(opcollid);
503
+ COMPARE_SCALAR_FIELD(inputcollid);
504
+ COMPARE_NODE_FIELD(args);
505
+ COMPARE_LOCATION_FIELD(location);
506
+
507
+ return true;
508
+ }
509
+
510
+ static bool
511
+ _equalNullIfExpr(const NullIfExpr *a, const NullIfExpr *b)
512
+ {
513
+ COMPARE_SCALAR_FIELD(opno);
514
+ if (a->opfuncid != b->opfuncid && a->opfuncid != 0 && b->opfuncid != 0)
515
+ return false;
516
+ COMPARE_SCALAR_FIELD(opresulttype);
517
+ COMPARE_SCALAR_FIELD(opretset);
518
+ COMPARE_SCALAR_FIELD(opcollid);
519
+ COMPARE_SCALAR_FIELD(inputcollid);
520
+ COMPARE_NODE_FIELD(args);
521
+ COMPARE_LOCATION_FIELD(location);
522
+
523
+ return true;
524
+ }
525
+
526
+ static bool
527
+ _equalScalarArrayOpExpr(const ScalarArrayOpExpr *a, const ScalarArrayOpExpr *b)
528
+ {
529
+ COMPARE_SCALAR_FIELD(opno);
530
+ if (a->opfuncid != b->opfuncid && a->opfuncid != 0 && b->opfuncid != 0)
531
+ return false;
532
+ if (a->hashfuncid != b->hashfuncid && a->hashfuncid != 0 && b->hashfuncid != 0)
533
+ return false;
534
+ if (a->negfuncid != b->negfuncid && a->negfuncid != 0 && b->negfuncid != 0)
535
+ return false;
536
+ COMPARE_SCALAR_FIELD(useOr);
537
+ COMPARE_SCALAR_FIELD(inputcollid);
538
+ COMPARE_NODE_FIELD(args);
539
+ COMPARE_LOCATION_FIELD(location);
540
+
541
+ return true;
542
+ }
543
+
544
+ static bool
545
+ _equalBoolExpr(const BoolExpr *a, const BoolExpr *b)
546
+ {
547
+ COMPARE_SCALAR_FIELD(boolop);
548
+ COMPARE_NODE_FIELD(args);
549
+ COMPARE_LOCATION_FIELD(location);
550
+
551
+ return true;
552
+ }
553
+
554
+ static bool
555
+ _equalSubLink(const SubLink *a, const SubLink *b)
556
+ {
557
+ COMPARE_SCALAR_FIELD(subLinkType);
558
+ COMPARE_SCALAR_FIELD(subLinkId);
559
+ COMPARE_NODE_FIELD(testexpr);
560
+ COMPARE_NODE_FIELD(operName);
561
+ COMPARE_NODE_FIELD(subselect);
562
+ COMPARE_LOCATION_FIELD(location);
563
+
564
+ return true;
565
+ }
566
+
567
+ static bool
568
+ _equalSubPlan(const SubPlan *a, const SubPlan *b)
569
+ {
570
+ COMPARE_SCALAR_FIELD(subLinkType);
571
+ COMPARE_NODE_FIELD(testexpr);
572
+ COMPARE_NODE_FIELD(paramIds);
573
+ COMPARE_SCALAR_FIELD(plan_id);
574
+ COMPARE_STRING_FIELD(plan_name);
575
+ COMPARE_SCALAR_FIELD(firstColType);
576
+ COMPARE_SCALAR_FIELD(firstColTypmod);
577
+ COMPARE_SCALAR_FIELD(firstColCollation);
578
+ COMPARE_SCALAR_FIELD(useHashTable);
579
+ COMPARE_SCALAR_FIELD(unknownEqFalse);
580
+ COMPARE_SCALAR_FIELD(parallel_safe);
581
+ COMPARE_NODE_FIELD(setParam);
582
+ COMPARE_NODE_FIELD(parParam);
583
+ COMPARE_NODE_FIELD(args);
584
+ COMPARE_SCALAR_FIELD(startup_cost);
585
+ COMPARE_SCALAR_FIELD(per_call_cost);
586
+
587
+ return true;
588
+ }
589
+
590
+ static bool
591
+ _equalAlternativeSubPlan(const AlternativeSubPlan *a, const AlternativeSubPlan *b)
592
+ {
593
+ COMPARE_NODE_FIELD(subplans);
594
+
595
+ return true;
596
+ }
597
+
598
+ static bool
599
+ _equalFieldSelect(const FieldSelect *a, const FieldSelect *b)
600
+ {
601
+ COMPARE_NODE_FIELD(arg);
602
+ COMPARE_SCALAR_FIELD(fieldnum);
603
+ COMPARE_SCALAR_FIELD(resulttype);
604
+ COMPARE_SCALAR_FIELD(resulttypmod);
605
+ COMPARE_SCALAR_FIELD(resultcollid);
606
+
607
+ return true;
608
+ }
609
+
610
+ static bool
611
+ _equalFieldStore(const FieldStore *a, const FieldStore *b)
612
+ {
613
+ COMPARE_NODE_FIELD(arg);
614
+ COMPARE_NODE_FIELD(newvals);
615
+ COMPARE_NODE_FIELD(fieldnums);
616
+ COMPARE_SCALAR_FIELD(resulttype);
617
+
618
+ return true;
619
+ }
620
+
621
+ static bool
622
+ _equalRelabelType(const RelabelType *a, const RelabelType *b)
623
+ {
624
+ COMPARE_NODE_FIELD(arg);
625
+ COMPARE_SCALAR_FIELD(resulttype);
626
+ COMPARE_SCALAR_FIELD(resulttypmod);
627
+ COMPARE_SCALAR_FIELD(resultcollid);
628
+ COMPARE_LOCATION_FIELD(location);
629
+
630
+ return true;
631
+ }
632
+
633
+ static bool
634
+ _equalCoerceViaIO(const CoerceViaIO *a, const CoerceViaIO *b)
635
+ {
636
+ COMPARE_NODE_FIELD(arg);
637
+ COMPARE_SCALAR_FIELD(resulttype);
638
+ COMPARE_SCALAR_FIELD(resultcollid);
639
+ COMPARE_LOCATION_FIELD(location);
640
+
641
+ return true;
642
+ }
643
+
644
+ static bool
645
+ _equalArrayCoerceExpr(const ArrayCoerceExpr *a, const ArrayCoerceExpr *b)
646
+ {
647
+ COMPARE_NODE_FIELD(arg);
648
+ COMPARE_NODE_FIELD(elemexpr);
649
+ COMPARE_SCALAR_FIELD(resulttype);
650
+ COMPARE_SCALAR_FIELD(resulttypmod);
651
+ COMPARE_SCALAR_FIELD(resultcollid);
652
+ COMPARE_LOCATION_FIELD(location);
653
+
654
+ return true;
655
+ }
656
+
657
+ static bool
658
+ _equalConvertRowtypeExpr(const ConvertRowtypeExpr *a, const ConvertRowtypeExpr *b)
659
+ {
660
+ COMPARE_NODE_FIELD(arg);
661
+ COMPARE_SCALAR_FIELD(resulttype);
662
+ COMPARE_LOCATION_FIELD(location);
663
+
664
+ return true;
665
+ }
666
+
667
+ static bool
668
+ _equalCollateExpr(const CollateExpr *a, const CollateExpr *b)
669
+ {
670
+ COMPARE_NODE_FIELD(arg);
671
+ COMPARE_SCALAR_FIELD(collOid);
672
+ COMPARE_LOCATION_FIELD(location);
673
+
674
+ return true;
675
+ }
676
+
677
+ static bool
678
+ _equalCaseExpr(const CaseExpr *a, const CaseExpr *b)
679
+ {
680
+ COMPARE_SCALAR_FIELD(casetype);
681
+ COMPARE_SCALAR_FIELD(casecollid);
682
+ COMPARE_NODE_FIELD(arg);
683
+ COMPARE_NODE_FIELD(args);
684
+ COMPARE_NODE_FIELD(defresult);
685
+ COMPARE_LOCATION_FIELD(location);
686
+
687
+ return true;
688
+ }
689
+
690
+ static bool
691
+ _equalCaseWhen(const CaseWhen *a, const CaseWhen *b)
692
+ {
693
+ COMPARE_NODE_FIELD(expr);
694
+ COMPARE_NODE_FIELD(result);
695
+ COMPARE_LOCATION_FIELD(location);
696
+
697
+ return true;
698
+ }
699
+
700
+ static bool
701
+ _equalCaseTestExpr(const CaseTestExpr *a, const CaseTestExpr *b)
702
+ {
703
+ COMPARE_SCALAR_FIELD(typeId);
704
+ COMPARE_SCALAR_FIELD(typeMod);
705
+ COMPARE_SCALAR_FIELD(collation);
706
+
707
+ return true;
708
+ }
709
+
710
+ static bool
711
+ _equalArrayExpr(const ArrayExpr *a, const ArrayExpr *b)
712
+ {
713
+ COMPARE_SCALAR_FIELD(array_typeid);
714
+ COMPARE_SCALAR_FIELD(array_collid);
715
+ COMPARE_SCALAR_FIELD(element_typeid);
716
+ COMPARE_NODE_FIELD(elements);
717
+ COMPARE_SCALAR_FIELD(multidims);
718
+ COMPARE_LOCATION_FIELD(location);
719
+
720
+ return true;
721
+ }
722
+
723
+ static bool
724
+ _equalRowExpr(const RowExpr *a, const RowExpr *b)
725
+ {
726
+ COMPARE_NODE_FIELD(args);
727
+ COMPARE_SCALAR_FIELD(row_typeid);
728
+ COMPARE_NODE_FIELD(colnames);
729
+ COMPARE_LOCATION_FIELD(location);
730
+
731
+ return true;
732
+ }
733
+
734
+ static bool
735
+ _equalRowCompareExpr(const RowCompareExpr *a, const RowCompareExpr *b)
736
+ {
737
+ COMPARE_SCALAR_FIELD(rctype);
738
+ COMPARE_NODE_FIELD(opnos);
739
+ COMPARE_NODE_FIELD(opfamilies);
740
+ COMPARE_NODE_FIELD(inputcollids);
741
+ COMPARE_NODE_FIELD(largs);
742
+ COMPARE_NODE_FIELD(rargs);
743
+
744
+ return true;
745
+ }
746
+
747
+ static bool
748
+ _equalCoalesceExpr(const CoalesceExpr *a, const CoalesceExpr *b)
749
+ {
750
+ COMPARE_SCALAR_FIELD(coalescetype);
751
+ COMPARE_SCALAR_FIELD(coalescecollid);
752
+ COMPARE_NODE_FIELD(args);
753
+ COMPARE_LOCATION_FIELD(location);
754
+
755
+ return true;
756
+ }
757
+
758
+ static bool
759
+ _equalMinMaxExpr(const MinMaxExpr *a, const MinMaxExpr *b)
760
+ {
761
+ COMPARE_SCALAR_FIELD(minmaxtype);
762
+ COMPARE_SCALAR_FIELD(minmaxcollid);
763
+ COMPARE_SCALAR_FIELD(inputcollid);
764
+ COMPARE_SCALAR_FIELD(op);
765
+ COMPARE_NODE_FIELD(args);
766
+ COMPARE_LOCATION_FIELD(location);
767
+
768
+ return true;
769
+ }
770
+
771
+ static bool
772
+ _equalSQLValueFunction(const SQLValueFunction *a, const SQLValueFunction *b)
773
+ {
774
+ COMPARE_SCALAR_FIELD(op);
775
+ COMPARE_SCALAR_FIELD(type);
776
+ COMPARE_SCALAR_FIELD(typmod);
777
+ COMPARE_LOCATION_FIELD(location);
778
+
779
+ return true;
780
+ }
781
+
782
+ static bool
783
+ _equalXmlExpr(const XmlExpr *a, const XmlExpr *b)
784
+ {
785
+ COMPARE_SCALAR_FIELD(op);
786
+ COMPARE_STRING_FIELD(name);
787
+ COMPARE_NODE_FIELD(named_args);
788
+ COMPARE_NODE_FIELD(arg_names);
789
+ COMPARE_NODE_FIELD(args);
790
+ COMPARE_SCALAR_FIELD(xmloption);
791
+ COMPARE_SCALAR_FIELD(indent);
792
+ COMPARE_SCALAR_FIELD(type);
793
+ COMPARE_SCALAR_FIELD(typmod);
794
+ COMPARE_LOCATION_FIELD(location);
795
+
796
+ return true;
797
+ }
798
+
799
+ static bool
800
+ _equalJsonFormat(const JsonFormat *a, const JsonFormat *b)
801
+ {
802
+ COMPARE_SCALAR_FIELD(format_type);
803
+ COMPARE_SCALAR_FIELD(encoding);
804
+ COMPARE_LOCATION_FIELD(location);
805
+
806
+ return true;
807
+ }
808
+
809
+ static bool
810
+ _equalJsonReturning(const JsonReturning *a, const JsonReturning *b)
811
+ {
812
+ COMPARE_NODE_FIELD(format);
813
+ COMPARE_SCALAR_FIELD(typid);
814
+ COMPARE_SCALAR_FIELD(typmod);
815
+
816
+ return true;
817
+ }
818
+
819
+ static bool
820
+ _equalJsonValueExpr(const JsonValueExpr *a, const JsonValueExpr *b)
821
+ {
822
+ COMPARE_NODE_FIELD(raw_expr);
823
+ COMPARE_NODE_FIELD(formatted_expr);
824
+ COMPARE_NODE_FIELD(format);
825
+
826
+ return true;
827
+ }
828
+
829
+ static bool
830
+ _equalJsonConstructorExpr(const JsonConstructorExpr *a, const JsonConstructorExpr *b)
831
+ {
832
+ COMPARE_SCALAR_FIELD(type);
833
+ COMPARE_NODE_FIELD(args);
834
+ COMPARE_NODE_FIELD(func);
835
+ COMPARE_NODE_FIELD(coercion);
836
+ COMPARE_NODE_FIELD(returning);
837
+ COMPARE_SCALAR_FIELD(absent_on_null);
838
+ COMPARE_SCALAR_FIELD(unique);
839
+ COMPARE_LOCATION_FIELD(location);
840
+
841
+ return true;
842
+ }
843
+
844
+ static bool
845
+ _equalJsonIsPredicate(const JsonIsPredicate *a, const JsonIsPredicate *b)
846
+ {
847
+ COMPARE_NODE_FIELD(expr);
848
+ COMPARE_NODE_FIELD(format);
849
+ COMPARE_SCALAR_FIELD(item_type);
850
+ COMPARE_SCALAR_FIELD(unique_keys);
851
+ COMPARE_LOCATION_FIELD(location);
852
+
853
+ return true;
854
+ }
855
+
856
+ static bool
857
+ _equalNullTest(const NullTest *a, const NullTest *b)
858
+ {
859
+ COMPARE_NODE_FIELD(arg);
860
+ COMPARE_SCALAR_FIELD(nulltesttype);
861
+ COMPARE_SCALAR_FIELD(argisrow);
862
+ COMPARE_LOCATION_FIELD(location);
863
+
864
+ return true;
865
+ }
866
+
867
+ static bool
868
+ _equalBooleanTest(const BooleanTest *a, const BooleanTest *b)
869
+ {
870
+ COMPARE_NODE_FIELD(arg);
871
+ COMPARE_SCALAR_FIELD(booltesttype);
872
+ COMPARE_LOCATION_FIELD(location);
873
+
874
+ return true;
875
+ }
876
+
877
+ static bool
878
+ _equalCoerceToDomain(const CoerceToDomain *a, const CoerceToDomain *b)
879
+ {
880
+ COMPARE_NODE_FIELD(arg);
881
+ COMPARE_SCALAR_FIELD(resulttype);
882
+ COMPARE_SCALAR_FIELD(resulttypmod);
883
+ COMPARE_SCALAR_FIELD(resultcollid);
884
+ COMPARE_LOCATION_FIELD(location);
885
+
886
+ return true;
887
+ }
888
+
889
+ static bool
890
+ _equalCoerceToDomainValue(const CoerceToDomainValue *a, const CoerceToDomainValue *b)
891
+ {
892
+ COMPARE_SCALAR_FIELD(typeId);
893
+ COMPARE_SCALAR_FIELD(typeMod);
894
+ COMPARE_SCALAR_FIELD(collation);
895
+ COMPARE_LOCATION_FIELD(location);
896
+
897
+ return true;
898
+ }
899
+
900
+ static bool
901
+ _equalSetToDefault(const SetToDefault *a, const SetToDefault *b)
902
+ {
903
+ COMPARE_SCALAR_FIELD(typeId);
904
+ COMPARE_SCALAR_FIELD(typeMod);
905
+ COMPARE_SCALAR_FIELD(collation);
906
+ COMPARE_LOCATION_FIELD(location);
907
+
908
+ return true;
909
+ }
910
+
911
+ static bool
912
+ _equalCurrentOfExpr(const CurrentOfExpr *a, const CurrentOfExpr *b)
913
+ {
914
+ COMPARE_SCALAR_FIELD(cvarno);
915
+ COMPARE_STRING_FIELD(cursor_name);
916
+ COMPARE_SCALAR_FIELD(cursor_param);
917
+
918
+ return true;
919
+ }
920
+
921
+ static bool
922
+ _equalNextValueExpr(const NextValueExpr *a, const NextValueExpr *b)
923
+ {
924
+ COMPARE_SCALAR_FIELD(seqid);
925
+ COMPARE_SCALAR_FIELD(typeId);
926
+
927
+ return true;
928
+ }
929
+
930
+ static bool
931
+ _equalInferenceElem(const InferenceElem *a, const InferenceElem *b)
932
+ {
933
+ COMPARE_NODE_FIELD(expr);
934
+ COMPARE_SCALAR_FIELD(infercollid);
935
+ COMPARE_SCALAR_FIELD(inferopclass);
936
+
937
+ return true;
938
+ }
939
+
940
+ static bool
941
+ _equalTargetEntry(const TargetEntry *a, const TargetEntry *b)
942
+ {
943
+ COMPARE_NODE_FIELD(expr);
944
+ COMPARE_SCALAR_FIELD(resno);
945
+ COMPARE_STRING_FIELD(resname);
946
+ COMPARE_SCALAR_FIELD(ressortgroupref);
947
+ COMPARE_SCALAR_FIELD(resorigtbl);
948
+ COMPARE_SCALAR_FIELD(resorigcol);
949
+ COMPARE_SCALAR_FIELD(resjunk);
950
+
951
+ return true;
952
+ }
953
+
954
+ static bool
955
+ _equalRangeTblRef(const RangeTblRef *a, const RangeTblRef *b)
956
+ {
957
+ COMPARE_SCALAR_FIELD(rtindex);
958
+
959
+ return true;
960
+ }
961
+
962
+ static bool
963
+ _equalJoinExpr(const JoinExpr *a, const JoinExpr *b)
964
+ {
965
+ COMPARE_SCALAR_FIELD(jointype);
966
+ COMPARE_SCALAR_FIELD(isNatural);
967
+ COMPARE_NODE_FIELD(larg);
968
+ COMPARE_NODE_FIELD(rarg);
969
+ COMPARE_NODE_FIELD(usingClause);
970
+ COMPARE_NODE_FIELD(join_using_alias);
971
+ COMPARE_NODE_FIELD(quals);
972
+ COMPARE_NODE_FIELD(alias);
973
+ COMPARE_SCALAR_FIELD(rtindex);
974
+
975
+ return true;
976
+ }
977
+
978
+ static bool
979
+ _equalFromExpr(const FromExpr *a, const FromExpr *b)
980
+ {
981
+ COMPARE_NODE_FIELD(fromlist);
982
+ COMPARE_NODE_FIELD(quals);
983
+
984
+ return true;
985
+ }
986
+
987
+ static bool
988
+ _equalOnConflictExpr(const OnConflictExpr *a, const OnConflictExpr *b)
989
+ {
990
+ COMPARE_SCALAR_FIELD(action);
991
+ COMPARE_NODE_FIELD(arbiterElems);
992
+ COMPARE_NODE_FIELD(arbiterWhere);
993
+ COMPARE_SCALAR_FIELD(constraint);
994
+ COMPARE_NODE_FIELD(onConflictSet);
995
+ COMPARE_NODE_FIELD(onConflictWhere);
996
+ COMPARE_SCALAR_FIELD(exclRelIndex);
997
+ COMPARE_NODE_FIELD(exclRelTlist);
998
+
999
+ return true;
1000
+ }
1001
+
1002
+ static bool
1003
+ _equalQuery(const Query *a, const Query *b)
1004
+ {
1005
+ COMPARE_SCALAR_FIELD(commandType);
1006
+ COMPARE_SCALAR_FIELD(querySource);
1007
+ COMPARE_SCALAR_FIELD(canSetTag);
1008
+ COMPARE_NODE_FIELD(utilityStmt);
1009
+ COMPARE_SCALAR_FIELD(resultRelation);
1010
+ COMPARE_SCALAR_FIELD(hasAggs);
1011
+ COMPARE_SCALAR_FIELD(hasWindowFuncs);
1012
+ COMPARE_SCALAR_FIELD(hasTargetSRFs);
1013
+ COMPARE_SCALAR_FIELD(hasSubLinks);
1014
+ COMPARE_SCALAR_FIELD(hasDistinctOn);
1015
+ COMPARE_SCALAR_FIELD(hasRecursive);
1016
+ COMPARE_SCALAR_FIELD(hasModifyingCTE);
1017
+ COMPARE_SCALAR_FIELD(hasForUpdate);
1018
+ COMPARE_SCALAR_FIELD(hasRowSecurity);
1019
+ COMPARE_SCALAR_FIELD(isReturn);
1020
+ COMPARE_NODE_FIELD(cteList);
1021
+ COMPARE_NODE_FIELD(rtable);
1022
+ COMPARE_NODE_FIELD(rteperminfos);
1023
+ COMPARE_NODE_FIELD(jointree);
1024
+ COMPARE_NODE_FIELD(mergeActionList);
1025
+ COMPARE_SCALAR_FIELD(mergeUseOuterJoin);
1026
+ COMPARE_NODE_FIELD(targetList);
1027
+ COMPARE_SCALAR_FIELD(override);
1028
+ COMPARE_NODE_FIELD(onConflict);
1029
+ COMPARE_NODE_FIELD(returningList);
1030
+ COMPARE_NODE_FIELD(groupClause);
1031
+ COMPARE_SCALAR_FIELD(groupDistinct);
1032
+ COMPARE_NODE_FIELD(groupingSets);
1033
+ COMPARE_NODE_FIELD(havingQual);
1034
+ COMPARE_NODE_FIELD(windowClause);
1035
+ COMPARE_NODE_FIELD(distinctClause);
1036
+ COMPARE_NODE_FIELD(sortClause);
1037
+ COMPARE_NODE_FIELD(limitOffset);
1038
+ COMPARE_NODE_FIELD(limitCount);
1039
+ COMPARE_SCALAR_FIELD(limitOption);
1040
+ COMPARE_NODE_FIELD(rowMarks);
1041
+ COMPARE_NODE_FIELD(setOperations);
1042
+ COMPARE_NODE_FIELD(constraintDeps);
1043
+ COMPARE_NODE_FIELD(withCheckOptions);
1044
+ COMPARE_LOCATION_FIELD(stmt_location);
1045
+ COMPARE_SCALAR_FIELD(stmt_len);
1046
+
1047
+ return true;
1048
+ }
1049
+
1050
+ static bool
1051
+ _equalTypeName(const TypeName *a, const TypeName *b)
1052
+ {
1053
+ COMPARE_NODE_FIELD(names);
1054
+ COMPARE_SCALAR_FIELD(typeOid);
1055
+ COMPARE_SCALAR_FIELD(setof);
1056
+ COMPARE_SCALAR_FIELD(pct_type);
1057
+ COMPARE_NODE_FIELD(typmods);
1058
+ COMPARE_SCALAR_FIELD(typemod);
1059
+ COMPARE_NODE_FIELD(arrayBounds);
1060
+ COMPARE_LOCATION_FIELD(location);
1061
+
1062
+ return true;
1063
+ }
1064
+
1065
+ static bool
1066
+ _equalColumnRef(const ColumnRef *a, const ColumnRef *b)
1067
+ {
1068
+ COMPARE_NODE_FIELD(fields);
1069
+ COMPARE_LOCATION_FIELD(location);
1070
+
1071
+ return true;
1072
+ }
1073
+
1074
+ static bool
1075
+ _equalParamRef(const ParamRef *a, const ParamRef *b)
1076
+ {
1077
+ COMPARE_SCALAR_FIELD(number);
1078
+ COMPARE_LOCATION_FIELD(location);
1079
+
1080
+ return true;
1081
+ }
1082
+
1083
+ static bool
1084
+ _equalA_Expr(const A_Expr *a, const A_Expr *b)
1085
+ {
1086
+ COMPARE_SCALAR_FIELD(kind);
1087
+ COMPARE_NODE_FIELD(name);
1088
+ COMPARE_NODE_FIELD(lexpr);
1089
+ COMPARE_NODE_FIELD(rexpr);
1090
+ COMPARE_LOCATION_FIELD(location);
1091
+
1092
+ return true;
1093
+ }
1094
+
1095
+ static bool
1096
+ _equalTypeCast(const TypeCast *a, const TypeCast *b)
1097
+ {
1098
+ COMPARE_NODE_FIELD(arg);
1099
+ COMPARE_NODE_FIELD(typeName);
1100
+ COMPARE_LOCATION_FIELD(location);
1101
+
1102
+ return true;
1103
+ }
1104
+
1105
+ static bool
1106
+ _equalCollateClause(const CollateClause *a, const CollateClause *b)
1107
+ {
1108
+ COMPARE_NODE_FIELD(arg);
1109
+ COMPARE_NODE_FIELD(collname);
1110
+ COMPARE_LOCATION_FIELD(location);
1111
+
1112
+ return true;
1113
+ }
1114
+
1115
+ static bool
1116
+ _equalRoleSpec(const RoleSpec *a, const RoleSpec *b)
1117
+ {
1118
+ COMPARE_SCALAR_FIELD(roletype);
1119
+ COMPARE_STRING_FIELD(rolename);
1120
+ COMPARE_LOCATION_FIELD(location);
1121
+
1122
+ return true;
1123
+ }
1124
+
1125
+ static bool
1126
+ _equalFuncCall(const FuncCall *a, const FuncCall *b)
1127
+ {
1128
+ COMPARE_NODE_FIELD(funcname);
1129
+ COMPARE_NODE_FIELD(args);
1130
+ COMPARE_NODE_FIELD(agg_order);
1131
+ COMPARE_NODE_FIELD(agg_filter);
1132
+ COMPARE_NODE_FIELD(over);
1133
+ COMPARE_SCALAR_FIELD(agg_within_group);
1134
+ COMPARE_SCALAR_FIELD(agg_star);
1135
+ COMPARE_SCALAR_FIELD(agg_distinct);
1136
+ COMPARE_SCALAR_FIELD(func_variadic);
1137
+ COMPARE_LOCATION_FIELD(location);
1138
+
1139
+ return true;
1140
+ }
1141
+
1142
+ static bool
1143
+ _equalA_Star(const A_Star *a, const A_Star *b)
1144
+ {
1145
+
1146
+ return true;
1147
+ }
1148
+
1149
+ static bool
1150
+ _equalA_Indices(const A_Indices *a, const A_Indices *b)
1151
+ {
1152
+ COMPARE_SCALAR_FIELD(is_slice);
1153
+ COMPARE_NODE_FIELD(lidx);
1154
+ COMPARE_NODE_FIELD(uidx);
1155
+
1156
+ return true;
1157
+ }
1158
+
1159
+ static bool
1160
+ _equalA_Indirection(const A_Indirection *a, const A_Indirection *b)
1161
+ {
1162
+ COMPARE_NODE_FIELD(arg);
1163
+ COMPARE_NODE_FIELD(indirection);
1164
+
1165
+ return true;
1166
+ }
1167
+
1168
+ static bool
1169
+ _equalA_ArrayExpr(const A_ArrayExpr *a, const A_ArrayExpr *b)
1170
+ {
1171
+ COMPARE_NODE_FIELD(elements);
1172
+ COMPARE_LOCATION_FIELD(location);
1173
+
1174
+ return true;
1175
+ }
1176
+
1177
+ static bool
1178
+ _equalResTarget(const ResTarget *a, const ResTarget *b)
1179
+ {
1180
+ COMPARE_STRING_FIELD(name);
1181
+ COMPARE_NODE_FIELD(indirection);
1182
+ COMPARE_NODE_FIELD(val);
1183
+ COMPARE_LOCATION_FIELD(location);
1184
+
1185
+ return true;
1186
+ }
1187
+
1188
+ static bool
1189
+ _equalMultiAssignRef(const MultiAssignRef *a, const MultiAssignRef *b)
1190
+ {
1191
+ COMPARE_NODE_FIELD(source);
1192
+ COMPARE_SCALAR_FIELD(colno);
1193
+ COMPARE_SCALAR_FIELD(ncolumns);
1194
+
1195
+ return true;
1196
+ }
1197
+
1198
+ static bool
1199
+ _equalSortBy(const SortBy *a, const SortBy *b)
1200
+ {
1201
+ COMPARE_NODE_FIELD(node);
1202
+ COMPARE_SCALAR_FIELD(sortby_dir);
1203
+ COMPARE_SCALAR_FIELD(sortby_nulls);
1204
+ COMPARE_NODE_FIELD(useOp);
1205
+ COMPARE_LOCATION_FIELD(location);
1206
+
1207
+ return true;
1208
+ }
1209
+
1210
+ static bool
1211
+ _equalWindowDef(const WindowDef *a, const WindowDef *b)
1212
+ {
1213
+ COMPARE_STRING_FIELD(name);
1214
+ COMPARE_STRING_FIELD(refname);
1215
+ COMPARE_NODE_FIELD(partitionClause);
1216
+ COMPARE_NODE_FIELD(orderClause);
1217
+ COMPARE_SCALAR_FIELD(frameOptions);
1218
+ COMPARE_NODE_FIELD(startOffset);
1219
+ COMPARE_NODE_FIELD(endOffset);
1220
+ COMPARE_LOCATION_FIELD(location);
1221
+
1222
+ return true;
1223
+ }
1224
+
1225
+ static bool
1226
+ _equalRangeSubselect(const RangeSubselect *a, const RangeSubselect *b)
1227
+ {
1228
+ COMPARE_SCALAR_FIELD(lateral);
1229
+ COMPARE_NODE_FIELD(subquery);
1230
+ COMPARE_NODE_FIELD(alias);
1231
+
1232
+ return true;
1233
+ }
1234
+
1235
+ static bool
1236
+ _equalRangeFunction(const RangeFunction *a, const RangeFunction *b)
1237
+ {
1238
+ COMPARE_SCALAR_FIELD(lateral);
1239
+ COMPARE_SCALAR_FIELD(ordinality);
1240
+ COMPARE_SCALAR_FIELD(is_rowsfrom);
1241
+ COMPARE_NODE_FIELD(functions);
1242
+ COMPARE_NODE_FIELD(alias);
1243
+ COMPARE_NODE_FIELD(coldeflist);
1244
+
1245
+ return true;
1246
+ }
1247
+
1248
+ static bool
1249
+ _equalRangeTableFunc(const RangeTableFunc *a, const RangeTableFunc *b)
1250
+ {
1251
+ COMPARE_SCALAR_FIELD(lateral);
1252
+ COMPARE_NODE_FIELD(docexpr);
1253
+ COMPARE_NODE_FIELD(rowexpr);
1254
+ COMPARE_NODE_FIELD(namespaces);
1255
+ COMPARE_NODE_FIELD(columns);
1256
+ COMPARE_NODE_FIELD(alias);
1257
+ COMPARE_LOCATION_FIELD(location);
1258
+
1259
+ return true;
1260
+ }
1261
+
1262
+ static bool
1263
+ _equalRangeTableFuncCol(const RangeTableFuncCol *a, const RangeTableFuncCol *b)
1264
+ {
1265
+ COMPARE_STRING_FIELD(colname);
1266
+ COMPARE_NODE_FIELD(typeName);
1267
+ COMPARE_SCALAR_FIELD(for_ordinality);
1268
+ COMPARE_SCALAR_FIELD(is_not_null);
1269
+ COMPARE_NODE_FIELD(colexpr);
1270
+ COMPARE_NODE_FIELD(coldefexpr);
1271
+ COMPARE_LOCATION_FIELD(location);
1272
+
1273
+ return true;
1274
+ }
1275
+
1276
+ static bool
1277
+ _equalRangeTableSample(const RangeTableSample *a, const RangeTableSample *b)
1278
+ {
1279
+ COMPARE_NODE_FIELD(relation);
1280
+ COMPARE_NODE_FIELD(method);
1281
+ COMPARE_NODE_FIELD(args);
1282
+ COMPARE_NODE_FIELD(repeatable);
1283
+ COMPARE_LOCATION_FIELD(location);
1284
+
1285
+ return true;
1286
+ }
1287
+
1288
+ static bool
1289
+ _equalColumnDef(const ColumnDef *a, const ColumnDef *b)
1290
+ {
1291
+ COMPARE_STRING_FIELD(colname);
1292
+ COMPARE_NODE_FIELD(typeName);
1293
+ COMPARE_STRING_FIELD(compression);
1294
+ COMPARE_SCALAR_FIELD(inhcount);
1295
+ COMPARE_SCALAR_FIELD(is_local);
1296
+ COMPARE_SCALAR_FIELD(is_not_null);
1297
+ COMPARE_SCALAR_FIELD(is_from_type);
1298
+ COMPARE_SCALAR_FIELD(storage);
1299
+ COMPARE_STRING_FIELD(storage_name);
1300
+ COMPARE_NODE_FIELD(raw_default);
1301
+ COMPARE_NODE_FIELD(cooked_default);
1302
+ COMPARE_SCALAR_FIELD(identity);
1303
+ COMPARE_NODE_FIELD(identitySequence);
1304
+ COMPARE_SCALAR_FIELD(generated);
1305
+ COMPARE_NODE_FIELD(collClause);
1306
+ COMPARE_SCALAR_FIELD(collOid);
1307
+ COMPARE_NODE_FIELD(constraints);
1308
+ COMPARE_NODE_FIELD(fdwoptions);
1309
+ COMPARE_LOCATION_FIELD(location);
1310
+
1311
+ return true;
1312
+ }
1313
+
1314
+ static bool
1315
+ _equalTableLikeClause(const TableLikeClause *a, const TableLikeClause *b)
1316
+ {
1317
+ COMPARE_NODE_FIELD(relation);
1318
+ COMPARE_SCALAR_FIELD(options);
1319
+ COMPARE_SCALAR_FIELD(relationOid);
1320
+
1321
+ return true;
1322
+ }
1323
+
1324
+ static bool
1325
+ _equalIndexElem(const IndexElem *a, const IndexElem *b)
1326
+ {
1327
+ COMPARE_STRING_FIELD(name);
1328
+ COMPARE_NODE_FIELD(expr);
1329
+ COMPARE_STRING_FIELD(indexcolname);
1330
+ COMPARE_NODE_FIELD(collation);
1331
+ COMPARE_NODE_FIELD(opclass);
1332
+ COMPARE_NODE_FIELD(opclassopts);
1333
+ COMPARE_SCALAR_FIELD(ordering);
1334
+ COMPARE_SCALAR_FIELD(nulls_ordering);
1335
+
1336
+ return true;
1337
+ }
1338
+
1339
+ static bool
1340
+ _equalDefElem(const DefElem *a, const DefElem *b)
1341
+ {
1342
+ COMPARE_STRING_FIELD(defnamespace);
1343
+ COMPARE_STRING_FIELD(defname);
1344
+ COMPARE_NODE_FIELD(arg);
1345
+ COMPARE_SCALAR_FIELD(defaction);
1346
+ COMPARE_LOCATION_FIELD(location);
1347
+
1348
+ return true;
1349
+ }
1350
+
1351
+ static bool
1352
+ _equalLockingClause(const LockingClause *a, const LockingClause *b)
1353
+ {
1354
+ COMPARE_NODE_FIELD(lockedRels);
1355
+ COMPARE_SCALAR_FIELD(strength);
1356
+ COMPARE_SCALAR_FIELD(waitPolicy);
1357
+
1358
+ return true;
1359
+ }
1360
+
1361
+ static bool
1362
+ _equalXmlSerialize(const XmlSerialize *a, const XmlSerialize *b)
1363
+ {
1364
+ COMPARE_SCALAR_FIELD(xmloption);
1365
+ COMPARE_NODE_FIELD(expr);
1366
+ COMPARE_NODE_FIELD(typeName);
1367
+ COMPARE_SCALAR_FIELD(indent);
1368
+ COMPARE_LOCATION_FIELD(location);
1369
+
1370
+ return true;
1371
+ }
1372
+
1373
+ static bool
1374
+ _equalPartitionElem(const PartitionElem *a, const PartitionElem *b)
1375
+ {
1376
+ COMPARE_STRING_FIELD(name);
1377
+ COMPARE_NODE_FIELD(expr);
1378
+ COMPARE_NODE_FIELD(collation);
1379
+ COMPARE_NODE_FIELD(opclass);
1380
+ COMPARE_LOCATION_FIELD(location);
1381
+
1382
+ return true;
1383
+ }
1384
+
1385
+ static bool
1386
+ _equalPartitionSpec(const PartitionSpec *a, const PartitionSpec *b)
1387
+ {
1388
+ COMPARE_SCALAR_FIELD(strategy);
1389
+ COMPARE_NODE_FIELD(partParams);
1390
+ COMPARE_LOCATION_FIELD(location);
1391
+
1392
+ return true;
1393
+ }
1394
+
1395
+ static bool
1396
+ _equalPartitionBoundSpec(const PartitionBoundSpec *a, const PartitionBoundSpec *b)
1397
+ {
1398
+ COMPARE_SCALAR_FIELD(strategy);
1399
+ COMPARE_SCALAR_FIELD(is_default);
1400
+ COMPARE_SCALAR_FIELD(modulus);
1401
+ COMPARE_SCALAR_FIELD(remainder);
1402
+ COMPARE_NODE_FIELD(listdatums);
1403
+ COMPARE_NODE_FIELD(lowerdatums);
1404
+ COMPARE_NODE_FIELD(upperdatums);
1405
+ COMPARE_LOCATION_FIELD(location);
1406
+
1407
+ return true;
1408
+ }
1409
+
1410
+ static bool
1411
+ _equalPartitionRangeDatum(const PartitionRangeDatum *a, const PartitionRangeDatum *b)
1412
+ {
1413
+ COMPARE_SCALAR_FIELD(kind);
1414
+ COMPARE_NODE_FIELD(value);
1415
+ COMPARE_LOCATION_FIELD(location);
1416
+
1417
+ return true;
1418
+ }
1419
+
1420
+ static bool
1421
+ _equalPartitionCmd(const PartitionCmd *a, const PartitionCmd *b)
1422
+ {
1423
+ COMPARE_NODE_FIELD(name);
1424
+ COMPARE_NODE_FIELD(bound);
1425
+ COMPARE_SCALAR_FIELD(concurrent);
1426
+
1427
+ return true;
1428
+ }
1429
+
1430
+ static bool
1431
+ _equalRangeTblEntry(const RangeTblEntry *a, const RangeTblEntry *b)
1432
+ {
1433
+ COMPARE_SCALAR_FIELD(rtekind);
1434
+ COMPARE_SCALAR_FIELD(relid);
1435
+ COMPARE_SCALAR_FIELD(relkind);
1436
+ COMPARE_SCALAR_FIELD(rellockmode);
1437
+ COMPARE_NODE_FIELD(tablesample);
1438
+ COMPARE_SCALAR_FIELD(perminfoindex);
1439
+ COMPARE_NODE_FIELD(subquery);
1440
+ COMPARE_SCALAR_FIELD(security_barrier);
1441
+ COMPARE_SCALAR_FIELD(jointype);
1442
+ COMPARE_SCALAR_FIELD(joinmergedcols);
1443
+ COMPARE_NODE_FIELD(joinaliasvars);
1444
+ COMPARE_NODE_FIELD(joinleftcols);
1445
+ COMPARE_NODE_FIELD(joinrightcols);
1446
+ COMPARE_NODE_FIELD(join_using_alias);
1447
+ COMPARE_NODE_FIELD(functions);
1448
+ COMPARE_SCALAR_FIELD(funcordinality);
1449
+ COMPARE_NODE_FIELD(tablefunc);
1450
+ COMPARE_NODE_FIELD(values_lists);
1451
+ COMPARE_STRING_FIELD(ctename);
1452
+ COMPARE_SCALAR_FIELD(ctelevelsup);
1453
+ COMPARE_SCALAR_FIELD(self_reference);
1454
+ COMPARE_NODE_FIELD(coltypes);
1455
+ COMPARE_NODE_FIELD(coltypmods);
1456
+ COMPARE_NODE_FIELD(colcollations);
1457
+ COMPARE_STRING_FIELD(enrname);
1458
+ COMPARE_SCALAR_FIELD(enrtuples);
1459
+ COMPARE_NODE_FIELD(alias);
1460
+ COMPARE_NODE_FIELD(eref);
1461
+ COMPARE_SCALAR_FIELD(lateral);
1462
+ COMPARE_SCALAR_FIELD(inh);
1463
+ COMPARE_SCALAR_FIELD(inFromCl);
1464
+ COMPARE_NODE_FIELD(securityQuals);
1465
+
1466
+ return true;
1467
+ }
1468
+
1469
+ static bool
1470
+ _equalRTEPermissionInfo(const RTEPermissionInfo *a, const RTEPermissionInfo *b)
1471
+ {
1472
+ COMPARE_SCALAR_FIELD(relid);
1473
+ COMPARE_SCALAR_FIELD(inh);
1474
+ COMPARE_SCALAR_FIELD(requiredPerms);
1475
+ COMPARE_SCALAR_FIELD(checkAsUser);
1476
+ COMPARE_BITMAPSET_FIELD(selectedCols);
1477
+ COMPARE_BITMAPSET_FIELD(insertedCols);
1478
+ COMPARE_BITMAPSET_FIELD(updatedCols);
1479
+
1480
+ return true;
1481
+ }
1482
+
1483
+ static bool
1484
+ _equalRangeTblFunction(const RangeTblFunction *a, const RangeTblFunction *b)
1485
+ {
1486
+ COMPARE_NODE_FIELD(funcexpr);
1487
+ COMPARE_SCALAR_FIELD(funccolcount);
1488
+ COMPARE_NODE_FIELD(funccolnames);
1489
+ COMPARE_NODE_FIELD(funccoltypes);
1490
+ COMPARE_NODE_FIELD(funccoltypmods);
1491
+ COMPARE_NODE_FIELD(funccolcollations);
1492
+ COMPARE_BITMAPSET_FIELD(funcparams);
1493
+
1494
+ return true;
1495
+ }
1496
+
1497
+ static bool
1498
+ _equalTableSampleClause(const TableSampleClause *a, const TableSampleClause *b)
1499
+ {
1500
+ COMPARE_SCALAR_FIELD(tsmhandler);
1501
+ COMPARE_NODE_FIELD(args);
1502
+ COMPARE_NODE_FIELD(repeatable);
1503
+
1504
+ return true;
1505
+ }
1506
+
1507
+ static bool
1508
+ _equalWithCheckOption(const WithCheckOption *a, const WithCheckOption *b)
1509
+ {
1510
+ COMPARE_SCALAR_FIELD(kind);
1511
+ COMPARE_STRING_FIELD(relname);
1512
+ COMPARE_STRING_FIELD(polname);
1513
+ COMPARE_NODE_FIELD(qual);
1514
+ COMPARE_SCALAR_FIELD(cascaded);
1515
+
1516
+ return true;
1517
+ }
1518
+
1519
+ static bool
1520
+ _equalSortGroupClause(const SortGroupClause *a, const SortGroupClause *b)
1521
+ {
1522
+ COMPARE_SCALAR_FIELD(tleSortGroupRef);
1523
+ COMPARE_SCALAR_FIELD(eqop);
1524
+ COMPARE_SCALAR_FIELD(sortop);
1525
+ COMPARE_SCALAR_FIELD(nulls_first);
1526
+ COMPARE_SCALAR_FIELD(hashable);
1527
+
1528
+ return true;
1529
+ }
1530
+
1531
+ static bool
1532
+ _equalGroupingSet(const GroupingSet *a, const GroupingSet *b)
1533
+ {
1534
+ COMPARE_SCALAR_FIELD(kind);
1535
+ COMPARE_NODE_FIELD(content);
1536
+ COMPARE_LOCATION_FIELD(location);
1537
+
1538
+ return true;
1539
+ }
1540
+
1541
+ static bool
1542
+ _equalWindowClause(const WindowClause *a, const WindowClause *b)
1543
+ {
1544
+ COMPARE_STRING_FIELD(name);
1545
+ COMPARE_STRING_FIELD(refname);
1546
+ COMPARE_NODE_FIELD(partitionClause);
1547
+ COMPARE_NODE_FIELD(orderClause);
1548
+ COMPARE_SCALAR_FIELD(frameOptions);
1549
+ COMPARE_NODE_FIELD(startOffset);
1550
+ COMPARE_NODE_FIELD(endOffset);
1551
+ COMPARE_NODE_FIELD(runCondition);
1552
+ COMPARE_SCALAR_FIELD(startInRangeFunc);
1553
+ COMPARE_SCALAR_FIELD(endInRangeFunc);
1554
+ COMPARE_SCALAR_FIELD(inRangeColl);
1555
+ COMPARE_SCALAR_FIELD(inRangeAsc);
1556
+ COMPARE_SCALAR_FIELD(inRangeNullsFirst);
1557
+ COMPARE_SCALAR_FIELD(winref);
1558
+ COMPARE_SCALAR_FIELD(copiedOrder);
1559
+
1560
+ return true;
1561
+ }
1562
+
1563
+ static bool
1564
+ _equalRowMarkClause(const RowMarkClause *a, const RowMarkClause *b)
1565
+ {
1566
+ COMPARE_SCALAR_FIELD(rti);
1567
+ COMPARE_SCALAR_FIELD(strength);
1568
+ COMPARE_SCALAR_FIELD(waitPolicy);
1569
+ COMPARE_SCALAR_FIELD(pushedDown);
1570
+
1571
+ return true;
1572
+ }
1573
+
1574
+ static bool
1575
+ _equalWithClause(const WithClause *a, const WithClause *b)
1576
+ {
1577
+ COMPARE_NODE_FIELD(ctes);
1578
+ COMPARE_SCALAR_FIELD(recursive);
1579
+ COMPARE_LOCATION_FIELD(location);
1580
+
1581
+ return true;
1582
+ }
1583
+
1584
+ static bool
1585
+ _equalInferClause(const InferClause *a, const InferClause *b)
1586
+ {
1587
+ COMPARE_NODE_FIELD(indexElems);
1588
+ COMPARE_NODE_FIELD(whereClause);
1589
+ COMPARE_STRING_FIELD(conname);
1590
+ COMPARE_LOCATION_FIELD(location);
1591
+
1592
+ return true;
1593
+ }
1594
+
1595
+ static bool
1596
+ _equalOnConflictClause(const OnConflictClause *a, const OnConflictClause *b)
1597
+ {
1598
+ COMPARE_SCALAR_FIELD(action);
1599
+ COMPARE_NODE_FIELD(infer);
1600
+ COMPARE_NODE_FIELD(targetList);
1601
+ COMPARE_NODE_FIELD(whereClause);
1602
+ COMPARE_LOCATION_FIELD(location);
1603
+
1604
+ return true;
1605
+ }
1606
+
1607
+ static bool
1608
+ _equalCTESearchClause(const CTESearchClause *a, const CTESearchClause *b)
1609
+ {
1610
+ COMPARE_NODE_FIELD(search_col_list);
1611
+ COMPARE_SCALAR_FIELD(search_breadth_first);
1612
+ COMPARE_STRING_FIELD(search_seq_column);
1613
+ COMPARE_LOCATION_FIELD(location);
1614
+
1615
+ return true;
1616
+ }
1617
+
1618
+ static bool
1619
+ _equalCTECycleClause(const CTECycleClause *a, const CTECycleClause *b)
1620
+ {
1621
+ COMPARE_NODE_FIELD(cycle_col_list);
1622
+ COMPARE_STRING_FIELD(cycle_mark_column);
1623
+ COMPARE_NODE_FIELD(cycle_mark_value);
1624
+ COMPARE_NODE_FIELD(cycle_mark_default);
1625
+ COMPARE_STRING_FIELD(cycle_path_column);
1626
+ COMPARE_LOCATION_FIELD(location);
1627
+ COMPARE_SCALAR_FIELD(cycle_mark_type);
1628
+ COMPARE_SCALAR_FIELD(cycle_mark_typmod);
1629
+ COMPARE_SCALAR_FIELD(cycle_mark_collation);
1630
+ COMPARE_SCALAR_FIELD(cycle_mark_neop);
1631
+
1632
+ return true;
1633
+ }
1634
+
1635
+ static bool
1636
+ _equalCommonTableExpr(const CommonTableExpr *a, const CommonTableExpr *b)
1637
+ {
1638
+ COMPARE_STRING_FIELD(ctename);
1639
+ COMPARE_NODE_FIELD(aliascolnames);
1640
+ COMPARE_SCALAR_FIELD(ctematerialized);
1641
+ COMPARE_NODE_FIELD(ctequery);
1642
+ COMPARE_NODE_FIELD(search_clause);
1643
+ COMPARE_NODE_FIELD(cycle_clause);
1644
+ COMPARE_LOCATION_FIELD(location);
1645
+ COMPARE_SCALAR_FIELD(cterecursive);
1646
+ COMPARE_SCALAR_FIELD(cterefcount);
1647
+ COMPARE_NODE_FIELD(ctecolnames);
1648
+ COMPARE_NODE_FIELD(ctecoltypes);
1649
+ COMPARE_NODE_FIELD(ctecoltypmods);
1650
+ COMPARE_NODE_FIELD(ctecolcollations);
1651
+
1652
+ return true;
1653
+ }
1654
+
1655
+ static bool
1656
+ _equalMergeWhenClause(const MergeWhenClause *a, const MergeWhenClause *b)
1657
+ {
1658
+ COMPARE_SCALAR_FIELD(matched);
1659
+ COMPARE_SCALAR_FIELD(commandType);
1660
+ COMPARE_SCALAR_FIELD(override);
1661
+ COMPARE_NODE_FIELD(condition);
1662
+ COMPARE_NODE_FIELD(targetList);
1663
+ COMPARE_NODE_FIELD(values);
1664
+
1665
+ return true;
1666
+ }
1667
+
1668
+ static bool
1669
+ _equalMergeAction(const MergeAction *a, const MergeAction *b)
1670
+ {
1671
+ COMPARE_SCALAR_FIELD(matched);
1672
+ COMPARE_SCALAR_FIELD(commandType);
1673
+ COMPARE_SCALAR_FIELD(override);
1674
+ COMPARE_NODE_FIELD(qual);
1675
+ COMPARE_NODE_FIELD(targetList);
1676
+ COMPARE_NODE_FIELD(updateColnos);
1677
+
1678
+ return true;
1679
+ }
1680
+
1681
+ static bool
1682
+ _equalTriggerTransition(const TriggerTransition *a, const TriggerTransition *b)
1683
+ {
1684
+ COMPARE_STRING_FIELD(name);
1685
+ COMPARE_SCALAR_FIELD(isNew);
1686
+ COMPARE_SCALAR_FIELD(isTable);
1687
+
1688
+ return true;
1689
+ }
1690
+
1691
+ static bool
1692
+ _equalJsonOutput(const JsonOutput *a, const JsonOutput *b)
1693
+ {
1694
+ COMPARE_NODE_FIELD(typeName);
1695
+ COMPARE_NODE_FIELD(returning);
1696
+
1697
+ return true;
1698
+ }
1699
+
1700
+ static bool
1701
+ _equalJsonKeyValue(const JsonKeyValue *a, const JsonKeyValue *b)
1702
+ {
1703
+ COMPARE_NODE_FIELD(key);
1704
+ COMPARE_NODE_FIELD(value);
1705
+
1706
+ return true;
1707
+ }
1708
+
1709
+ static bool
1710
+ _equalJsonObjectConstructor(const JsonObjectConstructor *a, const JsonObjectConstructor *b)
1711
+ {
1712
+ COMPARE_NODE_FIELD(exprs);
1713
+ COMPARE_NODE_FIELD(output);
1714
+ COMPARE_SCALAR_FIELD(absent_on_null);
1715
+ COMPARE_SCALAR_FIELD(unique);
1716
+ COMPARE_LOCATION_FIELD(location);
1717
+
1718
+ return true;
1719
+ }
1720
+
1721
+ static bool
1722
+ _equalJsonArrayConstructor(const JsonArrayConstructor *a, const JsonArrayConstructor *b)
1723
+ {
1724
+ COMPARE_NODE_FIELD(exprs);
1725
+ COMPARE_NODE_FIELD(output);
1726
+ COMPARE_SCALAR_FIELD(absent_on_null);
1727
+ COMPARE_LOCATION_FIELD(location);
1728
+
1729
+ return true;
1730
+ }
1731
+
1732
+ static bool
1733
+ _equalJsonArrayQueryConstructor(const JsonArrayQueryConstructor *a, const JsonArrayQueryConstructor *b)
1734
+ {
1735
+ COMPARE_NODE_FIELD(query);
1736
+ COMPARE_NODE_FIELD(output);
1737
+ COMPARE_NODE_FIELD(format);
1738
+ COMPARE_SCALAR_FIELD(absent_on_null);
1739
+ COMPARE_LOCATION_FIELD(location);
1740
+
1741
+ return true;
1742
+ }
1743
+
1744
+ static bool
1745
+ _equalJsonAggConstructor(const JsonAggConstructor *a, const JsonAggConstructor *b)
1746
+ {
1747
+ COMPARE_NODE_FIELD(output);
1748
+ COMPARE_NODE_FIELD(agg_filter);
1749
+ COMPARE_NODE_FIELD(agg_order);
1750
+ COMPARE_NODE_FIELD(over);
1751
+ COMPARE_LOCATION_FIELD(location);
1752
+
1753
+ return true;
1754
+ }
1755
+
1756
+ static bool
1757
+ _equalJsonObjectAgg(const JsonObjectAgg *a, const JsonObjectAgg *b)
1758
+ {
1759
+ COMPARE_NODE_FIELD(constructor);
1760
+ COMPARE_NODE_FIELD(arg);
1761
+ COMPARE_SCALAR_FIELD(absent_on_null);
1762
+ COMPARE_SCALAR_FIELD(unique);
1763
+
1764
+ return true;
1765
+ }
1766
+
1767
+ static bool
1768
+ _equalJsonArrayAgg(const JsonArrayAgg *a, const JsonArrayAgg *b)
1769
+ {
1770
+ COMPARE_NODE_FIELD(constructor);
1771
+ COMPARE_NODE_FIELD(arg);
1772
+ COMPARE_SCALAR_FIELD(absent_on_null);
1773
+
1774
+ return true;
1775
+ }
1776
+
1777
+ static bool
1778
+ _equalRawStmt(const RawStmt *a, const RawStmt *b)
1779
+ {
1780
+ COMPARE_NODE_FIELD(stmt);
1781
+ COMPARE_LOCATION_FIELD(stmt_location);
1782
+ COMPARE_SCALAR_FIELD(stmt_len);
1783
+
1784
+ return true;
1785
+ }
1786
+
1787
+ static bool
1788
+ _equalInsertStmt(const InsertStmt *a, const InsertStmt *b)
1789
+ {
1790
+ COMPARE_NODE_FIELD(relation);
1791
+ COMPARE_NODE_FIELD(cols);
1792
+ COMPARE_NODE_FIELD(selectStmt);
1793
+ COMPARE_NODE_FIELD(onConflictClause);
1794
+ COMPARE_NODE_FIELD(returningList);
1795
+ COMPARE_NODE_FIELD(withClause);
1796
+ COMPARE_SCALAR_FIELD(override);
1797
+
1798
+ return true;
1799
+ }
1800
+
1801
+ static bool
1802
+ _equalDeleteStmt(const DeleteStmt *a, const DeleteStmt *b)
1803
+ {
1804
+ COMPARE_NODE_FIELD(relation);
1805
+ COMPARE_NODE_FIELD(usingClause);
1806
+ COMPARE_NODE_FIELD(whereClause);
1807
+ COMPARE_NODE_FIELD(returningList);
1808
+ COMPARE_NODE_FIELD(withClause);
1809
+
1810
+ return true;
1811
+ }
1812
+
1813
+ static bool
1814
+ _equalUpdateStmt(const UpdateStmt *a, const UpdateStmt *b)
1815
+ {
1816
+ COMPARE_NODE_FIELD(relation);
1817
+ COMPARE_NODE_FIELD(targetList);
1818
+ COMPARE_NODE_FIELD(whereClause);
1819
+ COMPARE_NODE_FIELD(fromClause);
1820
+ COMPARE_NODE_FIELD(returningList);
1821
+ COMPARE_NODE_FIELD(withClause);
1822
+
1823
+ return true;
1824
+ }
1825
+
1826
+ static bool
1827
+ _equalMergeStmt(const MergeStmt *a, const MergeStmt *b)
1828
+ {
1829
+ COMPARE_NODE_FIELD(relation);
1830
+ COMPARE_NODE_FIELD(sourceRelation);
1831
+ COMPARE_NODE_FIELD(joinCondition);
1832
+ COMPARE_NODE_FIELD(mergeWhenClauses);
1833
+ COMPARE_NODE_FIELD(withClause);
1834
+
1835
+ return true;
1836
+ }
1837
+
1838
+ static bool
1839
+ _equalSelectStmt(const SelectStmt *a, const SelectStmt *b)
1840
+ {
1841
+ COMPARE_NODE_FIELD(distinctClause);
1842
+ COMPARE_NODE_FIELD(intoClause);
1843
+ COMPARE_NODE_FIELD(targetList);
1844
+ COMPARE_NODE_FIELD(fromClause);
1845
+ COMPARE_NODE_FIELD(whereClause);
1846
+ COMPARE_NODE_FIELD(groupClause);
1847
+ COMPARE_SCALAR_FIELD(groupDistinct);
1848
+ COMPARE_NODE_FIELD(havingClause);
1849
+ COMPARE_NODE_FIELD(windowClause);
1850
+ COMPARE_NODE_FIELD(valuesLists);
1851
+ COMPARE_NODE_FIELD(sortClause);
1852
+ COMPARE_NODE_FIELD(limitOffset);
1853
+ COMPARE_NODE_FIELD(limitCount);
1854
+ COMPARE_SCALAR_FIELD(limitOption);
1855
+ COMPARE_NODE_FIELD(lockingClause);
1856
+ COMPARE_NODE_FIELD(withClause);
1857
+ COMPARE_SCALAR_FIELD(op);
1858
+ COMPARE_SCALAR_FIELD(all);
1859
+ COMPARE_NODE_FIELD(larg);
1860
+ COMPARE_NODE_FIELD(rarg);
1861
+
1862
+ return true;
1863
+ }
1864
+
1865
+ static bool
1866
+ _equalSetOperationStmt(const SetOperationStmt *a, const SetOperationStmt *b)
1867
+ {
1868
+ COMPARE_SCALAR_FIELD(op);
1869
+ COMPARE_SCALAR_FIELD(all);
1870
+ COMPARE_NODE_FIELD(larg);
1871
+ COMPARE_NODE_FIELD(rarg);
1872
+ COMPARE_NODE_FIELD(colTypes);
1873
+ COMPARE_NODE_FIELD(colTypmods);
1874
+ COMPARE_NODE_FIELD(colCollations);
1875
+ COMPARE_NODE_FIELD(groupClauses);
1876
+
1877
+ return true;
1878
+ }
1879
+
1880
+ static bool
1881
+ _equalReturnStmt(const ReturnStmt *a, const ReturnStmt *b)
1882
+ {
1883
+ COMPARE_NODE_FIELD(returnval);
1884
+
1885
+ return true;
1886
+ }
1887
+
1888
+ static bool
1889
+ _equalPLAssignStmt(const PLAssignStmt *a, const PLAssignStmt *b)
1890
+ {
1891
+ COMPARE_STRING_FIELD(name);
1892
+ COMPARE_NODE_FIELD(indirection);
1893
+ COMPARE_SCALAR_FIELD(nnames);
1894
+ COMPARE_NODE_FIELD(val);
1895
+ COMPARE_LOCATION_FIELD(location);
1896
+
1897
+ return true;
1898
+ }
1899
+
1900
+ static bool
1901
+ _equalCreateSchemaStmt(const CreateSchemaStmt *a, const CreateSchemaStmt *b)
1902
+ {
1903
+ COMPARE_STRING_FIELD(schemaname);
1904
+ COMPARE_NODE_FIELD(authrole);
1905
+ COMPARE_NODE_FIELD(schemaElts);
1906
+ COMPARE_SCALAR_FIELD(if_not_exists);
1907
+
1908
+ return true;
1909
+ }
1910
+
1911
+ static bool
1912
+ _equalAlterTableStmt(const AlterTableStmt *a, const AlterTableStmt *b)
1913
+ {
1914
+ COMPARE_NODE_FIELD(relation);
1915
+ COMPARE_NODE_FIELD(cmds);
1916
+ COMPARE_SCALAR_FIELD(objtype);
1917
+ COMPARE_SCALAR_FIELD(missing_ok);
1918
+
1919
+ return true;
1920
+ }
1921
+
1922
+ static bool
1923
+ _equalReplicaIdentityStmt(const ReplicaIdentityStmt *a, const ReplicaIdentityStmt *b)
1924
+ {
1925
+ COMPARE_SCALAR_FIELD(identity_type);
1926
+ COMPARE_STRING_FIELD(name);
1927
+
1928
+ return true;
1929
+ }
1930
+
1931
+ static bool
1932
+ _equalAlterTableCmd(const AlterTableCmd *a, const AlterTableCmd *b)
1933
+ {
1934
+ COMPARE_SCALAR_FIELD(subtype);
1935
+ COMPARE_STRING_FIELD(name);
1936
+ COMPARE_SCALAR_FIELD(num);
1937
+ COMPARE_NODE_FIELD(newowner);
1938
+ COMPARE_NODE_FIELD(def);
1939
+ COMPARE_SCALAR_FIELD(behavior);
1940
+ COMPARE_SCALAR_FIELD(missing_ok);
1941
+ COMPARE_SCALAR_FIELD(recurse);
1942
+
1943
+ return true;
1944
+ }
1945
+
1946
+ static bool
1947
+ _equalAlterCollationStmt(const AlterCollationStmt *a, const AlterCollationStmt *b)
1948
+ {
1949
+ COMPARE_NODE_FIELD(collname);
1950
+
1951
+ return true;
1952
+ }
1953
+
1954
+ static bool
1955
+ _equalAlterDomainStmt(const AlterDomainStmt *a, const AlterDomainStmt *b)
1956
+ {
1957
+ COMPARE_SCALAR_FIELD(subtype);
1958
+ COMPARE_NODE_FIELD(typeName);
1959
+ COMPARE_STRING_FIELD(name);
1960
+ COMPARE_NODE_FIELD(def);
1961
+ COMPARE_SCALAR_FIELD(behavior);
1962
+ COMPARE_SCALAR_FIELD(missing_ok);
1963
+
1964
+ return true;
1965
+ }
1966
+
1967
+ static bool
1968
+ _equalGrantStmt(const GrantStmt *a, const GrantStmt *b)
1969
+ {
1970
+ COMPARE_SCALAR_FIELD(is_grant);
1971
+ COMPARE_SCALAR_FIELD(targtype);
1972
+ COMPARE_SCALAR_FIELD(objtype);
1973
+ COMPARE_NODE_FIELD(objects);
1974
+ COMPARE_NODE_FIELD(privileges);
1975
+ COMPARE_NODE_FIELD(grantees);
1976
+ COMPARE_SCALAR_FIELD(grant_option);
1977
+ COMPARE_NODE_FIELD(grantor);
1978
+ COMPARE_SCALAR_FIELD(behavior);
1979
+
1980
+ return true;
1981
+ }
1982
+
1983
+ static bool
1984
+ _equalObjectWithArgs(const ObjectWithArgs *a, const ObjectWithArgs *b)
1985
+ {
1986
+ COMPARE_NODE_FIELD(objname);
1987
+ COMPARE_NODE_FIELD(objargs);
1988
+ COMPARE_NODE_FIELD(objfuncargs);
1989
+ COMPARE_SCALAR_FIELD(args_unspecified);
1990
+
1991
+ return true;
1992
+ }
1993
+
1994
+ static bool
1995
+ _equalAccessPriv(const AccessPriv *a, const AccessPriv *b)
1996
+ {
1997
+ COMPARE_STRING_FIELD(priv_name);
1998
+ COMPARE_NODE_FIELD(cols);
1999
+
2000
+ return true;
2001
+ }
2002
+
2003
+ static bool
2004
+ _equalGrantRoleStmt(const GrantRoleStmt *a, const GrantRoleStmt *b)
2005
+ {
2006
+ COMPARE_NODE_FIELD(granted_roles);
2007
+ COMPARE_NODE_FIELD(grantee_roles);
2008
+ COMPARE_SCALAR_FIELD(is_grant);
2009
+ COMPARE_NODE_FIELD(opt);
2010
+ COMPARE_NODE_FIELD(grantor);
2011
+ COMPARE_SCALAR_FIELD(behavior);
2012
+
2013
+ return true;
2014
+ }
2015
+
2016
+ static bool
2017
+ _equalAlterDefaultPrivilegesStmt(const AlterDefaultPrivilegesStmt *a, const AlterDefaultPrivilegesStmt *b)
2018
+ {
2019
+ COMPARE_NODE_FIELD(options);
2020
+ COMPARE_NODE_FIELD(action);
2021
+
2022
+ return true;
2023
+ }
2024
+
2025
+ static bool
2026
+ _equalCopyStmt(const CopyStmt *a, const CopyStmt *b)
2027
+ {
2028
+ COMPARE_NODE_FIELD(relation);
2029
+ COMPARE_NODE_FIELD(query);
2030
+ COMPARE_NODE_FIELD(attlist);
2031
+ COMPARE_SCALAR_FIELD(is_from);
2032
+ COMPARE_SCALAR_FIELD(is_program);
2033
+ COMPARE_STRING_FIELD(filename);
2034
+ COMPARE_NODE_FIELD(options);
2035
+ COMPARE_NODE_FIELD(whereClause);
2036
+
2037
+ return true;
2038
+ }
2039
+
2040
+ static bool
2041
+ _equalVariableSetStmt(const VariableSetStmt *a, const VariableSetStmt *b)
2042
+ {
2043
+ COMPARE_SCALAR_FIELD(kind);
2044
+ COMPARE_STRING_FIELD(name);
2045
+ COMPARE_NODE_FIELD(args);
2046
+ COMPARE_SCALAR_FIELD(is_local);
2047
+
2048
+ return true;
2049
+ }
2050
+
2051
+ static bool
2052
+ _equalVariableShowStmt(const VariableShowStmt *a, const VariableShowStmt *b)
2053
+ {
2054
+ COMPARE_STRING_FIELD(name);
2055
+
2056
+ return true;
2057
+ }
2058
+
2059
+ static bool
2060
+ _equalCreateStmt(const CreateStmt *a, const CreateStmt *b)
2061
+ {
2062
+ COMPARE_NODE_FIELD(relation);
2063
+ COMPARE_NODE_FIELD(tableElts);
2064
+ COMPARE_NODE_FIELD(inhRelations);
2065
+ COMPARE_NODE_FIELD(partbound);
2066
+ COMPARE_NODE_FIELD(partspec);
2067
+ COMPARE_NODE_FIELD(ofTypename);
2068
+ COMPARE_NODE_FIELD(constraints);
2069
+ COMPARE_NODE_FIELD(options);
2070
+ COMPARE_SCALAR_FIELD(oncommit);
2071
+ COMPARE_STRING_FIELD(tablespacename);
2072
+ COMPARE_STRING_FIELD(accessMethod);
2073
+ COMPARE_SCALAR_FIELD(if_not_exists);
2074
+
2075
+ return true;
2076
+ }
2077
+
2078
+ static bool
2079
+ _equalConstraint(const Constraint *a, const Constraint *b)
2080
+ {
2081
+ COMPARE_SCALAR_FIELD(contype);
2082
+ COMPARE_STRING_FIELD(conname);
2083
+ COMPARE_SCALAR_FIELD(deferrable);
2084
+ COMPARE_SCALAR_FIELD(initdeferred);
2085
+ COMPARE_LOCATION_FIELD(location);
2086
+ COMPARE_SCALAR_FIELD(is_no_inherit);
2087
+ COMPARE_NODE_FIELD(raw_expr);
2088
+ COMPARE_STRING_FIELD(cooked_expr);
2089
+ COMPARE_SCALAR_FIELD(generated_when);
2090
+ COMPARE_SCALAR_FIELD(nulls_not_distinct);
2091
+ COMPARE_NODE_FIELD(keys);
2092
+ COMPARE_NODE_FIELD(including);
2093
+ COMPARE_NODE_FIELD(exclusions);
2094
+ COMPARE_NODE_FIELD(options);
2095
+ COMPARE_STRING_FIELD(indexname);
2096
+ COMPARE_STRING_FIELD(indexspace);
2097
+ COMPARE_SCALAR_FIELD(reset_default_tblspc);
2098
+ COMPARE_STRING_FIELD(access_method);
2099
+ COMPARE_NODE_FIELD(where_clause);
2100
+ COMPARE_NODE_FIELD(pktable);
2101
+ COMPARE_NODE_FIELD(fk_attrs);
2102
+ COMPARE_NODE_FIELD(pk_attrs);
2103
+ COMPARE_SCALAR_FIELD(fk_matchtype);
2104
+ COMPARE_SCALAR_FIELD(fk_upd_action);
2105
+ COMPARE_SCALAR_FIELD(fk_del_action);
2106
+ COMPARE_NODE_FIELD(fk_del_set_cols);
2107
+ COMPARE_NODE_FIELD(old_conpfeqop);
2108
+ COMPARE_SCALAR_FIELD(old_pktable_oid);
2109
+ COMPARE_SCALAR_FIELD(skip_validation);
2110
+ COMPARE_SCALAR_FIELD(initially_valid);
2111
+
2112
+ return true;
2113
+ }
2114
+
2115
+ static bool
2116
+ _equalCreateTableSpaceStmt(const CreateTableSpaceStmt *a, const CreateTableSpaceStmt *b)
2117
+ {
2118
+ COMPARE_STRING_FIELD(tablespacename);
2119
+ COMPARE_NODE_FIELD(owner);
2120
+ COMPARE_STRING_FIELD(location);
2121
+ COMPARE_NODE_FIELD(options);
2122
+
2123
+ return true;
2124
+ }
2125
+
2126
+ static bool
2127
+ _equalDropTableSpaceStmt(const DropTableSpaceStmt *a, const DropTableSpaceStmt *b)
2128
+ {
2129
+ COMPARE_STRING_FIELD(tablespacename);
2130
+ COMPARE_SCALAR_FIELD(missing_ok);
2131
+
2132
+ return true;
2133
+ }
2134
+
2135
+ static bool
2136
+ _equalAlterTableSpaceOptionsStmt(const AlterTableSpaceOptionsStmt *a, const AlterTableSpaceOptionsStmt *b)
2137
+ {
2138
+ COMPARE_STRING_FIELD(tablespacename);
2139
+ COMPARE_NODE_FIELD(options);
2140
+ COMPARE_SCALAR_FIELD(isReset);
2141
+
2142
+ return true;
2143
+ }
2144
+
2145
+ static bool
2146
+ _equalAlterTableMoveAllStmt(const AlterTableMoveAllStmt *a, const AlterTableMoveAllStmt *b)
2147
+ {
2148
+ COMPARE_STRING_FIELD(orig_tablespacename);
2149
+ COMPARE_SCALAR_FIELD(objtype);
2150
+ COMPARE_NODE_FIELD(roles);
2151
+ COMPARE_STRING_FIELD(new_tablespacename);
2152
+ COMPARE_SCALAR_FIELD(nowait);
2153
+
2154
+ return true;
2155
+ }
2156
+
2157
+ static bool
2158
+ _equalCreateExtensionStmt(const CreateExtensionStmt *a, const CreateExtensionStmt *b)
2159
+ {
2160
+ COMPARE_STRING_FIELD(extname);
2161
+ COMPARE_SCALAR_FIELD(if_not_exists);
2162
+ COMPARE_NODE_FIELD(options);
2163
+
2164
+ return true;
2165
+ }
2166
+
2167
+ static bool
2168
+ _equalAlterExtensionStmt(const AlterExtensionStmt *a, const AlterExtensionStmt *b)
2169
+ {
2170
+ COMPARE_STRING_FIELD(extname);
2171
+ COMPARE_NODE_FIELD(options);
2172
+
2173
+ return true;
2174
+ }
2175
+
2176
+ static bool
2177
+ _equalAlterExtensionContentsStmt(const AlterExtensionContentsStmt *a, const AlterExtensionContentsStmt *b)
2178
+ {
2179
+ COMPARE_STRING_FIELD(extname);
2180
+ COMPARE_SCALAR_FIELD(action);
2181
+ COMPARE_SCALAR_FIELD(objtype);
2182
+ COMPARE_NODE_FIELD(object);
2183
+
2184
+ return true;
2185
+ }
2186
+
2187
+ static bool
2188
+ _equalCreateFdwStmt(const CreateFdwStmt *a, const CreateFdwStmt *b)
2189
+ {
2190
+ COMPARE_STRING_FIELD(fdwname);
2191
+ COMPARE_NODE_FIELD(func_options);
2192
+ COMPARE_NODE_FIELD(options);
2193
+
2194
+ return true;
2195
+ }
2196
+
2197
+ static bool
2198
+ _equalAlterFdwStmt(const AlterFdwStmt *a, const AlterFdwStmt *b)
2199
+ {
2200
+ COMPARE_STRING_FIELD(fdwname);
2201
+ COMPARE_NODE_FIELD(func_options);
2202
+ COMPARE_NODE_FIELD(options);
2203
+
2204
+ return true;
2205
+ }
2206
+
2207
+ static bool
2208
+ _equalCreateForeignServerStmt(const CreateForeignServerStmt *a, const CreateForeignServerStmt *b)
2209
+ {
2210
+ COMPARE_STRING_FIELD(servername);
2211
+ COMPARE_STRING_FIELD(servertype);
2212
+ COMPARE_STRING_FIELD(version);
2213
+ COMPARE_STRING_FIELD(fdwname);
2214
+ COMPARE_SCALAR_FIELD(if_not_exists);
2215
+ COMPARE_NODE_FIELD(options);
2216
+
2217
+ return true;
2218
+ }
2219
+
2220
+ static bool
2221
+ _equalAlterForeignServerStmt(const AlterForeignServerStmt *a, const AlterForeignServerStmt *b)
2222
+ {
2223
+ COMPARE_STRING_FIELD(servername);
2224
+ COMPARE_STRING_FIELD(version);
2225
+ COMPARE_NODE_FIELD(options);
2226
+ COMPARE_SCALAR_FIELD(has_version);
2227
+
2228
+ return true;
2229
+ }
2230
+
2231
+ static bool
2232
+ _equalCreateForeignTableStmt(const CreateForeignTableStmt *a, const CreateForeignTableStmt *b)
2233
+ {
2234
+ COMPARE_NODE_FIELD(base.relation);
2235
+ COMPARE_NODE_FIELD(base.tableElts);
2236
+ COMPARE_NODE_FIELD(base.inhRelations);
2237
+ COMPARE_NODE_FIELD(base.partbound);
2238
+ COMPARE_NODE_FIELD(base.partspec);
2239
+ COMPARE_NODE_FIELD(base.ofTypename);
2240
+ COMPARE_NODE_FIELD(base.constraints);
2241
+ COMPARE_NODE_FIELD(base.options);
2242
+ COMPARE_SCALAR_FIELD(base.oncommit);
2243
+ COMPARE_STRING_FIELD(base.tablespacename);
2244
+ COMPARE_STRING_FIELD(base.accessMethod);
2245
+ COMPARE_SCALAR_FIELD(base.if_not_exists);
2246
+ COMPARE_STRING_FIELD(servername);
2247
+ COMPARE_NODE_FIELD(options);
2248
+
2249
+ return true;
2250
+ }
2251
+
2252
+ static bool
2253
+ _equalCreateUserMappingStmt(const CreateUserMappingStmt *a, const CreateUserMappingStmt *b)
2254
+ {
2255
+ COMPARE_NODE_FIELD(user);
2256
+ COMPARE_STRING_FIELD(servername);
2257
+ COMPARE_SCALAR_FIELD(if_not_exists);
2258
+ COMPARE_NODE_FIELD(options);
2259
+
2260
+ return true;
2261
+ }
2262
+
2263
+ static bool
2264
+ _equalAlterUserMappingStmt(const AlterUserMappingStmt *a, const AlterUserMappingStmt *b)
2265
+ {
2266
+ COMPARE_NODE_FIELD(user);
2267
+ COMPARE_STRING_FIELD(servername);
2268
+ COMPARE_NODE_FIELD(options);
2269
+
2270
+ return true;
2271
+ }
2272
+
2273
+ static bool
2274
+ _equalDropUserMappingStmt(const DropUserMappingStmt *a, const DropUserMappingStmt *b)
2275
+ {
2276
+ COMPARE_NODE_FIELD(user);
2277
+ COMPARE_STRING_FIELD(servername);
2278
+ COMPARE_SCALAR_FIELD(missing_ok);
2279
+
2280
+ return true;
2281
+ }
2282
+
2283
+ static bool
2284
+ _equalImportForeignSchemaStmt(const ImportForeignSchemaStmt *a, const ImportForeignSchemaStmt *b)
2285
+ {
2286
+ COMPARE_STRING_FIELD(server_name);
2287
+ COMPARE_STRING_FIELD(remote_schema);
2288
+ COMPARE_STRING_FIELD(local_schema);
2289
+ COMPARE_SCALAR_FIELD(list_type);
2290
+ COMPARE_NODE_FIELD(table_list);
2291
+ COMPARE_NODE_FIELD(options);
2292
+
2293
+ return true;
2294
+ }
2295
+
2296
+ static bool
2297
+ _equalCreatePolicyStmt(const CreatePolicyStmt *a, const CreatePolicyStmt *b)
2298
+ {
2299
+ COMPARE_STRING_FIELD(policy_name);
2300
+ COMPARE_NODE_FIELD(table);
2301
+ COMPARE_STRING_FIELD(cmd_name);
2302
+ COMPARE_SCALAR_FIELD(permissive);
2303
+ COMPARE_NODE_FIELD(roles);
2304
+ COMPARE_NODE_FIELD(qual);
2305
+ COMPARE_NODE_FIELD(with_check);
2306
+
2307
+ return true;
2308
+ }
2309
+
2310
+ static bool
2311
+ _equalAlterPolicyStmt(const AlterPolicyStmt *a, const AlterPolicyStmt *b)
2312
+ {
2313
+ COMPARE_STRING_FIELD(policy_name);
2314
+ COMPARE_NODE_FIELD(table);
2315
+ COMPARE_NODE_FIELD(roles);
2316
+ COMPARE_NODE_FIELD(qual);
2317
+ COMPARE_NODE_FIELD(with_check);
2318
+
2319
+ return true;
2320
+ }
2321
+
2322
+ static bool
2323
+ _equalCreateAmStmt(const CreateAmStmt *a, const CreateAmStmt *b)
2324
+ {
2325
+ COMPARE_STRING_FIELD(amname);
2326
+ COMPARE_NODE_FIELD(handler_name);
2327
+ COMPARE_SCALAR_FIELD(amtype);
2328
+
2329
+ return true;
2330
+ }
2331
+
2332
+ static bool
2333
+ _equalCreateTrigStmt(const CreateTrigStmt *a, const CreateTrigStmt *b)
2334
+ {
2335
+ COMPARE_SCALAR_FIELD(replace);
2336
+ COMPARE_SCALAR_FIELD(isconstraint);
2337
+ COMPARE_STRING_FIELD(trigname);
2338
+ COMPARE_NODE_FIELD(relation);
2339
+ COMPARE_NODE_FIELD(funcname);
2340
+ COMPARE_NODE_FIELD(args);
2341
+ COMPARE_SCALAR_FIELD(row);
2342
+ COMPARE_SCALAR_FIELD(timing);
2343
+ COMPARE_SCALAR_FIELD(events);
2344
+ COMPARE_NODE_FIELD(columns);
2345
+ COMPARE_NODE_FIELD(whenClause);
2346
+ COMPARE_NODE_FIELD(transitionRels);
2347
+ COMPARE_SCALAR_FIELD(deferrable);
2348
+ COMPARE_SCALAR_FIELD(initdeferred);
2349
+ COMPARE_NODE_FIELD(constrrel);
2350
+
2351
+ return true;
2352
+ }
2353
+
2354
+ static bool
2355
+ _equalCreateEventTrigStmt(const CreateEventTrigStmt *a, const CreateEventTrigStmt *b)
2356
+ {
2357
+ COMPARE_STRING_FIELD(trigname);
2358
+ COMPARE_STRING_FIELD(eventname);
2359
+ COMPARE_NODE_FIELD(whenclause);
2360
+ COMPARE_NODE_FIELD(funcname);
2361
+
2362
+ return true;
2363
+ }
2364
+
2365
+ static bool
2366
+ _equalAlterEventTrigStmt(const AlterEventTrigStmt *a, const AlterEventTrigStmt *b)
2367
+ {
2368
+ COMPARE_STRING_FIELD(trigname);
2369
+ COMPARE_SCALAR_FIELD(tgenabled);
2370
+
2371
+ return true;
2372
+ }
2373
+
2374
+ static bool
2375
+ _equalCreatePLangStmt(const CreatePLangStmt *a, const CreatePLangStmt *b)
2376
+ {
2377
+ COMPARE_SCALAR_FIELD(replace);
2378
+ COMPARE_STRING_FIELD(plname);
2379
+ COMPARE_NODE_FIELD(plhandler);
2380
+ COMPARE_NODE_FIELD(plinline);
2381
+ COMPARE_NODE_FIELD(plvalidator);
2382
+ COMPARE_SCALAR_FIELD(pltrusted);
2383
+
2384
+ return true;
2385
+ }
2386
+
2387
+ static bool
2388
+ _equalCreateRoleStmt(const CreateRoleStmt *a, const CreateRoleStmt *b)
2389
+ {
2390
+ COMPARE_SCALAR_FIELD(stmt_type);
2391
+ COMPARE_STRING_FIELD(role);
2392
+ COMPARE_NODE_FIELD(options);
2393
+
2394
+ return true;
2395
+ }
2396
+
2397
+ static bool
2398
+ _equalAlterRoleStmt(const AlterRoleStmt *a, const AlterRoleStmt *b)
2399
+ {
2400
+ COMPARE_NODE_FIELD(role);
2401
+ COMPARE_NODE_FIELD(options);
2402
+ COMPARE_SCALAR_FIELD(action);
2403
+
2404
+ return true;
2405
+ }
2406
+
2407
+ static bool
2408
+ _equalAlterRoleSetStmt(const AlterRoleSetStmt *a, const AlterRoleSetStmt *b)
2409
+ {
2410
+ COMPARE_NODE_FIELD(role);
2411
+ COMPARE_STRING_FIELD(database);
2412
+ COMPARE_NODE_FIELD(setstmt);
2413
+
2414
+ return true;
2415
+ }
2416
+
2417
+ static bool
2418
+ _equalDropRoleStmt(const DropRoleStmt *a, const DropRoleStmt *b)
2419
+ {
2420
+ COMPARE_NODE_FIELD(roles);
2421
+ COMPARE_SCALAR_FIELD(missing_ok);
2422
+
2423
+ return true;
2424
+ }
2425
+
2426
+ static bool
2427
+ _equalCreateSeqStmt(const CreateSeqStmt *a, const CreateSeqStmt *b)
2428
+ {
2429
+ COMPARE_NODE_FIELD(sequence);
2430
+ COMPARE_NODE_FIELD(options);
2431
+ COMPARE_SCALAR_FIELD(ownerId);
2432
+ COMPARE_SCALAR_FIELD(for_identity);
2433
+ COMPARE_SCALAR_FIELD(if_not_exists);
2434
+
2435
+ return true;
2436
+ }
2437
+
2438
+ static bool
2439
+ _equalAlterSeqStmt(const AlterSeqStmt *a, const AlterSeqStmt *b)
2440
+ {
2441
+ COMPARE_NODE_FIELD(sequence);
2442
+ COMPARE_NODE_FIELD(options);
2443
+ COMPARE_SCALAR_FIELD(for_identity);
2444
+ COMPARE_SCALAR_FIELD(missing_ok);
2445
+
2446
+ return true;
2447
+ }
2448
+
2449
+ static bool
2450
+ _equalDefineStmt(const DefineStmt *a, const DefineStmt *b)
2451
+ {
2452
+ COMPARE_SCALAR_FIELD(kind);
2453
+ COMPARE_SCALAR_FIELD(oldstyle);
2454
+ COMPARE_NODE_FIELD(defnames);
2455
+ COMPARE_NODE_FIELD(args);
2456
+ COMPARE_NODE_FIELD(definition);
2457
+ COMPARE_SCALAR_FIELD(if_not_exists);
2458
+ COMPARE_SCALAR_FIELD(replace);
2459
+
2460
+ return true;
2461
+ }
2462
+
2463
+ static bool
2464
+ _equalCreateDomainStmt(const CreateDomainStmt *a, const CreateDomainStmt *b)
2465
+ {
2466
+ COMPARE_NODE_FIELD(domainname);
2467
+ COMPARE_NODE_FIELD(typeName);
2468
+ COMPARE_NODE_FIELD(collClause);
2469
+ COMPARE_NODE_FIELD(constraints);
2470
+
2471
+ return true;
2472
+ }
2473
+
2474
+ static bool
2475
+ _equalCreateOpClassStmt(const CreateOpClassStmt *a, const CreateOpClassStmt *b)
2476
+ {
2477
+ COMPARE_NODE_FIELD(opclassname);
2478
+ COMPARE_NODE_FIELD(opfamilyname);
2479
+ COMPARE_STRING_FIELD(amname);
2480
+ COMPARE_NODE_FIELD(datatype);
2481
+ COMPARE_NODE_FIELD(items);
2482
+ COMPARE_SCALAR_FIELD(isDefault);
2483
+
2484
+ return true;
2485
+ }
2486
+
2487
+ static bool
2488
+ _equalCreateOpClassItem(const CreateOpClassItem *a, const CreateOpClassItem *b)
2489
+ {
2490
+ COMPARE_SCALAR_FIELD(itemtype);
2491
+ COMPARE_NODE_FIELD(name);
2492
+ COMPARE_SCALAR_FIELD(number);
2493
+ COMPARE_NODE_FIELD(order_family);
2494
+ COMPARE_NODE_FIELD(class_args);
2495
+ COMPARE_NODE_FIELD(storedtype);
2496
+
2497
+ return true;
2498
+ }
2499
+
2500
+ static bool
2501
+ _equalCreateOpFamilyStmt(const CreateOpFamilyStmt *a, const CreateOpFamilyStmt *b)
2502
+ {
2503
+ COMPARE_NODE_FIELD(opfamilyname);
2504
+ COMPARE_STRING_FIELD(amname);
2505
+
2506
+ return true;
2507
+ }
2508
+
2509
+ static bool
2510
+ _equalAlterOpFamilyStmt(const AlterOpFamilyStmt *a, const AlterOpFamilyStmt *b)
2511
+ {
2512
+ COMPARE_NODE_FIELD(opfamilyname);
2513
+ COMPARE_STRING_FIELD(amname);
2514
+ COMPARE_SCALAR_FIELD(isDrop);
2515
+ COMPARE_NODE_FIELD(items);
2516
+
2517
+ return true;
2518
+ }
2519
+
2520
+ static bool
2521
+ _equalDropStmt(const DropStmt *a, const DropStmt *b)
2522
+ {
2523
+ COMPARE_NODE_FIELD(objects);
2524
+ COMPARE_SCALAR_FIELD(removeType);
2525
+ COMPARE_SCALAR_FIELD(behavior);
2526
+ COMPARE_SCALAR_FIELD(missing_ok);
2527
+ COMPARE_SCALAR_FIELD(concurrent);
2528
+
2529
+ return true;
2530
+ }
2531
+
2532
+ static bool
2533
+ _equalTruncateStmt(const TruncateStmt *a, const TruncateStmt *b)
2534
+ {
2535
+ COMPARE_NODE_FIELD(relations);
2536
+ COMPARE_SCALAR_FIELD(restart_seqs);
2537
+ COMPARE_SCALAR_FIELD(behavior);
2538
+
2539
+ return true;
2540
+ }
2541
+
2542
+ static bool
2543
+ _equalCommentStmt(const CommentStmt *a, const CommentStmt *b)
2544
+ {
2545
+ COMPARE_SCALAR_FIELD(objtype);
2546
+ COMPARE_NODE_FIELD(object);
2547
+ COMPARE_STRING_FIELD(comment);
2548
+
2549
+ return true;
2550
+ }
2551
+
2552
+ static bool
2553
+ _equalSecLabelStmt(const SecLabelStmt *a, const SecLabelStmt *b)
2554
+ {
2555
+ COMPARE_SCALAR_FIELD(objtype);
2556
+ COMPARE_NODE_FIELD(object);
2557
+ COMPARE_STRING_FIELD(provider);
2558
+ COMPARE_STRING_FIELD(label);
2559
+
2560
+ return true;
2561
+ }
2562
+
2563
+ static bool
2564
+ _equalDeclareCursorStmt(const DeclareCursorStmt *a, const DeclareCursorStmt *b)
2565
+ {
2566
+ COMPARE_STRING_FIELD(portalname);
2567
+ COMPARE_SCALAR_FIELD(options);
2568
+ COMPARE_NODE_FIELD(query);
2569
+
2570
+ return true;
2571
+ }
2572
+
2573
+ static bool
2574
+ _equalClosePortalStmt(const ClosePortalStmt *a, const ClosePortalStmt *b)
2575
+ {
2576
+ COMPARE_STRING_FIELD(portalname);
2577
+
2578
+ return true;
2579
+ }
2580
+
2581
+ static bool
2582
+ _equalFetchStmt(const FetchStmt *a, const FetchStmt *b)
2583
+ {
2584
+ COMPARE_SCALAR_FIELD(direction);
2585
+ COMPARE_SCALAR_FIELD(howMany);
2586
+ COMPARE_STRING_FIELD(portalname);
2587
+ COMPARE_SCALAR_FIELD(ismove);
2588
+
2589
+ return true;
2590
+ }
2591
+
2592
+ static bool
2593
+ _equalIndexStmt(const IndexStmt *a, const IndexStmt *b)
2594
+ {
2595
+ COMPARE_STRING_FIELD(idxname);
2596
+ COMPARE_NODE_FIELD(relation);
2597
+ COMPARE_STRING_FIELD(accessMethod);
2598
+ COMPARE_STRING_FIELD(tableSpace);
2599
+ COMPARE_NODE_FIELD(indexParams);
2600
+ COMPARE_NODE_FIELD(indexIncludingParams);
2601
+ COMPARE_NODE_FIELD(options);
2602
+ COMPARE_NODE_FIELD(whereClause);
2603
+ COMPARE_NODE_FIELD(excludeOpNames);
2604
+ COMPARE_STRING_FIELD(idxcomment);
2605
+ COMPARE_SCALAR_FIELD(indexOid);
2606
+ COMPARE_SCALAR_FIELD(oldNumber);
2607
+ COMPARE_SCALAR_FIELD(oldCreateSubid);
2608
+ COMPARE_SCALAR_FIELD(oldFirstRelfilelocatorSubid);
2609
+ COMPARE_SCALAR_FIELD(unique);
2610
+ COMPARE_SCALAR_FIELD(nulls_not_distinct);
2611
+ COMPARE_SCALAR_FIELD(primary);
2612
+ COMPARE_SCALAR_FIELD(isconstraint);
2613
+ COMPARE_SCALAR_FIELD(deferrable);
2614
+ COMPARE_SCALAR_FIELD(initdeferred);
2615
+ COMPARE_SCALAR_FIELD(transformed);
2616
+ COMPARE_SCALAR_FIELD(concurrent);
2617
+ COMPARE_SCALAR_FIELD(if_not_exists);
2618
+ COMPARE_SCALAR_FIELD(reset_default_tblspc);
2619
+
2620
+ return true;
2621
+ }
2622
+
2623
+ static bool
2624
+ _equalCreateStatsStmt(const CreateStatsStmt *a, const CreateStatsStmt *b)
2625
+ {
2626
+ COMPARE_NODE_FIELD(defnames);
2627
+ COMPARE_NODE_FIELD(stat_types);
2628
+ COMPARE_NODE_FIELD(exprs);
2629
+ COMPARE_NODE_FIELD(relations);
2630
+ COMPARE_STRING_FIELD(stxcomment);
2631
+ COMPARE_SCALAR_FIELD(transformed);
2632
+ COMPARE_SCALAR_FIELD(if_not_exists);
2633
+
2634
+ return true;
2635
+ }
2636
+
2637
+ static bool
2638
+ _equalStatsElem(const StatsElem *a, const StatsElem *b)
2639
+ {
2640
+ COMPARE_STRING_FIELD(name);
2641
+ COMPARE_NODE_FIELD(expr);
2642
+
2643
+ return true;
2644
+ }
2645
+
2646
+ static bool
2647
+ _equalAlterStatsStmt(const AlterStatsStmt *a, const AlterStatsStmt *b)
2648
+ {
2649
+ COMPARE_NODE_FIELD(defnames);
2650
+ COMPARE_SCALAR_FIELD(stxstattarget);
2651
+ COMPARE_SCALAR_FIELD(missing_ok);
2652
+
2653
+ return true;
2654
+ }
2655
+
2656
+ static bool
2657
+ _equalCreateFunctionStmt(const CreateFunctionStmt *a, const CreateFunctionStmt *b)
2658
+ {
2659
+ COMPARE_SCALAR_FIELD(is_procedure);
2660
+ COMPARE_SCALAR_FIELD(replace);
2661
+ COMPARE_NODE_FIELD(funcname);
2662
+ COMPARE_NODE_FIELD(parameters);
2663
+ COMPARE_NODE_FIELD(returnType);
2664
+ COMPARE_NODE_FIELD(options);
2665
+ COMPARE_NODE_FIELD(sql_body);
2666
+
2667
+ return true;
2668
+ }
2669
+
2670
+ static bool
2671
+ _equalFunctionParameter(const FunctionParameter *a, const FunctionParameter *b)
2672
+ {
2673
+ COMPARE_STRING_FIELD(name);
2674
+ COMPARE_NODE_FIELD(argType);
2675
+ COMPARE_SCALAR_FIELD(mode);
2676
+ COMPARE_NODE_FIELD(defexpr);
2677
+
2678
+ return true;
2679
+ }
2680
+
2681
+ static bool
2682
+ _equalAlterFunctionStmt(const AlterFunctionStmt *a, const AlterFunctionStmt *b)
2683
+ {
2684
+ COMPARE_SCALAR_FIELD(objtype);
2685
+ COMPARE_NODE_FIELD(func);
2686
+ COMPARE_NODE_FIELD(actions);
2687
+
2688
+ return true;
2689
+ }
2690
+
2691
+ static bool
2692
+ _equalDoStmt(const DoStmt *a, const DoStmt *b)
2693
+ {
2694
+ COMPARE_NODE_FIELD(args);
2695
+
2696
+ return true;
2697
+ }
2698
+
2699
+ static bool
2700
+ _equalCallStmt(const CallStmt *a, const CallStmt *b)
2701
+ {
2702
+ COMPARE_NODE_FIELD(funccall);
2703
+ COMPARE_NODE_FIELD(funcexpr);
2704
+ COMPARE_NODE_FIELD(outargs);
2705
+
2706
+ return true;
2707
+ }
2708
+
2709
+ static bool
2710
+ _equalRenameStmt(const RenameStmt *a, const RenameStmt *b)
2711
+ {
2712
+ COMPARE_SCALAR_FIELD(renameType);
2713
+ COMPARE_SCALAR_FIELD(relationType);
2714
+ COMPARE_NODE_FIELD(relation);
2715
+ COMPARE_NODE_FIELD(object);
2716
+ COMPARE_STRING_FIELD(subname);
2717
+ COMPARE_STRING_FIELD(newname);
2718
+ COMPARE_SCALAR_FIELD(behavior);
2719
+ COMPARE_SCALAR_FIELD(missing_ok);
2720
+
2721
+ return true;
2722
+ }
2723
+
2724
+ static bool
2725
+ _equalAlterObjectDependsStmt(const AlterObjectDependsStmt *a, const AlterObjectDependsStmt *b)
2726
+ {
2727
+ COMPARE_SCALAR_FIELD(objectType);
2728
+ COMPARE_NODE_FIELD(relation);
2729
+ COMPARE_NODE_FIELD(object);
2730
+ COMPARE_NODE_FIELD(extname);
2731
+ COMPARE_SCALAR_FIELD(remove);
2732
+
2733
+ return true;
2734
+ }
2735
+
2736
+ static bool
2737
+ _equalAlterObjectSchemaStmt(const AlterObjectSchemaStmt *a, const AlterObjectSchemaStmt *b)
2738
+ {
2739
+ COMPARE_SCALAR_FIELD(objectType);
2740
+ COMPARE_NODE_FIELD(relation);
2741
+ COMPARE_NODE_FIELD(object);
2742
+ COMPARE_STRING_FIELD(newschema);
2743
+ COMPARE_SCALAR_FIELD(missing_ok);
2744
+
2745
+ return true;
2746
+ }
2747
+
2748
+ static bool
2749
+ _equalAlterOwnerStmt(const AlterOwnerStmt *a, const AlterOwnerStmt *b)
2750
+ {
2751
+ COMPARE_SCALAR_FIELD(objectType);
2752
+ COMPARE_NODE_FIELD(relation);
2753
+ COMPARE_NODE_FIELD(object);
2754
+ COMPARE_NODE_FIELD(newowner);
2755
+
2756
+ return true;
2757
+ }
2758
+
2759
+ static bool
2760
+ _equalAlterOperatorStmt(const AlterOperatorStmt *a, const AlterOperatorStmt *b)
2761
+ {
2762
+ COMPARE_NODE_FIELD(opername);
2763
+ COMPARE_NODE_FIELD(options);
2764
+
2765
+ return true;
2766
+ }
2767
+
2768
+ static bool
2769
+ _equalAlterTypeStmt(const AlterTypeStmt *a, const AlterTypeStmt *b)
2770
+ {
2771
+ COMPARE_NODE_FIELD(typeName);
2772
+ COMPARE_NODE_FIELD(options);
2773
+
2774
+ return true;
2775
+ }
2776
+
2777
+ static bool
2778
+ _equalRuleStmt(const RuleStmt *a, const RuleStmt *b)
2779
+ {
2780
+ COMPARE_NODE_FIELD(relation);
2781
+ COMPARE_STRING_FIELD(rulename);
2782
+ COMPARE_NODE_FIELD(whereClause);
2783
+ COMPARE_SCALAR_FIELD(event);
2784
+ COMPARE_SCALAR_FIELD(instead);
2785
+ COMPARE_NODE_FIELD(actions);
2786
+ COMPARE_SCALAR_FIELD(replace);
2787
+
2788
+ return true;
2789
+ }
2790
+
2791
+ static bool
2792
+ _equalNotifyStmt(const NotifyStmt *a, const NotifyStmt *b)
2793
+ {
2794
+ COMPARE_STRING_FIELD(conditionname);
2795
+ COMPARE_STRING_FIELD(payload);
2796
+
2797
+ return true;
2798
+ }
2799
+
2800
+ static bool
2801
+ _equalListenStmt(const ListenStmt *a, const ListenStmt *b)
2802
+ {
2803
+ COMPARE_STRING_FIELD(conditionname);
2804
+
2805
+ return true;
2806
+ }
2807
+
2808
+ static bool
2809
+ _equalUnlistenStmt(const UnlistenStmt *a, const UnlistenStmt *b)
2810
+ {
2811
+ COMPARE_STRING_FIELD(conditionname);
2812
+
2813
+ return true;
2814
+ }
2815
+
2816
+ static bool
2817
+ _equalTransactionStmt(const TransactionStmt *a, const TransactionStmt *b)
2818
+ {
2819
+ COMPARE_SCALAR_FIELD(kind);
2820
+ COMPARE_NODE_FIELD(options);
2821
+ COMPARE_STRING_FIELD(savepoint_name);
2822
+ COMPARE_STRING_FIELD(gid);
2823
+ COMPARE_SCALAR_FIELD(chain);
2824
+
2825
+ return true;
2826
+ }
2827
+
2828
+ static bool
2829
+ _equalCompositeTypeStmt(const CompositeTypeStmt *a, const CompositeTypeStmt *b)
2830
+ {
2831
+ COMPARE_NODE_FIELD(typevar);
2832
+ COMPARE_NODE_FIELD(coldeflist);
2833
+
2834
+ return true;
2835
+ }
2836
+
2837
+ static bool
2838
+ _equalCreateEnumStmt(const CreateEnumStmt *a, const CreateEnumStmt *b)
2839
+ {
2840
+ COMPARE_NODE_FIELD(typeName);
2841
+ COMPARE_NODE_FIELD(vals);
2842
+
2843
+ return true;
2844
+ }
2845
+
2846
+ static bool
2847
+ _equalCreateRangeStmt(const CreateRangeStmt *a, const CreateRangeStmt *b)
2848
+ {
2849
+ COMPARE_NODE_FIELD(typeName);
2850
+ COMPARE_NODE_FIELD(params);
2851
+
2852
+ return true;
2853
+ }
2854
+
2855
+ static bool
2856
+ _equalAlterEnumStmt(const AlterEnumStmt *a, const AlterEnumStmt *b)
2857
+ {
2858
+ COMPARE_NODE_FIELD(typeName);
2859
+ COMPARE_STRING_FIELD(oldVal);
2860
+ COMPARE_STRING_FIELD(newVal);
2861
+ COMPARE_STRING_FIELD(newValNeighbor);
2862
+ COMPARE_SCALAR_FIELD(newValIsAfter);
2863
+ COMPARE_SCALAR_FIELD(skipIfNewValExists);
2864
+
2865
+ return true;
2866
+ }
2867
+
2868
+ static bool
2869
+ _equalViewStmt(const ViewStmt *a, const ViewStmt *b)
2870
+ {
2871
+ COMPARE_NODE_FIELD(view);
2872
+ COMPARE_NODE_FIELD(aliases);
2873
+ COMPARE_NODE_FIELD(query);
2874
+ COMPARE_SCALAR_FIELD(replace);
2875
+ COMPARE_NODE_FIELD(options);
2876
+ COMPARE_SCALAR_FIELD(withCheckOption);
2877
+
2878
+ return true;
2879
+ }
2880
+
2881
+ static bool
2882
+ _equalLoadStmt(const LoadStmt *a, const LoadStmt *b)
2883
+ {
2884
+ COMPARE_STRING_FIELD(filename);
2885
+
2886
+ return true;
2887
+ }
2888
+
2889
+ static bool
2890
+ _equalCreatedbStmt(const CreatedbStmt *a, const CreatedbStmt *b)
2891
+ {
2892
+ COMPARE_STRING_FIELD(dbname);
2893
+ COMPARE_NODE_FIELD(options);
2894
+
2895
+ return true;
2896
+ }
2897
+
2898
+ static bool
2899
+ _equalAlterDatabaseStmt(const AlterDatabaseStmt *a, const AlterDatabaseStmt *b)
2900
+ {
2901
+ COMPARE_STRING_FIELD(dbname);
2902
+ COMPARE_NODE_FIELD(options);
2903
+
2904
+ return true;
2905
+ }
2906
+
2907
+ static bool
2908
+ _equalAlterDatabaseRefreshCollStmt(const AlterDatabaseRefreshCollStmt *a, const AlterDatabaseRefreshCollStmt *b)
2909
+ {
2910
+ COMPARE_STRING_FIELD(dbname);
2911
+
2912
+ return true;
2913
+ }
2914
+
2915
+ static bool
2916
+ _equalAlterDatabaseSetStmt(const AlterDatabaseSetStmt *a, const AlterDatabaseSetStmt *b)
2917
+ {
2918
+ COMPARE_STRING_FIELD(dbname);
2919
+ COMPARE_NODE_FIELD(setstmt);
2920
+
2921
+ return true;
2922
+ }
2923
+
2924
+ static bool
2925
+ _equalDropdbStmt(const DropdbStmt *a, const DropdbStmt *b)
2926
+ {
2927
+ COMPARE_STRING_FIELD(dbname);
2928
+ COMPARE_SCALAR_FIELD(missing_ok);
2929
+ COMPARE_NODE_FIELD(options);
2930
+
2931
+ return true;
2932
+ }
2933
+
2934
+ static bool
2935
+ _equalAlterSystemStmt(const AlterSystemStmt *a, const AlterSystemStmt *b)
2936
+ {
2937
+ COMPARE_NODE_FIELD(setstmt);
2938
+
2939
+ return true;
2940
+ }
2941
+
2942
+ static bool
2943
+ _equalClusterStmt(const ClusterStmt *a, const ClusterStmt *b)
2944
+ {
2945
+ COMPARE_NODE_FIELD(relation);
2946
+ COMPARE_STRING_FIELD(indexname);
2947
+ COMPARE_NODE_FIELD(params);
2948
+
2949
+ return true;
2950
+ }
2951
+
2952
+ static bool
2953
+ _equalVacuumStmt(const VacuumStmt *a, const VacuumStmt *b)
2954
+ {
2955
+ COMPARE_NODE_FIELD(options);
2956
+ COMPARE_NODE_FIELD(rels);
2957
+ COMPARE_SCALAR_FIELD(is_vacuumcmd);
2958
+
2959
+ return true;
2960
+ }
2961
+
2962
+ static bool
2963
+ _equalVacuumRelation(const VacuumRelation *a, const VacuumRelation *b)
2964
+ {
2965
+ COMPARE_NODE_FIELD(relation);
2966
+ COMPARE_SCALAR_FIELD(oid);
2967
+ COMPARE_NODE_FIELD(va_cols);
2968
+
2969
+ return true;
2970
+ }
2971
+
2972
+ static bool
2973
+ _equalExplainStmt(const ExplainStmt *a, const ExplainStmt *b)
2974
+ {
2975
+ COMPARE_NODE_FIELD(query);
2976
+ COMPARE_NODE_FIELD(options);
2977
+
2978
+ return true;
2979
+ }
2980
+
2981
+ static bool
2982
+ _equalCreateTableAsStmt(const CreateTableAsStmt *a, const CreateTableAsStmt *b)
2983
+ {
2984
+ COMPARE_NODE_FIELD(query);
2985
+ COMPARE_NODE_FIELD(into);
2986
+ COMPARE_SCALAR_FIELD(objtype);
2987
+ COMPARE_SCALAR_FIELD(is_select_into);
2988
+ COMPARE_SCALAR_FIELD(if_not_exists);
2989
+
2990
+ return true;
2991
+ }
2992
+
2993
+ static bool
2994
+ _equalRefreshMatViewStmt(const RefreshMatViewStmt *a, const RefreshMatViewStmt *b)
2995
+ {
2996
+ COMPARE_SCALAR_FIELD(concurrent);
2997
+ COMPARE_SCALAR_FIELD(skipData);
2998
+ COMPARE_NODE_FIELD(relation);
2999
+
3000
+ return true;
3001
+ }
3002
+
3003
+ static bool
3004
+ _equalCheckPointStmt(const CheckPointStmt *a, const CheckPointStmt *b)
3005
+ {
3006
+
3007
+ return true;
3008
+ }
3009
+
3010
+ static bool
3011
+ _equalDiscardStmt(const DiscardStmt *a, const DiscardStmt *b)
3012
+ {
3013
+ COMPARE_SCALAR_FIELD(target);
3014
+
3015
+ return true;
3016
+ }
3017
+
3018
+ static bool
3019
+ _equalLockStmt(const LockStmt *a, const LockStmt *b)
3020
+ {
3021
+ COMPARE_NODE_FIELD(relations);
3022
+ COMPARE_SCALAR_FIELD(mode);
3023
+ COMPARE_SCALAR_FIELD(nowait);
3024
+
3025
+ return true;
3026
+ }
3027
+
3028
+ static bool
3029
+ _equalConstraintsSetStmt(const ConstraintsSetStmt *a, const ConstraintsSetStmt *b)
3030
+ {
3031
+ COMPARE_NODE_FIELD(constraints);
3032
+ COMPARE_SCALAR_FIELD(deferred);
3033
+
3034
+ return true;
3035
+ }
3036
+
3037
+ static bool
3038
+ _equalReindexStmt(const ReindexStmt *a, const ReindexStmt *b)
3039
+ {
3040
+ COMPARE_SCALAR_FIELD(kind);
3041
+ COMPARE_NODE_FIELD(relation);
3042
+ COMPARE_STRING_FIELD(name);
3043
+ COMPARE_NODE_FIELD(params);
3044
+
3045
+ return true;
3046
+ }
3047
+
3048
+ static bool
3049
+ _equalCreateConversionStmt(const CreateConversionStmt *a, const CreateConversionStmt *b)
3050
+ {
3051
+ COMPARE_NODE_FIELD(conversion_name);
3052
+ COMPARE_STRING_FIELD(for_encoding_name);
3053
+ COMPARE_STRING_FIELD(to_encoding_name);
3054
+ COMPARE_NODE_FIELD(func_name);
3055
+ COMPARE_SCALAR_FIELD(def);
3056
+
3057
+ return true;
3058
+ }
3059
+
3060
+ static bool
3061
+ _equalCreateCastStmt(const CreateCastStmt *a, const CreateCastStmt *b)
3062
+ {
3063
+ COMPARE_NODE_FIELD(sourcetype);
3064
+ COMPARE_NODE_FIELD(targettype);
3065
+ COMPARE_NODE_FIELD(func);
3066
+ COMPARE_SCALAR_FIELD(context);
3067
+ COMPARE_SCALAR_FIELD(inout);
3068
+
3069
+ return true;
3070
+ }
3071
+
3072
+ static bool
3073
+ _equalCreateTransformStmt(const CreateTransformStmt *a, const CreateTransformStmt *b)
3074
+ {
3075
+ COMPARE_SCALAR_FIELD(replace);
3076
+ COMPARE_NODE_FIELD(type_name);
3077
+ COMPARE_STRING_FIELD(lang);
3078
+ COMPARE_NODE_FIELD(fromsql);
3079
+ COMPARE_NODE_FIELD(tosql);
3080
+
3081
+ return true;
3082
+ }
3083
+
3084
+ static bool
3085
+ _equalPrepareStmt(const PrepareStmt *a, const PrepareStmt *b)
3086
+ {
3087
+ COMPARE_STRING_FIELD(name);
3088
+ COMPARE_NODE_FIELD(argtypes);
3089
+ COMPARE_NODE_FIELD(query);
3090
+
3091
+ return true;
3092
+ }
3093
+
3094
+ static bool
3095
+ _equalExecuteStmt(const ExecuteStmt *a, const ExecuteStmt *b)
3096
+ {
3097
+ COMPARE_STRING_FIELD(name);
3098
+ COMPARE_NODE_FIELD(params);
3099
+
3100
+ return true;
3101
+ }
3102
+
3103
+ static bool
3104
+ _equalDeallocateStmt(const DeallocateStmt *a, const DeallocateStmt *b)
3105
+ {
3106
+ COMPARE_STRING_FIELD(name);
3107
+
3108
+ return true;
3109
+ }
3110
+
3111
+ static bool
3112
+ _equalDropOwnedStmt(const DropOwnedStmt *a, const DropOwnedStmt *b)
3113
+ {
3114
+ COMPARE_NODE_FIELD(roles);
3115
+ COMPARE_SCALAR_FIELD(behavior);
3116
+
3117
+ return true;
3118
+ }
3119
+
3120
+ static bool
3121
+ _equalReassignOwnedStmt(const ReassignOwnedStmt *a, const ReassignOwnedStmt *b)
3122
+ {
3123
+ COMPARE_NODE_FIELD(roles);
3124
+ COMPARE_NODE_FIELD(newrole);
3125
+
3126
+ return true;
3127
+ }
3128
+
3129
+ static bool
3130
+ _equalAlterTSDictionaryStmt(const AlterTSDictionaryStmt *a, const AlterTSDictionaryStmt *b)
3131
+ {
3132
+ COMPARE_NODE_FIELD(dictname);
3133
+ COMPARE_NODE_FIELD(options);
3134
+
3135
+ return true;
3136
+ }
3137
+
3138
+ static bool
3139
+ _equalAlterTSConfigurationStmt(const AlterTSConfigurationStmt *a, const AlterTSConfigurationStmt *b)
3140
+ {
3141
+ COMPARE_SCALAR_FIELD(kind);
3142
+ COMPARE_NODE_FIELD(cfgname);
3143
+ COMPARE_NODE_FIELD(tokentype);
3144
+ COMPARE_NODE_FIELD(dicts);
3145
+ COMPARE_SCALAR_FIELD(override);
3146
+ COMPARE_SCALAR_FIELD(replace);
3147
+ COMPARE_SCALAR_FIELD(missing_ok);
3148
+
3149
+ return true;
3150
+ }
3151
+
3152
+ static bool
3153
+ _equalPublicationTable(const PublicationTable *a, const PublicationTable *b)
3154
+ {
3155
+ COMPARE_NODE_FIELD(relation);
3156
+ COMPARE_NODE_FIELD(whereClause);
3157
+ COMPARE_NODE_FIELD(columns);
3158
+
3159
+ return true;
3160
+ }
3161
+
3162
+ static bool
3163
+ _equalPublicationObjSpec(const PublicationObjSpec *a, const PublicationObjSpec *b)
3164
+ {
3165
+ COMPARE_SCALAR_FIELD(pubobjtype);
3166
+ COMPARE_STRING_FIELD(name);
3167
+ COMPARE_NODE_FIELD(pubtable);
3168
+ COMPARE_LOCATION_FIELD(location);
3169
+
3170
+ return true;
3171
+ }
3172
+
3173
+ static bool
3174
+ _equalCreatePublicationStmt(const CreatePublicationStmt *a, const CreatePublicationStmt *b)
3175
+ {
3176
+ COMPARE_STRING_FIELD(pubname);
3177
+ COMPARE_NODE_FIELD(options);
3178
+ COMPARE_NODE_FIELD(pubobjects);
3179
+ COMPARE_SCALAR_FIELD(for_all_tables);
3180
+
3181
+ return true;
3182
+ }
3183
+
3184
+ static bool
3185
+ _equalAlterPublicationStmt(const AlterPublicationStmt *a, const AlterPublicationStmt *b)
3186
+ {
3187
+ COMPARE_STRING_FIELD(pubname);
3188
+ COMPARE_NODE_FIELD(options);
3189
+ COMPARE_NODE_FIELD(pubobjects);
3190
+ COMPARE_SCALAR_FIELD(for_all_tables);
3191
+ COMPARE_SCALAR_FIELD(action);
3192
+
3193
+ return true;
3194
+ }
3195
+
3196
+ static bool
3197
+ _equalCreateSubscriptionStmt(const CreateSubscriptionStmt *a, const CreateSubscriptionStmt *b)
3198
+ {
3199
+ COMPARE_STRING_FIELD(subname);
3200
+ COMPARE_STRING_FIELD(conninfo);
3201
+ COMPARE_NODE_FIELD(publication);
3202
+ COMPARE_NODE_FIELD(options);
3203
+
3204
+ return true;
3205
+ }
3206
+
3207
+ static bool
3208
+ _equalAlterSubscriptionStmt(const AlterSubscriptionStmt *a, const AlterSubscriptionStmt *b)
3209
+ {
3210
+ COMPARE_SCALAR_FIELD(kind);
3211
+ COMPARE_STRING_FIELD(subname);
3212
+ COMPARE_STRING_FIELD(conninfo);
3213
+ COMPARE_NODE_FIELD(publication);
3214
+ COMPARE_NODE_FIELD(options);
3215
+
3216
+ return true;
3217
+ }
3218
+
3219
+ static bool
3220
+ _equalDropSubscriptionStmt(const DropSubscriptionStmt *a, const DropSubscriptionStmt *b)
3221
+ {
3222
+ COMPARE_STRING_FIELD(subname);
3223
+ COMPARE_SCALAR_FIELD(missing_ok);
3224
+ COMPARE_SCALAR_FIELD(behavior);
3225
+
3226
+ return true;
3227
+ }
3228
+
3229
+ static bool
3230
+ _equalPathKey(const PathKey *a, const PathKey *b)
3231
+ {
3232
+ COMPARE_SCALAR_FIELD(pk_eclass);
3233
+ COMPARE_SCALAR_FIELD(pk_opfamily);
3234
+ COMPARE_SCALAR_FIELD(pk_strategy);
3235
+ COMPARE_SCALAR_FIELD(pk_nulls_first);
3236
+
3237
+ return true;
3238
+ }
3239
+
3240
+ static bool
3241
+ _equalRestrictInfo(const RestrictInfo *a, const RestrictInfo *b)
3242
+ {
3243
+ COMPARE_NODE_FIELD(clause);
3244
+ COMPARE_SCALAR_FIELD(is_pushed_down);
3245
+ COMPARE_SCALAR_FIELD(has_clone);
3246
+ COMPARE_SCALAR_FIELD(is_clone);
3247
+ COMPARE_SCALAR_FIELD(security_level);
3248
+ COMPARE_BITMAPSET_FIELD(required_relids);
3249
+ COMPARE_BITMAPSET_FIELD(incompatible_relids);
3250
+ COMPARE_BITMAPSET_FIELD(outer_relids);
3251
+ COMPARE_SCALAR_FIELD(rinfo_serial);
3252
+
3253
+ return true;
3254
+ }
3255
+
3256
+ static bool
3257
+ _equalPlaceHolderVar(const PlaceHolderVar *a, const PlaceHolderVar *b)
3258
+ {
3259
+ COMPARE_BITMAPSET_FIELD(phnullingrels);
3260
+ COMPARE_SCALAR_FIELD(phid);
3261
+ COMPARE_SCALAR_FIELD(phlevelsup);
3262
+
3263
+ return true;
3264
+ }
3265
+
3266
+ static bool
3267
+ _equalSpecialJoinInfo(const SpecialJoinInfo *a, const SpecialJoinInfo *b)
3268
+ {
3269
+ COMPARE_BITMAPSET_FIELD(min_lefthand);
3270
+ COMPARE_BITMAPSET_FIELD(min_righthand);
3271
+ COMPARE_BITMAPSET_FIELD(syn_lefthand);
3272
+ COMPARE_BITMAPSET_FIELD(syn_righthand);
3273
+ COMPARE_SCALAR_FIELD(jointype);
3274
+ COMPARE_SCALAR_FIELD(ojrelid);
3275
+ COMPARE_BITMAPSET_FIELD(commute_above_l);
3276
+ COMPARE_BITMAPSET_FIELD(commute_above_r);
3277
+ COMPARE_BITMAPSET_FIELD(commute_below_l);
3278
+ COMPARE_BITMAPSET_FIELD(commute_below_r);
3279
+ COMPARE_SCALAR_FIELD(lhs_strict);
3280
+ COMPARE_SCALAR_FIELD(semi_can_btree);
3281
+ COMPARE_SCALAR_FIELD(semi_can_hash);
3282
+ COMPARE_NODE_FIELD(semi_operators);
3283
+ COMPARE_NODE_FIELD(semi_rhs_exprs);
3284
+
3285
+ return true;
3286
+ }
3287
+
3288
+ static bool
3289
+ _equalAppendRelInfo(const AppendRelInfo *a, const AppendRelInfo *b)
3290
+ {
3291
+ COMPARE_SCALAR_FIELD(parent_relid);
3292
+ COMPARE_SCALAR_FIELD(child_relid);
3293
+ COMPARE_SCALAR_FIELD(parent_reltype);
3294
+ COMPARE_SCALAR_FIELD(child_reltype);
3295
+ COMPARE_NODE_FIELD(translated_vars);
3296
+ COMPARE_SCALAR_FIELD(num_child_cols);
3297
+ COMPARE_POINTER_FIELD(parent_colnos, a->num_child_cols * sizeof(AttrNumber));
3298
+ COMPARE_SCALAR_FIELD(parent_reloid);
3299
+
3300
+ return true;
3301
+ }
3302
+
3303
+ static bool
3304
+ _equalPlaceHolderInfo(const PlaceHolderInfo *a, const PlaceHolderInfo *b)
3305
+ {
3306
+ COMPARE_SCALAR_FIELD(phid);
3307
+ COMPARE_NODE_FIELD(ph_var);
3308
+ COMPARE_BITMAPSET_FIELD(ph_eval_at);
3309
+ COMPARE_BITMAPSET_FIELD(ph_lateral);
3310
+ COMPARE_BITMAPSET_FIELD(ph_needed);
3311
+ COMPARE_SCALAR_FIELD(ph_width);
3312
+
3313
+ return true;
3314
+ }
3315
+
3316
+ static bool
3317
+ _equalInteger(const Integer *a, const Integer *b)
3318
+ {
3319
+ COMPARE_SCALAR_FIELD(ival);
3320
+
3321
+ return true;
3322
+ }
3323
+
3324
+ static bool
3325
+ _equalFloat(const Float *a, const Float *b)
3326
+ {
3327
+ COMPARE_STRING_FIELD(fval);
3328
+
3329
+ return true;
3330
+ }
3331
+
3332
+ static bool
3333
+ _equalBoolean(const Boolean *a, const Boolean *b)
3334
+ {
3335
+ COMPARE_SCALAR_FIELD(boolval);
3336
+
3337
+ return true;
3338
+ }
3339
+
3340
+ static bool
3341
+ _equalString(const String *a, const String *b)
3342
+ {
3343
+ COMPARE_STRING_FIELD(sval);
3344
+
3345
+ return true;
3346
+ }
3347
+
3348
+ static bool
3349
+ _equalBitString(const BitString *a, const BitString *b)
3350
+ {
3351
+ COMPARE_STRING_FIELD(bsval);
3352
+
3353
+ return true;
3354
+ }