EveyWu created CALCITE-6605:
--------------------------------

             Summary: Lattice SQL supports complex column expressions
                 Key: CALCITE-6605
                 URL: https://issues.apache.org/jira/browse/CALCITE-6605
             Project: Calcite
          Issue Type: Improvement
            Reporter:  EveyWu


In Lattice, using a complex expression in the measures triggers an 
`UnsupportedOperationException`.


{code:java}
  @Test void testExpressionLatticeSql4() throws Exception {
    final Tester t = new Tester().foodmart().withEvolve(true);
    final String q0 = "select\n"
        + "  \"num_children_at_home\" + 12 as \"n12\",\n"
        + "  sum(\"num_children_at_home\" + 10) as \"n10\",\n"
        + "  sum(\"num_children_at_home\" + 11) as \"n11\",\n"
        + "  count(*) as c\n"
        + "from \"customer\"\n"
        + "group by \"num_children_at_home\" + 12";
    t.addQuery(q0);
    final Lattice lattice = Iterables.getOnlyElement(t.s.latticeMap.values());
    Builder groupSetBuilder = ImmutableBitSet.builder();
    ImmutableList<Measure> measures = lattice.defaultMeasures;
    measures.forEach(measure -> groupSetBuilder.addAll(measure.argBitSet()));
    ImmutableBitSet groupSet = groupSetBuilder.build();
    lattice.sql(groupSet, true, measures);
  }
{code}

Exception information:

{code:java}
    java.lang.UnsupportedOperationException
        at 
org.apache.calcite.materialize.Lattice.lambda$resolveField$0(Lattice.java:385)
        at 
org.apache.calcite.rel.rel2sql.SqlImplementor$SimpleContext.field(SqlImplementor.java:1563)
        at 
org.apache.calcite.rel.rel2sql.SqlImplementor$Context.toSql(SqlImplementor.java:661)
        at 
org.apache.calcite.rel.rel2sql.SqlImplementor$Context.toSql(SqlImplementor.java:1179)
        at 
org.apache.calcite.rel.rel2sql.SqlImplementor$Context.callToSql(SqlImplementor.java:861)
        at 
org.apache.calcite.rel.rel2sql.SqlImplementor$Context.toSql(SqlImplementor.java:834)
        at 
org.apache.calcite.materialize.Lattice$SqlWriter.write(Lattice.java:791)
        at 
org.apache.calcite.materialize.Lattice$DerivedColumn.toSql(Lattice.java:760)
        at org.apache.calcite.materialize.Lattice.sql(Lattice.java:295)
        at 
org.apache.calcite.materialize.LatticeSuggesterTest.testExpressionLatticeSql4(LatticeSuggesterTest.java:835)
{code}






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

Reply via email to