mirror of
https://github.com/MariaDB/server.git
synced 2025-07-13 02:22:51 +03:00
fix JSON_ARRAYAGG not to over-quote json in joins
use metadata (in particular is_json() property) of the original argument item, even if the actual argument was later replaced with an Item_temptable_field
This commit is contained in:
@ -1376,9 +1376,9 @@ SELECT t1.id, JSON_ARRAYAGG(JSON_OBJECT('id',t2.id)) as materials
|
|||||||
from t1 LEFT JOIN t2 on t1.id = t2.owner_id
|
from t1 LEFT JOIN t2 on t1.id = t2.owner_id
|
||||||
GROUP BY t1.id ORDER BY id;
|
GROUP BY t1.id ORDER BY id;
|
||||||
id materials
|
id materials
|
||||||
1 ["{\"id\": 1}","{\"id\": 2}"]
|
1 [{"id": 1},{"id": 2}]
|
||||||
2 ["{\"id\": 3}"]
|
2 [{"id": 3}]
|
||||||
3 ["{\"id\": 4}"]
|
3 [{"id": 4}]
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
#
|
#
|
||||||
|
@ -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 *i,Field *f,
|
String *Item_func_json_arrayagg::get_str_from_field(Item *, 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, i, f, key, offset, tmp))
|
if (append_json_value_from_field(&m_tmp_json, *orig_args, f, key, offset, tmp))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
return &m_tmp_json;
|
return &m_tmp_json;
|
||||||
|
Reference in New Issue
Block a user