You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flink.apache.org by "Ferenc Csaky (Jira)" <ji...@apache.org> on 2023/10/24 15:38:00 UTC

[jira] [Created] (FLINK-33353) SQL fails because "TimestampType.kind" is not serialized

Ferenc Csaky created FLINK-33353:
------------------------------------

             Summary: SQL fails because "TimestampType.kind" is not serialized 
                 Key: FLINK-33353
                 URL: https://issues.apache.org/jira/browse/FLINK-33353
             Project: Flink
          Issue Type: Bug
          Components: Table SQL / API
    Affects Versions: 1.18.0
            Reporter: Ferenc Csaky


We have a custom persistent catalog store, which stores tables, views etc. in a DB. In our application, it is required to utilize the serialized formats of entities, but the same applies to the Hive, as it functions as a persistent catalog.

Take the following example SQL:

{code:sql}
CREATE TABLE IF NOT EXISTS `txn_gen` (
  `txn_id` INT,
  `amount` INT,
  `ts` TIMESTAMP(3),
   WATERMARK FOR `ts` AS `ts` - INTERVAL '1' SECOND
) WITH (
  'connector' = 'datagen',
  'fields.txn_id.min' = '1',
  'fields.txn_id.max' = '5',
  'rows-per-second' = '1'
);

CREATE VIEW IF NOT EXISTS aggr_ten_sec AS
  SELECT txn_id,
         TUMBLE_ROWTIME(`ts`, INTERVAL '10' SECOND) AS w_row_time,
         COUNT(txn_id) AS txn_count
    FROM txn_gen
    GROUP BY txn_id, TUMBLE(`ts`, INTERVAL '10' SECOND);

SELECT txn_id,
       SUM(txn_count),
       TUMBLE_START(w_row_time, INTERVAL '20' SECOND) AS total_txn_count
  FROM aggr_ten_sec
  GROUP BY txn_id, TUMBLE(w_row_time, INTERVAL '20' SECOND);
{code}

This will work without any problems when we simply execute it in a {{TableEnvironment}}, but it fails with the below error when we try to execute the query based on the serialized table metadata.
{code}
org.apache.flink.table.api.TableException: Window aggregate can only be defined over a time attribute column, but TIMESTAMP(3) encountered.
{code}

If there is a view which would require to use ROWTIME, it will be lost and we cannot recreate the same query from the serialized entites.

Currently in {{TimestampType}} the "kind" field is deliberatly annotated as {{@Internal}} and is not serialized, although it breaks this functionality.




--
This message was sent by Atlassian Jira
(v8.20.10#820010)