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

Julian Hyde commented on CALCITE-1170:
--------------------------------------

Since set-operators are relational operators, not scalar operators, I would not 
fight very hard to make them follow the usual validation process for scalar 
operators. There is no real need for "user defined relational operators" in the 
same way that we have lots of user-defined scalar operators. My natural 
inclination would be to override a method in the validator rather than to 
change the behavior of the operator.

That said, do all tests pass after this change? If they do I would be inclined 
to accept.

> Set Operator is not overridden as the usual SqlOperator
> -------------------------------------------------------
>
>                 Key: CALCITE-1170
>                 URL: https://issues.apache.org/jira/browse/CALCITE-1170
>             Project: Calcite
>          Issue Type: Improvement
>          Components: core
>            Reporter: Sean Hsuan-Yi Chu
>            Assignee: Julian Hyde
>
> Calcite allows operators in SqlStdOperatorTable to be overridden when users 
> would like to have their customized operators to be used instead. (see 
> [CALCITE-1062] as an example).
> If this logic is applied to SqlSetOperator, the systems which leverage 
> Calcite can define their own output types (based on customized implicit 
> casting rule) for Union-All, Intersect, etc. 
> Below is more implementation-oriented:
> As is shown here [1], as opposed to calling deriveType(), the code calls 
> validateOperands(). By doing so, the logic of overriding SqlOperator is 
> skipped. 
> However, if we call deriveType() here, the logic of overriding SqlOperator 
> will happen and validateOperands() will be called right afterwards [2]. 
> [1] 
> https://github.com/apache/calcite/blob/4c7f5c20a04b4a4e736a16f801d8b5e6eded48cc/core/src/main/java/org/apache/calcite/sql/validate/SetopNamespace.java#L105
> [2]
> https://github.com/apache/calcite/blob/master/core/src/main/java/org/apache/calcite/sql/SqlOperator.java#L508



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to