Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@
*/
package org.apache.hadoop.hive.ql.optimizer.calcite;

import com.google.common.collect.BoundType;
import com.google.common.collect.Range;
import com.google.common.collect.RangeSet;
import org.apache.calcite.rel.type.RelDataType;
import org.apache.calcite.rex.RexBuilder;
import org.apache.calcite.rex.RexCall;
Expand All @@ -35,8 +38,10 @@

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
import java.util.Set;

/**
* A class that transforms a call to the internal {@link SqlStdOperatorTable#SEARCH} operator into an equivalent
Expand Down Expand Up @@ -92,6 +97,16 @@ public RexNode transform() {
range -> rexBuilder.makeCall(SqlStdOperatorTable.NOT_EQUALS, ref,
rexBuilder.makeLiteral(range.lowerEndpoint(), operandType, true, true))).toList();
orList.add(RexUtil.composeConjunction(rexBuilder, list));
} else if (isNotBetween(sarg.rangeSet)) {
Iterator<Range<C>> iterator = sarg.rangeSet.asRanges().iterator();
C lower = iterator.next().upperEndpoint();
C upper = iterator.next().lowerEndpoint();
RexNode notBetween = rexBuilder.makeCall(HiveBetween.INSTANCE,
rexBuilder.makeLiteral(true), // inverse flag enabled, i.e. 'NOT BETWEEN'
ref,
rexBuilder.makeLiteral(lower, operandType, true, true),
rexBuilder.makeLiteral(upper, operandType, true, true));
orList.add(notBetween);
} else {
RangeConverter<C> consumer = new RangeConverter<>(rexBuilder, operandType, ref);
RangeSets.forEach(sarg.rangeSet, consumer);
Expand Down Expand Up @@ -125,6 +140,19 @@ public RexNode transform() {
return x;
}

// Identifies a NOT BETWEEN expression: x < 10 OR x > 20 => x NOT BETWEEN 10, 20
private boolean isNotBetween(RangeSet<C> rangeSet) {
Set<Range<C>> ranges = rangeSet.asRanges();
if (ranges.size() == 2) {
Iterator<Range<C>> iterator = ranges.iterator();
Range<C> first = iterator.next();
Range<C> second = iterator.next();
return !first.hasLowerBound() && first.hasUpperBound() && first.upperBoundType() == BoundType.OPEN
&& !second.hasUpperBound() && second.hasLowerBound() && second.lowerBoundType() == BoundType.OPEN;
}
return false;
}

public static class Shuttle extends RexShuttle {
private final RexBuilder rexBuilder;
private RexUnknownAs unknownContext;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import com.google.common.collect.ImmutableRangeSet;
import com.google.common.collect.Range;
import com.google.common.collect.RangeSet;
import com.google.common.collect.TreeRangeSet;

import org.apache.calcite.jdbc.JavaTypeFactoryImpl;
import org.apache.calcite.rel.type.RelDataType;
Expand Down Expand Up @@ -97,6 +98,21 @@

expressions.add(new Object[] { searchFalse, TRUE, "AND(IS NOT NULL($0), BETWEEN(false, $0, 10, 20))" });
expressions.add(new Object[] { searchFalse, UNKNOWN, "AND(IS NOT NULL($0), BETWEEN(false, $0, 10, 20))" });

// NOT BETWEEN tests
final RexNode searchNotBetweenUnknown = createNotBetweenSearchNode(rexBuilder, 10, 20, UNKNOWN);
final RexNode searchNotBetweenFalse = createNotBetweenSearchNode(rexBuilder, 10, 20, FALSE);
final RexNode searchNotBetweenTrue = createNotBetweenSearchNode(rexBuilder, 10, 20, TRUE);
expressions.add(new Object[] { searchNotBetweenFalse, UNKNOWN, "AND(IS NOT NULL($0), BETWEEN(true, $0, 10, 20))" });

Check warning on line 106 in ql/src/test/org/apache/hadoop/hive/ql/optimizer/calcite/TestSearchTransformerShuttle.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

'{' is followed by whitespace.

See more on https://sonarcloud.io/project/issues?id=apache_hive&issues=AZ-PY_pa18-5KNpai3n9&open=AZ-PY_pa18-5KNpai3n9&pullRequest=6634
expressions.add(new Object[] { searchNotBetweenFalse, TRUE, "AND(IS NOT NULL($0), BETWEEN(true, $0, 10, 20))" });

Check warning on line 107 in ql/src/test/org/apache/hadoop/hive/ql/optimizer/calcite/TestSearchTransformerShuttle.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

'{' is followed by whitespace.

See more on https://sonarcloud.io/project/issues?id=apache_hive&issues=AZ-PY_pa18-5KNpai3n-&open=AZ-PY_pa18-5KNpai3n-&pullRequest=6634
expressions.add(new Object[] { searchNotBetweenFalse, FALSE, "BETWEEN(true, $0, 10, 20)" });

Check warning on line 108 in ql/src/test/org/apache/hadoop/hive/ql/optimizer/calcite/TestSearchTransformerShuttle.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

'{' is followed by whitespace.

See more on https://sonarcloud.io/project/issues?id=apache_hive&issues=AZ-PY_pa18-5KNpai3n_&open=AZ-PY_pa18-5KNpai3n_&pullRequest=6634
expressions.add(new Object[] { searchNotBetweenTrue, UNKNOWN, "OR(IS NULL($0), BETWEEN(true, $0, 10, 20))" });

Check warning on line 109 in ql/src/test/org/apache/hadoop/hive/ql/optimizer/calcite/TestSearchTransformerShuttle.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

'{' is followed by whitespace.

See more on https://sonarcloud.io/project/issues?id=apache_hive&issues=AZ-PY_pa18-5KNpai3oA&open=AZ-PY_pa18-5KNpai3oA&pullRequest=6634
expressions.add(new Object[] { searchNotBetweenTrue, TRUE, "BETWEEN(true, $0, 10, 20)" });

Check warning on line 110 in ql/src/test/org/apache/hadoop/hive/ql/optimizer/calcite/TestSearchTransformerShuttle.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

'{' is followed by whitespace.

See more on https://sonarcloud.io/project/issues?id=apache_hive&issues=AZ-PY_pa18-5KNpai3oB&open=AZ-PY_pa18-5KNpai3oB&pullRequest=6634
expressions.add(new Object[] { searchNotBetweenTrue, FALSE, "OR(IS NULL($0), BETWEEN(true, $0, 10, 20))" });

Check warning on line 111 in ql/src/test/org/apache/hadoop/hive/ql/optimizer/calcite/TestSearchTransformerShuttle.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

'{' is followed by whitespace.

See more on https://sonarcloud.io/project/issues?id=apache_hive&issues=AZ-PY_pa18-5KNpai3oC&open=AZ-PY_pa18-5KNpai3oC&pullRequest=6634
expressions.add(new Object[] { searchNotBetweenUnknown, UNKNOWN, "BETWEEN(true, $0, 10, 20)" });

Check warning on line 112 in ql/src/test/org/apache/hadoop/hive/ql/optimizer/calcite/TestSearchTransformerShuttle.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

'{' is followed by whitespace.

See more on https://sonarcloud.io/project/issues?id=apache_hive&issues=AZ-PY_pa18-5KNpai3oD&open=AZ-PY_pa18-5KNpai3oD&pullRequest=6634
expressions.add(new Object[] { searchNotBetweenUnknown, TRUE, "BETWEEN(true, $0, 10, 20)" });

Check warning on line 113 in ql/src/test/org/apache/hadoop/hive/ql/optimizer/calcite/TestSearchTransformerShuttle.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

'{' is followed by whitespace.

See more on https://sonarcloud.io/project/issues?id=apache_hive&issues=AZ-PY_pa18-5KNpai3oE&open=AZ-PY_pa18-5KNpai3oE&pullRequest=6634
expressions.add(new Object[] { searchNotBetweenUnknown, FALSE, "BETWEEN(true, $0, 10, 20)" });

Check warning on line 114 in ql/src/test/org/apache/hadoop/hive/ql/optimizer/calcite/TestSearchTransformerShuttle.java

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

'{' is followed by whitespace.

See more on https://sonarcloud.io/project/issues?id=apache_hive&issues=AZ-PY_pa18-5KNpai3oF&open=AZ-PY_pa18-5KNpai3oF&pullRequest=6634

return expressions;
}

Expand All @@ -109,5 +125,15 @@
return builder.makeCall(SEARCH, builder.makeInputRef(intType, 0), builder.makeSearchArgumentLiteral(sarg, intType));
}

private static RexNode createNotBetweenSearchNode(RexBuilder builder, int lower, int upper, RexUnknownAs nullAs) {
final RelDataType intType = builder.getTypeFactory()
.createTypeWithNullability(builder.getTypeFactory().createSqlType(SqlTypeName.INTEGER), true);
RangeSet<BigDecimal> rangeSet = TreeRangeSet.create();
rangeSet.add(Range.lessThan(BigDecimal.valueOf(lower)));
rangeSet.add(Range.greaterThan(BigDecimal.valueOf(upper)));
Sarg sarg = Sarg.of(nullAs, rangeSet);
return builder.makeCall(SEARCH, builder.makeInputRef(intType, 0), builder.makeSearchArgumentLiteral(sarg, intType));
}

}

48 changes: 24 additions & 24 deletions ql/src/test/results/clientpositive/llap/correlationoptimizer8.q.out
Original file line number Diff line number Diff line change
Expand Up @@ -82,21 +82,21 @@ STAGE PLANS:
Map Operator Tree:
TableScan
alias: x
filterExpr: (((UDFToDouble(key) < 20.0D) or (UDFToDouble(key) > 100.0D)) and key is not null) (type: boolean)
filterExpr: (UDFToDouble(key) NOT BETWEEN 20.0D AND 100.0D and key is not null) (type: boolean)
Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
Filter Operator
predicate: (((UDFToDouble(key) < 20.0D) or (UDFToDouble(key) > 100.0D)) and key is not null) (type: boolean)
Statistics: Num rows: 16 Data size: 2800 Basic stats: COMPLETE Column stats: COMPLETE
predicate: (UDFToDouble(key) NOT BETWEEN 20.0D AND 100.0D and key is not null) (type: boolean)
Statistics: Num rows: 23 Data size: 4025 Basic stats: COMPLETE Column stats: COMPLETE
Select Operator
expressions: key (type: string), value (type: string)
outputColumnNames: _col0, _col1
Statistics: Num rows: 16 Data size: 2800 Basic stats: COMPLETE Column stats: COMPLETE
Statistics: Num rows: 23 Data size: 4025 Basic stats: COMPLETE Column stats: COMPLETE
Reduce Output Operator
key expressions: _col0 (type: string)
null sort order: z
sort order: +
Map-reduce partition columns: _col0 (type: string)
Statistics: Num rows: 16 Data size: 2800 Basic stats: COMPLETE Column stats: COMPLETE
Statistics: Num rows: 23 Data size: 4025 Basic stats: COMPLETE Column stats: COMPLETE
value expressions: _col1 (type: string)
Execution mode: vectorized, llap
LLAP IO: all inputs
Expand Down Expand Up @@ -126,14 +126,14 @@ STAGE PLANS:
0 _col0 (type: string)
1 _col0 (type: string)
outputColumnNames: _col1, _col2, _col3
Statistics: Num rows: 32 Data size: 5856 Basic stats: COMPLETE Column stats: COMPLETE
Statistics: Num rows: 46 Data size: 8418 Basic stats: COMPLETE Column stats: COMPLETE
Select Operator
expressions: _col2 (type: string), _col3 (type: string), _col1 (type: bigint)
outputColumnNames: _col0, _col1, _col2
Statistics: Num rows: 32 Data size: 5856 Basic stats: COMPLETE Column stats: COMPLETE
Statistics: Num rows: 46 Data size: 8418 Basic stats: COMPLETE Column stats: COMPLETE
File Output Operator
compressed: false
Statistics: Num rows: 32 Data size: 5856 Basic stats: COMPLETE Column stats: COMPLETE
Statistics: Num rows: 46 Data size: 8418 Basic stats: COMPLETE Column stats: COMPLETE
table:
input format: org.apache.hadoop.mapred.SequenceFileInputFormat
output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
Expand Down Expand Up @@ -282,21 +282,21 @@ STAGE PLANS:
Map Operator Tree:
TableScan
alias: x
filterExpr: (((UDFToDouble(key) < 20.0D) or (UDFToDouble(key) > 100.0D)) and key is not null) (type: boolean)
filterExpr: (UDFToDouble(key) NOT BETWEEN 20.0D AND 100.0D and key is not null) (type: boolean)
Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
Filter Operator
predicate: (((UDFToDouble(key) < 20.0D) or (UDFToDouble(key) > 100.0D)) and key is not null) (type: boolean)
Statistics: Num rows: 16 Data size: 2800 Basic stats: COMPLETE Column stats: COMPLETE
predicate: (UDFToDouble(key) NOT BETWEEN 20.0D AND 100.0D and key is not null) (type: boolean)
Statistics: Num rows: 23 Data size: 4025 Basic stats: COMPLETE Column stats: COMPLETE
Select Operator
expressions: key (type: string), value (type: string)
outputColumnNames: _col0, _col1
Statistics: Num rows: 16 Data size: 2800 Basic stats: COMPLETE Column stats: COMPLETE
Statistics: Num rows: 23 Data size: 4025 Basic stats: COMPLETE Column stats: COMPLETE
Reduce Output Operator
key expressions: _col0 (type: string)
null sort order: z
sort order: +
Map-reduce partition columns: _col0 (type: string)
Statistics: Num rows: 16 Data size: 2800 Basic stats: COMPLETE Column stats: COMPLETE
Statistics: Num rows: 23 Data size: 4025 Basic stats: COMPLETE Column stats: COMPLETE
value expressions: _col1 (type: string)
Execution mode: vectorized, llap
LLAP IO: all inputs
Expand Down Expand Up @@ -326,14 +326,14 @@ STAGE PLANS:
0 _col0 (type: string)
1 _col0 (type: string)
outputColumnNames: _col1, _col2, _col3
Statistics: Num rows: 32 Data size: 5856 Basic stats: COMPLETE Column stats: COMPLETE
Statistics: Num rows: 46 Data size: 8418 Basic stats: COMPLETE Column stats: COMPLETE
Select Operator
expressions: _col2 (type: string), _col3 (type: string), _col1 (type: bigint)
outputColumnNames: _col0, _col1, _col2
Statistics: Num rows: 32 Data size: 5856 Basic stats: COMPLETE Column stats: COMPLETE
Statistics: Num rows: 46 Data size: 8418 Basic stats: COMPLETE Column stats: COMPLETE
File Output Operator
compressed: false
Statistics: Num rows: 32 Data size: 5856 Basic stats: COMPLETE Column stats: COMPLETE
Statistics: Num rows: 46 Data size: 8418 Basic stats: COMPLETE Column stats: COMPLETE
table:
input format: org.apache.hadoop.mapred.SequenceFileInputFormat
output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
Expand Down Expand Up @@ -922,21 +922,21 @@ STAGE PLANS:
Map Operator Tree:
TableScan
alias: x
filterExpr: (((UDFToDouble(key) < 20.0D) or (UDFToDouble(key) > 100.0D)) and key is not null) (type: boolean)
filterExpr: (UDFToDouble(key) NOT BETWEEN 20.0D AND 100.0D and key is not null) (type: boolean)
Statistics: Num rows: 25 Data size: 4375 Basic stats: COMPLETE Column stats: COMPLETE
Filter Operator
predicate: (((UDFToDouble(key) < 20.0D) or (UDFToDouble(key) > 100.0D)) and key is not null) (type: boolean)
Statistics: Num rows: 16 Data size: 2800 Basic stats: COMPLETE Column stats: COMPLETE
predicate: (UDFToDouble(key) NOT BETWEEN 20.0D AND 100.0D and key is not null) (type: boolean)
Statistics: Num rows: 23 Data size: 4025 Basic stats: COMPLETE Column stats: COMPLETE
Select Operator
expressions: key (type: string), value (type: string)
outputColumnNames: _col0, _col1
Statistics: Num rows: 16 Data size: 2800 Basic stats: COMPLETE Column stats: COMPLETE
Statistics: Num rows: 23 Data size: 4025 Basic stats: COMPLETE Column stats: COMPLETE
Reduce Output Operator
key expressions: _col0 (type: string)
null sort order: z
sort order: +
Map-reduce partition columns: _col0 (type: string)
Statistics: Num rows: 16 Data size: 2800 Basic stats: COMPLETE Column stats: COMPLETE
Statistics: Num rows: 23 Data size: 4025 Basic stats: COMPLETE Column stats: COMPLETE
value expressions: _col1 (type: string)
Execution mode: vectorized, llap
LLAP IO: all inputs
Expand Down Expand Up @@ -970,14 +970,14 @@ STAGE PLANS:
0 _col0 (type: string)
1 _col0 (type: string)
outputColumnNames: _col1, _col2, _col3
Statistics: Num rows: 32 Data size: 5856 Basic stats: COMPLETE Column stats: COMPLETE
Statistics: Num rows: 46 Data size: 8418 Basic stats: COMPLETE Column stats: COMPLETE
Select Operator
expressions: _col2 (type: string), _col3 (type: string), _col1 (type: bigint)
outputColumnNames: _col0, _col1, _col2
Statistics: Num rows: 32 Data size: 5856 Basic stats: COMPLETE Column stats: COMPLETE
Statistics: Num rows: 46 Data size: 8418 Basic stats: COMPLETE Column stats: COMPLETE
File Output Operator
compressed: false
Statistics: Num rows: 32 Data size: 5856 Basic stats: COMPLETE Column stats: COMPLETE
Statistics: Num rows: 46 Data size: 8418 Basic stats: COMPLETE Column stats: COMPLETE
table:
input format: org.apache.hadoop.mapred.SequenceFileInputFormat
output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2280,7 +2280,7 @@ WHERE "ss_customer_sk" IS NOT NULL AND "ss_sold_date_sk" IS NOT NULL) AS "t1"
INNER JOIN (SELECT "d_date_sk"
FROM (SELECT "d_date_sk", "d_year", "d_moy"
FROM "DATE_DIM") AS "t2"
WHERE ("d_moy" < 1 OR "d_moy" > 3) AND "d_year" = 1999 AND "d_date_sk" IS NOT NULL) AS "t4" ON "t1"."ss_sold_date_sk" = "t4"."d_date_sk"
WHERE "d_moy" NOT BETWEEN 1 AND 3 AND "d_year" = 1999 AND "d_date_sk" IS NOT NULL) AS "t4" ON "t1"."ss_sold_date_sk" = "t4"."d_date_sk"
hive.sql.query.fieldNames ss_customer_sk
hive.sql.query.fieldTypes int
hive.sql.query.split false
Expand Down Expand Up @@ -2316,7 +2316,7 @@ WHERE "ws_bill_customer_sk" IS NOT NULL AND "ws_sold_date_sk" IS NOT NULL) AS "t
INNER JOIN (SELECT "d_date_sk"
FROM (SELECT "d_date_sk", "d_year", "d_moy"
FROM "DATE_DIM") AS "t2"
WHERE ("d_moy" < 1 OR "d_moy" > 3) AND "d_year" = 1999 AND "d_date_sk" IS NOT NULL) AS "t4" ON "t1"."ws_sold_date_sk" = "t4"."d_date_sk"
WHERE "d_moy" NOT BETWEEN 1 AND 3 AND "d_year" = 1999 AND "d_date_sk" IS NOT NULL) AS "t4" ON "t1"."ws_sold_date_sk" = "t4"."d_date_sk"
hive.sql.query.fieldNames literalTrue,ws_bill_customer_sk
hive.sql.query.fieldTypes boolean,int
hive.sql.query.split false
Expand Down Expand Up @@ -2347,7 +2347,7 @@ WHERE "cs_ship_customer_sk" IS NOT NULL AND "cs_sold_date_sk" IS NOT NULL) AS "t
INNER JOIN (SELECT "d_date_sk"
FROM (SELECT "d_date_sk", "d_year", "d_moy"
FROM "DATE_DIM") AS "t2"
WHERE ("d_moy" < 1 OR "d_moy" > 3) AND "d_year" = 1999 AND "d_date_sk" IS NOT NULL) AS "t4" ON "t1"."cs_sold_date_sk" = "t4"."d_date_sk"
WHERE "d_moy" NOT BETWEEN 1 AND 3 AND "d_year" = 1999 AND "d_date_sk" IS NOT NULL) AS "t4" ON "t1"."cs_sold_date_sk" = "t4"."d_date_sk"
hive.sql.query.fieldNames literalTrue,cs_ship_customer_sk
hive.sql.query.fieldTypes boolean,int
hive.sql.query.split false
Expand Down Expand Up @@ -6918,7 +6918,7 @@ WHERE "ss_customer_sk" IS NOT NULL AND "ss_sold_date_sk" IS NOT NULL) AS "t1"
INNER JOIN (SELECT "d_date_sk"
FROM (SELECT "d_date_sk", "d_year", "d_moy"
FROM "DATE_DIM") AS "t2"
WHERE ("d_moy" < 1 OR "d_moy" > 3) AND "d_year" = 1999 AND "d_date_sk" IS NOT NULL) AS "t4" ON "t1"."ss_sold_date_sk" = "t4"."d_date_sk"
WHERE "d_moy" NOT BETWEEN 1 AND 3 AND "d_year" = 1999 AND "d_date_sk" IS NOT NULL) AS "t4" ON "t1"."ss_sold_date_sk" = "t4"."d_date_sk"
hive.sql.query.fieldNames ss_customer_sk
hive.sql.query.fieldTypes int
hive.sql.query.split false
Expand Down Expand Up @@ -6954,7 +6954,7 @@ WHERE "ws_bill_customer_sk" IS NOT NULL AND "ws_sold_date_sk" IS NOT NULL) AS "t
INNER JOIN (SELECT "d_date_sk"
FROM (SELECT "d_date_sk", "d_year", "d_moy"
FROM "DATE_DIM") AS "t2"
WHERE ("d_moy" < 1 OR "d_moy" > 3) AND "d_year" = 1999 AND "d_date_sk" IS NOT NULL) AS "t4" ON "t1"."ws_sold_date_sk" = "t4"."d_date_sk"
WHERE "d_moy" NOT BETWEEN 1 AND 3 AND "d_year" = 1999 AND "d_date_sk" IS NOT NULL) AS "t4" ON "t1"."ws_sold_date_sk" = "t4"."d_date_sk"
GROUP BY "t1"."ws_bill_customer_sk"
hive.sql.query.fieldNames literalTrue,ws_bill_customer_sk
hive.sql.query.fieldTypes boolean,int
Expand Down Expand Up @@ -6986,7 +6986,7 @@ WHERE "cs_ship_customer_sk" IS NOT NULL AND "cs_sold_date_sk" IS NOT NULL) AS "t
INNER JOIN (SELECT "d_date_sk"
FROM (SELECT "d_date_sk", "d_year", "d_moy"
FROM "DATE_DIM") AS "t2"
WHERE ("d_moy" < 1 OR "d_moy" > 3) AND "d_year" = 1999 AND "d_date_sk" IS NOT NULL) AS "t4" ON "t1"."cs_sold_date_sk" = "t4"."d_date_sk"
WHERE "d_moy" NOT BETWEEN 1 AND 3 AND "d_year" = 1999 AND "d_date_sk" IS NOT NULL) AS "t4" ON "t1"."cs_sold_date_sk" = "t4"."d_date_sk"
GROUP BY "t1"."cs_ship_customer_sk"
hive.sql.query.fieldNames literalTrue,cs_ship_customer_sk
hive.sql.query.fieldTypes boolean,int
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1658,7 +1658,7 @@ STAGE PLANS:
Processor Tree:
TableScan
alias: partint
filterExpr: ((hr < 12) or (hr > 14)) (type: boolean)
filterExpr: hr NOT BETWEEN 12 AND 14 (type: boolean)
Select Operator
expressions: key (type: string), value (type: string), hr (type: int)
outputColumnNames: _col0, _col1, _col2
Expand Down
Loading
Loading