新优化器2.1.4 casewhen语句报错

Viewed 58

CREATE TABLE table_test1 (
id VARCHAR(20) NULL,
long1 BIGINT NULL,
long2 BIGINT NULL,
) ENGINE=OLAP
DUPLICATE KEY(id)
COMMENT 'olap'
DISTRIBUTED BY HASH(id) BUCKETS AUTO
PROPERTIES (
"replication_allocation" = "tag.location.default: 1"
);

CREATE TABLE table_test2 (
id VARCHAR(20) NULL,
re_long_4 BIGINT NULL,
) ENGINE=OLAP
DUPLICATE KEY(id)
COMMENT 'olap'
DISTRIBUTED BY HASH(id) BUCKETS AUTO
PROPERTIES (
"replication_allocation" = "tag.location.default: 1"
);
建表语句如上,报错查询
SELECT 1
from table_test1 b
WHERE (CASE
WHEN b.long2=(SELECT re_long_4 FROM table_test2 limit 1) THEN (select long1 from table_test1 limit 1 )
WHEN b.long2=(SELECT re_long_4 FROM table_test2 limit 1) THEN (select long1 from table_test1 limit 1)
ELSE b.long2
END)>0;
报错信息:The children format needs to be [WhenClause+, DefaultValue?]
之前在2.0.X版本新优化器是可以执行的

3 Answers

这个问题已经fix,PR:https://github.com/apache/doris/pull/38491

估计得等2.1.6了

这个我本地复现了,我这边跟进下,有信息给您同步下的。

2.1.4
image.png

2.1.0

image.png