Fix errors in copyfuncs/equalfuncs support for JSON node types.
Noted while comparing existing code to the output of the proposed patch to automate creation of these functions. Some of the changes are just cosmetic, but others represent real bugs. I've not attempted to analyze the user-visible impact. Back-patch to v15 where this code came in. Discussion: https://postgr.es/m/1794155.1656984188@sss.pgh.pa.us
This commit is contained in:
parent
93cf9233cd
commit
90d6c65a2c
@ -2703,7 +2703,8 @@ _copyJsonTable(const JsonTable *from)
|
|||||||
COPY_NODE_FIELD(plan);
|
COPY_NODE_FIELD(plan);
|
||||||
COPY_NODE_FIELD(on_error);
|
COPY_NODE_FIELD(on_error);
|
||||||
COPY_NODE_FIELD(alias);
|
COPY_NODE_FIELD(alias);
|
||||||
COPY_SCALAR_FIELD(location);
|
COPY_SCALAR_FIELD(lateral);
|
||||||
|
COPY_LOCATION_FIELD(location);
|
||||||
|
|
||||||
return newnode;
|
return newnode;
|
||||||
}
|
}
|
||||||
@ -2721,13 +2722,13 @@ _copyJsonTableColumn(const JsonTableColumn *from)
|
|||||||
COPY_NODE_FIELD(typeName);
|
COPY_NODE_FIELD(typeName);
|
||||||
COPY_STRING_FIELD(pathspec);
|
COPY_STRING_FIELD(pathspec);
|
||||||
COPY_STRING_FIELD(pathname);
|
COPY_STRING_FIELD(pathname);
|
||||||
COPY_SCALAR_FIELD(format);
|
COPY_NODE_FIELD(format);
|
||||||
COPY_SCALAR_FIELD(wrapper);
|
COPY_SCALAR_FIELD(wrapper);
|
||||||
COPY_SCALAR_FIELD(omit_quotes);
|
COPY_SCALAR_FIELD(omit_quotes);
|
||||||
COPY_NODE_FIELD(columns);
|
COPY_NODE_FIELD(columns);
|
||||||
COPY_NODE_FIELD(on_empty);
|
COPY_NODE_FIELD(on_empty);
|
||||||
COPY_NODE_FIELD(on_error);
|
COPY_NODE_FIELD(on_error);
|
||||||
COPY_SCALAR_FIELD(location);
|
COPY_LOCATION_FIELD(location);
|
||||||
|
|
||||||
return newnode;
|
return newnode;
|
||||||
}
|
}
|
||||||
@ -2742,10 +2743,10 @@ _copyJsonTablePlan(const JsonTablePlan *from)
|
|||||||
|
|
||||||
COPY_SCALAR_FIELD(plan_type);
|
COPY_SCALAR_FIELD(plan_type);
|
||||||
COPY_SCALAR_FIELD(join_type);
|
COPY_SCALAR_FIELD(join_type);
|
||||||
COPY_STRING_FIELD(pathname);
|
|
||||||
COPY_NODE_FIELD(plan1);
|
COPY_NODE_FIELD(plan1);
|
||||||
COPY_NODE_FIELD(plan2);
|
COPY_NODE_FIELD(plan2);
|
||||||
COPY_SCALAR_FIELD(location);
|
COPY_STRING_FIELD(pathname);
|
||||||
|
COPY_LOCATION_FIELD(location);
|
||||||
|
|
||||||
return newnode;
|
return newnode;
|
||||||
}
|
}
|
||||||
|
@ -147,14 +147,29 @@ _equalTableFunc(const TableFunc *a, const TableFunc *b)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool
|
||||||
|
_equalJsonTablePlan(const JsonTablePlan *a, const JsonTablePlan *b)
|
||||||
|
{
|
||||||
|
COMPARE_SCALAR_FIELD(plan_type);
|
||||||
|
COMPARE_SCALAR_FIELD(join_type);
|
||||||
|
COMPARE_NODE_FIELD(plan1);
|
||||||
|
COMPARE_NODE_FIELD(plan2);
|
||||||
|
COMPARE_STRING_FIELD(pathname);
|
||||||
|
COMPARE_LOCATION_FIELD(location);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
static bool
|
static bool
|
||||||
_equalJsonTable(const JsonTable *a, const JsonTable *b)
|
_equalJsonTable(const JsonTable *a, const JsonTable *b)
|
||||||
{
|
{
|
||||||
COMPARE_NODE_FIELD(common);
|
COMPARE_NODE_FIELD(common);
|
||||||
COMPARE_NODE_FIELD(columns);
|
COMPARE_NODE_FIELD(columns);
|
||||||
|
COMPARE_NODE_FIELD(plan);
|
||||||
COMPARE_NODE_FIELD(on_error);
|
COMPARE_NODE_FIELD(on_error);
|
||||||
COMPARE_NODE_FIELD(alias);
|
COMPARE_NODE_FIELD(alias);
|
||||||
COMPARE_SCALAR_FIELD(location);
|
COMPARE_SCALAR_FIELD(lateral);
|
||||||
|
COMPARE_LOCATION_FIELD(location);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -166,13 +181,14 @@ _equalJsonTableColumn(const JsonTableColumn *a, const JsonTableColumn *b)
|
|||||||
COMPARE_STRING_FIELD(name);
|
COMPARE_STRING_FIELD(name);
|
||||||
COMPARE_NODE_FIELD(typeName);
|
COMPARE_NODE_FIELD(typeName);
|
||||||
COMPARE_STRING_FIELD(pathspec);
|
COMPARE_STRING_FIELD(pathspec);
|
||||||
COMPARE_SCALAR_FIELD(format);
|
COMPARE_STRING_FIELD(pathname);
|
||||||
|
COMPARE_NODE_FIELD(format);
|
||||||
COMPARE_SCALAR_FIELD(wrapper);
|
COMPARE_SCALAR_FIELD(wrapper);
|
||||||
COMPARE_SCALAR_FIELD(omit_quotes);
|
COMPARE_SCALAR_FIELD(omit_quotes);
|
||||||
COMPARE_NODE_FIELD(columns);
|
COMPARE_NODE_FIELD(columns);
|
||||||
COMPARE_NODE_FIELD(on_empty);
|
COMPARE_NODE_FIELD(on_empty);
|
||||||
COMPARE_NODE_FIELD(on_error);
|
COMPARE_NODE_FIELD(on_error);
|
||||||
COMPARE_SCALAR_FIELD(location);
|
COMPARE_LOCATION_FIELD(location);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -4405,6 +4421,9 @@ equal(const void *a, const void *b)
|
|||||||
case T_JsonArgument:
|
case T_JsonArgument:
|
||||||
retval = _equalJsonArgument(a, b);
|
retval = _equalJsonArgument(a, b);
|
||||||
break;
|
break;
|
||||||
|
case T_JsonTablePlan:
|
||||||
|
retval = _equalJsonTablePlan(a, b);
|
||||||
|
break;
|
||||||
case T_JsonTable:
|
case T_JsonTable:
|
||||||
retval = _equalJsonTable(a, b);
|
retval = _equalJsonTable(a, b);
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user