Repository: hive
Updated Branches:
  refs/heads/master 86510f773 -> 9fc51b0c4


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

Signed-off-by: Ashutosh Chauhan <[email protected]>


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/9fc51b0c
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/9fc51b0c
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/9fc51b0c

Branch: refs/heads/master
Commit: 9fc51b0c4b8b0c05d79087351b345bef3b235a7b
Parents: 86510f7
Author: Yongzhi Chen <[email protected]>
Authored: Sat Aug 13 12:48:51 2016 -0700
Committer: Ashutosh Chauhan <[email protected]>
Committed: Sat Aug 13 12:48:51 2016 -0700

----------------------------------------------------------------------
 .../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/9fc51b0c/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/9fc51b0c/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/9fc51b0c/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 ####

Reply via email to