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)

Reply via email to