You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2016/08/19 16:13:48 UTC
hive git commit: HIVE-14562 : CBO (Calcite Return Path) Wrong results
for limit + offset (Ashutosh Chauhan via Jesus Camacho Rodriguez)
Signed-off-by: Ashutosh Chauhan
Repository: hive
Updated Branches:
refs/heads/master 20a67b334 -> b04f7ef39
HIVE-14562 : CBO (Calcite Return Path) Wrong results for limit + offset (Ashutosh Chauhan via Jesus Camacho Rodriguez)
Signed-off-by: Ashutosh Chauhan <ha...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/b04f7ef3
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/b04f7ef3
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/b04f7ef3
Branch: refs/heads/master
Commit: b04f7ef3991f8575c96d8946d6aeecb71cdc98bc
Parents: 20a67b3
Author: Ashutosh Chauhan <ha...@apache.org>
Authored: Fri Aug 19 09:12:34 2016 -0700
Committer: Ashutosh Chauhan <ha...@apache.org>
Committed: Fri Aug 19 09:12:34 2016 -0700
----------------------------------------------------------------------
.../calcite/translator/HiveOpConverter.java | 3 ++-
ql/src/test/queries/clientpositive/offset_limit.q | 5 +++++
.../results/clientpositive/offset_limit.q.out | 18 ++++++++++++++++++
3 files changed, 25 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hive/blob/b04f7ef3/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/HiveOpConverter.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/HiveOpConverter.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/HiveOpConverter.java
index 422a507..8d56595 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/HiveOpConverter.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/calcite/translator/HiveOpConverter.java
@@ -490,7 +490,8 @@ public class HiveOpConverter {
// 2. If we need to generate limit
if (sortRel.fetch != null) {
int limit = RexLiteral.intValue(sortRel.fetch);
- LimitDesc limitDesc = new LimitDesc(limit);
+ int offset = sortRel.offset == null ? 0 : RexLiteral.intValue(sortRel.offset);
+ LimitDesc limitDesc = new LimitDesc(offset,limit);
// Because we are visiting the operators recursively, the last limit op that
// calls the following function will set the global property.
if (this.semanticAnalyzer != null && semanticAnalyzer.getQB() != null
http://git-wip-us.apache.org/repos/asf/hive/blob/b04f7ef3/ql/src/test/queries/clientpositive/offset_limit.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/offset_limit.q b/ql/src/test/queries/clientpositive/offset_limit.q
index 80d559a..8f50f30 100644
--- a/ql/src/test/queries/clientpositive/offset_limit.q
+++ b/ql/src/test/queries/clientpositive/offset_limit.q
@@ -11,6 +11,11 @@ SELECT src.key, sum(substr(src.value,5)) FROM src GROUP BY src.key ORDER BY src.
SELECT src.key, sum(substr(src.value,5)) FROM src GROUP BY src.key ORDER BY src.key LIMIT 100 OFFSET 300;
+set hive.cbo.returnpath.hiveop=true;
+
+SELECT src.key, sum(substr(src.value,5)) FROM src GROUP BY src.key ORDER BY src.key LIMIT 10,10;
+
+set hive.cbo.returnpath.hiveop=false;
set hive.cbo.enable=false;
SELECT src.key, sum(substr(src.value,5)) FROM src GROUP BY src.key ORDER BY src.key LIMIT 10,10;
http://git-wip-us.apache.org/repos/asf/hive/blob/b04f7ef3/ql/src/test/results/clientpositive/offset_limit.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/offset_limit.q.out b/ql/src/test/results/clientpositive/offset_limit.q.out
index 05f9a42..51f74e3 100644
--- a/ql/src/test/results/clientpositive/offset_limit.q.out
+++ b/ql/src/test/results/clientpositive/offset_limit.q.out
@@ -186,6 +186,24 @@ POSTHOOK: Input: default@src
128 384.0
129 258.0
131 131.0
+PREHOOK: query: SELECT src.key, sum(substr(src.value,5)) FROM src GROUP BY src.key ORDER BY src.key LIMIT 10,10
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT src.key, sum(substr(src.value,5)) FROM src GROUP BY src.key ORDER BY src.key LIMIT 10,10
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+#### A masked pattern was here ####
+116 116.0
+118 236.0
+119 357.0
+12 24.0
+120 240.0
+125 250.0
+126 126.0
+128 384.0
+129 258.0
+131 131.0
PREHOOK: query: SELECT src.key, sum(substr(src.value,5)) FROM src GROUP BY src.key ORDER BY src.key LIMIT 0,10
PREHOOK: type: QUERY
PREHOOK: Input: default@src