You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by jc...@apache.org on 2019/07/11 15:46:13 UTC
[hive] branch master updated: HIVE-21976: Offset should be null
instead of zero in Calcite HiveSortLimit (Jesus Camacho Rodriguez,
reviewed by Vineet Garg)
This is an automated email from the ASF dual-hosted git repository.
jcamacho pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git
The following commit(s) were added to refs/heads/master by this push:
new 7cfe729 HIVE-21976: Offset should be null instead of zero in Calcite HiveSortLimit (Jesus Camacho Rodriguez, reviewed by Vineet Garg)
7cfe729 is described below
commit 7cfe72920119b1b35efce4b920f4dae44126fcc4
Author: Jesus Camacho Rodriguez <jc...@apache.org>
AuthorDate: Tue Jul 9 17:40:57 2019 -0700
HIVE-21976: Offset should be null instead of zero in Calcite HiveSortLimit (Jesus Camacho Rodriguez, reviewed by Vineet Garg)
Close apache/hive#716
---
.../hadoop/hive/ql/parse/CalcitePlanner.java | 5 ++-
.../queries/clientpositive/external_jdbc_table4.q | 5 +++
.../clientpositive/llap/external_jdbc_table4.q.out | 45 ++++++++++++++++++++++
3 files changed, 53 insertions(+), 2 deletions(-)
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java
index cce87b4..6f42183 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/CalcitePlanner.java
@@ -4112,11 +4112,12 @@ public class CalcitePlanner extends SemanticAnalyzer {
QBParseInfo qbp = getQBParseInfo(qb);
SimpleEntry<Integer,Integer> entry =
qbp.getDestToLimit().get(qbp.getClauseNames().iterator().next());
- Integer offset = (entry == null) ? 0 : entry.getKey();
+ Integer offset = (entry == null) ? null : entry.getKey();
Integer fetch = (entry == null) ? null : entry.getValue();
if (fetch != null) {
- RexNode offsetRN = cluster.getRexBuilder().makeExactLiteral(BigDecimal.valueOf(offset));
+ RexNode offsetRN = (offset == null || offset == 0) ?
+ null : cluster.getRexBuilder().makeExactLiteral(BigDecimal.valueOf(offset));
RexNode fetchRN = cluster.getRexBuilder().makeExactLiteral(BigDecimal.valueOf(fetch));
RelTraitSet traitSet = cluster.traitSetOf(HiveRelNode.CONVENTION);
RelCollation canonizedCollation = traitSet.canonize(RelCollations.EMPTY);
diff --git a/ql/src/test/queries/clientpositive/external_jdbc_table4.q b/ql/src/test/queries/clientpositive/external_jdbc_table4.q
index 8145366..10e2253 100644
--- a/ql/src/test/queries/clientpositive/external_jdbc_table4.q
+++ b/ql/src/test/queries/clientpositive/external_jdbc_table4.q
@@ -124,6 +124,11 @@ SELECT db1_ext_auth1.ikey, b.ikey * 2 FROM db1_ext_auth1 JOIN (SELECT * FROM db1
SELECT db1_ext_auth1.ikey, b.ikey * 2 FROM db1_ext_auth1 JOIN (SELECT * FROM db1_ext_auth1) b;
+EXPLAIN
+SELECT db1_ext_auth1.ikey FROM db1_ext_auth1 LIMIT 10;
+
+SELECT db1_ext_auth1.ikey FROM db1_ext_auth1 LIMIT 10;
+
DROP TABLE db1_ext_auth1;
DROP TABLE db2_ext_auth2;
DROP TABLE db1_ext_auth2;
diff --git a/ql/src/test/results/clientpositive/llap/external_jdbc_table4.q.out b/ql/src/test/results/clientpositive/llap/external_jdbc_table4.q.out
index 29866c2..c0e6851 100644
--- a/ql/src/test/results/clientpositive/llap/external_jdbc_table4.q.out
+++ b/ql/src/test/results/clientpositive/llap/external_jdbc_table4.q.out
@@ -533,6 +533,51 @@ POSTHOOK: Input: default@db1_ext_auth1
44 200
44 40
44 88
+PREHOOK: query: EXPLAIN
+SELECT db1_ext_auth1.ikey FROM db1_ext_auth1 LIMIT 10
+PREHOOK: type: QUERY
+PREHOOK: Input: default@db1_ext_auth1
+#### A masked pattern was here ####
+POSTHOOK: query: EXPLAIN
+SELECT db1_ext_auth1.ikey FROM db1_ext_auth1 LIMIT 10
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@db1_ext_auth1
+#### A masked pattern was here ####
+STAGE DEPENDENCIES:
+ Stage-0 is a root stage
+
+STAGE PLANS:
+ Stage: Stage-0
+ Fetch Operator
+ limit: -1
+ Processor Tree:
+ TableScan
+ alias: db1_ext_auth1
+ properties:
+ hive.sql.query SELECT "ikey"
+FROM (SELECT "IKEY" AS "ikey"
+FROM "EXTERNAL_JDBC_SIMPLE_DERBY2_TABLE1"
+FETCH NEXT 10 ROWS ONLY) AS "t0"
+ hive.sql.query.fieldNames ikey
+ hive.sql.query.fieldTypes int
+ hive.sql.query.split false
+ Select Operator
+ expressions: ikey (type: int)
+ outputColumnNames: _col0
+ ListSink
+
+PREHOOK: query: SELECT db1_ext_auth1.ikey FROM db1_ext_auth1 LIMIT 10
+PREHOOK: type: QUERY
+PREHOOK: Input: default@db1_ext_auth1
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT db1_ext_auth1.ikey FROM db1_ext_auth1 LIMIT 10
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@db1_ext_auth1
+#### A masked pattern was here ####
+-20
+100
+20
+44
PREHOOK: query: DROP TABLE db1_ext_auth1
PREHOOK: type: DROPTABLE
PREHOOK: Input: default@db1_ext_auth1