[jira] [Commented] (FLINK-26327) throw not a literal exception in callContext.getArgumentValue when getTypeInference
[ https://issues.apache.org/jira/browse/FLINK-26327?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17515331#comment-17515331 ] Francesco Guardiani commented on FLINK-26327: - Can you share the code of the Nvl class, or even better a small self-contained reproducer? > throw not a literal exception in callContext.getArgumentValue when > getTypeInference > --- > > Key: FLINK-26327 > URL: https://issues.apache.org/jira/browse/FLINK-26327 > Project: Flink > Issue Type: Bug > Components: Table SQL / API >Affects Versions: 1.14.2 >Reporter: Spongebob >Priority: Major > > > {code:java} > //代码占位符 > tableEnvironment.createTemporaryFunction("ROUNDX", RoundX.class); > tableEnvironment.createTemporaryFunction("NVL", Nvl.class); > tableEnvironment.executeSql("select ROUNDX( CAST(1.12345 as > decimal(10,3)),NVL(MAX(f0),2) ) from t1").print(); > // exception > Exception in thread "main" java.lang.AssertionError: not a literal: NVL($0, 2) > // trace > // `NVL` is a scalarFunction that likes oracle nvl function. And this > exception might be thrown from this code in my `getTypeInference` function > of ROUNDX scalarFunction. > Optional secondValue = callContext.getArgumentValue(1, > Integer.class);{code} > > -- This message was sent by Atlassian Jira (v8.20.1#820001)
[jira] [Commented] (FLINK-26327) throw not a literal exception in callContext.getArgumentValue when getTypeInference
[ https://issues.apache.org/jira/browse/FLINK-26327?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17497243#comment-17497243 ] Spongebob commented on FLINK-26327: --- {code:java} //代码占位符 Exception in thread "main" java.lang.AssertionError: not a literal: NVL($0, 2) at org.apache.calcite.rex.RexLiteral.findValue(RexLiteral.java:1161) at org.apache.calcite.rex.RexLiteral.value(RexLiteral.java:1133) at org.apache.calcite.rex.RexCallBinding.getOperandLiteralValue(RexCallBinding.java:89) at org.apache.flink.table.planner.functions.inference.OperatorBindingCallContext$2.getValueAs(OperatorBindingCallContext.java:102) at org.apache.flink.table.planner.functions.inference.AbstractSqlCallContext.getLiteralValueAs(AbstractSqlCallContext.java:123) at org.apache.flink.table.planner.functions.inference.OperatorBindingCallContext.getArgumentValue(OperatorBindingCallContext.java:98) at org.apache.flink.table.types.inference.utils.AdaptedCallContext.getArgumentValue(AdaptedCallContext.java:91) at com.xctech.cone.etl.migrate.udf.RoundX.lambda$getTypeInference$0(RoundX.java:47) at org.apache.flink.table.types.inference.TypeInferenceUtil.inferOutputType(TypeInferenceUtil.java:152) at org.apache.flink.table.planner.codegen.calls.BridgingFunctionGenUtil$.generateFunctionAwareCallWithDataType(BridgingFunctionGenUtil.scala:100) at org.apache.flink.table.planner.codegen.calls.BridgingFunctionGenUtil$.generateFunctionAwareCall(BridgingFunctionGenUtil.scala:73) at org.apache.flink.table.planner.codegen.calls.BridgingSqlFunctionCallGen.generate(BridgingSqlFunctionCallGen.scala:81) at org.apache.flink.table.planner.codegen.ExprCodeGenerator.generateCallExpression(ExprCodeGenerator.scala:825) at org.apache.flink.table.planner.codegen.ExprCodeGenerator.visitCall(ExprCodeGenerator.scala:503) at org.apache.flink.table.planner.codegen.ExprCodeGenerator.visitCall(ExprCodeGenerator.scala:58) at org.apache.calcite.rex.RexCall.accept(RexCall.java:174) at org.apache.flink.table.planner.codegen.ExprCodeGenerator.generateExpression(ExprCodeGenerator.scala:157) at org.apache.flink.table.planner.codegen.CalcCodeGenerator$.$anonfun$generateProcessCode$4(CalcCodeGenerator.scala:137) 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.CalcCodeGenerator$.produceProjectionCode$1(CalcCodeGenerator.scala:137) at org.apache.flink.table.planner.codegen.CalcCodeGenerator$.generateProcessCode(CalcCodeGenerator.scala:162) at org.apache.flink.table.planner.codegen.CalcCodeGenerator$.generateCalcOperator(CalcCodeGenerator.scala:48) at org.apache.flink.table.planner.codegen.CalcCodeGenerator.generateCalcOperator(CalcCodeGenerator.scala) at org.apache.flink.table.planner.plan.nodes.exec.common.CommonExecCalc.translateToPlanInternal(CommonExecCalc.java:94) at org.apache.flink.table.planner.plan.nodes.exec.ExecNodeBase.translateToPlan(ExecNodeBase.java:134) at org.apache.flink.table.planner.plan.nodes.exec.ExecEdge.translateToPlan(ExecEdge.java:250) at org.apache.flink.table.planner.plan.nodes.exec.batch.BatchExecSink.translateToPlanInternal(BatchExecSink.java:58) at org.apache.flink.table.planner.plan.nodes.exec.ExecNodeBase.translateToPlan(ExecNodeBase.java:134) at org.apache.flink.table.planner.delegation.BatchPlanner.$anonfun$translateToPlan$1(BatchPlanner.scala:82) at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:233) at scala.collection.Iterator.foreach(Iterator.scala:937) at scala.collection.Iterator.foreach$(Iterator.scala:937) at scala.collection.AbstractIterator.foreach(Iterator.scala:1425) at scala.collection.IterableLike.foreach(IterableLike.scala:70) at scala.collection.IterableLike.foreach$(IterableLike.scala:69) at scala.collection.AbstractIterable.foreach(Iterable.scala:54) 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.delegation.BatchPlanner.translateToPlan(BatchPlanner.scala:81) at org.apache.flink.table.planner.delegation.PlannerBase.translate(PlannerBase.scala:185) at org.apache.flink.table.api.internal.TableEnvironmentImpl.translate(TableEnvironmentImpl.java:1665)
[jira] [Commented] (FLINK-26327) throw not a literal exception in callContext.getArgumentValue when getTypeInference
[ https://issues.apache.org/jira/browse/FLINK-26327?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17497123#comment-17497123 ] Jark Wu commented on FLINK-26327: - Could you share the full exception stack ? > throw not a literal exception in callContext.getArgumentValue when > getTypeInference > --- > > Key: FLINK-26327 > URL: https://issues.apache.org/jira/browse/FLINK-26327 > Project: Flink > Issue Type: Bug > Components: Table SQL / API >Affects Versions: 1.14.2 >Reporter: Spongebob >Priority: Major > > > {code:java} > //代码占位符 > tableEnvironment.createTemporaryFunction("ROUNDX", RoundX.class); > tableEnvironment.createTemporaryFunction("NVL", Nvl.class); > tableEnvironment.executeSql("select ROUNDX( CAST(1.12345 as > decimal(10,3)),NVL(MAX(f0),2) ) from t1").print(); > // exception > Exception in thread "main" java.lang.AssertionError: not a literal: NVL($0, 2) > // trace > // `NVL` is a scalarFunction that likes oracle nvl function. And this > exception might be thrown from this code in my `getTypeInference` function > of ROUNDX scalarFunction. > Optional secondValue = callContext.getArgumentValue(1, > Integer.class);{code} > > -- This message was sent by Atlassian Jira (v8.20.1#820001)