diff options
Diffstat (limited to 'src/backend/nodes/equalfuncs.c')
-rw-r--r-- | src/backend/nodes/equalfuncs.c | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/src/backend/nodes/equalfuncs.c b/src/backend/nodes/equalfuncs.c index 722dbe6a0d8..5c21850c975 100644 --- a/src/backend/nodes/equalfuncs.c +++ b/src/backend/nodes/equalfuncs.c @@ -127,6 +127,7 @@ _equalRangeVar(const RangeVar *a, const RangeVar *b) static bool _equalTableFunc(const TableFunc *a, const TableFunc *b) { + COMPARE_SCALAR_FIELD(functype); COMPARE_NODE_FIELD(ns_uris); COMPARE_NODE_FIELD(ns_names); COMPARE_NODE_FIELD(docexpr); @@ -137,7 +138,9 @@ _equalTableFunc(const TableFunc *a, const TableFunc *b) COMPARE_NODE_FIELD(colcollations); COMPARE_NODE_FIELD(colexprs); COMPARE_NODE_FIELD(coldefexprs); + COMPARE_NODE_FIELD(colvalexprs); COMPARE_BITMAPSET_FIELD(notnulls); + COMPARE_NODE_FIELD(plan); COMPARE_SCALAR_FIELD(ordinalitycol); COMPARE_LOCATION_FIELD(location); @@ -145,6 +148,56 @@ _equalTableFunc(const TableFunc *a, const TableFunc *b) } static bool +_equalJsonTable(const JsonTable *a, const JsonTable *b) +{ + COMPARE_NODE_FIELD(common); + COMPARE_NODE_FIELD(columns); + COMPARE_NODE_FIELD(on_error); + COMPARE_NODE_FIELD(alias); + COMPARE_SCALAR_FIELD(location); + + return true; +} + +static bool +_equalJsonTableColumn(const JsonTableColumn *a, const JsonTableColumn *b) +{ + COMPARE_SCALAR_FIELD(coltype); + COMPARE_STRING_FIELD(name); + COMPARE_NODE_FIELD(typeName); + COMPARE_STRING_FIELD(pathspec); + COMPARE_SCALAR_FIELD(format); + COMPARE_SCALAR_FIELD(wrapper); + COMPARE_SCALAR_FIELD(omit_quotes); + COMPARE_NODE_FIELD(columns); + COMPARE_NODE_FIELD(on_empty); + COMPARE_NODE_FIELD(on_error); + COMPARE_SCALAR_FIELD(location); + + return true; +} + +static bool +_equalJsonTableParent(const JsonTableParent *a, const JsonTableParent *b) +{ + COMPARE_NODE_FIELD(path); + COMPARE_NODE_FIELD(child); + COMPARE_SCALAR_FIELD(colMin); + COMPARE_SCALAR_FIELD(colMax); + + return true; +} + +static bool +_equalJsonTableSibling(const JsonTableSibling *a, const JsonTableSibling *b) +{ + COMPARE_NODE_FIELD(larg); + COMPARE_NODE_FIELD(rarg); + + return true; +} + +static bool _equalIntoClause(const IntoClause *a, const IntoClause *b) { COMPARE_NODE_FIELD(rel); @@ -3719,6 +3772,12 @@ equal(const void *a, const void *b) case T_JsonItemCoercions: retval = _equalJsonItemCoercions(a, b); break; + case T_JsonTableParent: + retval = _equalJsonTableParent(a, b); + break; + case T_JsonTableSibling: + retval = _equalJsonTableSibling(a, b); + break; /* * RELATION NODES @@ -4341,6 +4400,12 @@ equal(const void *a, const void *b) case T_JsonArgument: retval = _equalJsonArgument(a, b); break; + case T_JsonTable: + retval = _equalJsonTable(a, b); + break; + case T_JsonTableColumn: + retval = _equalJsonTableColumn(a, b); + break; default: elog(ERROR, "unrecognized node type: %d", |