Uploaded image for project: 'Flink'
  1. Flink
  2. FLINK-27247

ScalarOperatorGens.numericCasting is not compatible with legacy behavior

    XMLWordPrintableJSON

Details

    Description

      Add the following test cases in ScalarFunctionsTest:

      // code placeholder
      @Test
      def test(): Unit ={
        testSqlApi("rand(1) + 1","")
      } 

      it will throw the following exception:

      // code placeholder
      org.apache.flink.table.planner.codegen.CodeGenException: Unsupported casting from DOUBLE to DOUBLE NOT NULL.
          at org.apache.flink.table.planner.codegen.calls.ScalarOperatorGens$.numericCasting(ScalarOperatorGens.scala:1734)
          at org.apache.flink.table.planner.codegen.calls.ScalarOperatorGens$.generateBinaryArithmeticOperator(ScalarOperatorGens.scala:85)
          at org.apache.flink.table.planner.codegen.ExprCodeGenerator.generateCallExpression(ExprCodeGenerator.scala:507)
          at org.apache.flink.table.planner.codegen.ExprCodeGenerator.visitCall(ExprCodeGenerator.scala:481)
          at org.apache.flink.table.planner.codegen.ExprCodeGenerator.visitCall(ExprCodeGenerator.scala:57)
          at org.apache.calcite.rex.RexCall.accept(RexCall.java:174)
          at org.apache.flink.table.planner.codegen.ExprCodeGenerator.$anonfun$visitCall$1(ExprCodeGenerator.scala:478)
          at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:233)
          at scala.collection.mutable.ResizableArray.foreach(ResizableArray.scala:58)
          at scala.collection.mutable.ResizableArray.foreach$(ResizableArray.scala:51)
          at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:47)
          at scala.collection.TraversableLike.map(TraversableLike.scala:233)
          at scala.collection.TraversableLike.map$(TraversableLike.scala:226)
          at scala.collection.AbstractTraversable.map(Traversable.scala:104)
          at org.apache.flink.table.planner.codegen.ExprCodeGenerator.visitCall(ExprCodeGenerator.scala:469)
      ... 

      This is because in ScalarOperatorGens#numericCasting,  FLINK-24779  lost the logic that in some cases there is no need to casting the left and right type.

      Attachments

        Issue Links

          Activity

            People

              xuyangzhong xuyang
              xuyangzhong xuyang
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: