+1 for expanding the scope of #2, a SQL test framework(Should not be too heavy but clear) and guidelines for developers.
Best, Jingsong On Thu, Jul 2, 2020 at 12:30 PM Kurt Young <ykt...@gmail.com> wrote: > Thanks Jingsong for bringing this up discussion and sorry for the late > reply. > > I'm in general +1 for #1, and want to expand the scope of #2. > > First of all, I think the approach Jingsong proposed in #2 can help with > covering more > e2e use cases of SQL, which also draws a clean line between how to design > IT cases for > table API and SQL. > > This is a good intent to have, but what I want to point out is it's still > not sufficient yet. I think > the ultimate problem we are facing is *designing a testing principle for > table & SQL*. I will > share some of my observations and issues I've seen: > > 1. The lack of SQL client's functionality is definitely the first victim of > this issue. During our > development, I don't know how many developers will take SQL client into > consideration when > they introduce new features, especially which need to be exposed through > SQL client. > > 2. We have a very fuzzy boundary of what kind of tests should be written in > table API or in SQL. > So we end up with two testing packages called "sql" and "table" for the > same testing purpose, with > *random tests created in each package*. > > 3. We don't have a guideline for developers, especially for new > contributors, about how many tests > they should write and where to put. For example, when we improve the data > type support, say we > start to support higher precision of Timestamp, we don't have a clue how > many tests we should provide. > Should we add some tests for the code generation part? should we add some > tests for the integration test? > Or is it already enough to test it with simple expression tests? We don't > have a clean answer for it. > As a result, we will be busy fixing bugs around new features we introduced, > even if the bug itself looks > very simple which *will surprise our users by the bad quality of Flink SQL > engine*. > > So I think what we really need here (which is also very urgent IMO) is > *designing > some testing principles* > *for table API & SQL*. Writing SQL's IT case through sql client might be > one of them. If we can keep > improving the testing principles we have, I believe we will have a much > more reliable SQL engine in the > future, which can attract more users to the Flink community. > > Best, > Kurt > > > On Thu, Jun 18, 2020 at 5:14 PM Jark Wu <imj...@gmail.com> wrote: > > > +1 for #1 > > I think this is what we are currently doing, that forward SQL statements > to > > TableEnv#executeSql, e.g. FLINK-17113, FLINK-18059. > > But IMO the SQL CLI specific statements (EXIT, QUIT) should still stay > only > > in SQL CLI. > > > > Another idea is that, the reviewer/committer should check tests are both > > added for SQL CLI and TableEnv if it is a new statement. > > > > Best, > > Jark > > > > On Thu, 18 Jun 2020 at 15:40, Rui Li <lirui.fu...@gmail.com> wrote: > > > > > Thanks Jingsong for bringing up the discussion. Perhaps we can do both > #1 > > > and #2? I like the idea that SQL Client should just forward SQL > > statements > > > to TableEnvironment. IIUC, with TableEnvironment::executeSql in place, > > most > > > statements can be forwarded. Only a very limited set of statements need > > to > > > be handled by SQL Client, like SET and EXIT. > > > > > > On Thu, Jun 18, 2020 at 3:19 PM Jingsong Li <jingsongl...@gmail.com> > > > wrote: > > > > > > > Hi all, > > > > > > > > I'd like to start a discussion for the new features lacking support > of > > > > Sql-client. > > > > > > > > I've seen the new DDL syntax that SQL client lacks support for many > > > times. > > > > For every new DDL syntax, we need to add support in sql-client. Add > > > > a corresponding SqlCommand in sql-client, otherwise this DDL is still > > > > not working in sql-client. > > > > > > > > But it looks like developers always forgot to add support in > > sql-client. > > > > Lots of DDL features just be added in parser and planner, but lack > > > > sql-client support, so users will wait for the next release. Just > like: > > > > https://issues.apache.org/jira/browse/FLINK-7151 > > > > https://issues.apache.org/jira/browse/FLINK-17198 > > > > https://issues.apache.org/jira/browse/FLINK-15468 > > > > https://issues.apache.org/jira/browse/FLINK-15175 > > > > > > > > How to solve this? > > > > I think we have two options: > > > > > > > > 1. Unify the parser in sql-client and TableEnvironment truly. Really > > make > > > > sql-client have all abilities from TableEnvironment. sql-client just > > > > forward sql to TableEnvironment. Can it be? > > > > 2. A new testing framework mechanism: We can make sql-related tests > > more > > > > "up front", we can move e2e tests (I think we are doing now) and it > > cases > > > > to sql-client oriented. This may require a new testing framework > > > mechanism, > > > > for example, we can do something like hive sql testing [1] to > > > > sql-client oriented. In this way, the testing can cover more > horizontal > > > and > > > > vertical and it is easy to migrate tests from other systems too. And > I > > > > think, Flink's DDLs are enough stronger to support pure SQLs testing. > > > > > > > > What do you think? > > > > > > > > [1]https://github.com/apache/hive/tree/master/ql/src/test/queries > > > > > > > > Best, > > > > Jingsong > > > > > > > > > > > > > -- > > > Best regards! > > > Rui Li > > > > > > -- Best, Jingsong Lee