Thanks for the examples. The PARTITION BY syntax is a clear improvement for the SESSION function and I think we should do it, even though it is breaking.
I’ll make further comments against https://issues.apache.org/jira/browse/CALCITE-4337 <https://issues.apache.org/jira/browse/CALCITE-4337>. > On Sep 29, 2021, at 9:58 PM, JING ZHANG <beyond1...@gmail.com> wrote: > > 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 <jhyde.apa...@gmail.com> 于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 <beyond1...@gmail.com> 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 >> >>