[
https://issues.apache.org/jira/browse/CALCITE-6037?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17772469#comment-17772469
]
Ran Tao edited comment on CALCITE-6037 at 10/6/23 7:33 AM:
-----------------------------------------------------------
By checking the code, only these functions have been found so far.
was (Author: lemonjing):
I checked and found only these functions so far.
> The function category of ARRAY/EXTRACT_VALUE/XML_TRANSFORM/EXTRACT/EXISTSNODE
> is incorrect
> ------------------------------------------------------------------------------------------
>
> Key: CALCITE-6037
> URL: https://issues.apache.org/jira/browse/CALCITE-6037
> Project: Calcite
> Issue Type: Bug
> Components: core
> Affects Versions: 1.35.0
> Reporter: Ran Tao
> Assignee: Ran Tao
> Priority: Major
> Fix For: 1.36.0
>
>
> In SqlLibraryOperators, we defined some SqlFunctions like below:
> {code:java}
> @LibraryOperator(libraries = {SPARK})
> public static final SqlFunction ARRAY =
> SqlBasicFunction.create("ARRAY",
> SqlLibraryOperators::arrayReturnType,
> OperandTypes.SAME_VARIADIC);
> {code}
> {code:java}
> public static final SqlFunction EXTRACT_VALUE =
> SqlBasicFunction.create("EXTRACTVALUE",
> ReturnTypes.VARCHAR_2000.andThen(SqlTypeTransforms.FORCE_NULLABLE),
> OperandTypes.STRING_STRING); {code}
> {code:java}
> public static final SqlFunction XML_TRANSFORM =
> SqlBasicFunction.create("XMLTRANSFORM",
> ReturnTypes.VARCHAR.andThen(SqlTypeTransforms.FORCE_NULLABLE),
> OperandTypes.STRING_STRING); {code}
> however, they used a simplified constructor of SqlBasicFunction by set
> function category to Numeric forever.
> {code:java}
> /** Creates a {@code SqlBasicFunction}
> * with kind {@link SqlKind#OTHER_FUNCTION}
> * and category {@link SqlFunctionCategory#NUMERIC}. */
> public static SqlBasicFunction create(String name,
> SqlReturnTypeInference returnTypeInference,
> SqlOperandTypeChecker operandTypeChecker) {
> return new SqlBasicFunction(name, SqlKind.OTHER_FUNCTION,
> SqlSyntax.FUNCTION, true, returnTypeInference, null,
> OperandHandlers.DEFAULT, operandTypeChecker, 0,
> SqlFunctionCategory.NUMERIC, call -> SqlMonotonicity.NOT_MONOTONIC);
> } {code}
> We should use constructor with SqlFunctionCategory to correct their category.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)