Hi Julian, Thanks for your feedback, the suggestion is very helpful. I've added the discussion content the CALCITE-4337 <https://issues.apache.org/jira/browse/CALCITE-4337> [1]. I would continue later discussion in the JIRA case. About an example of a query before and after the syntax change. I would use the example in session table function document <https://calcite.apache.org/docs/reference.html#session> [2]. Old syntax demo:
> SELECT * FROM TABLE( SESSION( TABLE orders, DESCRIPTOR(rowtime), > DESCRIPTOR(product), INTERVAL '20' MINUTE)); -- or with the named params -- > note: the DATA param must be the first SELECT * FROM TABLE( SESSION( DATA > => TABLE orders, TIMECOL => DESCRIPTOR(rowtime), KEY => DESCRIPTOR(product > ), SIZE => INTERVAL '20' MINUTE)); New syntax demo is as follows, the difference is use PARTITION BY clause to replace KEY DESCRIPTOR. > SELECT * FROM TABLE( SESSION( TABLE orders PARTITION BY product, > DESCRIPTOR(rowtime), INTERVAL '20' MINUTE)); -- or with the named params -- > note: the DATA param must be the first SELECT * FROM TABLE( SESSION( DATA > => TABLE orders PARTITION BY product, TIMECOL => DESCRIPTOR(rowtime), SIZE > => INTERVAL '20' MINUTE)); Best, JING ZHANG Julian Hyde <[email protected]> 于2021年9月30日周四 上午4:55写道: > Regarding changes to the syntax of the SESSION table function. I am open > to this, even though it would be a breaking change. Can you give an example > of a query before and after the syntax change? > > I would like to support the new PARTITIONED BY clause for table functions. > I encourage you to make the change for table functions in general, before > and separately from the change to the SESSION function and window functions. > > Please ensure that the discussion gets added to the JIRA case. It might be > best if we continue discussion in the JIRA case. > > Julian > > > > On Sep 28, 2021, at 10:28 PM, JING ZHANG <[email protected]> wrote: > > > > Hi community, > > I'm now working on CALCITE-4337 > > <https://issues.apache.org/jira/browse/CALCITE-4337> [1] which aims to > > support PARTITION BY clause for table function argument. > > I've submitted a pull request > > <https://github.com/apache/calcite/pull/2524> [2], > > thanks @Danny very much for review. > > There are two points left which need more discussion. So I fire this > > discussion in order to get more broader suggestions. > > 1. SQL standard Polymorphic Table Functions > > < > https://standards.iso.org/ittf/PubliclyAvailableStandards/c069776_ISO_IEC_TR_19075-7_2017.zip > > > > [3] > > states: > > > >> Input tables have either row semantics or set semantics, as follows: > >> a) Row semantics means that the the result of the PTF is decided on a > >> row-by-row basis. As an extreme example, the DBMS could atomize the > input > >> table into individual rows, and send each single row to a different > virtual > >> processor. > >> b) Set semantics means that the outcome of the function depends on how > the > >> data is partitioned. A partition may not be split across virtual > >> processors, nor may a virtual processor handle more than one partition. > > > > > > A SESSION window has an input table with set semantics which means it > > requires a PARTITION BY clause. > > The new syntax is conflict with current session window table function > > syntax, please take a look at session table function > > <https://calcite.apache.org/docs/reference.html#session> [4]. > > *Could we replace the old syntax directly, or take compatible into > > consideration.* > > 2. Based on SQL standard, only input tables with set semantics may be > > partitioned while input table with row semantics may not be partitioned. > > *Should we have separate branch in Parser.jj for set semantic input table > > of table function(Currently, only input table of session window table > > function has set semantics)*? > > > > Any suggestion is appreciated. Thanks in advanced. > > [1] https://issues.apache.org/jira/browse/CALCITE-4337 > > [2] https://github.com/apache/calcite/pull/2524 > > [3] > > > https://standards.iso.org/ittf/PubliclyAvailableStandards/c069776_ISO_IEC_TR_19075-7_2017.zip > > [4] https://calcite.apache.org/docs/reference.html#session > > > > Best > > JING ZHANG > >
