You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Jinfeng Ni (JIRA)" <ji...@apache.org> on 2015/03/18 01:08:38 UTC

[jira] [Created] (CALCITE-628) Calcite hit Assertion Error when calling Frameworks.planner or RelOptRule.convert(), if the target trait is composite

Jinfeng Ni created CALCITE-628:
----------------------------------

             Summary: Calcite hit Assertion Error when calling Frameworks.planner or RelOptRule.convert(), if the target trait is composite  
                 Key: CALCITE-628
                 URL: https://issues.apache.org/jira/browse/CALCITE-628
             Project: Calcite
          Issue Type: Bug
            Reporter: Jinfeng Ni
            Assignee: Julian Hyde


CALCITE-88 introduces the concept of RelCompositeTrait. As such, Calcite seems to require that each new RelSubSet should only have simple trait, in stead of composite traits. If that condition is not meet, an assertion will be thrown.

However, when we use Frameworks.planner to call transform(),  or use RelOptRule to call convert() method, there is no guarantee that the target traits are simple.  If the target traits happened to be composite, then Calcite will hit Assertion at RelSubset.java:108.

There seems to be two options to fix this Assertion and ensure RelSubset only have simple traitsets :
1) Follow the way Prepare.optimize(), and call simplify() for the target traitset, in both PlannerImpl.transform() or RelOptRule.convert().

2) Each callers of transform(), or convert() method should make sure the target traits are simple.

The patch I'm going to submit uses the 1st option, using the same logic in Prepare.optimize().

 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)