此查询(来自任何客户端,cli,workbench,dbeaver,php库)完全杀死了mysql 8.0.16中服务器上的每个连接,并在8.0.15上按预期运行。
SELECT SUM( `x` )
FROM (
SELECT DISTINCT
`T`.`x`
FROM
JSON_TABLE(
'[1]',
'$[*]' COLUMNS(
`x` INT PATH "$"
)
) T
) y;
使用临时表代替子查询按预期工作(不会使每个mysql连接崩溃)
有人遇到这个问题吗?
编辑:对不起,没有弄清楚这一点,与SUM方法无关,似乎任何带有不同子查询的聚合函数(GROUP_CONCAT,JSON_ARRARYAGG ...)都会使8.0.16上的每个连接崩溃
答案 0 :(得分:2)
问题似乎出在DISTINCT
(很可能是一个错误):
SELECT SUM( `x` )
FROM (
SELECT DISTINCT `T`.`x` FROM
JSON_TABLE('[1]','$[*]' COLUMNS(`x` INT PATH "$")) T
) y;
-- error
SELECT SUM( DISTINCT `x` )
FROM (
SELECT `T`.`x` FROM
JSON_TABLE('[1]','$[*]' COLUMNS(`x` INT PATH "$")) T
) y;
-- correct
编辑:
WITH cte AS (
SELECT `T`.`x` FROM
JSON_TABLE('[1]','$[*]' COLUMNS(`x` INT PATH "$")) T
), cte2 AS (
SELECT /*+ NO_MERGE(cte) */ * FROM cte
)
SELECT JSON_ARRAYAGG(`x`)
FROM cte2
即使不使用DISTINCT
,问题似乎也与实现有关。