[ https://issues.apache.org/jira/browse/CALCITE-1472?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15611123#comment-15611123 ]
Julian Hyde commented on CALCITE-1472: -------------------------------------- APPLY needs to be a keyword, but does it need to be reserved? I think not (and hope not). > Support CROSS/OUTER APPLY syntax > -------------------------------- > > Key: CALCITE-1472 > URL: https://issues.apache.org/jira/browse/CALCITE-1472 > Project: Calcite > Issue Type: New Feature > Reporter: Jark Wu > Assignee: Julian Hyde > > The CROSS/OUTER APPLY is very similar to CROSS JOIN and OUTER JOIN. The > difference is that the APPLY operator is used to invoke a table-valued > function. This is not a standard SQL syntax , but introduced from MS SQL > Server [1]. > The APPLY operator can be expressed by Calciteās LATERAL TABLE . That means > the > SELECT MyTable.*, t.s FROM MyTable CROSS APPLY split(MyTable.a)) AS t(s) > corresponds to : > SELECT MyTable.*, t.s FROM MyTable, LATERAL TABLE(split(MyTable.a)) AS t(s) > and > SELECT MyTable.*, t.s FROM MyTable OUTER APPLY split(MyTable.a)) AS t(s) > corresponds to: > SELECT MyTable.*, t.s FROM MyTable LEFT JOIN LATERAL TABLE(split(MyTable.a)) > AS t(s) ON TRUE > The ON TRUE part is necessary for LEFT JOIN, but it's trivial for users. > That's why I'm introducing "CROSS/OUTER APPLY" which will simplify the SQL a > lot. > As the APPLY can be expressed by LATERAL, so the only thing we need to touch > is the Parser (see [2] and search FLINK to find the modification). > [1] https://technet.microsoft.com/en-us/library/ms175156(v=sql.105).aspx > [2] > https://github.com/wuchong/flink/blob/60812e51156ec9fa6088154d2f6dea8c1ff9ac17/flink-libraries/flink-table/src/main/codegen/templates/Parser.jj -- This message was sent by Atlassian JIRA (v6.3.4#6332)