Coverage Report

Created: 2026-11-09 07:20

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