Ingo Bürk created FLINK-23307:
---------------------------------
Summary: Rowtime attributes are not properly resolved for views
Key: FLINK-23307
URL: https://issues.apache.org/jira/browse/FLINK-23307
Project: Flink
Issue Type: Bug
Components: Table SQL / Planner
Affects Versions: 1.13.1
Reporter: Ingo Bürk
If a view is contains a rowtime attribute from an underlying table and is then
used in a temporal join, an error is thrown
{quote}Temporal table join currently only supports 'FOR SYSTEM_TIME AS OF' left
table's time attribute field
{quote}
This does not happen with the generic in-memory catalog, because it copies the
schema as-is. However, if a catalog implementation is used which persists the
schema without the rowtime information (which is correct, since this is defined
by the underlying table and not the view itself), the catalog can only return
said schema for a view. This then causes this issue during planning.
Specifically, this happens in SqlCatalogViewTable#convertToRel. After the call
to context#expandView, the rowtime attribute is correctly present, but the
inserted cast from RelOptUtil#createCastRel throws this information away.
The following SQL reproduces the issue. Again, please note that this does NOT
work with the default in-memory catalog:
{code:java}
CREATE TABLE A (
id INT,
ts TIMESTAMP(3),
WATERMARK FOR ts AS ts,
PRIMARY KEY (id) NOT ENFORCED
) WITH (
'connector' = 'datagen'
);
CREATE VIEW B AS SELECT * FROM A;
SELECT * FROM B JOIN A FOR SYSTEM_TIME AS OF B.ts ON B.id = A.id;
{code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)