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
|
||||
GROUP BY t1.id ORDER BY id;
|
||||
id materials
|
||||
1 ["{\"id\": 1}","{\"id\": 2}"]
|
||||
2 ["{\"id\": 3}"]
|
||||
3 ["{\"id\": 4}"]
|
||||
1 [{"id": 1},{"id": 2}]
|
||||
2 [{"id": 3}]
|
||||
3 [{"id": 4}]
|
||||
DROP TABLE t1;
|
||||
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)
|
||||
{
|
||||
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 &m_tmp_json;
|
||||
|
Reference in New Issue
Block a user