Commit e545a60b authored by Alexey Botchkov's avatar Alexey Botchkov

MDEV-22236 JSON_ARRAYAGG query leads to SIGSEGV in Charset::swap on optimized builds.

The json_arrayagg::val_str should handle NULL result.
parent 0cd2b4c2
...@@ -1213,3 +1213,11 @@ DROP TABLE t1; ...@@ -1213,3 +1213,11 @@ DROP TABLE t1;
# #
# End of 10.4 tests # End of 10.4 tests
# #
#
# MDEV-16620 JSON_ARRAYAGG
#
CREATE TABLE t1 (a INT);
SELECT JSON_ARRAYAGG(a) FROM t1;
JSON_ARRAYAGG(a)
NULL
DROP TABLE t1;
...@@ -732,3 +732,11 @@ DROP TABLE t1; ...@@ -732,3 +732,11 @@ DROP TABLE t1;
--echo # --echo #
--echo # End of 10.4 tests --echo # End of 10.4 tests
--echo # --echo #
-- echo #
-- echo # MDEV-16620 JSON_ARRAYAGG
-- echo #
CREATE TABLE t1 (a INT);
SELECT JSON_ARRAYAGG(a) FROM t1;
DROP TABLE t1;
...@@ -3632,13 +3632,14 @@ String* Item_func_json_arrayagg::convert_to_json(Item *item, String *res) ...@@ -3632,13 +3632,14 @@ String* Item_func_json_arrayagg::convert_to_json(Item *item, String *res)
String* Item_func_json_arrayagg::val_str(String *str) String* Item_func_json_arrayagg::val_str(String *str)
{ {
str= Item_func_group_concat::val_str(str); if ((str= Item_func_group_concat::val_str(str)))
String s; {
s.append('['); String s;
s.swap(*str); s.append('[');
str->append(s); s.swap(*str);
str->append(']'); str->append(s);
str->append(']');
}
return str; return str;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment