MariaDB JSON_ARRAYAGG输出限制在1MB 1048578字符左右

2wnc66cl  于 2023-10-21  发布在  其他
关注(0)|答案(1)|浏览(134)

我有一个MariaDB查询使用新的JSON函数,查询突然停止工作的行数增加。
在深入研究这个问题时,我注意到JSON_ARRAYAGG返回的JSON是无效的,为了确保这不是一个协议问题,我将查询修改为

SELECT date(created_at), length(JSON_ARRAYAGG(JSON_EXTRACT(items,'$'))) a FROM sales where 
                      Date(created_at) >= Date('2023-08-14') and Date(created_at) <= Date('2023-08-19')

2023-08-14,1048578

最有意义的是,函数不能返回大于1024*1024字节的字符串。
我试着在谷歌上搜索,并要求那里的虚拟援助,但没有指向这样的限制。
这个测试案例表明,一些MariaDB函数确实能够处理更大的字符串。

SELECT length(repeat("AAA",1048576))

关于这个限制有什么想法、经验或来源吗?
谢谢
这个查询是一个更大的子查询的一部分,所以它不会直接在客户端语言中重建逻辑。

rks48beu

rks48beu1#

长度由系统变量group_concat_max_len控制,如您所见,默认值为1M。
这可以在全局、每个会话或per statement中更改,如:

SET STATEMENT group_concat_max_length=10000000 SELECT ...

相关问题