Hi Patrick,

thanks for reaching out to us and investigating the problem. Could you open an issue in the Calcite project? I think it would be nice to solve it on both the Calcite and Flink side.

Thanks,
Timo


On 18.02.21 06:02, Patrick Angeles wrote:
NVM. Found the actual source on Calcite trunk. Looks like interval type (and a few others) are not yet supported.

https://github.com/apache/calcite/blob/master/core/src/main/java/org/apache/calcite/sql/type/SqlTypeUtil.java <https://github.com/apache/calcite/blob/master/core/src/main/java/org/apache/calcite/sql/type/SqlTypeUtil.java>



On Wed, Feb 17, 2021 at 8:11 PM Patrick Angeles <patrickange...@gmail.com <mailto:patrickange...@gmail.com>> wrote:

    For some reason I can't get view the source so I don't have exact
    line numbers, but IntelliJ was kind enough to decompile this part
    (SqlTypeUtil.class) for me. This appears to be the exception I'm
    hitting.

        if (!isAtomic(type) && !isNull(type)) {
             if (isCollection(type)) {
                 typeNameSpec = new
        
SqlCollectionTypeNameSpec(convertTypeToSpec(type.getComponentType()).getTypeNameSpec(),
        typeName, SqlParserPos.ZERO);
             } else {
                 if (!isRow(type)) {
                     throw new
        UnsupportedOperationException("Unsupported type when
        convertTypeToSpec: " + typeName);
                 }


    It got there because isAtomic returns false for interval types:

        public static boolean isAtomic(RelDataType type) {
             SqlTypeName typeName = type.getSqlTypeName();
             if (typeName == null) {
                 return false;
             } else {
                 return isDatetime(type) || isNumeric(type) ||
        isString(type) || isBoolean(type);
             }
        }


    Seems like a bug?

    On Wed, Feb 17, 2021 at 5:55 PM Patrick Angeles
    <patrickange...@gmail.com <mailto:patrickange...@gmail.com>> wrote:

        Wondering if anyone has seen this before, and has any
        suggestions. I have a UDTF with the following signature:

            public void eval(LocalDateTime startTime, LocalDateTime
            endTime, Duration step) {


        According to the docs, this should be mapped from the following
        SQL snippet:

            ... LATERAL TABLE func(t1, t2, INTERVAL '5' MINUTES)


        However, when I run a query in sql-client I get:

            Caused by: java.lang.UnsupportedOperationException:
            Unsupported type when convertTypeToSpec: INTERVAL_DAY_SECOND
                     at
            
org.apache.calcite.sql.type.SqlTypeUtil.convertTypeToSpec(SqlTypeUtil.java:1059)
            ~[flink-table-blink_2.11-1.12.0.jar:1.12.0]
                     at
            
org.apache.calcite.sql.type.SqlTypeUtil.convertTypeToSpec(SqlTypeUtil.java:1081)
            ~[flink-table-blink_2.11-1.12.0.jar:1.12.0]
                     at
            
org.apache.flink.table.planner.functions.inference.TypeInferenceOperandChecker.castTo(TypeInferenceOperandChecker.java:165)
            ~[flink-table-blink_2.11-1.12.0.jar:1.12.0]


        I tried all sorts of DataTypeHints (including bridgedTo
        specification) to no avail. Any pointers?

        Thanks in advance.

        - P


Reply via email to