Hi Julian, Thanks very much for professional comments in CALCITE-4337. I have checked the SQL standard and some database vendors behavior on PTF in order to figure out your questions. I left the message in https://issues.apache.org/jira/browse/CALCITE-4337. Please correct me if I'm wrong. Thanks a lot.
Best, JING ZHANG JING ZHANG <[email protected]> 于2021年10月11日周一 上午11:25写道: > Sorry for late reply because we were in a vocation holiday. > > @Julian > >> 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. > > Thanks for great suggestion. > > I’ll make further comments against >> https://issues.apache.org/jira/browse/CALCITE-4337 < >> https://issues.apache.org/jira/browse/CALCITE-4337> >> > The further comments in JIRA is great and very professional. I need double > check in the SQL standard for some points. Once I finish it, I would reply > in the JIRA as soon as possible. > > @Viliam > >> the table argument, according to the sql standard, must be in >> parentheses, like this: >> >> SELECT * >> FROM TABLE(SESSION(TABLE(input_table), ... >> > Good point, I would keep it in mind. > > Best, > JING ZHANG > > > Viliam Durina <[email protected]> 于2021年10月3日周日 上午2:21写道: > >> Btw, the table argument, according to the sql standard, must be in >> parentheses, like this: >> >> SELECT * >> FROM TABLE(SESSION(TABLE(input_table), ... >> >> When doing a breaking change, we should also consider this. >> >> Viliam >> >> On Thu, 30 Sept 2021 at 18:11, Julian Hyde <[email protected]> >> wrote: >> >> > 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 <[email protected]> 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 <[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 >> > >> >> > >> >> > >> > >> >> -- >> This message contains confidential information and is intended only for >> the >> individuals named. If you are not the named addressee you should not >> disseminate, distribute or copy this e-mail. Please notify the sender >> immediately by e-mail if you have received this e-mail by mistake and >> delete this e-mail from your system. E-mail transmission cannot be >> guaranteed to be secure or error-free as information could be >> intercepted, >> corrupted, lost, destroyed, arrive late or incomplete, or contain >> viruses. >> The sender therefore does not accept liability for any errors or >> omissions >> in the contents of this message, which arise as a result of e-mail >> transmission. If verification is required, please request a hard-copy >> version. -Hazelcast >> >
