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 ####