From 9c62f71e08e37eb20f16bd7bd08677506ef94bb9 Mon Sep 17 00:00:00 2001 From: Ran Tao Date: Fri, 6 Oct 2023 15:29:22 +0800 Subject: [PATCH] [CALCITE-6037] The function category of ARRAY/EXTRACT_VALUE/XML_TRANSFORM/EXTRACT_XML/EXISTSNODE is incorrect --- .../calcite/sql/fun/SqlLibraryOperators.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/org/apache/calcite/sql/fun/SqlLibraryOperators.java b/core/src/main/java/org/apache/calcite/sql/fun/SqlLibraryOperators.java index d58ae302d28..6352a2878ba 100644 --- a/core/src/main/java/org/apache/calcite/sql/fun/SqlLibraryOperators.java +++ b/core/src/main/java/org/apache/calcite/sql/fun/SqlLibraryOperators.java @@ -532,26 +532,30 @@ static RelDataType deriveTypeSplit(SqlOperatorBinding operatorBinding, public static final SqlFunction EXTRACT_VALUE = SqlBasicFunction.create("EXTRACTVALUE", ReturnTypes.VARCHAR_2000.andThen(SqlTypeTransforms.FORCE_NULLABLE), - OperandTypes.STRING_STRING); + OperandTypes.STRING_STRING, + SqlFunctionCategory.STRING); @LibraryOperator(libraries = {ORACLE}) public static final SqlFunction XML_TRANSFORM = SqlBasicFunction.create("XMLTRANSFORM", ReturnTypes.VARCHAR.andThen(SqlTypeTransforms.FORCE_NULLABLE), - OperandTypes.STRING_STRING); + OperandTypes.STRING_STRING, + SqlFunctionCategory.STRING); @LibraryOperator(libraries = {ORACLE}) public static final SqlFunction EXTRACT_XML = SqlBasicFunction.create("EXTRACT", ReturnTypes.VARCHAR.andThen(SqlTypeTransforms.FORCE_NULLABLE), - OperandTypes.STRING_STRING_OPTIONAL_STRING); + OperandTypes.STRING_STRING_OPTIONAL_STRING, + SqlFunctionCategory.STRING); @LibraryOperator(libraries = {ORACLE}) public static final SqlFunction EXISTS_NODE = SqlBasicFunction.create("EXISTSNODE", ReturnTypes.INTEGER_NULLABLE .andThen(SqlTypeTransforms.FORCE_NULLABLE), - OperandTypes.STRING_STRING_OPTIONAL_STRING); + OperandTypes.STRING_STRING_OPTIONAL_STRING, + SqlFunctionCategory.STRING); /** The "BOOL_AND(condition)" aggregate function, PostgreSQL and Redshift's * equivalent to {@link SqlStdOperatorTable#EVERY}. */ @@ -1075,7 +1079,8 @@ private static RelDataType arrayReturnType(SqlOperatorBinding opBinding) { public static final SqlFunction ARRAY = SqlBasicFunction.create("ARRAY", SqlLibraryOperators::arrayReturnType, - OperandTypes.SAME_VARIADIC); + OperandTypes.SAME_VARIADIC, + SqlFunctionCategory.SYSTEM); @SuppressWarnings("argument.type.incompatible") private static RelDataType arrayAppendPrependReturnType(SqlOperatorBinding opBinding) {