[
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)