Hi Timo, After carefully read FLIP-91 (SQL Client Gateway), I have found that it still focuses on ad-hoc (or realtime) queries of batch data, which is quite different from the streaming case.
Here I suppose if we could combine some features in FLIP-84 (generic all-purpose executeStatement() ) with JDBC compliant SQL Gateway (FLIP-91), to make submitting online streaming SQL jobs feasible. Just an immature thought, and would like to know if the community plans to do so in the foreseeable future : ) Best, Weike On Mon, Mar 9, 2020 at 6:07 PM Timo Walther <twal...@apache.org> wrote: > Hi Weike, > > thanks for your feedback. Your use case is definitely on our agenda. The > redesign of big parts of the API is still in progress. In the mid-term, > most of the SQL Client commands should be present in the SQL API as well > such that platform teams can built their custom logic (like REST APIs > etc.) around it. > > For pure SQL users, there are discussions of making the SQL Client > richer in the future see: > > > https://cwiki.apache.org/confluence/display/FLINK/FLIP-91%3A+Support+SQL+Client+Gateway > > Regards, > Timo > > > On 09.03.20 08:15, DONG, Weike wrote: > > Hi Tison and all, > > > > Thanks for the timely response, and I have carefully examined the > > aforementioned FLIP-84. As I see it, executeStatement() is kind of akin > to > > our original design of sql() method, but with more detailed > considerations > > included. > > > > However, it does not cover SET statement to tune TableConfig, and the > > differences among all those Environments (TableEnvironment, > > StreamTableEnvironment, ExecutionEnvironment, StreamExecutionEnvironment, > > etc.) might still confuse users, especially about the effects of > execute() > > / executeStatements() methods when old APIs are not yet completely > removed, > > which poses as a heavy burden for newcomers and hinders user-adoption > > process. > > > > Therefore I believe that the table API needs a further cohesive re-design > > by improving FLIP-84, or provide a purely SQL interface which removes the > > burden of learning all those complex concepts (run Flink streaming or > batch > > programs from SQL files). > > > > Hope to hear any suggestions or questions, thanks : ) > > > > Sincerely, > > Weike > > > > On Mon, Mar 9, 2020 at 1:23 PM tison <wander4...@gmail.com> wrote: > > > >> Hi Weike, > >> > >> Thanks for kicking off this discussion! I cannot agree more on the > proposal > >> for > >> a universal sql() method. It confuses & annoys our users a lot to > >> distinguish > >> sqlUpdate/sqlQuery and even insertInto and so on. > >> > >> IIRC there is an ongoing FLIP[1] dealing with the problem. You can > checkout > >> to > >> see if it fits into your requirements. > >> > >> Besides, for enabling SET in sql statement, I agree that it helps on > >> consistent user > >> experience using *just* SQL to describe their Flink job. Looking > forward to > >> maintainers' > >> idea on the possibility & plan. > >> > >> Best, > >> tison. > >> > >> [1] > >> > https://cwiki.apache.org/confluence/pages/viewpage.action?pageId=134745878 > >> > >> > >> DONG, Weike <kyled...@connect.hku.hk> 于2020年3月9日周一 下午12:46写道: > >> > >>> Hi dev, > >>> > >>> Recently we have tested the brand-new SQLClient and Flink SQL module, > and > >>> we are amazed at this simple way of programming for streaming data > >>> analysis. However, as far as I know, the SET command is only available > in > >>> the SQL Client, but not in SQL API. > >>> > >>> Although we understand that developers could simply set TableConfig via > >>> tEnv > >>> .getConfig().getConfiguration() API, however, we hope that there could > be > >>> an API like sqlSet() or something like that, to allow for setting table > >>> configurations within SQL statements themselves, which paves the way > for > >> a > >>> unified interface for users to write a Flink SQL job, without the need > of > >>> writing any Java or Scala code in a production environment. > >>> > >>> Moreover, it could be much better if there could be an API that > >>> automatically detect the type of SQL statement and choose the write > logic > >>> to execute, instead of manually choosing sqlUpdate or sqlQuery, i.e. > >>> > >>> sql("CREATE TABLE abc ( a VARCHAR(10), b BIGINT ) WITH ( 'xxx' = 'yyy' > >> )"); > >>> sql("SET table.exec.mini-batch.enabled = 'true'"); > >>> sql("INSERT INTO sink SELECT * FROM abc"); > >>> > >>> then, users could simply write their SQL code within .sql files and > Flink > >>> could read them line by line and call sql() method to parse the code, > and > >>> eventually submit to the ExecutionEnvironment and run the program in > the > >>> cluster, which is different from current SQL client whose interactive > way > >>> of programming is not well suited for production usage. > >>> > >>> We would like to know if these proposals contradicts with the current > >> plan > >>> of the community, or if any other issues that should be addressed > before > >>> implementing such features. > >>> > >>> Thanks, > >>> Weike > >>> > >> > > > >