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)