[ https://issues.apache.org/jira/browse/FLINK-22982?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Flink Jira Bot updated FLINK-22982: ----------------------------------- Labels: pull-request-available stale-critical (was: pull-request-available) I am the [Flink Jira Bot|https://github.com/apache/flink-jira-bot/] and I help the community manage its development. I see this issues has been marked as Critical but is unassigned and neither itself nor its Sub-Tasks have been updated for 7 days. I have gone ahead and marked it "stale-critical". If this ticket is critical, please either assign yourself or give an update. Afterwards, please remove the label or in 7 days the issue will be deprioritized. > java.lang.ClassCastException when using Python UDF > -------------------------------------------------- > > Key: FLINK-22982 > URL: https://issues.apache.org/jira/browse/FLINK-22982 > Project: Flink > Issue Type: Bug > Components: API / Python > Affects Versions: 1.13.1 > Reporter: Maciej Bryński > Priority: Critical > Labels: pull-request-available, stale-critical > Fix For: 1.14.0, 1.13.2 > > > Hi, > I'm trying to use Python UDF with logical condition as argument. > > {code:java} > log = logging.getLogger() > @udf(result_type=DataTypes.BOOLEAN()) > def trace(message, condition): > if condition: > log.warn(message) > return condition > table_env.create_temporary_function('trace', trace) > table_env.execute_sql(""" > CREATE TABLE datagen ( > n int > ) WITH ( > 'connector' = 'datagen', > 'number-of-rows' = '10' > ) > """) > result = table_env.sql_query(""" > SELECT * > FROM datagen > WHERE trace(n, n < 0) > """) > for r in result.execute().collect(): > print(r){code} > > As a result I'm getting exception: > {code:java} > Py4JJavaError: An error occurred while calling o135.execute. > : java.lang.ClassCastException: class org.apache.calcite.rex.RexInputRef > cannot be cast to class org.apache.calcite.rex.RexCall > (org.apache.calcite.rex.RexInputRef and org.apache.calcite.rex.RexCall are in > unnamed module of loader 'app') > at > org.apache.flink.table.planner.plan.rules.logical.PythonMapMergeRule.matches(PythonMapMergeRule.java:70) > at org.apache.calcite.plan.hep.HepPlanner.applyRule(HepPlanner.java:538) > at > org.apache.calcite.plan.hep.HepPlanner.applyRules(HepPlanner.java:407) > at > org.apache.calcite.plan.hep.HepPlanner.executeInstruction(HepPlanner.java:243) > at > org.apache.calcite.plan.hep.HepInstruction$RuleInstance.execute(HepInstruction.java:127) > at > org.apache.calcite.plan.hep.HepPlanner.executeProgram(HepPlanner.java:202) > at > org.apache.calcite.plan.hep.HepPlanner.findBestExp(HepPlanner.java:189) > at > org.apache.flink.table.planner.plan.optimize.program.FlinkHepProgram.optimize(FlinkHepProgram.scala:69) > at > org.apache.flink.table.planner.plan.optimize.program.FlinkHepRuleSetProgram.optimize(FlinkHepRuleSetProgram.scala:87) > at > org.apache.flink.table.planner.plan.optimize.program.FlinkChainedProgram$$anonfun$optimize$1.apply(FlinkChainedProgram.scala:62) > at > org.apache.flink.table.planner.plan.optimize.program.FlinkChainedProgram$$anonfun$optimize$1.apply(FlinkChainedProgram.scala:58) > {code} > -- This message was sent by Atlassian Jira (v8.3.4#803005)