[ 
https://issues.apache.org/jira/browse/CALCITE-4865?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17457320#comment-17457320
 ] 

Julian Hyde commented on CALCITE-4865:
--------------------------------------

* I don't think you need a new class SqlSetSemanticsTable. Just a new operator. 
And a new SqlKind value (so you don't do 'instanceof SqlSetSemanticsTable' in 
validator).
* In the operator.createCall, make sure that orderList and partitionList are 
not both empty.
* TableCharacteristics is what Kotlin calls a "data class". I would make the 
fields public final and remove the "get" functions. 
* I think it would be simpler if {{tableFunction.tableCharacteristics}} 
returned a {{@Nullable TableCharacteristics>}} rather than an 
{{Optional<TableCharacteristics>}}. The 'filter' code is rather obscure.
* Add some tests to SqlParserTest
* Can you find better words than TableCharacteristics and Semantics? They are 
both weird words in English - they look plural but are used as if singular. But 
Java classes whose names are plural nouns are usually abstract helper classes.
* Is the enum ColumnsPassThrough necessary? Could be a boolean field, say 
"passColumnsThrough".
* The {{validateWithoutSetSemanticsTableNode}} method has bizarre behavior. If 
only makes sense when you see how it is called.

> Extends Table function to support Polymorphic Table Function
> ------------------------------------------------------------
>
>                 Key: CALCITE-4865
>                 URL: https://issues.apache.org/jira/browse/CALCITE-4865
>             Project: Calcite
>          Issue Type: Sub-task
>          Components: core
>            Reporter: Jing Zhang
>            Priority: Major
>              Labels: pull-request-available
>         Attachments: image-2021-12-07-11-04-28-206.png
>
>          Time Spent: 20m
>  Remaining Estimate: 0h
>
> This Jira aims to extend existed Table function in order to support 
>  Polymorphic Table Function, including:
>  * Introduces generic input table parameter which has 3 characteristics:
>  ## Input tables have either row semantics or set semantics)
>  ### Row semantics means that the the result of the PTF is decided on a 
> row-by-row basis.
>  ### Set semantics means that the outcome of the function depends on how the 
> data is partitioned.
>  ## The second characteristic, which applies only to input tables with set 
> semantics, is whether the PTF can generate a result row even if the input 
> table is empty.
>  ## The third characteristic is whether the input table supports pass-through 
> columns or not. Pass-through columns is a mechanism enabling the PTF to copy 
> every column of an input row into columns of an output row.
>  * Introduces generic input table parameter which has 3 characteristics:
>  * Extends `SqlFunction` to support generic input table parameter
>  * Adds validator for table function
>  ## only input table parameter with set semantics could be partitioned or 
> ordered
>  ## At most has one input table parameter with row semantics
>  * Updates `Parser.jj` to allow partition by clause and order by clause 
> follow after input table parameter of table function
>  * Adds test



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to