Hi Timo, My intention is to fully drop concepts such as SqlGroupedWindowFunction and auxiliary group functions, which include relevant code in parser/syntax, operator, planner, etc.
Since you mentioned the need for more time to migrate. How many Calcite releases that you think can probably leave enough buffer time? (Calcite schedules 4 releases a year. So say 2 releases will give 6 months) -Rui On Fri, Apr 24, 2020 at 1:50 AM Timo Walther <twal...@apache.org> wrote: > Hi everyone, > > so far Apache Flink depends on this feature. We are fine with improving > the SQL compliance and eventually dropping GROUP BY TUMBLE/HOP/SESSION > in the future. However, we would like to give our users some time to > migrate their existing pipelines. > > What does dropping mean for Calcite? Will users of Calcite be able to > still support this syntax? In particular, are you intending to also drop > concepts such as SqlGroupedWindowFunction and auxiliary group functions? > Or are you intending to just remove entries from Calcite's default > operator table? > > Regards, > Timo > > > On 24.04.20 10:30, Julian Hyde wrote: > > +1 > > > > Let’s remove TUMBLE etc from the GROUP BY clause. Since this is a SQL > change, not an API change, I don’t we need to give notice. Let’s just do it. > > > > Julian > > > >> On Apr 22, 2020, at 4:05 PM, Rui Wang <amaliu...@apache.org> wrote: > >> > >> Made a mistake on the example above, and update it as follows: > >> > >> // Table function windowing syntax. > >> SELECT > >> product_id, count(*), window_start > >> FROM TABLE(TUMBLE(order, DESCRIPTOR(rowtime), INTERVAL '1' hour)) > >> GROUP BY product_id, window_start > >> > >>> On Wed, Apr 22, 2020 at 2:31 PM Rui Wang <amaliu...@apache.org> wrote: > >>> > >>> Hi community, > >>> > >>> I want to kick off a discussion about deprecating grouped window > functions > >>> (GROUP BY TUMBLE/HOP/SESSION) as the table function windowing support > >>> becomes a thing [1] (FROM TABLE(TUMBLE/HOP/SESSION)). The current > stage of > >>> table function windowing is TUMBLE support is checked in. HOP and > SESSION > >>> support is likely to be merged in 1.23.0. > >>> > >>> A briefly example of two different windowing syntax: > >>> > >>> // Grouped window functions. > >>> SELECT > >>> product_id, count(*), TUMBLE_START() as window_start > >>> FROM order > >>> GROUP BY product_id, TUMBLE(rowtime, INTERVAL '1' hour); // an hour > long > >>> fixed window size. > >>> > >>> // Table function windowing syntax. > >>> SELECT > >>> product_id, count(*), window_start > >>> FROM TABLE(TUMBLE(order, DESCRIPTOR(.rowtime), INTERVAL '1' hour) > >>> GROUP BY product_id > >>> > >>> I am giving a short, selective comparison as the following: > >>> > >>> The places that table function windowing behaves better > >>> 1) no GROUPING/GROUP BY enforced. It becomes a problem in streaming > JOIN. > >>> For example, one use case is for each hour, apply a JOIN on two > streams. In > >>> this case, no GROUP BY is needed. > >>> 2) grouped window functions allow multiple calls in GROUP BY. For > example, > >>> from SQL syntax perspective, GROUP BY TUMBLE(...), HOP(...), > SESSION(...) > >>> is not wrong, but it is an illegal query. > >>> 3) Calcite includes an Enumerable implementation of table function > >>> windowing, while grouped window functions do not have that. > >>> > >>> > >>> The places that table function windowing behaves worse > >>> 1) table function windowing adds "window_start", "window_end" into > table > >>> directly, which increases the volume of data (number of rows * > >>> sizeof(timestamp) * 2). > >>> > >>> > >>> I want to focus on discussing two questions in this thread: > >>> 1) Do people support deprecating grouped window functions? > >>> 2) By which version people prefer to make grouped window functions > >>> completely removed?(if 1) is yes). > >>> > >>> > >>> > >>> [1]: https://jira.apache.org/jira/browse/CALCITE-3271 > >>> > >>> > >>> -Rui > >>> > >