Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit f2fed58

Browse files
author
Nikita Glukhov
committed
Add equal funcs for SQL/JSON constructor nodes
1 parent dbc8249 commit f2fed58

File tree

1 file changed

+114
-0
lines changed

1 file changed

+114
-0
lines changed

src/backend/nodes/equalfuncs.c

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -863,6 +863,96 @@ _equalJsonConstructorExpr(const JsonConstructorExpr *a, const JsonConstructorExp
863863
return true;
864864
}
865865

866+
static bool
867+
_equalJsonKeyValue(const JsonKeyValue *a, const JsonKeyValue *b)
868+
{
869+
COMPARE_NODE_FIELD(key);
870+
COMPARE_NODE_FIELD(value);
871+
872+
return true;
873+
}
874+
875+
static bool
876+
_equalJsonObjectConstructor(const JsonObjectConstructor *a,
877+
const JsonObjectConstructor *b)
878+
{
879+
COMPARE_NODE_FIELD(exprs);
880+
COMPARE_NODE_FIELD(output);
881+
COMPARE_SCALAR_FIELD(absent_on_null);
882+
COMPARE_SCALAR_FIELD(unique);
883+
COMPARE_LOCATION_FIELD(location);
884+
885+
return true;
886+
}
887+
888+
static bool
889+
_equalJsonAggConstructor(const JsonAggConstructor *a,
890+
const JsonAggConstructor *b)
891+
{
892+
COMPARE_NODE_FIELD(output);
893+
COMPARE_NODE_FIELD(agg_filter);
894+
COMPARE_NODE_FIELD(agg_order);
895+
COMPARE_NODE_FIELD(over);
896+
COMPARE_LOCATION_FIELD(location);
897+
898+
return true;
899+
}
900+
901+
static bool
902+
_equalJsonObjectAgg(const JsonObjectAgg *a, const JsonObjectAgg *b)
903+
{
904+
COMPARE_NODE_FIELD(constructor);
905+
COMPARE_NODE_FIELD(arg);
906+
COMPARE_SCALAR_FIELD(absent_on_null);
907+
COMPARE_SCALAR_FIELD(unique);
908+
909+
return true;
910+
}
911+
912+
static bool
913+
_equalJsonOutput(const JsonOutput *a, const JsonOutput *b)
914+
{
915+
COMPARE_NODE_FIELD(typeName);
916+
COMPARE_NODE_FIELD(returning);
917+
918+
return true;
919+
}
920+
921+
static bool
922+
_equalJsonArrayConstructor(const JsonArrayConstructor *a,
923+
const JsonArrayConstructor *b)
924+
{
925+
COMPARE_NODE_FIELD(exprs);
926+
COMPARE_NODE_FIELD(output);
927+
COMPARE_SCALAR_FIELD(absent_on_null);
928+
COMPARE_LOCATION_FIELD(location);
929+
930+
return true;
931+
}
932+
933+
static bool
934+
_equalJsonArrayAgg(const JsonArrayAgg *a, const JsonArrayAgg *b)
935+
{
936+
COMPARE_NODE_FIELD(constructor);
937+
COMPARE_NODE_FIELD(arg);
938+
COMPARE_SCALAR_FIELD(absent_on_null);
939+
940+
return true;
941+
}
942+
943+
static bool
944+
_equalJsonArrayQueryConstructor(const JsonArrayQueryConstructor *a,
945+
const JsonArrayQueryConstructor *b)
946+
{
947+
COMPARE_NODE_FIELD(query);
948+
COMPARE_NODE_FIELD(output);
949+
COMPARE_NODE_FIELD(format);
950+
COMPARE_SCALAR_FIELD(absent_on_null);
951+
COMPARE_LOCATION_FIELD(location);
952+
953+
return true;
954+
}
955+
866956
/*
867957
* Stuff from pathnodes.h
868958
*/
@@ -3815,6 +3905,30 @@ equal(const void *a, const void *b)
38153905
case T_PartitionCmd:
38163906
retval = _equalPartitionCmd(a, b);
38173907
break;
3908+
case T_JsonKeyValue:
3909+
retval = _equalJsonKeyValue(a, b);
3910+
break;
3911+
case T_JsonObjectConstructor:
3912+
retval = _equalJsonObjectConstructor(a, b);
3913+
break;
3914+
case T_JsonAggConstructor:
3915+
retval = _equalJsonAggConstructor(a, b);
3916+
break;
3917+
case T_JsonObjectAgg:
3918+
retval = _equalJsonObjectAgg(a, b);
3919+
break;
3920+
case T_JsonOutput:
3921+
retval = _equalJsonOutput(a, b);
3922+
break;
3923+
case T_JsonArrayConstructor:
3924+
retval = _equalJsonArrayConstructor(a, b);
3925+
break;
3926+
case T_JsonArrayQueryConstructor:
3927+
retval = _equalJsonArrayQueryConstructor(a, b);
3928+
break;
3929+
case T_JsonArrayAgg:
3930+
retval = _equalJsonArrayAgg(a, b);
3931+
break;
38183932

38193933
default:
38203934
elog(ERROR, "unrecognized node type: %d",

0 commit comments

Comments
 (0)