MCPcopy Create free account
hub / github.com/MariaDB/server / CompareTree

Method CompareTree

storage/connect/jsonudf.cpp:1097–1127  ·  view source on GitHub ↗

/ Compare two JSON trees. */ /

Source from the content-addressed store, hash-verified

1095/* Compare two JSON trees. */
1096/*********************************************************************************/
1097my_bool JSNX::CompareTree(PGLOBAL g, PJSON jp1, PJSON jp2)
1098{
1099 if (!jp1 || !jp2 || jp1->GetType() != jp2->GetType()
1100 || jp1->size() != jp2->size())
1101 return false;
1102
1103 my_bool found = true;
1104
1105 if (jp1->GetType() == TYPE_JVAL) {
1106// PVL v1 = ((PJVAL)jp1)->GetVal(), v2 = ((PJVAL)jp2)->GetVal();
1107
1108 if (((PJVAL)jp1)->DataType == TYPE_JSON && ((PJVAL)jp2)->DataType == TYPE_JSON)
1109 found = CompareTree(g, jp1->GetJsp(), jp2->GetJsp());
1110 else
1111 found = CompareValues(((PJVAL)jp1), ((PJVAL)jp2));
1112
1113 } else if (jp1->GetType() == TYPE_JAR) {
1114 for (int i = 0; found && i < jp1->size(); i++)
1115 found = (CompareTree(g, jp1->GetArrayValue(i), jp2->GetArrayValue(i)));
1116
1117 } else if (jp1->GetType() == TYPE_JOB) {
1118 PJPR p1 = jp1->GetFirst(), p2 = jp2->GetFirst();
1119
1120 for (; found && p1 && p2; p1 = p1->Next, p2 = p2->Next)
1121 found = CompareTree(g, p1->Val, p2->Val);
1122
1123 } else
1124 found = false;
1125
1126 return found;
1127} // end of CompareTree
1128
1129/*********************************************************************************/
1130/* Compare two VAL values and return true if they are equal. */

Callers

nothing calls this directly

Calls 5

GetTypeMethod · 0.45
sizeMethod · 0.45
GetJspMethod · 0.45
GetArrayValueMethod · 0.45
GetFirstMethod · 0.45

Tested by

no test coverage detected