1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-08-05 16:15:50 +03:00

json_depth

This commit is contained in:
Rucha Deodhar
2025-05-22 15:42:12 +05:30
parent b555cf605e
commit 53870ac06f
24 changed files with 290 additions and 30 deletions

View File

@@ -1,5 +1,6 @@
#include "functor_json.h"
#include "functioncolumn.h"
#include "json_lib.h"
using namespace execplan;
#include "rowgroup.h"
@@ -276,6 +277,7 @@ string Func_json_merge_patch::getStrVal(rowgroup::Row& row, FunctionParm& fp, bo
isNull = false;
json_engine_t jsEg1, jsEg2;
int jsEg1_stack[JSON_DEPTH_LIMIT], jsEg2_stack[JSON_DEPTH_LIMIT];
jsEg1.s.error = jsEg2.s.error = 0;
utils::NullString tmpJS(js);
@@ -290,6 +292,9 @@ string Func_json_merge_patch::getStrVal(rowgroup::Row& row, FunctionParm& fp, bo
goto next;
}
mem_root_dynamic_array_init(NULL, PSI_INSTRUMENT_MEM | MY_INIT_BUFFER_USED | MY_BUFFER_NO_RESIZE,
&jsEg2.stack, sizeof(int), &jsEg2_stack,
JSON_DEPTH_LIMIT, 0, MYF(0));
initJSEngine(jsEg2, getCharset(fp[i]), js2);
if (hasNullArg)
@@ -304,6 +309,9 @@ string Func_json_merge_patch::getStrVal(rowgroup::Row& row, FunctionParm& fp, bo
goto next;
}
mem_root_dynamic_array_init(NULL, PSI_INSTRUMENT_MEM | MY_INIT_BUFFER_USED | MY_BUFFER_NO_RESIZE,
&jsEg1.stack, sizeof(int), &jsEg1_stack,
JSON_DEPTH_DEFAULT, 0, MYF(0));
initJSEngine(jsEg1, getCharset(fp[0]), tmpJS);
if (doMergePatch(retJS, &jsEg1, &jsEg2, isEmpty))
{