You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Qingyue (Jira)" <ji...@apache.org> on 2021/01/04 12:48:01 UTC
[jira] [Commented] (FLINK-17868) Proctime in DDL can not work in
batch mode
[ https://issues.apache.org/jira/browse/FLINK-17868?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17258187#comment-17258187 ]
Qingyue commented on FLINK-17868:
---------------------------------
Hi [~jark] and [~lzljs3620320], I'm interested in this issue and want to have a try.
I came up with three possible solutions and listed the proposed and rejected alternatives and want to hear your opinions. Please correct me if I'm wrong.
h3. Proposed plan
Introduce a new rule and program to `FlinkBatchProgram` to rewrite `PROCTIME()` to `CURRENT_TIMESTAMP()` at planning phase.
h3. Alternative plans
1. Introduce `FlinkBatchProgram` to `FlinkRelTimeIndicatorProgram` (i.e. reuse `RelTimeIndicatorConveter`) and rewrite `PROCTIME ` to `PROCTIME_MATERIALIZE ` during planning phase.
* Pro: translated batch plan is same as stream plan `Calc(select=[a, c, PROCTIME_MATERIALIZE(PROCTIME()) AS EXPR$2])`.
* Con: `PROCTIME_MATERIALIZE ` is transformed to process function of`AbstractProcessStreamOperator`, which introduces `ctx.timerService()`. While `BatchExecCalc` uses `TableStreamOperator` as operator base class, it causes the generated code to fail to compile. To solve this, either modify the codegen logic to avoid using `timerService` for batch or move `ctx` from `AbstractProcessStreamOperator` to its parent `TableStreamOperator`.
2. We don't change the current plan(i.e., `Calc(select=[a, c, PROCTIME() AS EXPR$2]` remains unchanged). Instead, we modify the codegen logic at the transformation phase. We add a check on `PROCTIME` when `ExprCodeGenerator#generateCallExpression` is called, and if it's a batch transformation, we generate `currentTimestamp` directly.
* Pro: the modified scope is limited to a minimum.
* Con: It may not be proper to distinguish stream vs. batch during the transformation phase.
Thanks, Qingyue.
> Proctime in DDL can not work in batch mode
> ------------------------------------------
>
> Key: FLINK-17868
> URL: https://issues.apache.org/jira/browse/FLINK-17868
> Project: Flink
> Issue Type: Bug
> Components: Table SQL / Planner
> Reporter: Jingsong Lee
> Priority: Major
> Labels: sprint
> Fix For: 1.13.0
>
>
> The data of this proctime column will be all null. Should same to current timestamp.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)