Mihai Budiu created CALCITE-6403: ------------------------------------ Summary: Rule AGGREGATE_EXPAND_DISTINCT_AGGREGATES is unsound Key: CALCITE-6403 URL: https://issues.apache.org/jira/browse/CALCITE-6403 Project: Calcite Issue Type: Bug Components: core Affects Versions: 1.37.0 Reporter: Mihai Budiu
Here is a simple SQL program that operates on a collection with no input rows: {code:sql} SELECT COUNT(*), COUNT(DISTINCT COL1) FROM T WHERE false" {code} The rewrite rule expands this into: {code} LogicalProject(EXPR$0=[CAST($0):BIGINT NOT NULL], EXPR$1=[$1]), id = 39 LogicalAggregate(group=[{}], EXPR$0=[MIN($1) FILTER $3], EXPR$1=[COUNT($0) FILTER $2]), id = 37 LogicalProject(COL1=[$0], EXPR$0=[$1], $g_0=[=($2, 0)], $g_1=[=($2, 1)]), id = 35 LogicalAggregate(group=[{0}], groups=[[{0}, {}]], EXPR$0=[COUNT()], $g=[GROUPING($0)]), id = 30 LogicalValues(tuples=[[]]), id = 22 {code} Notice that there is an inner group-by aggregate that produces an empty set, and an outer aggregation that uses MIN. MIN for an empty collection is NULL, whereas the original query should have produced 0. -- This message was sent by Atlassian Jira (v8.20.10#820010)