This is an automated email from the ASF dual-hosted git repository.
kgyrtkirk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/calcite.git
The following commit(s) were added to refs/heads/master by this push:
new 82f9bd5 [CALCITE-2839] Simplify comparisions against boolean literals
82f9bd5 is described below
commit 82f9bd5b1eeb25c027b00a0cd3fbb4b46dcb860a
Author: Zoltan Haindrich <[email protected]>
AuthorDate: Fri Feb 15 08:28:56 2019 +0100
[CALCITE-2839] Simplify comparisions against boolean literals
This patch enables to simplify x=true to x and x=false to not(x)
It also handles inequalities which are probably less frequent.
---
.../java/org/apache/calcite/rex/RexSimplify.java | 72 +++++++++++++++++++---
.../org/apache/calcite/test/RexProgramTest.java | 25 +++++++-
.../org/apache/calcite/test/RelOptRulesTest.xml | 2 +-
core/src/test/resources/sql/sub-query.iq | 28 ++++-----
.../adapter/geode/rel/GeodeAllDataTypesTest.java | 4 +-
5 files changed, 106 insertions(+), 25 deletions(-)
diff --git a/core/src/main/java/org/apache/calcite/rex/RexSimplify.java
b/core/src/main/java/org/apache/calcite/rex/RexSimplify.java
index 15e3b94..65694fa 100644
--- a/core/src/main/java/org/apache/calcite/rex/RexSimplify.java
+++ b/core/src/main/java/org/apache/calcite/rex/RexSimplify.java
@@ -336,6 +336,57 @@ public class RexSimplify {
}
}
+ if (o0.getType().getSqlTypeName() == SqlTypeName.BOOLEAN) {
+ Comparison cmp = Comparison.of(e, node -> true);
+ if (cmp != null) {
+ if (cmp.literal.isAlwaysTrue()) {
+ switch (cmp.kind) {
+ case GREATER_THAN_OR_EQUAL:
+ case EQUALS: // x=true
+ return cmp.ref;
+ case LESS_THAN:
+ case NOT_EQUALS: // x!=true
+ return rexBuilder.makeCall(SqlStdOperatorTable.NOT, cmp.ref);
+ case GREATER_THAN:
+ /* this is false, but could be null if x is null */
+ if (!cmp.ref.getType().isNullable()) {
+ return rexBuilder.makeLiteral(false);
+ }
+ break;
+ case LESS_THAN_OR_EQUAL:
+ /* this is true, but could be null if x is null */
+ if (!cmp.ref.getType().isNullable()) {
+ return rexBuilder.makeLiteral(true);
+ }
+ break;
+ }
+ }
+ if (cmp.literal.isAlwaysFalse()) {
+ switch (cmp.kind) {
+ case EQUALS:
+ case LESS_THAN_OR_EQUAL:
+ return rexBuilder.makeCall(SqlStdOperatorTable.NOT, cmp.ref);
+ case NOT_EQUALS:
+ case GREATER_THAN:
+ return cmp.ref;
+ case GREATER_THAN_OR_EQUAL:
+ /* this is true, but could be null if x is null */
+ if (!cmp.ref.getType().isNullable()) {
+ return rexBuilder.makeLiteral(true);
+ }
+ break;
+ case LESS_THAN:
+ /* this is false, but could be null if x is null */
+ if (!cmp.ref.getType().isNullable()) {
+ return rexBuilder.makeLiteral(false);
+ }
+ break;
+ }
+ }
+ }
+ }
+
+
// Simplify "<literal1> <op> <literal2>"
// For example, "1 = 2" becomes FALSE;
// "1 != 1" becomes FALSE;
@@ -1971,8 +2022,10 @@ public class RexSimplify {
}
}
- /** Comparison between a {@link RexInputRef} or {@link RexFieldAccess} and a
- * literal. Literal may be on left or right side, and may be null. */
+ /** Represents a simple Comparision.
+ *
+ * Left hand side is a {@link RexNode}, right hand side is a literal.
+ */
private static class Comparison implements Predicate {
final RexNode ref;
final SqlKind kind;
@@ -1984,8 +2037,14 @@ public class RexSimplify {
this.literal = Objects.requireNonNull(literal);
}
- /** Creates a comparison, or returns null. */
+ /** Creates a comparison, between a {@link RexInputRef} or {@link
RexFieldAccess}
+ * and a literal. */
static Comparison of(RexNode e) {
+ return of(e, node -> RexUtil.isReferenceOrAccess(node, true));
+ }
+
+ /** Creates a comparison, or returns null. */
+ static Comparison of(RexNode e, java.util.function.Predicate<RexNode>
nodePredicate) {
switch (e.getKind()) {
case EQUALS:
case NOT_EQUALS:
@@ -1998,15 +2057,14 @@ public class RexSimplify {
final RexNode right = call.getOperands().get(1);
switch (right.getKind()) {
case LITERAL:
- if (RexUtil.isReferenceOrAccess(left, true)) {
+ if (nodePredicate.test(left)) {
return new Comparison(left, e.getKind(), (RexLiteral) right);
}
}
switch (left.getKind()) {
case LITERAL:
- if (RexUtil.isReferenceOrAccess(right, true)) {
- return new Comparison(right, e.getKind().reverse(),
- (RexLiteral) left);
+ if (nodePredicate.test(right)) {
+ return new Comparison(right, e.getKind().reverse(), (RexLiteral)
left);
}
}
}
diff --git a/core/src/test/java/org/apache/calcite/test/RexProgramTest.java
b/core/src/test/java/org/apache/calcite/test/RexProgramTest.java
index b9e9ba0..f0ddfe8 100644
--- a/core/src/test/java/org/apache/calcite/test/RexProgramTest.java
+++ b/core/src/test/java/org/apache/calcite/test/RexProgramTest.java
@@ -1663,7 +1663,7 @@ public class RexProgramTest extends RexProgramBuilderBase
{
eq(
literal(false),
eq(literal(false), vBool(1))));
- checkSimplifyUnchanged(e);
+ checkSimplify(e, "OR(<=(?0.bool1, true), ?0.bool1)");
}
@Test public void testSimplifyUnknown() {
@@ -2264,6 +2264,29 @@ public class RexProgramTest extends
RexProgramBuilderBase {
checkSimplifyUnchanged(le(literalAbc, literalZero));
}
+ @Test public void testBooleanComparisions() {
+ checkSimplify(eq(vBool(), trueLiteral), "?0.bool0");
+ checkSimplify(ge(vBool(), trueLiteral), "?0.bool0");
+ checkSimplify(ne(vBool(), trueLiteral), "NOT(?0.bool0)");
+ checkSimplify(lt(vBool(), trueLiteral), "NOT(?0.bool0)");
+
+ checkSimplifyUnchanged(gt(vBool(), trueLiteral));
+ checkSimplifyUnchanged(le(vBool(), trueLiteral));
+ checkSimplify(gt(vBoolNotNull(), trueLiteral), "false");
+ checkSimplify(le(vBoolNotNull(), trueLiteral), "true");
+
+ checkSimplify(eq(vBool(), falseLiteral), "NOT(?0.bool0)");
+ checkSimplify(ne(vBool(), falseLiteral), "?0.bool0");
+ checkSimplify(gt(vBool(), falseLiteral), "?0.bool0");
+ checkSimplify(le(vBool(), falseLiteral), "NOT(?0.bool0)");
+
+ checkSimplifyUnchanged(ge(vBool(), falseLiteral));
+ checkSimplifyUnchanged(lt(vBool(), falseLiteral));
+
+ checkSimplify(ge(vBoolNotNull(), falseLiteral), "true");
+ checkSimplify(lt(vBoolNotNull(), falseLiteral), "false");
+ }
+
@Test public void testSimpleDynamicVars() {
assertTypeAndToString(
vBool(2), "?0.bool2", "BOOLEAN");
diff --git
a/core/src/test/resources/org/apache/calcite/test/RelOptRulesTest.xml
b/core/src/test/resources/org/apache/calcite/test/RelOptRulesTest.xml
index 5da4200..df1b18a 100644
--- a/core/src/test/resources/org/apache/calcite/test/RelOptRulesTest.xml
+++ b/core/src/test/resources/org/apache/calcite/test/RelOptRulesTest.xml
@@ -8085,7 +8085,7 @@ LogicalProject(EXPR$0=[CASE(true, CAST($7):INTEGER,
null:INTEGER)])
<![CDATA[
LogicalProject(EMPNO=[$0])
LogicalProject(EMPNO=[$0], ENAME=[$1], JOB=[$2], MGR=[$3], HIREDATE=[$4],
SAL=[$5], COMM=[$6], DEPTNO=[$7], SLACKER=[$8])
- LogicalFilter(condition=[<($0, CASE(=(OR(AND(IS NOT NULL($12), <>($9, 0)),
AND(<($10, $9), null, <>($9, 0), IS NULL($12))), true), 10, =(OR(AND(IS NOT
NULL($12), <>($9, 0)), AND(<($10, $9), null, <>($9, 0), IS NULL($12))), false),
20, 30))])
+ LogicalFilter(condition=[<($0, CASE(AND(IS NOT NULL($12), <>($9, 0)), 10,
OR(=($9, 0), AND(<>($9, 0), IS NULL($12), >=($10, $9))), 20, 30))])
LogicalJoin(condition=[=($7, $11)], joinType=[left])
LogicalJoin(condition=[true], joinType=[inner])
LogicalTableScan(table=[[CATALOG, SALES, EMP]])
diff --git a/core/src/test/resources/sql/sub-query.iq
b/core/src/test/resources/sql/sub-query.iq
index c3aa3f2..7bfd48a 100644
--- a/core/src/test/resources/sql/sub-query.iq
+++ b/core/src/test/resources/sql/sub-query.iq
@@ -824,7 +824,7 @@ from "scott".emp;
(14 rows)
!ok
-EnumerableCalc(expr#0..3=[{inputs}], expr#4=[false], expr#5=[=($t2, $t4)],
expr#6=[IS TRUE($t5)], expr#7=[null:BOOLEAN], expr#8=[IS NOT NULL($t3)],
expr#9=[AND($t6, $t7, $t8)], expr#10=[IS NOT NULL($t2)], expr#11=[IS NOT
TRUE($t5)], expr#12=[AND($t10, $t8, $t11)], expr#13=[OR($t9, $t12)], SAL=[$t1],
EXPR$1=[$t13])
+EnumerableCalc(expr#0..3=[{inputs}], expr#4=[NOT($t2)], expr#5=[IS TRUE($t4)],
expr#6=[null:BOOLEAN], expr#7=[IS NOT NULL($t3)], expr#8=[AND($t5, $t6, $t7)],
expr#9=[IS NOT NULL($t2)], expr#10=[IS NOT FALSE($t2)], expr#11=[AND($t9, $t7,
$t10)], expr#12=[OR($t8, $t11)], SAL=[$t1], EXPR$1=[$t12])
EnumerableJoin(condition=[true], joinType=[left])
EnumerableCalc(expr#0..7=[{inputs}], EMPNO=[$t0], SAL=[$t5])
EnumerableTableScan(table=[[scott, EMP]])
@@ -1002,7 +1002,7 @@ from "scott".emp;
(14 rows)
!ok
-EnumerableCalc(expr#0..3=[{inputs}], expr#4=[false], expr#5=[=($t2, $t4)],
expr#6=[IS TRUE($t5)], expr#7=[null:BOOLEAN], expr#8=[IS NOT NULL($t3)],
expr#9=[AND($t6, $t7, $t8)], expr#10=[IS NOT NULL($t2)], expr#11=[IS NOT
TRUE($t5)], expr#12=[AND($t10, $t8, $t11)], expr#13=[OR($t9, $t12)], SAL=[$t1],
EXPR$1=[$t13])
+EnumerableCalc(expr#0..3=[{inputs}], expr#4=[NOT($t2)], expr#5=[IS TRUE($t4)],
expr#6=[null:BOOLEAN], expr#7=[IS NOT NULL($t3)], expr#8=[AND($t5, $t6, $t7)],
expr#9=[IS NOT NULL($t2)], expr#10=[IS NOT FALSE($t2)], expr#11=[AND($t9, $t7,
$t10)], expr#12=[OR($t8, $t11)], SAL=[$t1], EXPR$1=[$t12])
EnumerableJoin(condition=[true], joinType=[left])
EnumerableCalc(expr#0..7=[{inputs}], EMPNO=[$t0], SAL=[$t5])
EnumerableTableScan(table=[[scott, EMP]])
@@ -1074,7 +1074,7 @@ from "scott".emp;
(14 rows)
!ok
-EnumerableCalc(expr#0..3=[{inputs}], expr#4=[IS NULL($t3)], expr#5=[false],
expr#6=[=($t2, $t5)], expr#7=[IS TRUE($t6)], expr#8=[null:BOOLEAN],
expr#9=[AND($t7, $t8)], expr#10=[IS NOT TRUE($t6)], expr#11=[IS NULL($t2)],
expr#12=[AND($t10, $t11)], expr#13=[OR($t4, $t9, $t12)], SAL=[$t1],
EXPR$1=[$t13])
+EnumerableCalc(expr#0..3=[{inputs}], expr#4=[IS NULL($t3)], expr#5=[NOT($t2)],
expr#6=[IS TRUE($t5)], expr#7=[null:BOOLEAN], expr#8=[AND($t6, $t7)],
expr#9=[IS NOT FALSE($t2)], expr#10=[IS NULL($t2)], expr#11=[AND($t9, $t10)],
expr#12=[OR($t4, $t8, $t11)], SAL=[$t1], EXPR$1=[$t12])
EnumerableJoin(condition=[true], joinType=[left])
EnumerableCalc(expr#0..7=[{inputs}], EMPNO=[$t0], SAL=[$t5])
EnumerableTableScan(table=[[scott, EMP]])
@@ -1252,7 +1252,7 @@ from "scott".emp;
(14 rows)
!ok
-EnumerableCalc(expr#0..3=[{inputs}], expr#4=[IS NULL($t3)], expr#5=[false],
expr#6=[=($t2, $t5)], expr#7=[IS TRUE($t6)], expr#8=[null:BOOLEAN],
expr#9=[AND($t7, $t8)], expr#10=[IS NOT TRUE($t6)], expr#11=[IS NULL($t2)],
expr#12=[AND($t10, $t11)], expr#13=[OR($t4, $t9, $t12)], SAL=[$t1],
EXPR$1=[$t13])
+EnumerableCalc(expr#0..3=[{inputs}], expr#4=[IS NULL($t3)], expr#5=[NOT($t2)],
expr#6=[IS TRUE($t5)], expr#7=[null:BOOLEAN], expr#8=[AND($t6, $t7)],
expr#9=[IS NOT FALSE($t2)], expr#10=[IS NULL($t2)], expr#11=[AND($t9, $t10)],
expr#12=[OR($t4, $t8, $t11)], SAL=[$t1], EXPR$1=[$t12])
EnumerableJoin(condition=[true], joinType=[left])
EnumerableCalc(expr#0..7=[{inputs}], EMPNO=[$t0], SAL=[$t5])
EnumerableTableScan(table=[[scott, EMP]])
@@ -1440,7 +1440,7 @@ select sal from "scott".emp
(0 rows)
!ok
-EnumerableCalc(expr#0..3=[{inputs}], expr#4=[false], expr#5=[=($t2, $t4)],
expr#6=[IS NOT TRUE($t5)], expr#7=[IS NULL($t3)], expr#8=[OR($t6, $t7)],
expr#9=[OR($t7, $t5)], expr#10=[AND($t8, $t9)], SAL=[$t1], $condition=[$t10])
+EnumerableCalc(expr#0..3=[{inputs}], expr#4=[IS NOT FALSE($t2)], expr#5=[IS
NULL($t3)], expr#6=[OR($t4, $t5)], expr#7=[NOT($t2)], expr#8=[OR($t5, $t7)],
expr#9=[AND($t6, $t8)], SAL=[$t1], $condition=[$t9])
EnumerableJoin(condition=[true], joinType=[left])
EnumerableCalc(expr#0..7=[{inputs}], EMPNO=[$t0], SAL=[$t5])
EnumerableTableScan(table=[[scott, EMP]])
@@ -1461,7 +1461,7 @@ select sal from "scott".emp
(0 rows)
!ok
-EnumerableCalc(expr#0..3=[{inputs}], expr#4=[false], expr#5=[=($t2, $t4)],
expr#6=[IS NOT NULL($t2)], expr#7=[OR($t5, $t6)], expr#8=[IS NOT TRUE($t7)],
expr#9=[IS NULL($t3)], expr#10=[OR($t8, $t9)], SAL=[$t1], $condition=[$t10])
+EnumerableCalc(expr#0..3=[{inputs}], expr#4=[NOT($t2)], expr#5=[IS NOT
NULL($t2)], expr#6=[OR($t4, $t5)], expr#7=[IS NOT TRUE($t6)], expr#8=[IS
NULL($t3)], expr#9=[OR($t7, $t8)], SAL=[$t1], $condition=[$t9])
EnumerableJoin(condition=[true], joinType=[left])
EnumerableCalc(expr#0..7=[{inputs}], EMPNO=[$t0], SAL=[$t5])
EnumerableTableScan(table=[[scott, EMP]])
@@ -1482,7 +1482,7 @@ select sal from "scott".emp
(0 rows)
!ok
-EnumerableCalc(expr#0..3=[{inputs}], expr#4=[false], expr#5=[=($t2, $t4)],
expr#6=[IS NOT TRUE($t5)], expr#7=[IS NULL($t3)], expr#8=[OR($t6, $t7)],
expr#9=[OR($t7, $t5)], expr#10=[AND($t8, $t9)], SAL=[$t1], $condition=[$t10])
+EnumerableCalc(expr#0..3=[{inputs}], expr#4=[IS NOT FALSE($t2)], expr#5=[IS
NULL($t3)], expr#6=[OR($t4, $t5)], expr#7=[NOT($t2)], expr#8=[OR($t5, $t7)],
expr#9=[AND($t6, $t8)], SAL=[$t1], $condition=[$t9])
EnumerableJoin(condition=[true], joinType=[left])
EnumerableCalc(expr#0..7=[{inputs}], EMPNO=[$t0], SAL=[$t5])
EnumerableTableScan(table=[[scott, EMP]])
@@ -1503,7 +1503,7 @@ select sal from "scott".emp
(0 rows)
!ok
-EnumerableCalc(expr#0..3=[{inputs}], expr#4=[false], expr#5=[=($t2, $t4)],
expr#6=[IS NOT TRUE($t5)], expr#7=[IS NULL($t3)], expr#8=[OR($t6, $t7)],
expr#9=[OR($t7, $t5)], expr#10=[AND($t8, $t9)], SAL=[$t1], $condition=[$t10])
+EnumerableCalc(expr#0..3=[{inputs}], expr#4=[IS NOT FALSE($t2)], expr#5=[IS
NULL($t3)], expr#6=[OR($t4, $t5)], expr#7=[NOT($t2)], expr#8=[OR($t5, $t7)],
expr#9=[AND($t6, $t8)], SAL=[$t1], $condition=[$t9])
EnumerableJoin(condition=[true], joinType=[left])
EnumerableCalc(expr#0..7=[{inputs}], EMPNO=[$t0], SAL=[$t5])
EnumerableTableScan(table=[[scott, EMP]])
@@ -1524,7 +1524,7 @@ select sal from "scott".emp
(0 rows)
!ok
-EnumerableCalc(expr#0..3=[{inputs}], expr#4=[false], expr#5=[=($t2, $t4)],
expr#6=[IS NOT TRUE($t5)], expr#7=[IS NULL($t3)], expr#8=[OR($t6, $t7)],
expr#9=[OR($t7, $t5)], expr#10=[AND($t8, $t9)], SAL=[$t1], $condition=[$t10])
+EnumerableCalc(expr#0..3=[{inputs}], expr#4=[IS NOT FALSE($t2)], expr#5=[IS
NULL($t3)], expr#6=[OR($t4, $t5)], expr#7=[NOT($t2)], expr#8=[OR($t5, $t7)],
expr#9=[AND($t6, $t8)], SAL=[$t1], $condition=[$t9])
EnumerableJoin(condition=[true], joinType=[left])
EnumerableCalc(expr#0..7=[{inputs}], EMPNO=[$t0], SAL=[$t5])
EnumerableTableScan(table=[[scott, EMP]])
@@ -1545,7 +1545,7 @@ select sal from "scott".emp
(0 rows)
!ok
-EnumerableCalc(expr#0..3=[{inputs}], expr#4=[false], expr#5=[=($t2, $t4)],
expr#6=[IS NOT NULL($t2)], expr#7=[OR($t5, $t6)], expr#8=[IS NOT TRUE($t7)],
expr#9=[IS NULL($t3)], expr#10=[OR($t8, $t9)], SAL=[$t1], $condition=[$t10])
+EnumerableCalc(expr#0..3=[{inputs}], expr#4=[NOT($t2)], expr#5=[IS NOT
NULL($t2)], expr#6=[OR($t4, $t5)], expr#7=[IS NOT TRUE($t6)], expr#8=[IS
NULL($t3)], expr#9=[OR($t7, $t8)], SAL=[$t1], $condition=[$t9])
EnumerableJoin(condition=[true], joinType=[left])
EnumerableCalc(expr#0..7=[{inputs}], EMPNO=[$t0], SAL=[$t5])
EnumerableTableScan(table=[[scott, EMP]])
@@ -1566,7 +1566,7 @@ select sal from "scott".emp
(0 rows)
!ok
-EnumerableCalc(expr#0..3=[{inputs}], expr#4=[false], expr#5=[=($t2, $t4)],
expr#6=[IS NOT NULL($t2)], expr#7=[OR($t5, $t6)], expr#8=[IS NOT TRUE($t7)],
expr#9=[IS NULL($t3)], expr#10=[OR($t8, $t9)], SAL=[$t1], $condition=[$t10])
+EnumerableCalc(expr#0..3=[{inputs}], expr#4=[NOT($t2)], expr#5=[IS NOT
NULL($t2)], expr#6=[OR($t4, $t5)], expr#7=[IS NOT TRUE($t6)], expr#8=[IS
NULL($t3)], expr#9=[OR($t7, $t8)], SAL=[$t1], $condition=[$t9])
EnumerableJoin(condition=[true], joinType=[left])
EnumerableCalc(expr#0..7=[{inputs}], EMPNO=[$t0], SAL=[$t5])
EnumerableTableScan(table=[[scott, EMP]])
@@ -1760,7 +1760,7 @@ select sal from "scott".emp e
(0 rows)
!ok
-EnumerableCalc(expr#0..4=[{inputs}], expr#5=[false], expr#6=[=($t4, $t5)],
expr#7=[IS NOT NULL($t4)], expr#8=[OR($t6, $t7)], expr#9=[IS NOT TRUE($t8)],
SAL=[$t1], $condition=[$t9])
+EnumerableCalc(expr#0..4=[{inputs}], expr#5=[NOT($t4)], expr#6=[IS NOT
NULL($t4)], expr#7=[OR($t5, $t6)], expr#8=[IS NOT TRUE($t7)], SAL=[$t1],
$condition=[$t8])
EnumerableJoin(condition=[=($2, $3)], joinType=[left])
EnumerableCalc(expr#0..7=[{inputs}], EMPNO=[$t0], SAL=[$t5], DEPTNO=[$t7])
EnumerableTableScan(table=[[scott, EMP]])
@@ -1828,7 +1828,7 @@ select sal from "scott".emp e
(11 rows)
!ok
-EnumerableCalc(expr#0..4=[{inputs}], expr#5=[false], expr#6=[=($t4, $t5)],
expr#7=[IS NOT NULL($t4)], expr#8=[OR($t6, $t7)], expr#9=[IS NOT TRUE($t8)],
SAL=[$t1], $condition=[$t9])
+EnumerableCalc(expr#0..4=[{inputs}], expr#5=[NOT($t4)], expr#6=[IS NOT
NULL($t4)], expr#7=[OR($t5, $t6)], expr#8=[IS NOT TRUE($t7)], SAL=[$t1],
$condition=[$t8])
EnumerableJoin(condition=[=($2, $3)], joinType=[left])
EnumerableCalc(expr#0..7=[{inputs}], EMPNO=[$t0], SAL=[$t5], DEPTNO=[$t7])
EnumerableTableScan(table=[[scott, EMP]])
@@ -1857,7 +1857,7 @@ select sal from "scott".emp e
(11 rows)
!ok
-EnumerableCalc(expr#0..4=[{inputs}], expr#5=[false], expr#6=[=($t4, $t5)],
expr#7=[IS NOT NULL($t4)], expr#8=[OR($t6, $t7)], expr#9=[IS NOT TRUE($t8)],
SAL=[$t1], $condition=[$t9])
+EnumerableCalc(expr#0..4=[{inputs}], expr#5=[NOT($t4)], expr#6=[IS NOT
NULL($t4)], expr#7=[OR($t5, $t6)], expr#8=[IS NOT TRUE($t7)], SAL=[$t1],
$condition=[$t8])
EnumerableJoin(condition=[=($2, $3)], joinType=[left])
EnumerableCalc(expr#0..7=[{inputs}], EMPNO=[$t0], SAL=[$t5], DEPTNO=[$t7])
EnumerableTableScan(table=[[scott, EMP]])
diff --git
a/geode/src/test/java/org/apache/calcite/adapter/geode/rel/GeodeAllDataTypesTest.java
b/geode/src/test/java/org/apache/calcite/adapter/geode/rel/GeodeAllDataTypesTest.java
index 3cae87e..7b7433e 100644
---
a/geode/src/test/java/org/apache/calcite/adapter/geode/rel/GeodeAllDataTypesTest.java
+++
b/geode/src/test/java/org/apache/calcite/adapter/geode/rel/GeodeAllDataTypesTest.java
@@ -146,7 +146,7 @@ public class GeodeAllDataTypesTest extends
AbstractGeodeTest {
.returnsCount(3)
.queryContains(
GeodeAssertions.query("SELECT booleanValue AS booleanValue FROM
/allDataTypesRegion "
- + "WHERE booleanValue IN SET(true, false)"));
+ + "WHERE booleanValue = true OR booleanValue = false"));
}
@Test
@@ -161,7 +161,7 @@ public class GeodeAllDataTypesTest extends
AbstractGeodeTest {
GeodeAssertions.query("SELECT stringValue AS stringValue "
+ "FROM /allDataTypesRegion WHERE "
+ "stringValue IN SET('abc', 'def') OR floatValue = 1.5678 "
- + "OR booleanValue IN SET(true, false)"));
+ + "OR booleanValue = true OR booleanValue = false"));
}
@Test