>From my point of view, I also prefer "sql-client.dml-sync",
because the behavior of this configuration is very clear.
Even if we introduce a new config in the future, e.g. `table.dml-sync`,
we can also deprecate the sql-client one.

Introducing a "table."  configuration without any implementation
will confuse users a lot, as they expect it should take effect on
the Table API.

If we want to introduce an unified "table.dml-sync" option, I prefer
it should be implemented on Table API and affect all the DMLs on
Table API (`tEnv.executeSql`, `Table.executeInsert`, `StatementSet`),
as I have mentioned before [1].

> It would be very straightforward that it affects all the DMLs on SQL CLI
and
TableEnvironment (including `executeSql`, `StatementSet`,
`Table#executeInsert`, etc.).
This can also make SQL CLI easy to support this configuration by passing
through to the TableEnv.

Best,
Jark


[1]:
http://apache-flink-mailing-list-archive.1008284.n3.nabble.com/DISCUSS-FLIP-163-SQL-Client-Improvements-tp48354p48665.html


On Wed, 24 Feb 2021 at 10:39, Kurt Young <ykt...@gmail.com> wrote:

> If we all agree the option should only be handled by sql client, then why
> don't we
> just call it `sql-client.dml-sync`? As you said, calling it
> `table.dml-sync` but has no
> affection in `TableEnv.executeSql("INSERT INTO")` will also cause a big
> confusion for
> users.
>
> The only concern I saw is if we introduce
> "TableEnvironment.executeMultiSql()" in the
> future, how do we control the synchronization between statements? TBH I
> don't really
> see a strong requirement for such interfaces. Right now, we have a pretty
> clear semantic
> of `TableEnv.executeSql`, and it's very convenient for users if they want
> to execute multiple
> sql statements. They can simulate either synced or async execution with
> this building block.
>
> This will introduce slight overhead for users, but compared to the
> confusion we might
> cause if we introduce such a method of our own, I think it's better to wait
> for some more
> feedback.
>
> Best,
> Kurt
>
>
> On Tue, Feb 23, 2021 at 9:45 PM Timo Walther <twal...@apache.org> wrote:
>
> > Hi Kurt,
> >
> > we can also shorten it to `table.dml-sync` if that would help. Then it
> > would confuse users that do a regular `.executeSql("INSERT INTO")` in a
> > notebook session.
> >
> > In any case users will need to learn the semantics of this option.
> > `table.multi-dml-sync` should be described as "If a you are in a multi
> > statement environment, execute DMLs synchrounous.". I don't have a
> > strong opinion on shortening it to `table.dml-sync`.
> >
> > Just to clarify the implementation: The option should be handled by the
> > SQL Client only, but the name can be shared accross platforms.
> >
> > Regards,
> > Timo
> >
> >
> > On 23.02.21 09:54, Kurt Young wrote:
> > > Sorry for the late reply, but I'm confused by `table.multi-dml-sync`.
> > >
> > > IIUC this config will take effect with 2 use cases:
> > > 1. SQL client, either interactive mode or executing multiple statements
> > via
> > > -f. In most cases,
> > > there will be only one INSERT INTO statement but we are controlling the
> > > sync/async behavior
> > > with "*multi-dml*-sync". I think this will confuse a lot of users.
> > Besides,
> > >
> > > 2. TableEnvironment#executeMultiSql(), but this is future work, we are
> > also
> > > not sure if we will
> > > really introduce this in the future.
> > >
> > > I would prefer to introduce this option for only sql client. For
> > platforms
> > > Timo mentioned which
> > > need to control such behavior, I think it's easy and flexible to
> > introduce
> > > one on their own.
> > >
> > > Best,
> > > Kurt
> > >
> > >
> > > On Sat, Feb 20, 2021 at 10:23 AM Shengkai Fang <fskm...@gmail.com>
> > wrote:
> > >
> > >> Hi everyone.
> > >>
> > >> Sorry for the late response.
> > >>
> > >> For `execution.runtime-mode`, I think it's much better than
> > >> `table.execution.mode`. Thanks for Timo's suggestions!
> > >>
> > >> For `SHOW CREATE TABLE`, I'm +1 with Jark's comments. We should
> clarify
> > the
> > >> usage of the SHOW CREATE TABLE statements. It should be allowed to
> > specify
> > >> the table that is fully qualified and only works for the table that is
> > >> created by the sql statements.
> > >>
> > >> I have updated the FLIP with suggestions. It seems we have reached a
> > >> consensus, I'd like to start a formal vote for the FLIP.
> > >>
> > >> Please vote +1 to approve the FLIP, or -1 with a comment.
> > >>
> > >> Best,
> > >> Shengkai
> > >>
> > >> Jark Wu <imj...@gmail.com> 于2021年2月15日周一 下午10:50写道:
> > >>
> > >>> Hi Ingo,
> > >>>
> > >>> 1) I think you are right, the table path should be fully-qualified.
> > >>>
> > >>> 2) I think this is also a good point. The SHOW CREATE TABLE
> > >>> only aims to print DDL for the tables registered using SQL CREATE
> TABLE
> > >>> DDL.
> > >>> If a table is registered using Table API,  e.g.
> > >>> `StreamTableEnvironment#createTemporaryView(String, DataStream)`,
> > >>> currently it's not possible to print DDL for such tables.
> > >>> I think we should point it out in the FLIP.
> > >>>
> > >>> Best,
> > >>> Jark
> > >>>
> > >>>
> > >>>
> > >>> On Mon, 15 Feb 2021 at 21:33, Ingo Bürk <i...@ververica.com> wrote:
> > >>>
> > >>>> Hi all,
> > >>>>
> > >>>> I have a couple questions about the SHOW CREATE TABLE statement.
> > >>>>
> > >>>> 1) Contrary to the example in the FLIP I think the returned DDL
> should
> > >>>> always have the table identifier fully-qualified. Otherwise the DDL
> > >>> depends
> > >>>> on the current context (catalog/database), which could be
> surprising,
> > >>>> especially since "the same" table can behave differently if created
> in
> > >>>> different catalogs.
> > >>>> 2) How should this handle tables which cannot be fully characterized
> > by
> > >>>> properties only? I don't know if there's an example for this yet,
> but
> > >>>> hypothetically this is not currently a requirement, right? This
> isn't
> > >> as
> > >>>> much of a problem if this syntax is SQL-client-specific, but if it's
> > >>>> general Flink SQL syntax we should consider this (one way or
> another).
> > >>>>
> > >>>>
> > >>>> Regards
> > >>>> Ingo
> > >>>>
> > >>>> On Fri, Feb 12, 2021 at 3:53 PM Timo Walther <twal...@apache.org>
> > >> wrote:
> > >>>>
> > >>>>> Hi Shengkai,
> > >>>>>
> > >>>>> thanks for updating the FLIP.
> > >>>>>
> > >>>>> I have one last comment for the option `table.execution.mode`.
> Should
> > >>> we
> > >>>>> already use the global Flink option `execution.runtime-mode`
> instead?
> > >>>>>
> > >>>>> We are using Flink's options where possible (e.g. `pipeline.name`
> > >> and
> > >>>>> `parallism.default`) why not also for batch/streaming mode?
> > >>>>>
> > >>>>> The description of the option matches to the Blink planner
> behavior:
> > >>>>>
> > >>>>> ```
> > >>>>> Among other things, this controls task scheduling, network shuffle
> > >>>>> behavior, and time semantics.
> > >>>>> ```
> > >>>>>
> > >>>>> Regards,
> > >>>>> Timo
> > >>>>>
> > >>>>> On 10.02.21 06:30, Shengkai Fang wrote:
> > >>>>>> Hi, guys.
> > >>>>>>
> > >>>>>> I have updated the FLIP.  It seems we have reached agreement.
> Maybe
> > >>> we
> > >>>>> can
> > >>>>>> start the vote soon. If anyone has other questions, please leave
> > >> your
> > >>>>>> comments.
> > >>>>>>
> > >>>>>> Best,
> > >>>>>> Shengkai
> > >>>>>>
> > >>>>>> Rui Li <lirui.fu...@gmail.com>于2021年2月9日 周二下午7:52写道:
> > >>>>>>
> > >>>>>>> Hi guys,
> > >>>>>>>
> > >>>>>>> The conclusion sounds good to me.
> > >>>>>>>
> > >>>>>>> On Tue, Feb 9, 2021 at 5:39 PM Shengkai Fang <fskm...@gmail.com>
> > >>>> wrote:
> > >>>>>>>
> > >>>>>>>> Hi, Timo, Jark.
> > >>>>>>>>
> > >>>>>>>> I am fine with the new option name.
> > >>>>>>>>
> > >>>>>>>> Best,
> > >>>>>>>> Shengkai
> > >>>>>>>>
> > >>>>>>>> Timo Walther <twal...@apache.org>于2021年2月9日 周二下午5:35写道:
> > >>>>>>>>
> > >>>>>>>>> Yes, `TableEnvironment#executeMultiSql()` can be future work.
> > >>>>>>>>>
> > >>>>>>>>> @Rui, Shengkai: Are you also fine with this conclusion?
> > >>>>>>>>>
> > >>>>>>>>> Thanks,
> > >>>>>>>>> Timo
> > >>>>>>>>>
> > >>>>>>>>> On 09.02.21 10:14, Jark Wu wrote:
> > >>>>>>>>>> I'm fine with `table.multi-dml-sync`.
> > >>>>>>>>>>
> > >>>>>>>>>> My previous concern about "multi" is that DML in CLI looks
> like
> > >>>>>>> single
> > >>>>>>>>>> statement.
> > >>>>>>>>>> But we can treat CLI as a multi-line accepting statements from
> > >>>>>>> opening
> > >>>>>>>> to
> > >>>>>>>>>> closing.
> > >>>>>>>>>> Thus, I'm fine with `table.multi-dml-sync`.
> > >>>>>>>>>>
> > >>>>>>>>>> So the conclusion is `table.multi-dml-sync` (false by
> default),
> > >>> and
> > >>>>>>> we
> > >>>>>>>>> will
> > >>>>>>>>>> support this config
> > >>>>>>>>>> in SQL CLI first, will support it in
> > >>>>>>> TableEnvironment#executeMultiSql()
> > >>>>>>>>> in
> > >>>>>>>>>> the future, right?
> > >>>>>>>>>>
> > >>>>>>>>>> Best,
> > >>>>>>>>>> Jark
> > >>>>>>>>>>
> > >>>>>>>>>> On Tue, 9 Feb 2021 at 16:37, Timo Walther <twal...@apache.org
> >
> > >>>>>>> wrote:
> > >>>>>>>>>>
> > >>>>>>>>>>> Hi everyone,
> > >>>>>>>>>>>
> > >>>>>>>>>>> I understand Rui's concerns. `table.dml-sync` should not
> apply
> > >>> to
> > >>>>>>>>>>> regular `executeSql`. Actually, this option makes only sense
> > >>> when
> > >>>>>>>>>>> executing multi statements. Once we have a
> > >>>>>>>>>>> `TableEnvironment.executeMultiSql()` this config could be
> > >>>>>>> considered.
> > >>>>>>>>>>>
> > >>>>>>>>>>> Maybe we can find a better generic name? Other platforms will
> > >>> also
> > >>>>>>>> need
> > >>>>>>>>>>> to have this config option, which is why I would like to
> > >> avoid a
> > >>>> SQL
> > >>>>>>>>>>> Client specific option. Otherwise every platform has to come
> > >> up
> > >>>> with
> > >>>>>>>>>>> this important config option separately.
> > >>>>>>>>>>>
> > >>>>>>>>>>> Maybe `table.multi-dml-sync` `table.multi-stmt-sync`? Or
> other
> > >>>>>>>> opinions?
> > >>>>>>>>>>>
> > >>>>>>>>>>> Regards,
> > >>>>>>>>>>> Timo
> > >>>>>>>>>>>
> > >>>>>>>>>>> On 09.02.21 08:50, Shengkai Fang wrote:
> > >>>>>>>>>>>> Hi, all.
> > >>>>>>>>>>>>
> > >>>>>>>>>>>> I think it may cause user confused. The main problem is  we
> > >>> have
> > >>>> no
> > >>>>>>>>> means
> > >>>>>>>>>>>> to detect the conflict configuration, e.g. users set the
> > >> option
> > >>>>>>> true
> > >>>>>>>>> and
> > >>>>>>>>>>>> use `TableResult#await` together.
> > >>>>>>>>>>>>
> > >>>>>>>>>>>> Best,
> > >>>>>>>>>>>> Shengkai.
> > >>>>>>>>>>>>
> > >>>>>>>>>>>
> > >>>>>>>>>>>
> > >>>>>>>>>>
> > >>>>>>>>>
> > >>>>>>>>>
> > >>>>>>>>
> > >>>>>>>
> > >>>>>>>
> > >>>>>>> --
> > >>>>>>> Best regards!
> > >>>>>>> Rui Li
> > >>>>>>>
> > >>>>>>
> > >>>>>
> > >>>>>
> > >>>>
> > >>>
> > >>
> > >
> >
> >
>

Reply via email to