summaryrefslogtreecommitdiff
path: root/sql/item_jsonfunc.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sql/item_jsonfunc.cc')
-rw-r--r--sql/item_jsonfunc.cc5
1 files changed, 4 insertions, 1 deletions
diff --git a/sql/item_jsonfunc.cc b/sql/item_jsonfunc.cc
index 7bf2283dd53..9535feb0d8e 100644
--- a/sql/item_jsonfunc.cc
+++ b/sql/item_jsonfunc.cc
@@ -796,17 +796,20 @@ static int check_contains(json_engine_t *js, json_engine_t *value)
{
while (json_scan_next(js) == 0 && js->state != JST_ARRAY_END)
{
+ json_level_t c_level;
DBUG_ASSERT(js->state == JST_VALUE);
if (json_read_value(js))
return FALSE;
+ c_level= json_value_scalar(js) ? NULL : json_get_level(js);
if (check_contains(js, value))
{
if (json_skip_level(js))
return FALSE;
return TRUE;
}
- if (value->s.error || js->s.error)
+ if (value->s.error || js->s.error ||
+ (c_level && json_skip_to_level(js, c_level)))
return FALSE;
}
return FALSE;