[ https://issues.apache.org/jira/browse/FLINK-32986?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17792406#comment-17792406 ]
Jeyhun Karimov commented on FLINK-32986: ---------------------------------------- Hi [~lincoln.86xy] could you please assign this task to me or give me an access to self-assign the task? Thanks! > The new createTemporaryFunction has some regression of type inference compare > to the deprecated registerFunction > ---------------------------------------------------------------------------------------------------------------- > > Key: FLINK-32986 > URL: https://issues.apache.org/jira/browse/FLINK-32986 > Project: Flink > Issue Type: Technical Debt > Components: Table SQL / API > Affects Versions: 1.18.0, 1.17.1 > Reporter: lincoln lee > Priority: Major > Labels: pull-request-available > > Current `LookupJoinITCase#testJoinTemporalTableWithUdfFilter` uses a legacy > form function registration: > {code} > tEnv.registerFunction("add", new TestAddWithOpen) > {code} > it works fine with the SQL call `add(T.id, 2) > 3` but fails when swith to > the new api: > {code} > tEnv.createTemporaryFunction("add", classOf[TestAddWithOpen]) > // or this > tEnv.createTemporaryFunction("add", new TestAddWithOpen) > {code} > exception: > {code} > Caused by: org.apache.flink.table.api.ValidationException: Invalid function > call: > default_catalog.default_database.add(BIGINT, INT NOT NULL) > at > org.apache.flink.table.types.inference.TypeInferenceUtil.createInvalidCallException(TypeInferenceUtil.java:193) > at > org.apache.flink.table.planner.functions.inference.TypeInferenceOperandChecker.checkOperandTypes(TypeInferenceOperandChecker.java:89) > at > org.apache.calcite.sql.SqlOperator.checkOperandTypes(SqlOperator.java:753) > at > org.apache.calcite.sql.SqlOperator.validateOperands(SqlOperator.java:499) > at org.apache.calcite.sql.SqlFunction.deriveType(SqlFunction.java:335) > at org.apache.calcite.sql.SqlFunction.deriveType(SqlFunction.java:231) > at > org.apache.calcite.sql.validate.SqlValidatorImpl$DeriveTypeVisitor.visit(SqlValidatorImpl.java:6302) > at > org.apache.calcite.sql.validate.SqlValidatorImpl$DeriveTypeVisitor.visit(SqlValidatorImpl.java:6287) > at org.apache.calcite.sql.SqlCall.accept(SqlCall.java:161) > at > org.apache.calcite.sql.validate.SqlValidatorImpl.deriveTypeImpl(SqlValidatorImpl.java:1869) > at > org.apache.calcite.sql.validate.SqlValidatorImpl.deriveType(SqlValidatorImpl.java:1860) > at > org.apache.calcite.sql.type.SqlTypeUtil.deriveType(SqlTypeUtil.java:200) > at > org.apache.calcite.sql.type.InferTypes.lambda$static$0(InferTypes.java:47) > at > org.apache.calcite.sql.validate.SqlValidatorImpl.inferUnknownTypes(SqlValidatorImpl.java:2050) > at > org.apache.calcite.sql.validate.SqlValidatorImpl.inferUnknownTypes(SqlValidatorImpl.java:2055) > at > org.apache.calcite.sql.validate.SqlValidatorImpl.validateWhereOrOn(SqlValidatorImpl.java:4338) > at > org.apache.calcite.sql.validate.SqlValidatorImpl.validateJoin(SqlValidatorImpl.java:3410) > at > org.apache.flink.table.planner.calcite.FlinkCalciteSqlValidator.validateJoin(FlinkCalciteSqlValidator.java:154) > at > org.apache.calcite.sql.validate.SqlValidatorImpl.validateFrom(SqlValidatorImpl.java:3282) > at > org.apache.calcite.sql.validate.SqlValidatorImpl.validateSelect(SqlValidatorImpl.java:3603) > at > org.apache.calcite.sql.validate.SelectNamespace.validateImpl(SelectNamespace.java:64) > at > org.apache.calcite.sql.validate.AbstractNamespace.validate(AbstractNamespace.java:89) > at > org.apache.calcite.sql.validate.SqlValidatorImpl.validateNamespace(SqlValidatorImpl.java:1050) > at > org.apache.calcite.sql.validate.SqlValidatorImpl.validateQuery(SqlValidatorImpl.java:1025) > at org.apache.calcite.sql.SqlSelect.validate(SqlSelect.java:248) > at > org.apache.calcite.sql.validate.SqlValidatorImpl.validateScopedExpression(SqlValidatorImpl.java:1000) > at > org.apache.calcite.sql.validate.SqlValidatorImpl.validate(SqlValidatorImpl.java:749) > at > org.apache.flink.table.planner.calcite.FlinkPlannerImpl.org$apache$flink$table$planner$calcite$FlinkPlannerImpl$$validate(FlinkPlannerImpl.scala:196) > ... 49 more > Caused by: org.apache.flink.table.api.ValidationException: Invalid input > arguments. Expected signatures are: > default_catalog.default_database.add(a BIGINT NOT NULL, b INT NOT NULL) > default_catalog.default_database.add(a BIGINT NOT NULL, b BIGINT NOT NULL) > at > org.apache.flink.table.types.inference.TypeInferenceUtil.createInvalidInputException(TypeInferenceUtil.java:180) > at > org.apache.flink.table.planner.functions.inference.TypeInferenceOperandChecker.checkOperandTypesOrError(TypeInferenceOperandChecker.java:124) > at > org.apache.flink.table.planner.functions.inference.TypeInferenceOperandChecker.checkOperandTypes(TypeInferenceOperandChecker.java:86) > ... 75 more > Caused by: org.apache.flink.table.api.ValidationException: Invalid input > arguments. > at > org.apache.flink.table.types.inference.TypeInferenceUtil.inferInputTypes(TypeInferenceUtil.java:442) > at > org.apache.flink.table.types.inference.TypeInferenceUtil.adaptArguments(TypeInferenceUtil.java:123) > at > org.apache.flink.table.types.inference.TypeInferenceUtil.adaptArguments(TypeInferenceUtil.java:100) > at > org.apache.flink.table.planner.functions.inference.TypeInferenceOperandChecker.checkOperandTypesOrError(TypeInferenceOperandChecker.java:122) > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)