[
https://issues.apache.org/jira/browse/CALCITE-6608?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17886803#comment-17886803
]
Julian Hyde commented on CALCITE-6608:
--------------------------------------
The principle should be that what comes out of {{makeIn}} is consistent with
what comes out of the simplifier (assuming the arguments to {{makeIn}} have
already been simplified).
As I remarked in CALCITE-6599 we should not use Sargs/SEARCH for simple
conditions like 'x = 3' or 'x IS NULL' but we should for more complex
conditions like '{{x = 4 OR x IS NULL' or 'x = 5 OR x = 7}}'. Hopefully that is
the current behavior of simplifier. If there are divergent opinions, maybe
simplifier should be configurable (but {{makeIn}} should be consistent with it).
Separately, we should discuss compaction of {{{}IN{}}}-lists over discrete data
types. I think that {{x IN (2, 4, 5, 6, 7, 8, 9, 10, 17)}} should be converted
to {{SEARCH(x, Sarg([2], [4, 10], 17))}} because {{INTEGER}} is a discrete type
and all values between 4 and 10 are listed in the expression.
> RexBuilder#makeIn should create EQUALS instead of SEARCH for single point
> values
> --------------------------------------------------------------------------------
>
> Key: CALCITE-6608
> URL: https://issues.apache.org/jira/browse/CALCITE-6608
> Project: Calcite
> Issue Type: Improvement
> Components: core
> Reporter: Stamatis Zampetakis
> Assignee: Stamatis Zampetakis
> Priority: Minor
>
> {code:java}
> RexBuilder.makeIn(inputRef(0), ImmutableList.of(literal(100)))
> {code}
> Current behavior:
> {noformat}
> SEARCH($0, Sarg[100])
> {noformat}
> Proposed behavior:
> {noformat}
> =($0, 100)
> {noformat}
> The EQUALS operator is simpler than the SEARCH operator and it is handled
> better by other components. Although, the SEARCH to EQUALS transformation is
> already something that is done during simplification not every piece of code
> calls the simplifier.
> This basic simplification could also be done directly inside the makeIn
> method when the caller passes a single point value.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)