Repository: hive Updated Branches: refs/heads/master 2f5889c9b -> bd35bd4e7
HIVE-15370: Include Join residual filter expressions in user level EXPLAIN (Jesus Camacho Rodriguez, reviewed by Ashutosh Chauhan) Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/bd35bd4e Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/bd35bd4e Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/bd35bd4e Branch: refs/heads/master Commit: bd35bd4e7d9525d8cc5d7e06b21038ec635e960b Parents: 2f5889c Author: Jesus Camacho Rodriguez <jcama...@apache.org> Authored: Tue Dec 6 16:16:34 2016 +0000 Committer: Jesus Camacho Rodriguez <jcama...@apache.org> Committed: Tue Dec 6 19:45:34 2016 +0000 ---------------------------------------------------------------------- .../apache/hadoop/hive/ql/plan/JoinDesc.java | 2 +- .../test/queries/clientpositive/explainuser_4.q | 6 +++ .../clientpositive/llap/explainuser_4.q.out | 39 ++++++++++++++++++++ 3 files changed, 46 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/bd35bd4e/ql/src/java/org/apache/hadoop/hive/ql/plan/JoinDesc.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/JoinDesc.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/JoinDesc.java index 3cd611c..bcf3691 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/plan/JoinDesc.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/JoinDesc.java @@ -297,7 +297,7 @@ public class JoinDesc extends AbstractOperatorDesc { this.filters = filters; } - @Explain(displayName = "residual filter predicates") + @Explain(displayName = "residual filter predicates", explainLevels = { Level.USER, Level.DEFAULT, Level.EXTENDED }) public String getResidualFilterExprsString() { if (getResidualFilterExprs() == null || getResidualFilterExprs().size() == 0) { return null; http://git-wip-us.apache.org/repos/asf/hive/blob/bd35bd4e/ql/src/test/queries/clientpositive/explainuser_4.q ---------------------------------------------------------------------- diff --git a/ql/src/test/queries/clientpositive/explainuser_4.q b/ql/src/test/queries/clientpositive/explainuser_4.q index 7b23ad6..f58afa8 100644 --- a/ql/src/test/queries/clientpositive/explainuser_4.q +++ b/ql/src/test/queries/clientpositive/explainuser_4.q @@ -101,3 +101,9 @@ where a.cint between 1000000 and 3000000 and b.cbigint is not null group by a.csmallint order by c1; + +-- Left outer join with residual +explain +select * +from alltypesorc a left outer join alltypesorc b +on a.cint = b.cint or a.csmallint between 1 and 10; http://git-wip-us.apache.org/repos/asf/hive/blob/bd35bd4e/ql/src/test/results/clientpositive/llap/explainuser_4.q.out ---------------------------------------------------------------------- diff --git a/ql/src/test/results/clientpositive/llap/explainuser_4.q.out b/ql/src/test/results/clientpositive/llap/explainuser_4.q.out index e83d6d8..4084206 100644 --- a/ql/src/test/results/clientpositive/llap/explainuser_4.q.out +++ b/ql/src/test/results/clientpositive/llap/explainuser_4.q.out @@ -480,3 +480,42 @@ POSTHOOK: Input: default@alltypesorc -3799 1 10782 1 NULL 6 +Warning: Shuffle Join MERGEJOIN[9][tables = [$hdt$_0, $hdt$_1]] in Stage 'Reducer 2' is a cross product +PREHOOK: query: -- Left outer join with residual +explain +select * +from alltypesorc a left outer join alltypesorc b +on a.cint = b.cint or a.csmallint between 1 and 10 +PREHOOK: type: QUERY +POSTHOOK: query: -- Left outer join with residual +explain +select * +from alltypesorc a left outer join alltypesorc b +on a.cint = b.cint or a.csmallint between 1 and 10 +POSTHOOK: type: QUERY +Plan optimized by CBO. + +Vertex dependency in root stage +Reducer 2 <- Map 1 (SIMPLE_EDGE), Map 3 (SIMPLE_EDGE) + +Stage-0 + Fetch Operator + limit:-1 + Stage-1 + Reducer 2 llap + File Output Operator [FS_8] + Merge Join Operator [MERGEJOIN_9] (rows=150994944 width=431) + Conds:(Left Outer),Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11","_col12","_col13","_col14","_col15","_col16","_col17","_col18","_col19","_col20","_col21","_col22","_col23"],residual filter predicates:{((_col2 = _col14) or _col1 BETWEEN 1 AND 10)} + <-Map 1 [SIMPLE_EDGE] llap + SHUFFLE [RS_4] + Select Operator [SEL_1] (rows=12288 width=215) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11"] + TableScan [TS_0] (rows=12288 width=215) + default@alltypesorc,a,Tbl:COMPLETE,Col:NONE,Output:["ctinyint","csmallint","cint","cbigint","cfloat","cdouble","cstring1","cstring2","ctimestamp1","ctimestamp2","cboolean1","cboolean2"] + <-Map 3 [SIMPLE_EDGE] llap + SHUFFLE [RS_5] + Select Operator [SEL_3] (rows=12288 width=215) + Output:["_col0","_col1","_col2","_col3","_col4","_col5","_col6","_col7","_col8","_col9","_col10","_col11"] + TableScan [TS_2] (rows=12288 width=215) + default@alltypesorc,b,Tbl:COMPLETE,Col:NONE,Output:["ctinyint","csmallint","cint","cbigint","cfloat","cdouble","cstring1","cstring2","ctimestamp1","ctimestamp2","cboolean1","cboolean2"] +