You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@calcite.apache.org by "Ran Tao (Jira)" <ji...@apache.org> on 2023/08/27 06:33:00 UTC

[jira] [Created] (CALCITE-5960) Unexpected type should pass through the RexToLixTranslator#scaleIntervalToNumber instead of NPE

Ran Tao created CALCITE-5960:
--------------------------------

             Summary: Unexpected type should pass through the RexToLixTranslator#scaleIntervalToNumber instead of NPE
                 Key: CALCITE-5960
                 URL: https://issues.apache.org/jira/browse/CALCITE-5960
             Project: Calcite
          Issue Type: Bug
          Components: core
    Affects Versions: 1.35.0
            Reporter: Ran Tao
            Assignee: Ran Tao


current RexToLixTranslator#scaleIntervalToNumber will scale interval to number. but it throw NPE when family is null. It will cause some types such as row type (family is null) raise a NPE. In fact this function should do its logic for expected type, otherwise just pass the original operand is ok.


{code:java}
CAST(row(1, 2) as row(a integer, b tinyint)){code}
{code:java}
Suppressed: java.lang.NullPointerException: SqlTypeFamily for RecordType(INTEGER A, TINYINT B)         at java.base/java.util.Objects.requireNonNull(Objects.java:347)         at org.apache.calcite.adapter.enumerable.RexToLixTranslator.scaleIntervalToNumber(RexToLixTranslator.java:976)         at org.apache.calcite.adapter.enumerable.RexToLixTranslator.translateCast(RexToLixTranslator.java:293)         at org.apache.calcite.adapter.enumerable.RexImpTable$CastImplementor.implementSafe(RexImpTable.java:3200)         at org.apache.calcite.adapter.enumerable.RexImpTable$AbstractRexCallImplementor.genValueStatement(RexImpTable.java:3768)         at org.apache.calcite.adapter.enumerable.RexImpTable$AbstractRexCallImplementor.implement(RexImpTable.java:3730)         at org.apache.calcite.adapter.enumerable.RexToLixTranslator.visitCall(RexToLixTranslator.java:1184)         at org.apache.calcite.adapter.enumerable.RexToLixTranslator.visitCall(RexToLixTranslator.java:101)         at org.apache.calcite.rex.RexCall.accept(RexCall.java:189)         at org.apache.calcite.adapter.enumerable.RexToLixTranslator.visitLocalRef(RexToLixTranslator.java:1060)         at org.apache.calcite.adapter.enumerable.RexToLixTranslator.visitLocalRef(RexToLixTranslator.java:101)         at org.apache.calcite.rex.RexLocalRef.accept(RexLocalRef.java:77)         at org.apache.calcite.adapter.enumerable.RexToLixTranslator.translate(RexToLixTranslator.java:253)         at org.apache.calcite.adapter.enumerable.RexToLixTranslator.translate(RexToLixTranslator.java:247)         at org.apache.calcite.adapter.enumerable.RexToLixTranslator.translateList(RexToLixTranslator.java:899)         at org.apache.calcite.adapter.enumerable.RexToLixTranslator.translateProjects(RexToLixTranslator.java:201)         at org.apache.calcite.adapter.enumerable.EnumerableCalc.implement(EnumerableCalc.java:192)         at org.apache.calcite.adapter.enumerable.EnumerableRelImplementor.implementRoot(EnumerableRelImplementor.java:114)         ... 89 more
{code}



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