Hi, all

how to solve this problem?




my code:
String sql = "select UNIX_TIMESTAMP(concat(substr('2021-07-27 
12:12:12',0,11),'09:00:00'))";

SqlOperatorTable opTab =
       
 SqlLibraryOperatorTableFactory.INSTANCE.getOperatorTable(EnumSet.of(
                SqlLibrary.HIVE, 
SqlLibrary.SPARK, SqlLibrary.BIG_QUERY, SqlLibrary.ORACLE, SqlLibrary.MYSQL, 
SqlLibrary.STANDARD));
SchemaPlus rootSchema = Frameworks.createRootSchema(true);

FrameworkConfig frameworkConfig = Frameworks.newConfigBuilder()
        .defaultSchema(rootSchema)
        .operatorTable(opTab)
        .build();

Planner planner = Frameworks.getPlanner(frameworkConfig);
SqlNode sqlNode = planner.parse(sql);
SqlNode validateSqlNode = planner.validate(sqlNode);



throw exception:

Exception in thread "main" org.apache.calcite.tools.ValidationException: 
java.lang.ClassCastException: 
org.apache.calcite.sql.type.FamilyOperandTypeChecker cannot be cast to 
org.apache.calcite.sql.type.SqlOperandMetadata

        at org.apache.calcite.prepare.PlannerImpl.validate(PlannerImpl.java:228)

Caused by: java.lang.ClassCastException: 
org.apache.calcite.sql.type.FamilyOperandTypeChecker cannot be cast to 
org.apache.calcite.sql.type.SqlOperandMetadata

        at 
org.apache.calcite.sql.validate.implicit.TypeCoercionImpl.userDefinedFunctionCoercion(TypeCoercionImpl.java:589)

        at org.apache.calcite.sql.SqlFunction.deriveType(SqlFunction.java:303)

        at org.apache.calcite.sql.SqlFunction.deriveType(SqlFunction.java:231)

Reply via email to