http://git-wip-us.apache.org/repos/asf/hive/blob/a37827ec/ql/src/test/queries/clientpositive/vector_join30.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/vector_join30.q 
b/ql/src/test/queries/clientpositive/vector_join30.q
index 9672a47..74c4433 100644
--- a/ql/src/test/queries/clientpositive/vector_join30.q
+++ b/ql/src/test/queries/clientpositive/vector_join30.q
@@ -11,7 +11,7 @@ SET hive.auto.convert.join.noconditionaltask.size=1000000000;
 
 CREATE TABLE orcsrc_n0 STORED AS ORC AS SELECT * FROM src;
 
-explain vectorization expression
+explain vectorization detail
 FROM 
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by key) x
 JOIN
@@ -19,14 +19,14 @@ JOIN
 ON (x.key = Y.key)
 select sum(hash(Y.key,Y.value));
 
-FROM 
-(SELECT orcsrc_n0.* FROM orcsrc_n0 sort by key) x
-JOIN 
-(SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Y
-ON (x.key = Y.key)
-select sum(hash(Y.key,Y.value));
+-- FROM 
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by key) x
+-- JOIN 
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Y
+-- ON (x.key = Y.key)
+-- select sum(hash(Y.key,Y.value));
 
-explain vectorization expression
+explain vectorization detail
 FROM 
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by key) x
 LEFT OUTER JOIN
@@ -34,116 +34,238 @@ LEFT OUTER JOIN
 ON (x.key = Y.key)
 select sum(hash(Y.key,Y.value));
 
+-- FROM 
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by key) x
+-- LEFT OUTER JOIN 
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Y
+-- ON (x.key = Y.key)
+-- select sum(hash(Y.key,Y.value));
+
+explain vectorization detail
 FROM 
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by key) x
-LEFT OUTER JOIN 
+RIGHT OUTER JOIN
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Y
 ON (x.key = Y.key)
 select sum(hash(Y.key,Y.value));
 
-explain vectorization expression
+-- FROM 
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by key) x
+-- RIGHT OUTER JOIN 
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Y
+-- ON (x.key = Y.key)
+-- select sum(hash(Y.key,Y.value));
+
+explain vectorization detail
 FROM 
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by key) x
-RIGHT OUTER JOIN
+FULL OUTER JOIN
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Y
 ON (x.key = Y.key)
 select sum(hash(Y.key,Y.value));
 
+-- FROM 
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by key) x
+-- FULL OUTER JOIN 
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Y
+-- ON (x.key = Y.key)
+-- select sum(hash(Y.key,Y.value));
+
+explain vectorization detail
 FROM 
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by key) x
-RIGHT OUTER JOIN 
+JOIN
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Y
 ON (x.key = Y.key)
+JOIN
+(SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Z
+ON (x.key = Z.key)
 select sum(hash(Y.key,Y.value));
 
-explain vectorization expression
+-- FROM
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by key) x
+-- JOIN
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Y
+-- ON (x.key = Y.key)
+-- JOIN
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Z
+-- ON (x.key = Z.key)
+-- select sum(hash(Y.key,Y.value));
+
+explain vectorization detail
 FROM 
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by key) x
 JOIN
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Y
 ON (x.key = Y.key)
-JOIN
+LEFT OUTER JOIN
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Z
 ON (x.key = Z.key)
 select sum(hash(Y.key,Y.value));
 
-FROM
+-- FROM
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by key) x
+-- JOIN
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Y
+-- ON (x.key = Y.key)
+-- LEFT OUTER JOIN
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Z
+-- ON (x.key = Z.key)
+-- select sum(hash(Y.key,Y.value));
+
+explain vectorization detail
+FROM 
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by key) x
-JOIN
+LEFT OUTER JOIN
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Y
 ON (x.key = Y.key)
-JOIN
+LEFT OUTER JOIN
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Z
 ON (x.key = Z.key)
 select sum(hash(Y.key,Y.value));
 
-explain vectorization expression
+-- FROM
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by key) x
+-- LEFT OUTER JOIN
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Y
+-- ON (x.key = Y.key)
+-- LEFT OUTER JOIN
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Z
+-- ON (x.key = Z.key)
+-- select sum(hash(Y.key,Y.value));
+
+explain vectorization detail
 FROM 
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by key) x
-JOIN
+LEFT OUTER JOIN
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Y
 ON (x.key = Y.key)
-LEFT OUTER JOIN
+RIGHT OUTER JOIN
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Z
 ON (x.key = Z.key)
 select sum(hash(Y.key,Y.value));
 
-FROM
+-- FROM
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by key) x
+-- LEFT OUTER JOIN
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Y
+-- ON (x.key = Y.key)
+-- RIGHT OUTER JOIN
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Z
+-- ON (x.key = Z.key)
+-- select sum(hash(Y.key,Y.value));
+
+explain vectorization detail
+FROM 
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by key) x
-JOIN
+RIGHT OUTER JOIN
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Y
 ON (x.key = Y.key)
-LEFT OUTER JOIN
+RIGHT OUTER JOIN
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Z
 ON (x.key = Z.key)
 select sum(hash(Y.key,Y.value));
 
-explain vectorization expression
+-- FROM
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by key) x
+-- RIGHT OUTER JOIN
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Y
+-- ON (x.key = Y.key)
+-- RIGHT OUTER JOIN
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Z
+-- ON (x.key = Z.key)
+-- select sum(hash(Y.key,Y.value));
+
+-----------------
+
+explain vectorization detail
 FROM 
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by key) x
-LEFT OUTER JOIN
+JOIN
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Y
 ON (x.key = Y.key)
-LEFT OUTER JOIN
+FULL OUTER JOIN
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Z
 ON (x.key = Z.key)
 select sum(hash(Y.key,Y.value));
 
-FROM
+-- FROM
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by key) x
+-- JOIN
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Y
+-- ON (x.key = Y.key)
+-- FULL OUTER JOIN
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Z
+-- ON (x.key = Z.key)
+-- select sum(hash(Y.key,Y.value));
+
+explain vectorization detail
+FROM 
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by key) x
-LEFT OUTER JOIN
+FULL OUTER JOIN
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Y
 ON (x.key = Y.key)
-LEFT OUTER JOIN
+FULL OUTER JOIN
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Z
 ON (x.key = Z.key)
 select sum(hash(Y.key,Y.value));
 
-explain vectorization expression
+-- FROM
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by key) x
+-- FULL OUTER JOIN
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Y
+-- ON (x.key = Y.key)
+-- FULL OUTER JOIN
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Z
+-- ON (x.key = Z.key)
+-- select sum(hash(Y.key,Y.value));
+
+explain vectorization detail
 FROM 
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by key) x
-LEFT OUTER JOIN
+FULL OUTER JOIN
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Y
 ON (x.key = Y.key)
-RIGHT OUTER JOIN
+LEFT OUTER JOIN
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Z
 ON (x.key = Z.key)
 select sum(hash(Y.key,Y.value));
 
-FROM
+-- FROM
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by key) x
+-- FULL OUTER JOIN
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Y
+-- ON (x.key = Y.key)
+-- LEFT OUTER JOIN
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Z
+-- ON (x.key = Z.key)
+-- select sum(hash(Y.key,Y.value));
+
+explain vectorization detail
+FROM 
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by key) x
 LEFT OUTER JOIN
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Y
 ON (x.key = Y.key)
-RIGHT OUTER JOIN
+FULL OUTER JOIN
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Z
 ON (x.key = Z.key)
 select sum(hash(Y.key,Y.value));
 
-explain vectorization expression
+-- FROM
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by key) x
+-- LEFT OUTER JOIN
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Y
+-- ON (x.key = Y.key)
+-- FULL OUTER JOIN
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Z
+-- ON (x.key = Z.key)
+-- select sum(hash(Y.key,Y.value));
+
+explain vectorization detail
 FROM 
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by key) x
-RIGHT OUTER JOIN
+FULL OUTER JOIN
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Y
 ON (x.key = Y.key)
 RIGHT OUTER JOIN
@@ -151,12 +273,33 @@ RIGHT OUTER JOIN
 ON (x.key = Z.key)
 select sum(hash(Y.key,Y.value));
 
-FROM
+-- FROM
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by key) x
+-- FULL OUTER JOIN
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Y
+-- ON (x.key = Y.key)
+-- RIGHT OUTER JOIN
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Z
+-- ON (x.key = Z.key)
+-- select sum(hash(Y.key,Y.value));
+
+explain vectorization detail
+FROM 
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by key) x
 RIGHT OUTER JOIN
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Y
 ON (x.key = Y.key)
-RIGHT OUTER JOIN
+FULL OUTER JOIN
 (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Z
 ON (x.key = Z.key)
 select sum(hash(Y.key,Y.value));
+
+-- FROM
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by key) x
+-- RIGHT OUTER JOIN
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Y
+-- ON (x.key = Y.key)
+-- FULL OUTER JOIN
+-- (SELECT orcsrc_n0.* FROM orcsrc_n0 sort by value) Z
+-- ON (x.key = Z.key)
+-- select sum(hash(Y.key,Y.value));

http://git-wip-us.apache.org/repos/asf/hive/blob/a37827ec/ql/src/test/queries/clientpositive/vector_join_filters.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/vector_join_filters.q 
b/ql/src/test/queries/clientpositive/vector_join_filters.q
index 88458f8..b9f3740 100644
--- a/ql/src/test/queries/clientpositive/vector_join_filters.q
+++ b/ql/src/test/queries/clientpositive/vector_join_filters.q
@@ -14,7 +14,10 @@ CREATE TABLE myinput1_n1 STORED AS ORC AS SELECT * FROM 
myinput1_txt_n0;
 
 SELECT sum(hash(a.key,a.value,b.key,b.value))  FROM myinput1_n1 a JOIN 
myinput1_n1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key > 40 
AND b.value > 50 AND b.key = b.value;
 SELECT sum(hash(a.key,a.value,b.key,b.value))  FROM myinput1_n1 a LEFT OUTER 
JOIN myinput1_n1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key 
> 40 AND b.value > 50 AND b.key = b.value;
+
+EXPLAIN VECTORIZATION OPERATOR
 SELECT sum(hash(a.key,a.value,b.key,b.value))  FROM myinput1_n1 a RIGHT OUTER 
JOIN myinput1_n1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND b.key 
> 40 AND b.value > 50 AND b.key = b.value;
+-- SELECT sum(hash(a.key,a.value,b.key,b.value))  FROM myinput1_n1 a RIGHT 
OUTER JOIN myinput1_n1 b on a.key > 40 AND a.value > 50 AND a.key = a.value AND 
b.key > 40 AND b.value > 50 AND b.key = b.value;
 
 SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1_n1 a JOIN 
myinput1_n1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key = 
a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value;
 SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1_n1 a JOIN 
myinput1_n1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = 
a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value;
@@ -26,10 +29,21 @@ SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM 
myinput1_n1 a LEFT OUTER JOIN
 SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1_n1 a LEFT OUTER 
JOIN myinput1_n1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = 
a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value;
 SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1_n1 a LEFT OUTER 
JOIN myinput1_n1 b ON a.key = b.key and a.value=b.value AND a.key > 40 AND 
a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = 
b.value;
 
+EXPLAIN VECTORIZATION OPERATOR
 SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1_n1 a RIGHT OUTER 
JOIN myinput1_n1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND a.key 
= a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value;
+-- SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1_n1 a RIGHT 
OUTER JOIN myinput1_n1 b ON a.key = b.value AND a.key > 40 AND a.value > 50 AND 
a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value;
+
+EXPLAIN VECTORIZATION OPERATOR
 SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1_n1 a RIGHT OUTER 
JOIN myinput1_n1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND a.key = 
a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value;
+-- SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1_n1 a RIGHT 
OUTER JOIN myinput1_n1 b ON a.key = b.key AND a.key > 40 AND a.value > 50 AND 
a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value;
+
+EXPLAIN VECTORIZATION OPERATOR
 SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1_n1 a RIGHT OUTER 
JOIN myinput1_n1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 AND 
a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value;
+-- SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1_n1 a RIGHT 
OUTER JOIN myinput1_n1 b ON a.value = b.value AND a.key > 40 AND a.value > 50 
AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value;
+
+EXPLAIN VECTORIZATION OPERATOR
 SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1_n1 a RIGHT OUTER 
JOIN myinput1_n1 b ON a.key=b.key and a.value = b.value AND a.key > 40 AND 
a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = 
b.value;
+-- SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1_n1 a RIGHT 
OUTER JOIN myinput1_n1 b ON a.key=b.key and a.value = b.value AND a.key > 40 
AND a.value > 50 AND a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key 
= b.value;
 
 SELECT sum(hash(a.key,a.value,b.key,b.value)) from myinput1_n1 a LEFT OUTER 
JOIN myinput1_n1 b ON (a.value=b.value AND a.key > 40 AND a.value > 50 AND 
a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) RIGHT 
OUTER JOIN myinput1_n1 c ON (b.value=c.value AND c.key > 40 AND c.value > 50 
AND c.key = c.value AND b.key > 40 AND b.value > 50 AND b.key = b.value);
 SELECT sum(hash(a.key,a.value,b.key,b.value)) from myinput1_n1 a RIGHT OUTER 
JOIN myinput1_n1 b ON (a.value=b.value AND a.key > 40 AND a.value > 50 AND 
a.key = a.value AND b.key > 40 AND b.value > 50 AND b.key = b.value) LEFT OUTER 
JOIN myinput1_n1 c ON (b.value=c.value AND c.key > 40 AND c.value > 50 AND 
c.key = c.value AND b.key > 40 AND b.value > 50 AND b.key = b.value);

http://git-wip-us.apache.org/repos/asf/hive/blob/a37827ec/ql/src/test/queries/clientpositive/vector_join_nulls.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/vector_join_nulls.q 
b/ql/src/test/queries/clientpositive/vector_join_nulls.q
index 3e8df9a..f87dc44 100644
--- a/ql/src/test/queries/clientpositive/vector_join_nulls.q
+++ b/ql/src/test/queries/clientpositive/vector_join_nulls.q
@@ -14,7 +14,11 @@ CREATE TABLE myinput1_n4 STORED AS ORC AS SELECT * FROM 
myinput1_txt_n1;
 
 SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1_n4 a JOIN 
myinput1_n4 b;
 SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1_n4 a LEFT OUTER 
JOIN myinput1_n4 b;
+
+EXPLAIN VECTORIZATION OPERATOR
 SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1_n4 a RIGHT OUTER 
JOIN myinput1_n4 b;
+-- SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1_n4 a RIGHT 
OUTER JOIN myinput1_n4 b;
+
 SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1_n4 a JOIN 
myinput1_n4 b ON a.key = b.value;
 SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1_n4 a JOIN 
myinput1_n4 b ON a.key = b.key;
 SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1_n4 a JOIN 
myinput1_n4 b ON a.value = b.value;
@@ -23,9 +27,21 @@ SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM 
myinput1_n4 a LEFT OUTER JOIN
 SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1_n4 a LEFT OUTER 
JOIN myinput1_n4 b ON a.value = b.value;
 SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1_n4 a LEFT OUTER 
JOIN myinput1_n4 b ON a.key = b.key;
 SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1_n4 a LEFT OUTER 
JOIN myinput1_n4 b ON a.key = b.key and a.value=b.value;
+
+EXPLAIN VECTORIZATION OPERATOR
 SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1_n4 a RIGHT OUTER 
JOIN myinput1_n4 b ON a.key = b.value;
+-- SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1_n4 a RIGHT 
OUTER JOIN myinput1_n4 b ON a.key = b.value;
+
+EXPLAIN VECTORIZATION OPERATOR
 SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1_n4 a RIGHT OUTER 
JOIN myinput1_n4 b ON a.key = b.key;
+-- SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1_n4 a RIGHT 
OUTER JOIN myinput1_n4 b ON a.key = b.key;
+
+EXPLAIN VECTORIZATION OPERATOR
 SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1_n4 a RIGHT OUTER 
JOIN myinput1_n4 b ON a.value = b.value;
+-- SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1_n4 a RIGHT 
OUTER JOIN myinput1_n4 b ON a.value = b.value;
+
+EXPLAIN VECTORIZATION OPERATOR
+-- SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1_n4 a RIGHT 
OUTER JOIN myinput1_n4 b ON a.key=b.key and a.value = b.value;
 SELECT sum(hash(a.key,a.value,b.key,b.value)) FROM myinput1_n4 a RIGHT OUTER 
JOIN myinput1_n4 b ON a.key=b.key and a.value = b.value;
 
 SELECT sum(hash(a.key,a.value,b.key,b.value)) from myinput1_n4 a LEFT OUTER 
JOIN myinput1_n4 b ON (a.value=b.value) RIGHT OUTER JOIN myinput1_n4 c ON 
(b.value=c.value);

http://git-wip-us.apache.org/repos/asf/hive/blob/a37827ec/ql/src/test/queries/clientpositive/vector_left_outer_join2.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/vector_left_outer_join2.q 
b/ql/src/test/queries/clientpositive/vector_left_outer_join2.q
index 3e5ec7e..84f656b 100644
--- a/ql/src/test/queries/clientpositive/vector_left_outer_join2.q
+++ b/ql/src/test/queries/clientpositive/vector_left_outer_join2.q
@@ -1,3 +1,4 @@
+set hive.cli.print.header=true;
 set hive.mapred.mode=nonstrict;
 set hive.explain.user=false;
 set hive.fetch.task.conversion=none;
@@ -20,14 +21,14 @@ INSERT INTO TABLE TJOIN2 SELECT * from TJOIN2STAGE;
 
 set hive.vectorized.execution.enabled=false;
 set hive.mapjoin.hybridgrace.hashtable=false;
-explain vectorization expression
+explain vectorization detail
 select tjoin1.rnum, tjoin1.c1, tjoin1.c2, tjoin2.c2 as c2j2 from tjoin1 left 
outer join tjoin2 on ( tjoin1.c1 = tjoin2.c1 and tjoin1.c2 > 15 );
 
 select tjoin1.rnum, tjoin1.c1, tjoin1.c2, tjoin2.c2 as c2j2 from tjoin1 left 
outer join tjoin2 on ( tjoin1.c1 = tjoin2.c1 and tjoin1.c2 > 15 );
 
 set hive.vectorized.execution.enabled=false;
 set hive.mapjoin.hybridgrace.hashtable=true;
-explain
+explain vectorization detail
 select tjoin1.rnum, tjoin1.c1, tjoin1.c2, tjoin2.c2 as c2j2 from tjoin1 left 
outer join tjoin2 on ( tjoin1.c1 = tjoin2.c1 and tjoin1.c2 > 15 );
 
 select tjoin1.rnum, tjoin1.c1, tjoin1.c2, tjoin2.c2 as c2j2 from tjoin1 left 
outer join tjoin2 on ( tjoin1.c1 = tjoin2.c1 and tjoin1.c2 > 15 );
@@ -36,7 +37,7 @@ select tjoin1.rnum, tjoin1.c1, tjoin1.c2, tjoin2.c2 as c2j2 
from tjoin1 left out
 set hive.vectorized.execution.enabled=true;
 set hive.mapjoin.hybridgrace.hashtable=false;
 SET hive.vectorized.execution.mapjoin.native.enabled=false;
-explain vectorization expression
+explain vectorization detail
 select tjoin1.rnum, tjoin1.c1, tjoin1.c2, tjoin2.c2 as c2j2 from tjoin1 left 
outer join tjoin2 on ( tjoin1.c1 = tjoin2.c1 and tjoin1.c2 > 15 );
 
 select tjoin1.rnum, tjoin1.c1, tjoin1.c2, tjoin2.c2 as c2j2 from tjoin1 left 
outer join tjoin2 on ( tjoin1.c1 = tjoin2.c1 and tjoin1.c2 > 15 );
@@ -44,7 +45,7 @@ select tjoin1.rnum, tjoin1.c1, tjoin1.c2, tjoin2.c2 as c2j2 
from tjoin1 left out
 set hive.vectorized.execution.enabled=true;
 set hive.mapjoin.hybridgrace.hashtable=true;
 SET hive.vectorized.execution.mapjoin.native.enabled=false;
-explain vectorization expression
+explain vectorization detail
 select tjoin1.rnum, tjoin1.c1, tjoin1.c2, tjoin2.c2 as c2j2 from tjoin1 left 
outer join tjoin2 on ( tjoin1.c1 = tjoin2.c1 and tjoin1.c2 > 15 );
 
 select tjoin1.rnum, tjoin1.c1, tjoin1.c2, tjoin2.c2 as c2j2 from tjoin1 left 
outer join tjoin2 on ( tjoin1.c1 = tjoin2.c1 and tjoin1.c2 > 15 );
@@ -52,7 +53,7 @@ select tjoin1.rnum, tjoin1.c1, tjoin1.c2, tjoin2.c2 as c2j2 
from tjoin1 left out
 set hive.vectorized.execution.enabled=true;
 set hive.mapjoin.hybridgrace.hashtable=false;
 SET hive.vectorized.execution.mapjoin.native.enabled=true;
-explain vectorization expression
+explain vectorization detail
 select tjoin1.rnum, tjoin1.c1, tjoin1.c2, tjoin2.c2 as c2j2 from tjoin1 left 
outer join tjoin2 on ( tjoin1.c1 = tjoin2.c1 and tjoin1.c2 > 15 );
 
 select tjoin1.rnum, tjoin1.c1, tjoin1.c2, tjoin2.c2 as c2j2 from tjoin1 left 
outer join tjoin2 on ( tjoin1.c1 = tjoin2.c1 and tjoin1.c2 > 15 );
@@ -60,7 +61,7 @@ select tjoin1.rnum, tjoin1.c1, tjoin1.c2, tjoin2.c2 as c2j2 
from tjoin1 left out
 set hive.vectorized.execution.enabled=true;
 set hive.mapjoin.hybridgrace.hashtable=true;
 SET hive.vectorized.execution.mapjoin.native.enabled=true;
-explain vectorization expression
+explain vectorization detail
 select tjoin1.rnum, tjoin1.c1, tjoin1.c2, tjoin2.c2 as c2j2 from tjoin1 left 
outer join tjoin2 on ( tjoin1.c1 = tjoin2.c1 and tjoin1.c2 > 15 );
 
 select tjoin1.rnum, tjoin1.c1, tjoin1.c2, tjoin2.c2 as c2j2 from tjoin1 left 
outer join tjoin2 on ( tjoin1.c1 = tjoin2.c1 and tjoin1.c2 > 15 );
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hive/blob/a37827ec/ql/src/test/queries/clientpositive/vector_leftsemi_mapjoin.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/vector_leftsemi_mapjoin.q 
b/ql/src/test/queries/clientpositive/vector_leftsemi_mapjoin.q
index 6ecfa1a..f9b4222 100644
--- a/ql/src/test/queries/clientpositive/vector_leftsemi_mapjoin.q
+++ b/ql/src/test/queries/clientpositive/vector_leftsemi_mapjoin.q
@@ -4,6 +4,7 @@ set hive.fetch.task.conversion=none;
 set hive.auto.convert.join=true;
 set hive.auto.convert.join.noconditionaltask=true;
 set hive.auto.convert.join.noconditionaltask.size=10000;
+SET hive.merge.nway.joins=false;
 
 -- SORT_QUERY_RESULTS
 
@@ -27,167 +28,190 @@ select * from t4_n19;
 set hive.vectorized.execution.enabled=false;
 set hive.mapjoin.hybridgrace.hashtable=false;
 
-explain vectorization only summary
-
+explain vectorization expression
 select * from t1_n148 a left semi join t2_n87 b on a.key=b.key sort by a.key, 
a.value;
 select * from t1_n148 a left semi join t2_n87 b on a.key=b.key sort by a.key, 
a.value;
 
-explain vectorization only summary
+explain vectorization expression
 select * from t2_n87 a left semi join t1_n148 b on b.key=a.key sort by a.key, 
a.value;
 select * from t2_n87 a left semi join t1_n148 b on b.key=a.key sort by a.key, 
a.value;
 
-explain vectorization only summary
+explain vectorization expression
 select * from t1_n148 a left semi join t4_n19 b on b.key=a.key sort by a.key, 
a.value;
 select * from t1_n148 a left semi join t4_n19 b on b.key=a.key sort by a.key, 
a.value;
 
-explain vectorization only summary
+explain vectorization expression
 select a.value from t1_n148 a left semi join t3_n35 b on (b.key = a.key and 
b.key < '15') sort by a.value;
 select a.value from t1_n148 a left semi join t3_n35 b on (b.key = a.key and 
b.key < '15') sort by a.value;
 
-explain vectorization only summary
+explain vectorization expression
 select * from t1_n148 a left semi join t2_n87 b on a.key = b.key and b.value < 
"val_10" sort by a.key, a.value;
 select * from t1_n148 a left semi join t2_n87 b on a.key = b.key and b.value < 
"val_10" sort by a.key, a.value;
 
-explain vectorization only summary
+explain vectorization expression
 select a.value from t1_n148 a left semi join (select key from t3_n35 where key 
> 5) b on a.key = b.key sort by a.value;
 select a.value from t1_n148 a left semi join (select key from t3_n35 where key 
> 5) b on a.key = b.key sort by a.value;
 
-explain vectorization only summary
+explain vectorization expression
 select a.value from t1_n148 a left semi join (select key , value from t2_n87 
where key > 5) b on a.key = b.key and b.value <= 'val_20' sort by a.value ;
 select a.value from t1_n148 a left semi join (select key , value from t2_n87 
where key > 5) b on a.key = b.key and b.value <= 'val_20' sort by a.value ;
 
-explain vectorization only summary
+explain vectorization expression
 select * from t2_n87 a left semi join (select key , value from t1_n148 where 
key > 2) b on a.key = b.key sort by a.key, a.value;
 select * from t2_n87 a left semi join (select key , value from t1_n148 where 
key > 2) b on a.key = b.key sort by a.key, a.value;
 
-explain vectorization only summary
+explain vectorization expression
 select /*+ mapjoin(b) */ a.key from t3_n35 a left semi join t1_n148 b on a.key 
= b.key sort by a.key;
 select /*+ mapjoin(b) */ a.key from t3_n35 a left semi join t1_n148 b on a.key 
= b.key sort by a.key;
 
-explain vectorization only summary
+explain vectorization expression
 select * from t1_n148 a left semi join t2_n87 b on a.key = 2*b.key sort by 
a.key, a.value;
 select * from t1_n148 a left semi join t2_n87 b on a.key = 2*b.key sort by 
a.key, a.value;
 
-explain vectorization only summary
+explain vectorization expression
 select * from t1_n148 a join t2_n87 b on a.key = b.key left semi join t3_n35 c 
on b.key = c.key sort by a.key, a.value;
 select * from t1_n148 a join t2_n87 b on a.key = b.key left semi join t3_n35 c 
on b.key = c.key sort by a.key, a.value;
  
-explain vectorization only summary
+explain vectorization expression
 select * from t3_n35 a left semi join t1_n148 b on a.key = b.key and 
a.value=b.value sort by a.key, a.value;
 select * from t3_n35 a left semi join t1_n148 b on a.key = b.key and 
a.value=b.value sort by a.key, a.value;
 
-explain vectorization only summary
+explain vectorization expression
 select /*+ mapjoin(b, c) */ a.key from t3_n35 a left semi join t1_n148 b on 
a.key = b.key left semi join t2_n87 c on a.key = c.key sort by a.key;
 select /*+ mapjoin(b, c) */ a.key from t3_n35 a left semi join t1_n148 b on 
a.key = b.key left semi join t2_n87 c on a.key = c.key sort by a.key;
 
-explain vectorization only summary
+explain vectorization expression
 select a.key from t3_n35 a left outer join t1_n148 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
 select a.key from t3_n35 a left outer join t1_n148 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
 
-explain vectorization only summary
+SET hive.mapjoin.full.outer=false;
+explain vectorization expression
 select a.key from t1_n148 a full outer join t3_n35 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
 select a.key from t1_n148 a full outer join t3_n35 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
 
-explain vectorization only summary
+SET hive.mapjoin.full.outer=true;
+explain vectorization expression
+select a.key from t1_n148 a full outer join t3_n35 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
+select a.key from t1_n148 a full outer join t3_n35 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
+
+-- Verify this works (FULL OUTER MapJoin is not enabled for N-way)
+SET hive.merge.nway.joins=true;
+explain vectorization expression
+select a.key from t1_n148 a full outer join t3_n35 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
+select a.key from t1_n148 a full outer join t3_n35 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
+SET hive.merge.nway.joins=false;
+
+explain vectorization expression
 select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key left outer 
join t1_n148 c on a.key = c.key sort by a.key;
 select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key left outer 
join t1_n148 c on a.key = c.key sort by a.key;
 
-explain vectorization only summary
-select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key right 
outer join t1_n148 c on a.key = c.key sort by a.key;
-select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key right 
outer join t1_n148 c on a.key = c.key sort by a.key;
+SET hive.mapjoin.full.outer=false;
+explain vectorization expression
+select a.key from t3_n35 a left semi join t1_n148 b on a.key = b.key full 
outer join t2_n87 c on a.key = c.key sort by a.key;
+select a.key from t3_n35 a left semi join t1_n148 b on a.key = b.key full 
outer join t2_n87 c on a.key = c.key sort by a.key;
 
-explain vectorization only summary
+SET hive.mapjoin.full.outer=true;
+explain vectorization expression
 select a.key from t3_n35 a left semi join t1_n148 b on a.key = b.key full 
outer join t2_n87 c on a.key = c.key sort by a.key;
 select a.key from t3_n35 a left semi join t1_n148 b on a.key = b.key full 
outer join t2_n87 c on a.key = c.key sort by a.key;
 
-explain vectorization only summary
+explain vectorization expression
 select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key left outer 
join t1_n148 c on a.value = c.value sort by a.key;
 select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key left outer 
join t1_n148 c on a.value = c.value sort by a.key;
 
-explain vectorization only summary
+explain vectorization expression
 select a.key from t3_n35 a left semi join t2_n87 b on a.value = b.value where 
a.key > 100;
 select a.key from t3_n35 a left semi join t2_n87 b on a.value = b.value where 
a.key > 100;
 
 set hive.vectorized.execution.enabled=false;
 set hive.mapjoin.hybridgrace.hashtable=true;
+set hive.llap.enable.grace.join.in.llap=true;
 
-explain vectorization summary
+explain vectorization operator
 select * from t1_n148 a left semi join t2_n87 b on a.key=b.key sort by a.key, 
a.value;
 select * from t1_n148 a left semi join t2_n87 b on a.key=b.key sort by a.key, 
a.value;
 
-explain vectorization summary
+explain vectorization operator
 select * from t2_n87 a left semi join t1_n148 b on b.key=a.key sort by a.key, 
a.value;
 select * from t2_n87 a left semi join t1_n148 b on b.key=a.key sort by a.key, 
a.value;
 
-explain vectorization summary
+explain vectorization operator
 select * from t1_n148 a left semi join t4_n19 b on b.key=a.key sort by a.key, 
a.value;
 select * from t1_n148 a left semi join t4_n19 b on b.key=a.key sort by a.key, 
a.value;
 
-explain vectorization summary
+explain vectorization operator
 select a.value from t1_n148 a left semi join t3_n35 b on (b.key = a.key and 
b.key < '15') sort by a.value;
 select a.value from t1_n148 a left semi join t3_n35 b on (b.key = a.key and 
b.key < '15') sort by a.value;
 
-explain vectorization summary
+explain vectorization operator
 select * from t1_n148 a left semi join t2_n87 b on a.key = b.key and b.value < 
"val_10" sort by a.key, a.value;
 select * from t1_n148 a left semi join t2_n87 b on a.key = b.key and b.value < 
"val_10" sort by a.key, a.value;
 
-explain vectorization summary
+explain vectorization operator
 select a.value from t1_n148 a left semi join (select key from t3_n35 where key 
> 5) b on a.key = b.key sort by a.value;
 select a.value from t1_n148 a left semi join (select key from t3_n35 where key 
> 5) b on a.key = b.key sort by a.value;
 
-explain vectorization summary
+explain vectorization operator
 select a.value from t1_n148 a left semi join (select key , value from t2_n87 
where key > 5) b on a.key = b.key and b.value <= 'val_20' sort by a.value ;
 select a.value from t1_n148 a left semi join (select key , value from t2_n87 
where key > 5) b on a.key = b.key and b.value <= 'val_20' sort by a.value ;
 
-explain vectorization summary
+explain vectorization operator
 select * from t2_n87 a left semi join (select key , value from t1_n148 where 
key > 2) b on a.key = b.key sort by a.key, a.value;
 select * from t2_n87 a left semi join (select key , value from t1_n148 where 
key > 2) b on a.key = b.key sort by a.key, a.value;
 
-explain vectorization summary
+explain vectorization operator
 select /*+ mapjoin(b) */ a.key from t3_n35 a left semi join t1_n148 b on a.key 
= b.key sort by a.key;
 select /*+ mapjoin(b) */ a.key from t3_n35 a left semi join t1_n148 b on a.key 
= b.key sort by a.key;
 
-explain vectorization summary
+explain vectorization operator
 select * from t1_n148 a left semi join t2_n87 b on a.key = 2*b.key sort by 
a.key, a.value;
 select * from t1_n148 a left semi join t2_n87 b on a.key = 2*b.key sort by 
a.key, a.value;
 
-explain vectorization summary
+explain vectorization operator
 select * from t1_n148 a join t2_n87 b on a.key = b.key left semi join t3_n35 c 
on b.key = c.key sort by a.key, a.value;
 select * from t1_n148 a join t2_n87 b on a.key = b.key left semi join t3_n35 c 
on b.key = c.key sort by a.key, a.value;
  
-explain vectorization summary
+explain vectorization operator
 select * from t3_n35 a left semi join t1_n148 b on a.key = b.key and 
a.value=b.value sort by a.key, a.value;
 select * from t3_n35 a left semi join t1_n148 b on a.key = b.key and 
a.value=b.value sort by a.key, a.value;
 
-explain vectorization summary
+explain vectorization operator
 select /*+ mapjoin(b, c) */ a.key from t3_n35 a left semi join t1_n148 b on 
a.key = b.key left semi join t2_n87 c on a.key = c.key sort by a.key;
 select /*+ mapjoin(b, c) */ a.key from t3_n35 a left semi join t1_n148 b on 
a.key = b.key left semi join t2_n87 c on a.key = c.key sort by a.key;
 
-explain vectorization summary
+explain vectorization operator
 select a.key from t3_n35 a left outer join t1_n148 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
 select a.key from t3_n35 a left outer join t1_n148 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
 
-explain vectorization summary
+SET hive.mapjoin.full.outer=false;
+explain vectorization operator
 select a.key from t1_n148 a full outer join t3_n35 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
 select a.key from t1_n148 a full outer join t3_n35 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
 
-explain vectorization summary
+SET hive.mapjoin.full.outer=true;
+explain vectorization operator
+select a.key from t1_n148 a full outer join t3_n35 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
+select a.key from t1_n148 a full outer join t3_n35 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
+
+explain vectorization operator
 select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key left outer 
join t1_n148 c on a.key = c.key sort by a.key;
 select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key left outer 
join t1_n148 c on a.key = c.key sort by a.key;
 
-explain vectorization summary
-select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key right 
outer join t1_n148 c on a.key = c.key sort by a.key;
-select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key right 
outer join t1_n148 c on a.key = c.key sort by a.key;
-
-explain vectorization summary
+SET hive.mapjoin.full.outer=false;
+explain vectorization operator
 select a.key from t3_n35 a left semi join t1_n148 b on a.key = b.key full 
outer join t2_n87 c on a.key = c.key sort by a.key;
 select a.key from t3_n35 a left semi join t1_n148 b on a.key = b.key full 
outer join t2_n87 c on a.key = c.key sort by a.key;
 
-explain vectorization summary
+SET hive.mapjoin.full.outer=true;
+explain vectorization operator
+select a.key from t3_n35 a left semi join t1_n148 b on a.key = b.key full 
outer join t2_n87 c on a.key = c.key sort by a.key;
+-- select a.key from t3_n35 a left semi join t1_n148 b on a.key = b.key full 
outer join t2_n87 c on a.key = c.key sort by a.key;
+
+explain vectorization operator
 select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key left outer 
join t1_n148 c on a.value = c.value sort by a.key;
 select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key left outer 
join t1_n148 c on a.value = c.value sort by a.key;
 
-explain vectorization summary
+explain vectorization operator
 select a.key from t3_n35 a left semi join t2_n87 b on a.value = b.value where 
a.key > 100;
 select a.key from t3_n35 a left semi join t2_n87 b on a.value = b.value where 
a.key > 100;
 
@@ -251,21 +275,29 @@ explain vectorization only operator
 select a.key from t3_n35 a left outer join t1_n148 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
 select a.key from t3_n35 a left outer join t1_n148 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
 
-explain vectorization only operator
+SET hive.mapjoin.full.outer=false;
+explain vectorization operator
 select a.key from t1_n148 a full outer join t3_n35 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
 select a.key from t1_n148 a full outer join t3_n35 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
 
+SET hive.mapjoin.full.outer=true;
+explain vectorization operator
+select a.key from t1_n148 a full outer join t3_n35 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
+-- select a.key from t1_n148 a full outer join t3_n35 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
+
 explain vectorization only operator
 select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key left outer 
join t1_n148 c on a.key = c.key sort by a.key;
 select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key left outer 
join t1_n148 c on a.key = c.key sort by a.key;
 
+SET hive.mapjoin.full.outer=false;
 explain vectorization only operator
-select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key right 
outer join t1_n148 c on a.key = c.key sort by a.key;
-select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key right 
outer join t1_n148 c on a.key = c.key sort by a.key;
+select a.key from t3_n35 a left semi join t1_n148 b on a.key = b.key full 
outer join t2_n87 c on a.key = c.key sort by a.key;
+select a.key from t3_n35 a left semi join t1_n148 b on a.key = b.key full 
outer join t2_n87 c on a.key = c.key sort by a.key;
 
+SET hive.mapjoin.full.outer=true;
 explain vectorization only operator
 select a.key from t3_n35 a left semi join t1_n148 b on a.key = b.key full 
outer join t2_n87 c on a.key = c.key sort by a.key;
-select a.key from t3_n35 a left semi join t1_n148 b on a.key = b.key full 
outer join t2_n87 c on a.key = c.key sort by a.key;
+-- select a.key from t3_n35 a left semi join t1_n148 b on a.key = b.key full 
outer join t2_n87 c on a.key = c.key sort by a.key;
 
 explain vectorization only operator
 select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key left outer 
join t1_n148 c on a.value = c.value sort by a.key;
@@ -277,85 +309,94 @@ select a.key from t3_n35 a left semi join t2_n87 b on 
a.value = b.value where a.
 
 set hive.vectorized.execution.enabled=true;
 set hive.mapjoin.hybridgrace.hashtable=true;
+set hive.llap.enable.grace.join.in.llap=true;
 SET hive.vectorized.execution.mapjoin.native.enabled=false;
 
-explain vectorization detail
+explain vectorization operator
 select * from t1_n148 a left semi join t2_n87 b on a.key=b.key sort by a.key, 
a.value;
 select * from t1_n148 a left semi join t2_n87 b on a.key=b.key sort by a.key, 
a.value;
 
-explain vectorization detail
+explain vectorization operator
 select * from t2_n87 a left semi join t1_n148 b on b.key=a.key sort by a.key, 
a.value;
 select * from t2_n87 a left semi join t1_n148 b on b.key=a.key sort by a.key, 
a.value;
 
-explain vectorization detail
+explain vectorization operator
 select * from t1_n148 a left semi join t4_n19 b on b.key=a.key sort by a.key, 
a.value;
 select * from t1_n148 a left semi join t4_n19 b on b.key=a.key sort by a.key, 
a.value;
 
-explain vectorization detail
+explain vectorization operator
 select a.value from t1_n148 a left semi join t3_n35 b on (b.key = a.key and 
b.key < '15') sort by a.value;
 select a.value from t1_n148 a left semi join t3_n35 b on (b.key = a.key and 
b.key < '15') sort by a.value;
 
-explain vectorization detail
+explain vectorization operator
 select * from t1_n148 a left semi join t2_n87 b on a.key = b.key and b.value < 
"val_10" sort by a.key, a.value;
 select * from t1_n148 a left semi join t2_n87 b on a.key = b.key and b.value < 
"val_10" sort by a.key, a.value;
 
-explain vectorization detail
+explain vectorization operator
 select a.value from t1_n148 a left semi join (select key from t3_n35 where key 
> 5) b on a.key = b.key sort by a.value;
 select a.value from t1_n148 a left semi join (select key from t3_n35 where key 
> 5) b on a.key = b.key sort by a.value;
 
-explain vectorization detail
+explain vectorization operator
 select a.value from t1_n148 a left semi join (select key , value from t2_n87 
where key > 5) b on a.key = b.key and b.value <= 'val_20' sort by a.value ;
 select a.value from t1_n148 a left semi join (select key , value from t2_n87 
where key > 5) b on a.key = b.key and b.value <= 'val_20' sort by a.value ;
 
-explain vectorization detail
+explain vectorization operator
 select * from t2_n87 a left semi join (select key , value from t1_n148 where 
key > 2) b on a.key = b.key sort by a.key, a.value;
 select * from t2_n87 a left semi join (select key , value from t1_n148 where 
key > 2) b on a.key = b.key sort by a.key, a.value;
 
-explain vectorization detail
+explain vectorization operator
 select /*+ mapjoin(b) */ a.key from t3_n35 a left semi join t1_n148 b on a.key 
= b.key sort by a.key;
 select /*+ mapjoin(b) */ a.key from t3_n35 a left semi join t1_n148 b on a.key 
= b.key sort by a.key;
 
-explain vectorization detail
+explain vectorization operator
 select * from t1_n148 a left semi join t2_n87 b on a.key = 2*b.key sort by 
a.key, a.value;
 select * from t1_n148 a left semi join t2_n87 b on a.key = 2*b.key sort by 
a.key, a.value;
 
-explain vectorization detail
+explain vectorization operator
 select * from t1_n148 a join t2_n87 b on a.key = b.key left semi join t3_n35 c 
on b.key = c.key sort by a.key, a.value;
 select * from t1_n148 a join t2_n87 b on a.key = b.key left semi join t3_n35 c 
on b.key = c.key sort by a.key, a.value;
  
-explain vectorization detail
+explain vectorization operator
 select * from t3_n35 a left semi join t1_n148 b on a.key = b.key and 
a.value=b.value sort by a.key, a.value;
 select * from t3_n35 a left semi join t1_n148 b on a.key = b.key and 
a.value=b.value sort by a.key, a.value;
 
-explain vectorization detail
+explain vectorization operator
 select /*+ mapjoin(b, c) */ a.key from t3_n35 a left semi join t1_n148 b on 
a.key = b.key left semi join t2_n87 c on a.key = c.key sort by a.key;
 select /*+ mapjoin(b, c) */ a.key from t3_n35 a left semi join t1_n148 b on 
a.key = b.key left semi join t2_n87 c on a.key = c.key sort by a.key;
 
-explain vectorization detail
+explain vectorization operator
 select a.key from t3_n35 a left outer join t1_n148 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
 select a.key from t3_n35 a left outer join t1_n148 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
 
-explain vectorization detail
+SET hive.mapjoin.full.outer=false;
+explain vectorization operator
 select a.key from t1_n148 a full outer join t3_n35 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
 select a.key from t1_n148 a full outer join t3_n35 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
 
-explain vectorization detail
+SET hive.mapjoin.full.outer=true;
+explain vectorization operator
+select a.key from t1_n148 a full outer join t3_n35 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
+select a.key from t1_n148 a full outer join t3_n35 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
+
+explain vectorization operator
 select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key left outer 
join t1_n148 c on a.key = c.key sort by a.key;
 select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key left outer 
join t1_n148 c on a.key = c.key sort by a.key;
 
-explain vectorization detail
-select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key right 
outer join t1_n148 c on a.key = c.key sort by a.key;
-select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key right 
outer join t1_n148 c on a.key = c.key sort by a.key;
+SET hive.mapjoin.full.outer=false;
+explain vectorization operator
+select a.key from t3_n35 a left semi join t1_n148 b on a.key = b.key full 
outer join t2_n87 c on a.key = c.key sort by a.key;
+select a.key from t3_n35 a left semi join t1_n148 b on a.key = b.key full 
outer join t2_n87 c on a.key = c.key sort by a.key;
 
-explain vectorization detail
+SET hive.mapjoin.full.outer=true;
+explain vectorization operator
 select a.key from t3_n35 a left semi join t1_n148 b on a.key = b.key full 
outer join t2_n87 c on a.key = c.key sort by a.key;
 select a.key from t3_n35 a left semi join t1_n148 b on a.key = b.key full 
outer join t2_n87 c on a.key = c.key sort by a.key;
 
-explain vectorization detail
+explain vectorization operator
 select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key left outer 
join t1_n148 c on a.value = c.value sort by a.key;
 select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key left outer 
join t1_n148 c on a.value = c.value sort by a.key;
 
-explain vectorization detail
+explain vectorization operator
 select a.key from t3_n35 a left semi join t2_n87 b on a.value = b.value where 
a.key > 100;
 select a.key from t3_n35 a left semi join t2_n87 b on a.value = b.value where 
a.key > 100;
 
@@ -363,166 +404,183 @@ set hive.vectorized.execution.enabled=true;
 set hive.mapjoin.hybridgrace.hashtable=false;
 SET hive.vectorized.execution.mapjoin.native.enabled=true;
 
-explain vectorization detail
+explain vectorization operator
 select * from t1_n148 a left semi join t2_n87 b on a.key=b.key sort by a.key, 
a.value;
 select * from t1_n148 a left semi join t2_n87 b on a.key=b.key sort by a.key, 
a.value;
 
-explain vectorization detail
+explain vectorization operator
 select * from t2_n87 a left semi join t1_n148 b on b.key=a.key sort by a.key, 
a.value;
 select * from t2_n87 a left semi join t1_n148 b on b.key=a.key sort by a.key, 
a.value;
 
-explain vectorization detail
+explain vectorization operator
 select * from t1_n148 a left semi join t4_n19 b on b.key=a.key sort by a.key, 
a.value;
 select * from t1_n148 a left semi join t4_n19 b on b.key=a.key sort by a.key, 
a.value;
 
-explain vectorization detail
+explain vectorization operator
 select a.value from t1_n148 a left semi join t3_n35 b on (b.key = a.key and 
b.key < '15') sort by a.value;
 select a.value from t1_n148 a left semi join t3_n35 b on (b.key = a.key and 
b.key < '15') sort by a.value;
 
-explain vectorization detail
+explain vectorization operator
 select * from t1_n148 a left semi join t2_n87 b on a.key = b.key and b.value < 
"val_10" sort by a.key, a.value;
 select * from t1_n148 a left semi join t2_n87 b on a.key = b.key and b.value < 
"val_10" sort by a.key, a.value;
 
-explain vectorization detail
+explain vectorization operator
 select a.value from t1_n148 a left semi join (select key from t3_n35 where key 
> 5) b on a.key = b.key sort by a.value;
 select a.value from t1_n148 a left semi join (select key from t3_n35 where key 
> 5) b on a.key = b.key sort by a.value;
 
-explain vectorization detail
+explain vectorization operator
 select a.value from t1_n148 a left semi join (select key , value from t2_n87 
where key > 5) b on a.key = b.key and b.value <= 'val_20' sort by a.value ;
 select a.value from t1_n148 a left semi join (select key , value from t2_n87 
where key > 5) b on a.key = b.key and b.value <= 'val_20' sort by a.value ;
 
-explain vectorization detail
+explain vectorization operator
 select * from t2_n87 a left semi join (select key , value from t1_n148 where 
key > 2) b on a.key = b.key sort by a.key, a.value;
 select * from t2_n87 a left semi join (select key , value from t1_n148 where 
key > 2) b on a.key = b.key sort by a.key, a.value;
 
-explain vectorization detail
+explain vectorization operator
 select /*+ mapjoin(b) */ a.key from t3_n35 a left semi join t1_n148 b on a.key 
= b.key sort by a.key;
 select /*+ mapjoin(b) */ a.key from t3_n35 a left semi join t1_n148 b on a.key 
= b.key sort by a.key;
 
-explain vectorization detail
+explain vectorization operator
 select * from t1_n148 a left semi join t2_n87 b on a.key = 2*b.key sort by 
a.key, a.value;
 select * from t1_n148 a left semi join t2_n87 b on a.key = 2*b.key sort by 
a.key, a.value;
 
-explain vectorization detail
+explain vectorization operator
 select * from t1_n148 a join t2_n87 b on a.key = b.key left semi join t3_n35 c 
on b.key = c.key sort by a.key, a.value;
 select * from t1_n148 a join t2_n87 b on a.key = b.key left semi join t3_n35 c 
on b.key = c.key sort by a.key, a.value;
  
-explain vectorization detail
+explain vectorization operator
 select * from t3_n35 a left semi join t1_n148 b on a.key = b.key and 
a.value=b.value sort by a.key, a.value;
 select * from t3_n35 a left semi join t1_n148 b on a.key = b.key and 
a.value=b.value sort by a.key, a.value;
 
-explain vectorization detail
+explain vectorization operator
 select /*+ mapjoin(b, c) */ a.key from t3_n35 a left semi join t1_n148 b on 
a.key = b.key left semi join t2_n87 c on a.key = c.key sort by a.key;
 select /*+ mapjoin(b, c) */ a.key from t3_n35 a left semi join t1_n148 b on 
a.key = b.key left semi join t2_n87 c on a.key = c.key sort by a.key;
 
-explain vectorization detail
+explain vectorization operator
 select a.key from t3_n35 a left outer join t1_n148 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
 select a.key from t3_n35 a left outer join t1_n148 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
 
-explain vectorization detail
+SET hive.mapjoin.full.outer=false;
+explain vectorization operator
+select a.key from t1_n148 a full outer join t3_n35 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
+select a.key from t1_n148 a full outer join t3_n35 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
+
+SET hive.mapjoin.full.outer=true;
+explain vectorization operator
 select a.key from t1_n148 a full outer join t3_n35 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
 select a.key from t1_n148 a full outer join t3_n35 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
 
-explain vectorization detail
+explain vectorization operator
 select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key left outer 
join t1_n148 c on a.key = c.key sort by a.key;
 select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key left outer 
join t1_n148 c on a.key = c.key sort by a.key;
 
-explain vectorization detail
-select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key right 
outer join t1_n148 c on a.key = c.key sort by a.key;
-select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key right 
outer join t1_n148 c on a.key = c.key sort by a.key;
+SET hive.mapjoin.full.outer=false;
+explain vectorization operator
+select a.key from t3_n35 a left semi join t1_n148 b on a.key = b.key full 
outer join t2_n87 c on a.key = c.key sort by a.key;
+select a.key from t3_n35 a left semi join t1_n148 b on a.key = b.key full 
outer join t2_n87 c on a.key = c.key sort by a.key;
 
-explain vectorization detail
+SET hive.mapjoin.full.outer=true;
+explain vectorization operator
 select a.key from t3_n35 a left semi join t1_n148 b on a.key = b.key full 
outer join t2_n87 c on a.key = c.key sort by a.key;
 select a.key from t3_n35 a left semi join t1_n148 b on a.key = b.key full 
outer join t2_n87 c on a.key = c.key sort by a.key;
 
-explain vectorization detail
+explain vectorization operator
 select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key left outer 
join t1_n148 c on a.value = c.value sort by a.key;
 select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key left outer 
join t1_n148 c on a.value = c.value sort by a.key;
 
-explain vectorization detail
+explain vectorization operator
 select a.key from t3_n35 a left semi join t2_n87 b on a.value = b.value where 
a.key > 100;
 select a.key from t3_n35 a left semi join t2_n87 b on a.value = b.value where 
a.key > 100;
 
 set hive.vectorized.execution.enabled=true;
 set hive.mapjoin.hybridgrace.hashtable=true;
+set hive.llap.enable.grace.join.in.llap=true;
 SET hive.vectorized.execution.mapjoin.native.enabled=true;
 
-explain vectorization detail
+explain vectorization operator
 select * from t1_n148 a left semi join t2_n87 b on a.key=b.key sort by a.key, 
a.value;
 select * from t1_n148 a left semi join t2_n87 b on a.key=b.key sort by a.key, 
a.value;
 
-explain vectorization detail
+explain vectorization operator
 select * from t2_n87 a left semi join t1_n148 b on b.key=a.key sort by a.key, 
a.value;
 select * from t2_n87 a left semi join t1_n148 b on b.key=a.key sort by a.key, 
a.value;
 
-explain vectorization detail
+explain vectorization operator
 select * from t1_n148 a left semi join t4_n19 b on b.key=a.key sort by a.key, 
a.value;
 select * from t1_n148 a left semi join t4_n19 b on b.key=a.key sort by a.key, 
a.value;
 
-explain vectorization detail
+explain vectorization operator
 select a.value from t1_n148 a left semi join t3_n35 b on (b.key = a.key and 
b.key < '15') sort by a.value;
 select a.value from t1_n148 a left semi join t3_n35 b on (b.key = a.key and 
b.key < '15') sort by a.value;
 
-explain vectorization detail
+explain vectorization operator
 select * from t1_n148 a left semi join t2_n87 b on a.key = b.key and b.value < 
"val_10" sort by a.key, a.value;
 select * from t1_n148 a left semi join t2_n87 b on a.key = b.key and b.value < 
"val_10" sort by a.key, a.value;
 
-explain vectorization detail
+explain vectorization operator
 select a.value from t1_n148 a left semi join (select key from t3_n35 where key 
> 5) b on a.key = b.key sort by a.value;
 select a.value from t1_n148 a left semi join (select key from t3_n35 where key 
> 5) b on a.key = b.key sort by a.value;
 
-explain vectorization detail
+explain vectorization operator
 select a.value from t1_n148 a left semi join (select key , value from t2_n87 
where key > 5) b on a.key = b.key and b.value <= 'val_20' sort by a.value ;
 select a.value from t1_n148 a left semi join (select key , value from t2_n87 
where key > 5) b on a.key = b.key and b.value <= 'val_20' sort by a.value ;
 
-explain vectorization detail
+explain vectorization operator
 select * from t2_n87 a left semi join (select key , value from t1_n148 where 
key > 2) b on a.key = b.key sort by a.key, a.value;
 select * from t2_n87 a left semi join (select key , value from t1_n148 where 
key > 2) b on a.key = b.key sort by a.key, a.value;
 
-explain vectorization detail
+explain vectorization operator
 select /*+ mapjoin(b) */ a.key from t3_n35 a left semi join t1_n148 b on a.key 
= b.key sort by a.key;
 select /*+ mapjoin(b) */ a.key from t3_n35 a left semi join t1_n148 b on a.key 
= b.key sort by a.key;
 
-explain vectorization detail
+explain vectorization operator
 select * from t1_n148 a left semi join t2_n87 b on a.key = 2*b.key sort by 
a.key, a.value;
 select * from t1_n148 a left semi join t2_n87 b on a.key = 2*b.key sort by 
a.key, a.value;
 
-explain vectorization detail
+explain vectorization operator
 select * from t1_n148 a join t2_n87 b on a.key = b.key left semi join t3_n35 c 
on b.key = c.key sort by a.key, a.value;
 select * from t1_n148 a join t2_n87 b on a.key = b.key left semi join t3_n35 c 
on b.key = c.key sort by a.key, a.value;
  
-explain vectorization detail
+explain vectorization operator
 select * from t3_n35 a left semi join t1_n148 b on a.key = b.key and 
a.value=b.value sort by a.key, a.value;
 select * from t3_n35 a left semi join t1_n148 b on a.key = b.key and 
a.value=b.value sort by a.key, a.value;
 
-explain vectorization detail
+explain vectorization operator
 select /*+ mapjoin(b, c) */ a.key from t3_n35 a left semi join t1_n148 b on 
a.key = b.key left semi join t2_n87 c on a.key = c.key sort by a.key;
 select /*+ mapjoin(b, c) */ a.key from t3_n35 a left semi join t1_n148 b on 
a.key = b.key left semi join t2_n87 c on a.key = c.key sort by a.key;
 
-explain vectorization detail
+explain vectorization operator
 select a.key from t3_n35 a left outer join t1_n148 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
 select a.key from t3_n35 a left outer join t1_n148 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
 
-explain vectorization detail
+SET hive.mapjoin.full.outer=false;
+explain vectorization operator
 select a.key from t1_n148 a full outer join t3_n35 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
 select a.key from t1_n148 a full outer join t3_n35 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
 
-explain vectorization detail
+SET hive.mapjoin.full.outer=true;
+explain vectorization operator
+select a.key from t1_n148 a full outer join t3_n35 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
+select a.key from t1_n148 a full outer join t3_n35 b on a.key = b.key left 
semi join t2_n87 c on b.key = c.key sort by a.key;
+
+explain vectorization operator
 select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key left outer 
join t1_n148 c on a.key = c.key sort by a.key;
 select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key left outer 
join t1_n148 c on a.key = c.key sort by a.key;
 
-explain vectorization detail
-select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key right 
outer join t1_n148 c on a.key = c.key sort by a.key;
-select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key right 
outer join t1_n148 c on a.key = c.key sort by a.key;
+SET hive.mapjoin.full.outer=false;
+explain vectorization operator
+select a.key from t3_n35 a left semi join t1_n148 b on a.key = b.key full 
outer join t2_n87 c on a.key = c.key sort by a.key;
+select a.key from t3_n35 a left semi join t1_n148 b on a.key = b.key full 
outer join t2_n87 c on a.key = c.key sort by a.key;
 
-explain vectorization detail
+SET hive.mapjoin.full.outer=true;
+explain vectorization operator
 select a.key from t3_n35 a left semi join t1_n148 b on a.key = b.key full 
outer join t2_n87 c on a.key = c.key sort by a.key;
 select a.key from t3_n35 a left semi join t1_n148 b on a.key = b.key full 
outer join t2_n87 c on a.key = c.key sort by a.key;
 
-explain vectorization detail
+explain vectorization operator
 select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key left outer 
join t1_n148 c on a.value = c.value sort by a.key;
 select a.key from t3_n35 a left semi join t2_n87 b on a.key = b.key left outer 
join t1_n148 c on a.value = c.value sort by a.key;
 
-explain vectorization detail
+explain vectorization operator
 select a.key from t3_n35 a left semi join t2_n87 b on a.value = b.value where 
a.key > 100;
 select a.key from t3_n35 a left semi join t2_n87 b on a.value = b.value where 
a.key > 100;

http://git-wip-us.apache.org/repos/asf/hive/blob/a37827ec/ql/src/test/queries/clientpositive/vector_nullsafe_join.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/vector_nullsafe_join.q 
b/ql/src/test/queries/clientpositive/vector_nullsafe_join.q
index 6a7ff72..2d7155e 100644
--- a/ql/src/test/queries/clientpositive/vector_nullsafe_join.q
+++ b/ql/src/test/queries/clientpositive/vector_nullsafe_join.q
@@ -38,7 +38,11 @@ select * from myinput1 a join myinput1 b on a.key<=>b.value 
AND a.value<=>b.key
 
 -- outer joins
 SELECT * FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key<=>b.value;
+
+EXPLAIN VECTORIZATION DETAIL DEBUG
 SELECT * FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key<=>b.value;
+-- SELECT * FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key<=>b.value;
+
 SELECT * FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.key<=>b.value;
 
 -- map joins
@@ -65,7 +69,11 @@ select * from myinput1 a join myinput1 b on a.key<=>b.value 
AND a.value<=>b.key
 
 -- outer joins
 SELECT * FROM myinput1 a LEFT OUTER JOIN myinput1 b ON a.key<=>b.value;
+
+EXPLAIN VECTORIZATION DETAIL DEBUG
 SELECT * FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key<=>b.value;
+-- SELECT * FROM myinput1 a RIGHT OUTER JOIN myinput1 b ON a.key<=>b.value;
+
 SELECT * FROM myinput1 a FULL OUTER JOIN myinput1 b ON a.key<=>b.value;
 
 -- map joins

http://git-wip-us.apache.org/repos/asf/hive/blob/a37827ec/ql/src/test/queries/clientpositive/vectorized_join46.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/vectorized_join46.q 
b/ql/src/test/queries/clientpositive/vectorized_join46.q
index 145bc02..5eda9f4 100644
--- a/ql/src/test/queries/clientpositive/vectorized_join46.q
+++ b/ql/src/test/queries/clientpositive/vectorized_join46.q
@@ -1,3 +1,4 @@
+set hive.cli.print.header=true;
 set hive.vectorized.execution.enabled=true;
 set hive.auto.convert.join=true;
 set hive.strict.checks.cartesian.product=false;
@@ -15,7 +16,7 @@ INSERT INTO test2_n9 VALUES (102, 2, 'Del'), (103, 2, 'Ema'),
 
 
 -- Basic outer join
-EXPLAIN
+EXPLAIN VECTORIZATION OPERATOR
 SELECT *
 FROM test1_n14 LEFT OUTER JOIN test2_n9
 ON (test1_n14.value=test2_n9.value);
@@ -25,7 +26,7 @@ FROM test1_n14 LEFT OUTER JOIN test2_n9
 ON (test1_n14.value=test2_n9.value);
 
 -- Conjunction with pred on multiple inputs and single inputs (left outer join)
-EXPLAIN
+EXPLAIN VECTORIZATION OPERATOR
 SELECT *
 FROM test1_n14 LEFT OUTER JOIN test2_n9
 ON (test1_n14.value=test2_n9.value
@@ -39,7 +40,7 @@ ON (test1_n14.value=test2_n9.value
   AND test2_n9.key between 100 and 102);
 
 -- Conjunction with pred on single inputs (left outer join)
-EXPLAIN
+EXPLAIN VECTORIZATION OPERATOR
 SELECT *
 FROM test1_n14 LEFT OUTER JOIN test2_n9
 ON (test1_n14.key between 100 and 102
@@ -51,7 +52,7 @@ ON (test1_n14.key between 100 and 102
   AND test2_n9.key between 100 and 102);
 
 -- Conjunction with pred on multiple inputs and none (left outer join)
-EXPLAIN
+EXPLAIN VECTORIZATION OPERATOR
 SELECT *
 FROM test1_n14 RIGHT OUTER JOIN test2_n9
 ON (test1_n14.value=test2_n9.value AND true);
@@ -61,7 +62,7 @@ FROM test1_n14 RIGHT OUTER JOIN test2_n9
 ON (test1_n14.value=test2_n9.value AND true);
 
 -- Condition on one input (left outer join)
-EXPLAIN
+EXPLAIN VECTORIZATION OPERATOR
 SELECT *
 FROM test1_n14 LEFT OUTER JOIN test2_n9
 ON (test1_n14.key between 100 and 102);
@@ -71,7 +72,7 @@ FROM test1_n14 LEFT OUTER JOIN test2_n9
 ON (test1_n14.key between 100 and 102);
 
 -- Disjunction with pred on multiple inputs and single inputs (left outer join)
-EXPLAIN
+EXPLAIN VECTORIZATION OPERATOR
 SELECT *
 FROM test1_n14 LEFT OUTER JOIN test2_n9
 ON (test1_n14.value=test2_n9.value
@@ -85,7 +86,7 @@ ON (test1_n14.value=test2_n9.value
   OR test2_n9.key between 100 and 102);
 
 -- Disjunction with pred on multiple inputs and left input (left outer join)
-EXPLAIN
+EXPLAIN VECTORIZATION OPERATOR
 SELECT *
 FROM test1_n14 LEFT OUTER JOIN test2_n9
 ON (test1_n14.value=test2_n9.value
@@ -97,7 +98,7 @@ ON (test1_n14.value=test2_n9.value
   OR test1_n14.key between 100 and 102);
 
 -- Disjunction with pred on multiple inputs and right input (left outer join)
-EXPLAIN
+EXPLAIN VECTORIZATION OPERATOR
 SELECT *
 FROM test1_n14 LEFT OUTER JOIN test2_n9
 ON (test1_n14.value=test2_n9.value
@@ -109,7 +110,7 @@ ON (test1_n14.value=test2_n9.value
   OR test2_n9.key between 100 and 102);
 
 -- Keys plus residual (left outer join)
-EXPLAIN
+EXPLAIN VECTORIZATION OPERATOR
 SELECT *
 FROM test1_n14 LEFT OUTER JOIN test2_n9
 ON (test1_n14.value=test2_n9.value
@@ -123,7 +124,7 @@ ON (test1_n14.value=test2_n9.value
     OR test2_n9.key between 100 and 102));
 
 -- Disjunction with pred on multiple inputs and single inputs (right outer 
join)
-EXPLAIN
+EXPLAIN VECTORIZATION OPERATOR
 SELECT *
 FROM test1_n14 RIGHT OUTER JOIN test2_n9
 ON (test1_n14.value=test2_n9.value
@@ -137,7 +138,7 @@ ON (test1_n14.value=test2_n9.value
   OR test2_n9.key between 100 and 102);
 
 -- Disjunction with pred on multiple inputs and left input (right outer join)
-EXPLAIN
+EXPLAIN VECTORIZATION OPERATOR
 SELECT *
 FROM test1_n14 RIGHT OUTER JOIN test2_n9
 ON (test1_n14.value=test2_n9.value
@@ -149,7 +150,7 @@ ON (test1_n14.value=test2_n9.value
   OR test1_n14.key between 100 and 102);
 
 -- Disjunction with pred on multiple inputs and right input (right outer join)
-EXPLAIN
+EXPLAIN VECTORIZATION OPERATOR
 SELECT *
 FROM test1_n14 RIGHT OUTER JOIN test2_n9
 ON (test1_n14.value=test2_n9.value
@@ -161,7 +162,7 @@ ON (test1_n14.value=test2_n9.value
   OR test2_n9.key between 100 and 102);
 
 -- Keys plus residual (right outer join)
-EXPLAIN
+EXPLAIN VECTORIZATION OPERATOR
 SELECT *
 FROM test1_n14 RIGHT OUTER JOIN test2_n9
 ON (test1_n14.value=test2_n9.value
@@ -175,7 +176,7 @@ ON (test1_n14.value=test2_n9.value
     OR test2_n9.key between 100 and 102));
 
 -- Disjunction with pred on multiple inputs and single inputs (full outer join)
-EXPLAIN
+EXPLAIN VECTORIZATION OPERATOR
 SELECT *
 FROM test1_n14 FULL OUTER JOIN test2_n9
 ON (test1_n14.value=test2_n9.value
@@ -189,7 +190,7 @@ ON (test1_n14.value=test2_n9.value
   OR test2_n9.key between 100 and 102);
 
 -- Disjunction with pred on multiple inputs and left input (full outer join)
-EXPLAIN
+EXPLAIN VECTORIZATION OPERATOR
 SELECT *
 FROM test1_n14 FULL OUTER JOIN test2_n9
 ON (test1_n14.value=test2_n9.value
@@ -201,7 +202,7 @@ ON (test1_n14.value=test2_n9.value
   OR test1_n14.key between 100 and 102);
 
 -- Disjunction with pred on multiple inputs and right input (full outer join)
-EXPLAIN
+EXPLAIN VECTORIZATION OPERATOR
 SELECT *
 FROM test1_n14 FULL OUTER JOIN test2_n9
 ON (test1_n14.value=test2_n9.value
@@ -213,7 +214,7 @@ ON (test1_n14.value=test2_n9.value
   OR test2_n9.key between 100 and 102);
 
 -- Keys plus residual (full outer join)
-EXPLAIN
+EXPLAIN VECTORIZATION OPERATOR
 SELECT *
 FROM test1_n14 FULL OUTER JOIN test2_n9
 ON (test1_n14.value=test2_n9.value

http://git-wip-us.apache.org/repos/asf/hive/blob/a37827ec/ql/src/test/queries/clientpositive/vectorized_join46_mr.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/vectorized_join46_mr.q 
b/ql/src/test/queries/clientpositive/vectorized_join46_mr.q
new file mode 100644
index 0000000..3d4627b
--- /dev/null
+++ b/ql/src/test/queries/clientpositive/vectorized_join46_mr.q
@@ -0,0 +1,228 @@
+set hive.cli.print.header=true;
+set hive.vectorized.execution.enabled=true;
+set hive.auto.convert.join=true;
+set hive.strict.checks.cartesian.product=false;
+set hive.join.emit.interval=2;
+
+-- SORT_QUERY_RESULTS
+
+CREATE TABLE test1 (key INT, value INT, col_1 STRING);
+INSERT INTO test1 VALUES (NULL, NULL, 'None'), (98, NULL, 'None'),
+    (99, 0, 'Alice'), (99, 2, 'Mat'), (100, 1, 'Bob'), (101, 2, 'Car');
+
+CREATE TABLE test2 (key INT, value INT, col_2 STRING);
+INSERT INTO test2 VALUES (102, 2, 'Del'), (103, 2, 'Ema'),
+    (104, 3, 'Fli'), (105, NULL, 'None');
+
+
+-- Basic outer join
+EXPLAIN VECTORIZATION OPERATOR
+SELECT *
+FROM test1 LEFT OUTER JOIN test2
+ON (test1.value=test2.value);
+
+SELECT *
+FROM test1 LEFT OUTER JOIN test2
+ON (test1.value=test2.value);
+
+-- Conjunction with pred on multiple inputs and single inputs (left outer join)
+EXPLAIN VECTORIZATION OPERATOR
+SELECT *
+FROM test1 LEFT OUTER JOIN test2
+ON (test1.value=test2.value
+  AND test1.key between 100 and 102
+  AND test2.key between 100 and 102);
+
+SELECT *
+FROM test1 LEFT OUTER JOIN test2
+ON (test1.value=test2.value
+  AND test1.key between 100 and 102
+  AND test2.key between 100 and 102);
+
+-- Conjunction with pred on single inputs (left outer join)
+EXPLAIN VECTORIZATION OPERATOR
+SELECT *
+FROM test1 LEFT OUTER JOIN test2
+ON (test1.key between 100 and 102
+  AND test2.key between 100 and 102);
+
+SELECT *
+FROM test1 LEFT OUTER JOIN test2
+ON (test1.key between 100 and 102
+  AND test2.key between 100 and 102);
+
+-- Conjunction with pred on multiple inputs and none (left outer join)
+EXPLAIN VECTORIZATION OPERATOR
+SELECT *
+FROM test1 RIGHT OUTER JOIN test2
+ON (test1.value=test2.value AND true);
+
+SELECT *
+FROM test1 RIGHT OUTER JOIN test2
+ON (test1.value=test2.value AND true);
+
+-- Condition on one input (left outer join)
+EXPLAIN VECTORIZATION OPERATOR
+SELECT *
+FROM test1 LEFT OUTER JOIN test2
+ON (test1.key between 100 and 102);
+
+SELECT *
+FROM test1 LEFT OUTER JOIN test2
+ON (test1.key between 100 and 102);
+
+-- Disjunction with pred on multiple inputs and single inputs (left outer join)
+EXPLAIN VECTORIZATION OPERATOR
+SELECT *
+FROM test1 LEFT OUTER JOIN test2
+ON (test1.value=test2.value
+  OR test1.key between 100 and 102
+  OR test2.key between 100 and 102);
+
+SELECT *
+FROM test1 LEFT OUTER JOIN test2
+ON (test1.value=test2.value
+  OR test1.key between 100 and 102
+  OR test2.key between 100 and 102);
+
+-- Disjunction with pred on multiple inputs and left input (left outer join)
+EXPLAIN VECTORIZATION OPERATOR
+SELECT *
+FROM test1 LEFT OUTER JOIN test2
+ON (test1.value=test2.value
+  OR test1.key between 100 and 102);
+
+SELECT *
+FROM test1 LEFT OUTER JOIN test2
+ON (test1.value=test2.value
+  OR test1.key between 100 and 102);
+
+-- Disjunction with pred on multiple inputs and right input (left outer join)
+EXPLAIN VECTORIZATION OPERATOR
+SELECT *
+FROM test1 LEFT OUTER JOIN test2
+ON (test1.value=test2.value
+  OR test2.key between 100 and 102);
+
+SELECT *
+FROM test1 LEFT OUTER JOIN test2
+ON (test1.value=test2.value
+  OR test2.key between 100 and 102);
+
+-- Keys plus residual (left outer join)
+EXPLAIN VECTORIZATION OPERATOR
+SELECT *
+FROM test1 LEFT OUTER JOIN test2
+ON (test1.value=test2.value
+  AND (test1.key between 100 and 102
+    OR test2.key between 100 and 102));
+
+SELECT *
+FROM test1 LEFT OUTER JOIN test2
+ON (test1.value=test2.value
+  AND (test1.key between 100 and 102
+    OR test2.key between 100 and 102));
+
+-- Disjunction with pred on multiple inputs and single inputs (right outer 
join)
+EXPLAIN VECTORIZATION OPERATOR
+SELECT *
+FROM test1 RIGHT OUTER JOIN test2
+ON (test1.value=test2.value
+  OR test1.key between 100 and 102
+  OR test2.key between 100 and 102);
+
+SELECT *
+FROM test1 RIGHT OUTER JOIN test2
+ON (test1.value=test2.value
+  OR test1.key between 100 and 102
+  OR test2.key between 100 and 102);
+
+-- Disjunction with pred on multiple inputs and left input (right outer join)
+EXPLAIN VECTORIZATION OPERATOR
+SELECT *
+FROM test1 RIGHT OUTER JOIN test2
+ON (test1.value=test2.value
+  OR test1.key between 100 and 102);
+
+SELECT *
+FROM test1 RIGHT OUTER JOIN test2
+ON (test1.value=test2.value
+  OR test1.key between 100 and 102);
+
+-- Disjunction with pred on multiple inputs and right input (right outer join)
+EXPLAIN VECTORIZATION OPERATOR
+SELECT *
+FROM test1 RIGHT OUTER JOIN test2
+ON (test1.value=test2.value
+  OR test2.key between 100 and 102);
+
+SELECT *
+FROM test1 RIGHT OUTER JOIN test2
+ON (test1.value=test2.value
+  OR test2.key between 100 and 102);
+
+-- Keys plus residual (right outer join)
+EXPLAIN VECTORIZATION OPERATOR
+SELECT *
+FROM test1 RIGHT OUTER JOIN test2
+ON (test1.value=test2.value
+  AND (test1.key between 100 and 102
+    OR test2.key between 100 and 102));
+
+SELECT *
+FROM test1 RIGHT OUTER JOIN test2
+ON (test1.value=test2.value
+  AND (test1.key between 100 and 102
+    OR test2.key between 100 and 102));
+
+-- Disjunction with pred on multiple inputs and single inputs (full outer join)
+EXPLAIN VECTORIZATION OPERATOR
+SELECT *
+FROM test1 FULL OUTER JOIN test2
+ON (test1.value=test2.value
+  OR test1.key between 100 and 102
+  OR test2.key between 100 and 102);
+
+SELECT *
+FROM test1 FULL OUTER JOIN test2
+ON (test1.value=test2.value
+  OR test1.key between 100 and 102
+  OR test2.key between 100 and 102);
+
+-- Disjunction with pred on multiple inputs and left input (full outer join)
+EXPLAIN VECTORIZATION OPERATOR
+SELECT *
+FROM test1 FULL OUTER JOIN test2
+ON (test1.value=test2.value
+  OR test1.key between 100 and 102);
+
+SELECT *
+FROM test1 FULL OUTER JOIN test2
+ON (test1.value=test2.value
+  OR test1.key between 100 and 102);
+
+-- Disjunction with pred on multiple inputs and right input (full outer join)
+EXPLAIN VECTORIZATION OPERATOR
+SELECT *
+FROM test1 FULL OUTER JOIN test2
+ON (test1.value=test2.value
+  OR test2.key between 100 and 102);
+
+SELECT *
+FROM test1 FULL OUTER JOIN test2
+ON (test1.value=test2.value
+  OR test2.key between 100 and 102);
+
+-- Keys plus residual (full outer join)
+EXPLAIN VECTORIZATION OPERATOR
+SELECT *
+FROM test1 FULL OUTER JOIN test2
+ON (test1.value=test2.value
+  AND (test1.key between 100 and 102
+    OR test2.key between 100 and 102));
+
+SELECT *
+FROM test1 FULL OUTER JOIN test2
+ON (test1.value=test2.value
+  AND (test1.key between 100 and 102
+    OR test2.key between 100 and 102));

http://git-wip-us.apache.org/repos/asf/hive/blob/a37827ec/ql/src/test/results/clientpositive/annotate_stats_join.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/annotate_stats_join.q.out 
b/ql/src/test/results/clientpositive/annotate_stats_join.q.out
index c2bf2e5..92b2fd8 100644
--- a/ql/src/test/results/clientpositive/annotate_stats_join.q.out
+++ b/ql/src/test/results/clientpositive/annotate_stats_join.q.out
@@ -893,7 +893,7 @@ STAGE PLANS:
       Reduce Operator Tree:
         Join Operator
           condition map:
-               Outer Join 0 to 1
+               Full Outer Join 0 to 1
           keys:
             0 _col0 (type: string), _col1 (type: int)
             1 _col1 (type: string), _col0 (type: int)

http://git-wip-us.apache.org/repos/asf/hive/blob/a37827ec/ql/src/test/results/clientpositive/auto_join18.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/auto_join18.q.out 
b/ql/src/test/results/clientpositive/auto_join18.q.out
index 7e8de94..5851e2d 100644
--- a/ql/src/test/results/clientpositive/auto_join18.q.out
+++ b/ql/src/test/results/clientpositive/auto_join18.q.out
@@ -89,7 +89,7 @@ STAGE PLANS:
       Reduce Operator Tree:
         Join Operator
           condition map:
-               Outer Join 0 to 1
+               Full Outer Join 0 to 1
           keys:
             0 _col0 (type: string)
             1 _col0 (type: string)

http://git-wip-us.apache.org/repos/asf/hive/blob/a37827ec/ql/src/test/results/clientpositive/auto_join18_multi_distinct.q.out
----------------------------------------------------------------------
diff --git 
a/ql/src/test/results/clientpositive/auto_join18_multi_distinct.q.out 
b/ql/src/test/results/clientpositive/auto_join18_multi_distinct.q.out
index 9c0bffd..b692193 100644
--- a/ql/src/test/results/clientpositive/auto_join18_multi_distinct.q.out
+++ b/ql/src/test/results/clientpositive/auto_join18_multi_distinct.q.out
@@ -91,7 +91,7 @@ STAGE PLANS:
       Reduce Operator Tree:
         Join Operator
           condition map:
-               Outer Join 0 to 1
+               Full Outer Join 0 to 1
           keys:
             0 _col0 (type: string)
             1 _col0 (type: string)

http://git-wip-us.apache.org/repos/asf/hive/blob/a37827ec/ql/src/test/results/clientpositive/auto_join6.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/auto_join6.q.out 
b/ql/src/test/results/clientpositive/auto_join6.q.out
index a3e829f..578906e 100644
--- a/ql/src/test/results/clientpositive/auto_join6.q.out
+++ b/ql/src/test/results/clientpositive/auto_join6.q.out
@@ -83,7 +83,7 @@ STAGE PLANS:
       Reduce Operator Tree:
         Join Operator
           condition map:
-               Outer Join 0 to 1
+               Full Outer Join 0 to 1
           keys:
             0 _col0 (type: string)
             1 _col0 (type: string)

http://git-wip-us.apache.org/repos/asf/hive/blob/a37827ec/ql/src/test/results/clientpositive/auto_join7.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/auto_join7.q.out 
b/ql/src/test/results/clientpositive/auto_join7.q.out
index 1f2616e..a094d27 100644
--- a/ql/src/test/results/clientpositive/auto_join7.q.out
+++ b/ql/src/test/results/clientpositive/auto_join7.q.out
@@ -110,7 +110,7 @@ STAGE PLANS:
       Reduce Operator Tree:
         Join Operator
           condition map:
-               Outer Join 0 to 1
+               Full Outer Join 0 to 1
                Left Outer Join 0 to 2
           keys:
             0 _col0 (type: string)

Reply via email to