1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-10-31 18:30:33 +03:00

MDEV-32854: Make JSON_DEPTH_LIMIT unlimited

This patch is the columnstore-part of the task. Columnstore wanted to have
previous 32 depth, so this patch aims at keeping the compatibility.
This commit is contained in:
Rucha Deodhar
2025-05-22 15:42:12 +05:30
committed by Leonid Fedorov
parent 9a2ebebaf9
commit 9fe37d5919
50 changed files with 1047 additions and 952 deletions

View File

@@ -73,18 +73,31 @@ bool JSONPathWrapper::extract(std::string& ret, rowgroup::Row& row, execplan::SP
if (json_path_setup(&p, getCharset(funcParamPath), (const uchar*)sjsp.str(), (const uchar*)sjsp.end()))
return true;
#if MYSQL_VERSION_ID >= 120200
JSONEgWrapper je(getCharset(funcParamJS), reinterpret_cast<const uchar*>(js.str()),
reinterpret_cast<const uchar*>(js.end()), je_stack);
#else
JSONEgWrapper je(getCharset(funcParamJS), reinterpret_cast<const uchar*>(js.str()),
reinterpret_cast<const uchar*>(js.end()));
#endif
#if MYSQL_VERSION_ID >= 120200
currStep = reinterpret_cast<json_path_step_t*>(p.steps.buffer);
#else
currStep = p.steps;
#endif
do
{
if (error)
return true;
#if MYSQL_VERSION_ID >= 120200
if (json_find_path(&je, &p, &currStep, &array))
#else
IntType arrayCounters[JSON_DEPTH_LIMIT];
if (json_find_path(&je, &p, &currStep, arrayCounters))
#endif
return true;
if (json_read_value(&je))