JING ZHANG created FLINK-24168:
----------------------------------
Summary: Rowtime type is not correct for windowTableFunction or
OverAggregate on Match because the output type does not updated after input
rowtime attribute changed from rowtime to rowtime_ltz
Key: FLINK-24168
URL: https://issues.apache.org/jira/browse/FLINK-24168
Project: Flink
Issue Type: Bug
Components: Table SQL / Planner
Affects Versions: 1.14.0
Reporter: JING ZHANG
Rowtime type is not correct for windowTableFunction or OverAggregate on Match
because the output type does not updated after input rowtime attribute changed
from rowtime to rowtime_ltz in `RelTimeIndicator`.
The bug could be reproduced by the following two cases:
{code:java}
@Test
def testWindowTVFOnMatchRecognizeOnRowtimeLTZ(): Unit = {
val sqlQuery =
s"""
|SELECT
| *
|FROM Ticker
|MATCH_RECOGNIZE (
| PARTITION BY symbol
| ORDER BY ts_ltz
| MEASURES
| A.price as price,
| A.tax as tax,
| MATCH_ROWTIME() as matchRowtime
| ONE ROW PER MATCH
| PATTERN (A)
| DEFINE
| A AS A.price > 0
|) AS T
|""".stripMargin
val table = util.tableEnv.sqlQuery(sqlQuery)
util.tableEnv.registerTable("T", table)
val sqlQuery1 =
s"""
|SELECT *
|FROM TABLE(TUMBLE(TABLE T, DESCRIPTOR(matchRowtime), INTERVAL '3'
second))
|""".stripMargin
util.verifyRelPlanWithType(sqlQuery1)
}
@Test
def testOverWindowOnMatchRecognizeOnRowtimeLTZ(): Unit = {
val sqlQuery =
s"""
|SELECT
| *
|FROM Ticker
|MATCH_RECOGNIZE (
| PARTITION BY symbol
| ORDER BY ts_ltz
| MEASURES
| A.price as price,
| A.tax as tax,
| MATCH_ROWTIME() as matchRowtime
| ONE ROW PER MATCH
| PATTERN (A)
| DEFINE
| A AS A.price > 0
|) AS T
|""".stripMargin
val table = util.tableEnv.sqlQuery(sqlQuery)
util.tableEnv.registerTable("T", table)
val sqlQuery1 =
"""
|SELECT
| symbol,
| price,
| tax,
| matchRowtime,
| SUM(price) OVER (
| PARTITION BY symbol ORDER BY matchRowtime RANGE UNBOUNDED PRECEDING)
as price_sum
|FROM T
""".stripMargin
util.verifyRelPlanWithType(sqlQuery1)
}
{code}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)