Jark Wu created FLINK-18701: ------------------------------- Summary: NOT NULL constraint is not guaranteed when aggregation split is enabled Key: FLINK-18701 URL: https://issues.apache.org/jira/browse/FLINK-18701 Project: Flink Issue Type: Bug Components: Table SQL / Planner Reporter: Jark Wu
Take the following test: {{org.apache.flink.table.planner.runtime.stream.sql.SplitAggregateITCase#testMinMaxWithRetraction}} {code:scala} val t1 = tEnv.sqlQuery( s""" |SELECT | c, MIN(b), MAX(b), COUNT(DISTINCT a) |FROM( | SELECT | a, COUNT(DISTINCT b) as b, MAX(b) as c | FROM T | GROUP BY a |) GROUP BY c """.stripMargin) val sink = new TestingRetractSink t1.toRetractStream[Row].addSink(sink) env.execute() println(sink.getRawResults) {code} The query schema is {code:java} root |-- c: INT |-- EXPR$1: BIGINT NOT NULL |-- EXPR$2: BIGINT NOT NULL |-- EXPR$3: BIGINT NOT NULL {code} This should be correct as the count is never null and thus min/max are never null, however, we can receive null in the sink. {code} List((true,1,null,null,1), (true,2,2,2,1), (false,1,null,null,1), (true,6,2,2,1), (true,5,1,1,0), (false,5,1,1,0), (true,5,1,1,2), (true,4,2,2,0), (false,5,1,1,2), (true,5,1,3,2), (false,4,2,2,0), (false,5,1,3,2), (true,5,1,4,2)) {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)