[ https://issues.apache.org/jira/browse/CALCITE-4155?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17172542#comment-17172542 ]
Julian Hyde commented on CALCITE-4155: -------------------------------------- Can you please review CALCITE-4159, which is closely related, and see if there is an elegant solution to both. I agree that we should exploit the fact that certain data types are discrete. Also the fact that they have a limited set of values (e.g. BOOLEAN). I think we should do this in the context of ORs, not require the IN structure to be intact. The underlying concept is interval sets (see e.g. Calcite's [IntegerIntervalSet|https://calcite.apache.org/javadocAggregate/org/apache/calcite/util/IntegerIntervalSet.html] and Guava's [RangeSet|https://guava.dev/releases/23.0/api/docs/com/google/common/collect/RangeSet.html]). > Simplify IN expression of discrete values > ----------------------------------------- > > Key: CALCITE-4155 > URL: https://issues.apache.org/jira/browse/CALCITE-4155 > Project: Calcite > Issue Type: New Feature > Components: core > Reporter: Liya Fan > Assignee: Liya Fan > Priority: Major > > For example, given expressions like > {{a in (1, 2, 3, 4, 5)}} > or > {{a = 1 or a = 2 or a = 3 or a = 4 or a = 5}}, > we can simplify it to > {{a >= 1 and a <= 5}} > Such simplification reduces the number of value comparisons from 5 to 2. -- This message was sent by Atlassian Jira (v8.3.4#803005)