Martijn Visser created FLINK-40948:
--------------------------------------
Summary: Planner crashes with "Type mismatch" when a window
aggregate groups on the nullable side of an outer window join
Key: FLINK-40948
URL: https://issues.apache.org/jira/browse/FLINK-40948
Project: Flink
Issue Type: Bug
Components: Table SQL / Planner
Affects Versions: 2.4.0
Reporter: Martijn Visser
When the output of a LEFT (or RIGHT or FULL) window join is aggregated again on
the window_start and window_end columns of the null-generating side, planning
fails with an internal Calcite error instead of a plan or a validation message.
EXPLAIN is enough to trigger it, no data is needed:
{code:sql}
CREATE TABLE a (id STRING, ts TIMESTAMP(3), WATERMARK FOR ts AS ts) WITH
('connector' = 'datagen');
CREATE TABLE b (id STRING, ts TIMESTAMP(3), WATERMARK FOR ts AS ts) WITH
('connector' = 'datagen');
EXPLAIN
SELECT window_start, window_end, id, SUM(cnt)
FROM (
SELECT r.window_start, r.window_end, r.id, r.cnt
FROM (
SELECT id, window_start, window_end, COUNT(*) AS cnt
FROM TABLE(TUMBLE(TABLE a, DESCRIPTOR(ts), INTERVAL '5' SECOND))
GROUP BY id, window_start, window_end
) l
LEFT JOIN (
SELECT id, window_start, window_end, COUNT(*) AS cnt
FROM TABLE(TUMBLE(TABLE b, DESCRIPTOR(ts), INTERVAL '5' SECOND))
GROUP BY id, window_start, window_end
) r
ON l.window_start = r.window_start AND l.window_end = r.window_end AND l.id =
r.id
)
GROUP BY window_start, window_end, id;
{code}
{code}
java.lang.RuntimeException: Error while applying rule
StreamPhysicalWindowAggregateRule(in:LOGICAL,out:STREAM_PHYSICAL), args
[rel#889:FlinkLogicalAggregate.LOGICAL.any.None:
0.[NONE].[NONE].[NONE](input=RelSubset#888,group={0, 1, 2},EXPR$3=SUM($3))]
Caused by: java.lang.IllegalArgumentException: Type mismatch:
rel rowtype: RecordType(TIMESTAMP(3) NOT NULL window_start, TIMESTAMP(3) NOT
NULL window_end, VARCHAR(2147483647) CHARACTER SET "UTF-16LE" id, BIGINT
EXPR$3) NOT NULL
equiv rowtype: RecordType(TIMESTAMP(3) window_start, TIMESTAMP(3) window_end,
VARCHAR(2147483647) CHARACTER SET "UTF-16LE" id, BIGINT EXPR$3) NOT NULL
Difference:
window_start: TIMESTAMP(3) NOT NULL -> TIMESTAMP(3)
window_end: TIMESTAMP(3) NOT NULL -> TIMESTAMP(3)
{code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)