Mihai Budiu created CALCITE-7024:
------------------------------------

             Summary: Decorrelator does not always produce a query with the 
same type signature
                 Key: CALCITE-7024
                 URL: https://issues.apache.org/jira/browse/CALCITE-7024
             Project: Calcite
          Issue Type: Bug
          Components: core
    Affects Versions: 1.39.0
            Reporter: Mihai Budiu


While trying to implement  [CALCITE-7023] I stumbled on some examples for which 
the query produced by the decorrelator has a different type signature from the 
input query. I think this should be impossible.

Original plan:
{code}
LogicalCorrelate(correlation=[$cor0], joinType=[left], requiredColumns=[{0}]), 
id = 161
  LogicalTableScan(table=[[schema, s]]), id = 95
  LogicalSort(fetch=[1]), id = 159
    LogicalAggregate(group=[{}], EXPR$0=[SUM($0)]), id = 157
      LogicalProject(x=[$0]), id = 155
        LogicalFilter(condition=[=($cor0.y, $1)]), id = 153
          LogicalTableScan(table=[[schema, t]]), id = 97
{code}

Error produced when attempting to replace this plan after decorrelating it:

{code}
set type is RecordType(INTEGER y, DECIMAL(28, 2) EXPR$0) NOT NULL
expression type is RecordType(INTEGER y, DECIMAL(28, 2) EXPR$0, INTEGER z) NOT 
NULL
set is 
rel#161:LogicalCorrelate.(left=HepRelVertex#151,right=HepRelVertex#160,correlation=$cor0,joinType=left,requiredColumns={0})
expression is LogicalJoin(condition=[=($0, $2)], joinType=[left])
  LogicalTableScan(table=[[schema, s]])
  LogicalProject(EXPR$0=[FIRST_VALUE($1) OVER (PARTITION BY $0)], z=[$0])
    LogicalAggregate(group=[{0}], EXPR$0=[SUM($1)])
      LogicalProject(z=[$1], x=[$0])
        LogicalFilter(condition=[IS NOT NULL($1)])
          LogicalTableScan(table=[[schema, t]])
Type mismatch: the field sizes are not equal.
rowtype of original rel: RecordType(INTEGER y, DECIMAL(28, 2) EXPR$0) NOT NULL
rowtype of new rel: RecordType(INTEGER y, DECIMAL(28, 2) EXPR$0, INTEGER z) NOT 
NULL
{code}





--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to