[jira] [Created] (FLINK-22982) java.lang.ClassCastException when using Python UDF

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[jira] [Created] (FLINK-22982) java.lang.ClassCastException when using Python UDF

Shang Yuanchun (Jira)
Maciej Bryński created FLINK-22982:
--------------------------------------

             Summary: 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


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)