mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
MDEV-11444 Server crashes in String::ptr / Item_func_json_depth::val_int.
CAST AS JSON didn't set the null_value mark properly.
This commit is contained in:
@ -223,3 +223,6 @@ json_object("a", '{"b": "abcd"}')
|
|||||||
select json_object("a", cast('{"b": "abcd"}' as json));
|
select json_object("a", cast('{"b": "abcd"}' as json));
|
||||||
json_object("a", cast('{"b": "abcd"}' as json))
|
json_object("a", cast('{"b": "abcd"}' as json))
|
||||||
{"a": {"b": "abcd"}}
|
{"a": {"b": "abcd"}}
|
||||||
|
select json_depth(cast(NULL as JSON));
|
||||||
|
json_depth(cast(NULL as JSON))
|
||||||
|
NULL
|
||||||
|
@ -98,3 +98,5 @@ select json_object("a", json_object("b", "abcd"));
|
|||||||
select json_object("a", '{"b": "abcd"}');
|
select json_object("a", '{"b": "abcd"}');
|
||||||
select json_object("a", cast('{"b": "abcd"}' as json));
|
select json_object("a", cast('{"b": "abcd"}' as json));
|
||||||
|
|
||||||
|
select json_depth(cast(NULL as JSON));
|
||||||
|
|
||||||
|
@ -2073,3 +2073,10 @@ void Item_json_typecast::fix_length_and_dec()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
String *Item_json_typecast::val_str(String *str)
|
||||||
|
{
|
||||||
|
String *vs= args[0]->val_str(str);
|
||||||
|
null_value= args[0]->null_value;
|
||||||
|
return vs;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -420,11 +420,7 @@ public:
|
|||||||
const char *func_name() const { return "cast_as_json"; }
|
const char *func_name() const { return "cast_as_json"; }
|
||||||
bool is_json_type() { return true; }
|
bool is_json_type() { return true; }
|
||||||
void fix_length_and_dec();
|
void fix_length_and_dec();
|
||||||
String *val_str(String *str)
|
String *val_str(String *str);
|
||||||
{
|
|
||||||
return args[0]->val_str(str);
|
|
||||||
}
|
|
||||||
|
|
||||||
Item *get_copy(THD *thd, MEM_ROOT *mem_root)
|
Item *get_copy(THD *thd, MEM_ROOT *mem_root)
|
||||||
{ return get_item_copy<Item_json_typecast>(thd, mem_root, this); }
|
{ return get_item_copy<Item_json_typecast>(thd, mem_root, this); }
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user