godfreyhe commented on issue #9433: [FLINK-13708] [table-planner-blink] transformations should be cleared after execution in blink planner URL: https://github.com/apache/flink/pull/9433#issuecomment-521495049 > I have a bit different question. Why `ExecutorBase` buffers the transformations in the first place? It violates the contract of `Executor#apply`. The assumption is that apply method will really apply the transformations to the `ExecutionEnvironment` that was provided. We do the buffering in the `TableEnvironmentImpl` already. > > The way it is implemented right now. Such program, which is a valid program will produce no results: > > ``` > StreamExecutionEnvironment senv = ... > StreamTableEnvironment tEnv = StreamTableEnvirornment.create(senv) > tEnv.sql(...) > senv.execute(); > ``` different from the implementation of `StreamExecutor` in flink planner, `Executors` in blink planner will generate `StreamGraph` first and execute the stream graph directly. `StreamExecutor` in blink planner should buffer the transformations to generate a whole `StreamGraph` (`StreamGraph` does not support merge now) if the operation translation is eager (using `StreamTableEnvirornment`). To unify the implementation for batch and stream executor, we defined a buffered transformations in `ExecutorBase`. one approach to avoid buffering transformations is `StreamExecutor` in blink planer does not generate `StreamGraph` any more, and keep the same implementation as StreamExecutor` in flink planner. and `BatchExecutor` generate `StreamGraph` in `apply` method
---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: [email protected] With regards, Apache Git Services
