mirror of
https://github.com/MariaDB/server.git
synced 2025-09-11 05:52:26 +03:00
MDEV-26054 Server crashes in Item_func_json_arrayagg::get_str_from_field
Revert "fix JSON_ARRAYAGG not to over-quote json in joins"
This removes 8711adb786
but keeps the test case.
A different fix is coming up.
Because args can be Item_field's that are later
replaced by Item_direct_view_ref to the actual field.
While Item_field preserved in orig_args will stay unfixed
with item->field==NULL and no metadata
This commit is contained in:
@@ -1382,5 +1382,16 @@ id materials
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
#
|
#
|
||||||
|
# MDEV-26054 Server crashes in Item_func_json_arrayagg::get_str_from_field
|
||||||
|
#
|
||||||
|
CREATE TABLE t (a VARCHAR(8));
|
||||||
|
CREATE VIEW v AS SELECT * FROM t;
|
||||||
|
INSERT INTO t VALUES ('foo'),('bar');
|
||||||
|
SELECT JSON_ARRAYAGG(a) AS f FROM v;
|
||||||
|
f
|
||||||
|
["foo","bar"]
|
||||||
|
DROP VIEW v;
|
||||||
|
DROP TABLE t;
|
||||||
|
#
|
||||||
# End of 10.5 tests
|
# End of 10.5 tests
|
||||||
#
|
#
|
||||||
|
@@ -873,6 +873,17 @@ SELECT t1.id, JSON_ARRAYAGG(JSON_OBJECT('id',t2.id) ORDER BY t2.id) as materials
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
|
|
||||||
|
--echo #
|
||||||
|
--echo # MDEV-26054 Server crashes in Item_func_json_arrayagg::get_str_from_field
|
||||||
|
--echo #
|
||||||
|
|
||||||
|
CREATE TABLE t (a VARCHAR(8));
|
||||||
|
CREATE VIEW v AS SELECT * FROM t;
|
||||||
|
INSERT INTO t VALUES ('foo'),('bar');
|
||||||
|
SELECT JSON_ARRAYAGG(a) AS f FROM v;
|
||||||
|
DROP VIEW v;
|
||||||
|
DROP TABLE t;
|
||||||
|
|
||||||
--echo #
|
--echo #
|
||||||
--echo # End of 10.5 tests
|
--echo # End of 10.5 tests
|
||||||
--echo #
|
--echo #
|
||||||
|
@@ -3723,12 +3723,12 @@ String *Item_func_json_arrayagg::get_str_from_item(Item *i, String *tmp)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
String *Item_func_json_arrayagg::get_str_from_field(Item *, Field *f,
|
String *Item_func_json_arrayagg::get_str_from_field(Item *i,Field *f,
|
||||||
String *tmp, const uchar *key, size_t offset)
|
String *tmp, const uchar *key, size_t offset)
|
||||||
{
|
{
|
||||||
m_tmp_json.length(0);
|
m_tmp_json.length(0);
|
||||||
|
|
||||||
if (append_json_value_from_field(&m_tmp_json, *orig_args, f, key, offset, tmp))
|
if (append_json_value_from_field(&m_tmp_json, i, f, key, offset, tmp))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
return &m_tmp_json;
|
return &m_tmp_json;
|
||||||
|
Reference in New Issue
Block a user