You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by sp...@apache.org on 2016/09/28 21:03:40 UTC

[4/7] hive git commit: HIVE-14519 : Multi insert query bug (Ashutosh Chauhan via Yongzhi Chen)

HIVE-14519 : Multi insert query bug (Ashutosh Chauhan via Yongzhi Chen)

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/f23f9f2e
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/f23f9f2e
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/f23f9f2e

Branch: refs/heads/branch-2.1
Commit: f23f9f2e05facc26de488a5cedc82f7ec8d1d27d
Parents: 23c98ad
Author: Yongzhi Chen <yc...@apache.org>
Authored: Sat Aug 13 12:48:51 2016 -0700
Committer: Sergio Pena <se...@cloudera.com>
Committed: Wed Sep 28 15:46:24 2016 -0500

----------------------------------------------------------------------
 .../optimizer/physical/NullScanOptimizer.java   | 12 +++++++
 .../queries/clientpositive/inputwherefalse.q    | 15 +++++++++
 .../clientpositive/inputwherefalse.q.out        | 33 ++++++++++++++++++++
 3 files changed, 60 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/f23f9f2e/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/NullScanOptimizer.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/NullScanOptimizer.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/NullScanOptimizer.java
index 200e098..49b839a 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/NullScanOptimizer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/NullScanOptimizer.java
@@ -27,6 +27,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.apache.hadoop.hive.ql.exec.FilterOperator;
 import org.apache.hadoop.hive.ql.exec.LimitOperator;
+import org.apache.hadoop.hive.ql.exec.Operator;
 import org.apache.hadoop.hive.ql.exec.TableScanOperator;
 import org.apache.hadoop.hive.ql.lib.DefaultGraphWalker;
 import org.apache.hadoop.hive.ql.lib.Dispatcher;
@@ -90,6 +91,17 @@ public class NullScanOptimizer implements PhysicalPlanResolver {
         return null;
       }
 
+      int numOfndPeers = 0;
+      if (filter.getParentOperators() != null) {
+        for (Operator<?> fParent : filter.getParentOperators()) {
+          if (fParent.getChildOperators() != null) {
+            numOfndPeers += fParent.getChildOperators().size();
+            if (numOfndPeers > 1)
+              return null;
+          }
+        }
+      }
+
       WalkerCtx ctx = (WalkerCtx) procCtx;
       for (Node op : stack) {
         if (op instanceof TableScanOperator) {

http://git-wip-us.apache.org/repos/asf/hive/blob/f23f9f2e/ql/src/test/queries/clientpositive/inputwherefalse.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/inputwherefalse.q b/ql/src/test/queries/clientpositive/inputwherefalse.q
new file mode 100644
index 0000000..c9186e6
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/inputwherefalse.q
@@ -0,0 +1,15 @@
+From (select * from src) a
+insert overwrite directory 'target/warehouse/destemp.out/dir1/'
+select key
+where key=200 limit 1
+insert overwrite directory 'target/warehouse/destemp.out/dir2/'
+select 'header'
+where 1=2
+insert overwrite directory 'target/warehouse/destemp.out/dir3/'
+select key
+where key = 100 limit 1;
+
+dfs -cat ${system:test.warehouse.dir}/destemp.out/dir1/000000_0;
+dfs -cat ${system:test.warehouse.dir}/destemp.out/dir2/000000_0;
+dfs -cat ${system:test.warehouse.dir}/destemp.out/dir3/000000_0;
+dfs -rmr ${system:test.warehouse.dir}/destemp.out;

http://git-wip-us.apache.org/repos/asf/hive/blob/f23f9f2e/ql/src/test/results/clientpositive/inputwherefalse.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/inputwherefalse.q.out b/ql/src/test/results/clientpositive/inputwherefalse.q.out
new file mode 100644
index 0000000..ecb7300
--- /dev/null
+++ b/ql/src/test/results/clientpositive/inputwherefalse.q.out
@@ -0,0 +1,33 @@
+PREHOOK: query: From (select * from src) a
+insert overwrite directory 'target/warehouse/destemp.out/dir1/'
+select key
+where key=200 limit 1
+insert overwrite directory 'target/warehouse/destemp.out/dir2/'
+select 'header'
+where 1=2
+insert overwrite directory 'target/warehouse/destemp.out/dir3/'
+select key
+where key = 100 limit 1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: target/warehouse/destemp.out/dir1
+PREHOOK: Output: target/warehouse/destemp.out/dir2
+PREHOOK: Output: target/warehouse/destemp.out/dir3
+POSTHOOK: query: From (select * from src) a
+insert overwrite directory 'target/warehouse/destemp.out/dir1/'
+select key
+where key=200 limit 1
+insert overwrite directory 'target/warehouse/destemp.out/dir2/'
+select 'header'
+where 1=2
+insert overwrite directory 'target/warehouse/destemp.out/dir3/'
+select key
+where key = 100 limit 1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: target/warehouse/destemp.out/dir1
+POSTHOOK: Output: target/warehouse/destemp.out/dir2
+POSTHOOK: Output: target/warehouse/destemp.out/dir3
+200
+100
+#### A masked pattern was here ####