You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by na...@apache.org on 2012/09/13 06:11:56 UTC
svn commit: r1384200 - in /hive/trunk/ql/src:
java/org/apache/hadoop/hive/ql/exec/
java/org/apache/hadoop/hive/ql/optimizer/
java/org/apache/hadoop/hive/ql/optimizer/index/
java/org/apache/hadoop/hive/ql/optimizer/lineage/
java/org/apache/hadoop/hive/q...
Author: namit
Date: Thu Sep 13 04:11:55 2012
New Revision: 1384200
URL: http://svn.apache.org/viewvc?rev=1384200&view=rev
Log:
HIVE-3339 Change the rules in SemanticAnalyzer to use Operator.getName() instead of hardcoded names
(Zhenxiao Luo via namit)
Added:
hive/trunk/ql/src/test/queries/clientpositive/recursive_dir.q
Modified:
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonJoinOperator.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/FilterOperator.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/HashTableDummyOperator.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/HashTableSinkOperator.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/LateralViewForwardOperator.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/LateralViewJoinOperator.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/LimitOperator.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/MapJoinOperator.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/SMBMapJoinOperator.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/ScriptOperator.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/SelectOperator.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/TableScanOperator.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/UDTFOperator.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/UnionOperator.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/BucketMapJoinOptimizer.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPruner.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GroupByOptimizer.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/MapJoinProcessor.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ReduceSinkDeDuplication.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SamplePruner.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SortedMergeBucketMapJoinOptimizer.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/index/RewriteCanApplyCtx.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/index/RewriteQueryUsingAggregateIndexCtx.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/lineage/Generator.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/pcr/PartitionConditionRemover.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/LocalMapJoinProcFactory.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/MapJoinResolver.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/MetadataOnlyOptimizer.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/SkewJoinResolver.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/index/IndexWhereTaskDispatcher.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartitionPruner.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/unionproc/UnionProcessor.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/ppd/PredicatePushDown.java
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonJoinOperator.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonJoinOperator.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonJoinOperator.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/CommonJoinOperator.java Thu Sep 13 04:11:55 2012
@@ -907,6 +907,10 @@ transient boolean newGroupStarted = fals
@Override
public String getName() {
+ return getOperatorName();
+ }
+
+ static public String getOperatorName() {
return "JOIN";
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/FileSinkOperator.java Thu Sep 13 04:11:55 2012
@@ -736,6 +736,10 @@ public class FileSinkOperator extends Te
*/
@Override
public String getName() {
+ return getOperatorName();
+ }
+
+ static public String getOperatorName() {
return "FS";
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/FilterOperator.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/FilterOperator.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/FilterOperator.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/FilterOperator.java Thu Sep 13 04:11:55 2012
@@ -149,6 +149,10 @@ public class FilterOperator extends Oper
*/
@Override
public String getName() {
+ return getOperatorName();
+ }
+
+ static public String getOperatorName() {
return "FIL";
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/GroupByOperator.java Thu Sep 13 04:11:55 2012
@@ -1081,6 +1081,10 @@ public class GroupByOperator extends Ope
*/
@Override
public String getName() {
+ return getOperatorName();
+ }
+
+ static public String getOperatorName() {
return "GBY";
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/HashTableDummyOperator.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/HashTableDummyOperator.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/HashTableDummyOperator.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/HashTableDummyOperator.java Thu Sep 13 04:11:55 2012
@@ -54,6 +54,10 @@ public class HashTableDummyOperator exte
@Override
public String getName() {
+ return getOperatorName();
+ }
+
+ static public String getOperatorName() {
return "HASHTABLEDUMMY";
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/HashTableSinkOperator.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/HashTableSinkOperator.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/HashTableSinkOperator.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/HashTableSinkOperator.java Thu Sep 13 04:11:55 2012
@@ -435,6 +435,10 @@ public class HashTableSinkOperator exten
*/
@Override
public String getName() {
+ return getOperatorName();
+ }
+
+ static public String getOperatorName() {
return "HASHTABLESINK";
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/LateralViewForwardOperator.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/LateralViewForwardOperator.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/LateralViewForwardOperator.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/LateralViewForwardOperator.java Thu Sep 13 04:11:55 2012
@@ -39,6 +39,10 @@ public class LateralViewForwardOperator
@Override
public String getName() {
+ return getOperatorName();
+ }
+
+ static public String getOperatorName() {
return "LVF";
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/LateralViewJoinOperator.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/LateralViewJoinOperator.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/LateralViewJoinOperator.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/LateralViewJoinOperator.java Thu Sep 13 04:11:55 2012
@@ -139,6 +139,10 @@ public class LateralViewJoinOperator ext
@Override
public String getName() {
+ return getOperatorName();
+ }
+
+ static public String getOperatorName() {
return "LVJ";
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/LimitOperator.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/LimitOperator.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/LimitOperator.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/LimitOperator.java Thu Sep 13 04:11:55 2012
@@ -57,6 +57,10 @@ public class LimitOperator extends Opera
@Override
public String getName() {
+ return getOperatorName();
+ }
+
+ static public String getOperatorName() {
return "LIM";
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/MapJoinOperator.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/MapJoinOperator.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/MapJoinOperator.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/MapJoinOperator.java Thu Sep 13 04:11:55 2012
@@ -300,6 +300,10 @@ public class MapJoinOperator extends Abs
*/
@Override
public String getName() {
+ return getOperatorName();
+ }
+
+ static public String getOperatorName() {
return "MAPJOIN";
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/MapOperator.java Thu Sep 13 04:11:55 2012
@@ -629,6 +629,10 @@ public class MapOperator extends Operato
@Override
public String getName() {
+ return getOperatorName();
+ }
+
+ static public String getOperatorName() {
return "MAP";
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/Operator.java Thu Sep 13 04:11:55 2012
@@ -816,6 +816,10 @@ public abstract class Operator<T extends
* @return the name of the operator
*/
public String getName() {
+ return getOperatorName();
+ }
+
+ static public String getOperatorName() {
return "OP";
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/ReduceSinkOperator.java Thu Sep 13 04:11:55 2012
@@ -310,6 +310,10 @@ public class ReduceSinkOperator extends
*/
@Override
public String getName() {
+ return getOperatorName();
+ }
+
+ static public String getOperatorName() {
return "RS";
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/SMBMapJoinOperator.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/SMBMapJoinOperator.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/SMBMapJoinOperator.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/SMBMapJoinOperator.java Thu Sep 13 04:11:55 2012
@@ -594,6 +594,10 @@ public class SMBMapJoinOperator extends
*/
@Override
public String getName() {
+ return getOperatorName();
+ }
+
+ static public String getOperatorName() {
return "MAPJOIN";
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/ScriptOperator.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/ScriptOperator.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/ScriptOperator.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/ScriptOperator.java Thu Sep 13 04:11:55 2012
@@ -699,6 +699,10 @@ public class ScriptOperator extends Oper
@Override
public String getName() {
+ return getOperatorName();
+ }
+
+ static public String getOperatorName() {
return "SCR";
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/SelectOperator.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/SelectOperator.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/SelectOperator.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/SelectOperator.java Thu Sep 13 04:11:55 2012
@@ -89,6 +89,10 @@ public class SelectOperator extends Oper
*/
@Override
public String getName() {
+ return getOperatorName();
+ }
+
+ static public String getOperatorName() {
return "SEL";
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/TableScanOperator.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/TableScanOperator.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/TableScanOperator.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/TableScanOperator.java Thu Sep 13 04:11:55 2012
@@ -207,6 +207,10 @@ public class TableScanOperator extends O
**/
@Override
public String getName() {
+ return getOperatorName();
+ }
+
+ static public String getOperatorName() {
return "TS";
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/UDTFOperator.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/UDTFOperator.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/UDTFOperator.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/UDTFOperator.java Thu Sep 13 04:11:55 2012
@@ -114,6 +114,10 @@ public class UDTFOperator extends Operat
@Override
public String getName() {
+ return getOperatorName();
+ }
+
+ static public String getOperatorName() {
return "UDTF";
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/UnionOperator.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/UnionOperator.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/UnionOperator.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/UnionOperator.java Thu Sep 13 04:11:55 2012
@@ -137,6 +137,10 @@ public class UnionOperator extends Opera
*/
@Override
public String getName() {
+ return getOperatorName();
+ }
+
+ static public String getOperatorName() {
return "UNION";
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/BucketMapJoinOptimizer.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/BucketMapJoinOptimizer.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/BucketMapJoinOptimizer.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/BucketMapJoinOptimizer.java Thu Sep 13 04:11:55 2012
@@ -40,6 +40,8 @@ import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hive.conf.HiveConf;
import org.apache.hadoop.hive.ql.ErrorMsg;
import org.apache.hadoop.hive.ql.exec.MapJoinOperator;
+import org.apache.hadoop.hive.ql.exec.UnionOperator;
+import org.apache.hadoop.hive.ql.exec.ReduceSinkOperator;
import org.apache.hadoop.hive.ql.exec.Operator;
import org.apache.hadoop.hive.ql.exec.TableScanOperator;
import org.apache.hadoop.hive.ql.lib.DefaultGraphWalker;
@@ -83,12 +85,18 @@ public class BucketMapJoinOptimizer impl
new BucketMapjoinOptProcCtx(pctx.getConf());
// process map joins with no reducers pattern
- opRules.put(new RuleRegExp("R1", "MAPJOIN%"), getBucketMapjoinProc(pctx));
- opRules.put(new RuleRegExp("R2", "RS%.*MAPJOIN"), getBucketMapjoinRejectProc(pctx));
- opRules.put(new RuleRegExp(new String("R3"), "UNION%.*MAPJOIN%"),
- getBucketMapjoinRejectProc(pctx));
- opRules.put(new RuleRegExp(new String("R4"), "MAPJOIN%.*MAPJOIN%"),
- getBucketMapjoinRejectProc(pctx));
+ opRules.put(new RuleRegExp("R1",
+ MapJoinOperator.getOperatorName() + "%"),
+ getBucketMapjoinProc(pctx));
+ opRules.put(new RuleRegExp("R2",
+ ReduceSinkOperator.getOperatorName() + "%.*" + MapJoinOperator.getOperatorName()),
+ getBucketMapjoinRejectProc(pctx));
+ opRules.put(new RuleRegExp(new String("R3"),
+ UnionOperator.getOperatorName() + "%.*" + MapJoinOperator.getOperatorName() + "%"),
+ getBucketMapjoinRejectProc(pctx));
+ opRules.put(new RuleRegExp(new String("R4"),
+ MapJoinOperator.getOperatorName() + "%.*" + MapJoinOperator.getOperatorName() + "%"),
+ getBucketMapjoinRejectProc(pctx));
// The dispatcher fires the processor corresponding to the closest matching
// rule and passes the context along
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPruner.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPruner.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPruner.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPruner.java Thu Sep 13 04:11:55 2012
@@ -23,10 +23,19 @@ import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
-import org.apache.hadoop.hive.ql.exec.FileSinkOperator;
import org.apache.hadoop.hive.ql.exec.Operator;
-import org.apache.hadoop.hive.ql.exec.ScriptOperator;
+import org.apache.hadoop.hive.ql.exec.FilterOperator;
+import org.apache.hadoop.hive.ql.exec.TableScanOperator;
import org.apache.hadoop.hive.ql.exec.SelectOperator;
+import org.apache.hadoop.hive.ql.exec.ScriptOperator;
+import org.apache.hadoop.hive.ql.exec.GroupByOperator;
+import org.apache.hadoop.hive.ql.exec.MapJoinOperator;
+import org.apache.hadoop.hive.ql.exec.UnionOperator;
+import org.apache.hadoop.hive.ql.exec.CommonJoinOperator;
+import org.apache.hadoop.hive.ql.exec.ReduceSinkOperator;
+import org.apache.hadoop.hive.ql.exec.LateralViewJoinOperator;
+import org.apache.hadoop.hive.ql.exec.LateralViewForwardOperator;
+import org.apache.hadoop.hive.ql.exec.FileSinkOperator;
import org.apache.hadoop.hive.ql.lib.DefaultGraphWalker;
import org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher;
import org.apache.hadoop.hive.ql.lib.Dispatcher;
@@ -78,24 +87,33 @@ public class ColumnPruner implements Tra
// the operator stack. The dispatcher
// generates the plan from the operator tree
Map<Rule, NodeProcessor> opRules = new LinkedHashMap<Rule, NodeProcessor>();
- opRules.put(new RuleRegExp("R1", "FIL%"), ColumnPrunerProcFactory
- .getFilterProc());
- opRules.put(new RuleRegExp("R2", "GBY%"), ColumnPrunerProcFactory
- .getGroupByProc());
- opRules.put(new RuleRegExp("R3", "RS%"), ColumnPrunerProcFactory
- .getReduceSinkProc());
- opRules.put(new RuleRegExp("R4", "SEL%"), ColumnPrunerProcFactory
- .getSelectProc());
- opRules.put(new RuleRegExp("R5", "JOIN%"), ColumnPrunerProcFactory
- .getJoinProc());
- opRules.put(new RuleRegExp("R6", "MAPJOIN%"), ColumnPrunerProcFactory
- .getMapJoinProc());
- opRules.put(new RuleRegExp("R7", "TS%"), ColumnPrunerProcFactory
- .getTableScanProc());
- opRules.put(new RuleRegExp("R8", "LVJ%"), ColumnPrunerProcFactory
- .getLateralViewJoinProc());
- opRules.put(new RuleRegExp("R9", "LVF%"), ColumnPrunerProcFactory
- .getLateralViewForwardProc());
+ opRules.put(new RuleRegExp("R1",
+ FilterOperator.getOperatorName() + "%"),
+ ColumnPrunerProcFactory.getFilterProc());
+ opRules.put(new RuleRegExp("R2",
+ GroupByOperator.getOperatorName() + "%"),
+ ColumnPrunerProcFactory.getGroupByProc());
+ opRules.put(new RuleRegExp("R3",
+ ReduceSinkOperator.getOperatorName() + "%"),
+ ColumnPrunerProcFactory.getReduceSinkProc());
+ opRules.put(new RuleRegExp("R4",
+ SelectOperator.getOperatorName() + "%"),
+ ColumnPrunerProcFactory.getSelectProc());
+ opRules.put(new RuleRegExp("R5",
+ CommonJoinOperator.getOperatorName() + "%"),
+ ColumnPrunerProcFactory.getJoinProc());
+ opRules.put(new RuleRegExp("R6",
+ MapJoinOperator.getOperatorName() + "%"),
+ ColumnPrunerProcFactory.getMapJoinProc());
+ opRules.put(new RuleRegExp("R7",
+ TableScanOperator.getOperatorName() + "%"),
+ ColumnPrunerProcFactory.getTableScanProc());
+ opRules.put(new RuleRegExp("R8",
+ LateralViewJoinOperator.getOperatorName() + "%"),
+ ColumnPrunerProcFactory.getLateralViewJoinProc());
+ opRules.put(new RuleRegExp("R9",
+ LateralViewForwardOperator.getOperatorName() + "%"),
+ ColumnPrunerProcFactory.getLateralViewForwardProc());
// The dispatcher fires the processor corresponding to the closest matching
// rule and passes the context along
Dispatcher disp = new DefaultRuleDispatcher(ColumnPrunerProcFactory
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GroupByOptimizer.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GroupByOptimizer.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GroupByOptimizer.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/GroupByOptimizer.java Thu Sep 13 04:11:55 2012
@@ -32,6 +32,7 @@ import org.apache.hadoop.hive.ql.exec.Fu
import org.apache.hadoop.hive.ql.exec.GroupByOperator;
import org.apache.hadoop.hive.ql.exec.Operator;
import org.apache.hadoop.hive.ql.exec.TableScanOperator;
+import org.apache.hadoop.hive.ql.exec.ReduceSinkOperator;
import org.apache.hadoop.hive.ql.exec.Utilities;
import org.apache.hadoop.hive.ql.lib.DefaultGraphWalker;
import org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher;
@@ -77,8 +78,11 @@ public class GroupByOptimizer implements
GroupByOptProcCtx groupByOptimizeCtx = new GroupByOptProcCtx();
// process group-by pattern
- opRules.put(new RuleRegExp("R1", "GBY%RS%GBY%"),
- getMapAggreSortedGroupbyProc(pctx));
+ opRules.put(new RuleRegExp("R1",
+ GroupByOperator.getOperatorName() + "%"
+ + ReduceSinkOperator.getOperatorName() + "%"
+ + GroupByOperator.getOperatorName() + "%"),
+ getMapAggreSortedGroupbyProc(pctx));
// The dispatcher fires the processor corresponding to the closest matching
// rule and passes the context along
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/MapJoinProcessor.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/MapJoinProcessor.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/MapJoinProcessor.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/MapJoinProcessor.java Thu Sep 13 04:11:55 2012
@@ -34,6 +34,7 @@ import org.apache.hadoop.hive.conf.HiveC
import org.apache.hadoop.hive.ql.ErrorMsg;
import org.apache.hadoop.hive.ql.exec.AbstractMapJoinOperator;
import org.apache.hadoop.hive.ql.exec.ColumnInfo;
+import org.apache.hadoop.hive.ql.exec.FileSinkOperator;
import org.apache.hadoop.hive.ql.exec.GroupByOperator;
import org.apache.hadoop.hive.ql.exec.JoinOperator;
import org.apache.hadoop.hive.ql.exec.LateralViewJoinOperator;
@@ -714,10 +715,18 @@ public class MapJoinProcessor implements
// the operator stack.
// The dispatcher generates the plan from the operator tree
Map<Rule, NodeProcessor> opRules = new LinkedHashMap<Rule, NodeProcessor>();
- opRules.put(new RuleRegExp("R0", "MAPJOIN%"), getCurrentMapJoin());
- opRules.put(new RuleRegExp("R1", "MAPJOIN%.*FS%"), getMapJoinFS());
- opRules.put(new RuleRegExp("R2", "MAPJOIN%.*RS%"), getMapJoinDefault());
- opRules.put(new RuleRegExp("R4", "MAPJOIN%.*UNION%"), getMapJoinDefault());
+ opRules.put(new RuleRegExp("R0",
+ MapJoinOperator.getOperatorName() + "%"),
+ getCurrentMapJoin());
+ opRules.put(new RuleRegExp("R1",
+ MapJoinOperator.getOperatorName() + "%.*" + FileSinkOperator.getOperatorName() + "%"),
+ getMapJoinFS());
+ opRules.put(new RuleRegExp("R2",
+ MapJoinOperator.getOperatorName() + "%.*" + ReduceSinkOperator.getOperatorName() + "%"),
+ getMapJoinDefault());
+ opRules.put(new RuleRegExp("R4",
+ MapJoinOperator.getOperatorName() + "%.*" + UnionOperator.getOperatorName() + "%"),
+ getMapJoinDefault());
// The dispatcher fires the processor corresponding to the closest matching
// rule and passes the context along
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ReduceSinkDeDuplication.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ReduceSinkDeDuplication.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ReduceSinkDeDuplication.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ReduceSinkDeDuplication.java Thu Sep 13 04:11:55 2012
@@ -75,8 +75,9 @@ public class ReduceSinkDeDuplication imp
ReduceSinkDeduplicateProcCtx cppCtx = new ReduceSinkDeduplicateProcCtx(pGraphContext);
Map<Rule, NodeProcessor> opRules = new LinkedHashMap<Rule, NodeProcessor>();
- opRules.put(new RuleRegExp("R1", "RS%.*RS%"), ReduceSinkDeduplicateProcFactory
- .getReducerReducerProc());
+ opRules.put(new RuleRegExp("R1",
+ ReduceSinkOperator.getOperatorName() + "%.*" + ReduceSinkOperator.getOperatorName() + "%"),
+ ReduceSinkDeduplicateProcFactory.getReducerReducerProc());
// The dispatcher fires the processor corresponding to the closest matching
// rule and passes the context along
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SamplePruner.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SamplePruner.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SamplePruner.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SamplePruner.java Thu Sep 13 04:11:55 2012
@@ -104,7 +104,12 @@ public class SamplePruner implements Tra
.getOpToSamplePruner());
Map<Rule, NodeProcessor> opRules = new LinkedHashMap<Rule, NodeProcessor>();
- opRules.put(new RuleRegExp("R1", "(TS%FIL%FIL%|TS%FIL%)"), getFilterProc());
+ opRules.put(new RuleRegExp("R1",
+ "(" + TableScanOperator.getOperatorName() + "%"
+ + FilterOperator.getOperatorName() + "%"
+ + FilterOperator.getOperatorName() + "%|"
+ + TableScanOperator.getOperatorName() + "%"
+ + FilterOperator.getOperatorName() + "%)"), getFilterProc());
// The dispatcher fires the processor corresponding to the closest matching
// rule and passes the context along
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SortedMergeBucketMapJoinOptimizer.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SortedMergeBucketMapJoinOptimizer.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SortedMergeBucketMapJoinOptimizer.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/SortedMergeBucketMapJoinOptimizer.java Thu Sep 13 04:11:55 2012
@@ -74,7 +74,7 @@ public class SortedMergeBucketMapJoinOpt
Map<Rule, NodeProcessor> opRules = new LinkedHashMap<Rule, NodeProcessor>();
// go through all map joins and find out all which have enabled bucket map
// join.
- opRules.put(new RuleRegExp("R1", "MAPJOIN%"),
+ opRules.put(new RuleRegExp("R1", MapJoinOperator.getOperatorName() + "%"),
getSortedMergeBucketMapjoinProc(pctx));
// The dispatcher fires the processor corresponding to the closest matching
// rule and passes the context along
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/index/RewriteCanApplyCtx.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/index/RewriteCanApplyCtx.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/index/RewriteCanApplyCtx.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/index/RewriteCanApplyCtx.java Thu Sep 13 04:11:55 2012
@@ -31,6 +31,9 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.hive.metastore.api.Index;
import org.apache.hadoop.hive.ql.exec.Operator;
+import org.apache.hadoop.hive.ql.exec.FilterOperator;
+import org.apache.hadoop.hive.ql.exec.GroupByOperator;
+import org.apache.hadoop.hive.ql.exec.SelectOperator;
import org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher;
import org.apache.hadoop.hive.ql.lib.Dispatcher;
import org.apache.hadoop.hive.ql.lib.GraphWalker;
@@ -255,11 +258,11 @@ public final class RewriteCanApplyCtx im
void populateRewriteVars(Operator<? extends OperatorDesc> topOp)
throws SemanticException{
Map<Rule, NodeProcessor> opRules = new LinkedHashMap<Rule, NodeProcessor>();
- opRules.put(new RuleRegExp("R1", "FIL%"),
+ opRules.put(new RuleRegExp("R1", FilterOperator.getOperatorName() + "%"),
RewriteCanApplyProcFactory.canApplyOnFilterOperator());
- opRules.put(new RuleRegExp("R2", "GBY%"),
+ opRules.put(new RuleRegExp("R2", GroupByOperator.getOperatorName() + "%"),
RewriteCanApplyProcFactory.canApplyOnGroupByOperator());
- opRules.put(new RuleRegExp("R3", "SEL%"),
+ opRules.put(new RuleRegExp("R3", SelectOperator.getOperatorName() + "%"),
RewriteCanApplyProcFactory.canApplyOnSelectOperator());
// The dispatcher fires the processor corresponding to the closest matching
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/index/RewriteQueryUsingAggregateIndexCtx.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/index/RewriteQueryUsingAggregateIndexCtx.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/index/RewriteQueryUsingAggregateIndexCtx.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/index/RewriteQueryUsingAggregateIndexCtx.java Thu Sep 13 04:11:55 2012
@@ -25,6 +25,9 @@ import java.util.Map;
import java.util.Stack;
import org.apache.hadoop.hive.ql.exec.Operator;
+import org.apache.hadoop.hive.ql.exec.TableScanOperator;
+import org.apache.hadoop.hive.ql.exec.SelectOperator;
+import org.apache.hadoop.hive.ql.exec.GroupByOperator;
import org.apache.hadoop.hive.ql.lib.DefaultGraphWalker;
import org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher;
import org.apache.hadoop.hive.ql.lib.Dispatcher;
@@ -123,14 +126,14 @@ public final class RewriteQueryUsingAggr
Map<Rule, NodeProcessor> opRules = new LinkedHashMap<Rule, NodeProcessor>();
// replace scan operator containing original table with index table
- opRules.put(new RuleRegExp("R1", "TS%"),
+ opRules.put(new RuleRegExp("R1", TableScanOperator.getOperatorName() + "%"),
RewriteQueryUsingAggregateIndex.getReplaceTableScanProc());
//rule that replaces index key selection with
//sum(`_count_of_indexed_column`) function in original query
- opRules.put(new RuleRegExp("R2", "SEL%"),
+ opRules.put(new RuleRegExp("R2", SelectOperator.getOperatorName() + "%"),
RewriteQueryUsingAggregateIndex.getNewQuerySelectSchemaProc());
//Manipulates the ExprNodeDesc from GroupByOperator aggregation list
- opRules.put(new RuleRegExp("R3", "GBY%"),
+ opRules.put(new RuleRegExp("R3", GroupByOperator.getOperatorName() + "%"),
RewriteQueryUsingAggregateIndex.getNewQueryGroupbySchemaProc());
// The dispatcher fires the processor corresponding to the closest matching
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/lineage/Generator.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/lineage/Generator.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/lineage/Generator.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/lineage/Generator.java Thu Sep 13 04:11:55 2012
@@ -22,6 +22,17 @@ import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.Map;
+import org.apache.hadoop.hive.ql.exec.Operator;
+import org.apache.hadoop.hive.ql.exec.TableScanOperator;
+import org.apache.hadoop.hive.ql.exec.SelectOperator;
+import org.apache.hadoop.hive.ql.exec.ScriptOperator;
+import org.apache.hadoop.hive.ql.exec.GroupByOperator;
+import org.apache.hadoop.hive.ql.exec.MapJoinOperator;
+import org.apache.hadoop.hive.ql.exec.UDTFOperator;
+import org.apache.hadoop.hive.ql.exec.UnionOperator;
+import org.apache.hadoop.hive.ql.exec.CommonJoinOperator;
+import org.apache.hadoop.hive.ql.exec.ReduceSinkOperator;
+import org.apache.hadoop.hive.ql.exec.LateralViewJoinOperator;
import org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher;
import org.apache.hadoop.hive.ql.lib.Dispatcher;
import org.apache.hadoop.hive.ql.lib.GraphWalker;
@@ -52,15 +63,25 @@ public class Generator implements Transf
LineageCtx lCtx = new LineageCtx(pctx);
Map<Rule, NodeProcessor> opRules = new LinkedHashMap<Rule, NodeProcessor>();
- opRules.put(new RuleRegExp("R1", "TS%"), OpProcFactory.getTSProc());
- opRules.put(new RuleRegExp("R2", "SCR%"), OpProcFactory.getTransformProc());
- opRules.put(new RuleRegExp("R3", "UDTF%"), OpProcFactory.getTransformProc());
- opRules.put(new RuleRegExp("R4", "SEL%"), OpProcFactory.getSelProc());
- opRules.put(new RuleRegExp("R5", "GBY%"), OpProcFactory.getGroupByProc());
- opRules.put(new RuleRegExp("R6", "UNION%"), OpProcFactory.getUnionProc());
- opRules.put(new RuleRegExp("R7", "JOIN%|MAPJOIN%"), OpProcFactory.getJoinProc());
- opRules.put(new RuleRegExp("R8", "RS%"), OpProcFactory.getReduceSinkProc());
- opRules.put(new RuleRegExp("R9", "LVJ%"), OpProcFactory.getLateralViewJoinProc());
+ opRules.put(new RuleRegExp("R1", TableScanOperator.getOperatorName() + "%"),
+ OpProcFactory.getTSProc());
+ opRules.put(new RuleRegExp("R2", ScriptOperator.getOperatorName() + "%"),
+ OpProcFactory.getTransformProc());
+ opRules.put(new RuleRegExp("R3", UDTFOperator.getOperatorName() + "%"),
+ OpProcFactory.getTransformProc());
+ opRules.put(new RuleRegExp("R4", SelectOperator.getOperatorName() + "%"),
+ OpProcFactory.getSelProc());
+ opRules.put(new RuleRegExp("R5", GroupByOperator.getOperatorName() + "%"),
+ OpProcFactory.getGroupByProc());
+ opRules.put(new RuleRegExp("R6", UnionOperator.getOperatorName() + "%"),
+ OpProcFactory.getUnionProc());
+ opRules.put(new RuleRegExp("R7",
+ CommonJoinOperator.getOperatorName() + "%|" + MapJoinOperator.getOperatorName() + "%"),
+ OpProcFactory.getJoinProc());
+ opRules.put(new RuleRegExp("R8", ReduceSinkOperator.getOperatorName() + "%"),
+ OpProcFactory.getReduceSinkProc());
+ opRules.put(new RuleRegExp("R9", LateralViewJoinOperator.getOperatorName() + "%"),
+ OpProcFactory.getLateralViewJoinProc());
// The dispatcher fires the processor corresponding to the closest matching rule and passes the context along
Dispatcher disp = new DefaultRuleDispatcher(OpProcFactory.getDefaultProc(), opRules, lCtx);
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/pcr/PartitionConditionRemover.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/pcr/PartitionConditionRemover.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/pcr/PartitionConditionRemover.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/pcr/PartitionConditionRemover.java Thu Sep 13 04:11:55 2012
@@ -25,6 +25,9 @@ import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.hadoop.hive.ql.exec.Operator;
+import org.apache.hadoop.hive.ql.exec.FilterOperator;
+import org.apache.hadoop.hive.ql.exec.TableScanOperator;
import org.apache.hadoop.hive.ql.lib.DefaultGraphWalker;
import org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher;
import org.apache.hadoop.hive.ql.lib.Dispatcher;
@@ -63,8 +66,13 @@ public class PartitionConditionRemover i
PcrOpWalkerCtx opWalkerCtx = new PcrOpWalkerCtx(pctx, opToRemove);
Map<Rule, NodeProcessor> opRules = new LinkedHashMap<Rule, NodeProcessor>();
- opRules.put(new RuleRegExp("R1", "(TS%FIL%)|(TS%FIL%FIL%)"), PcrOpProcFactory
- .getFilterProc());
+ opRules.put(new RuleRegExp("R1",
+ "(" + TableScanOperator.getOperatorName() + "%"
+ + FilterOperator.getOperatorName() + "%)|("
+ + TableScanOperator.getOperatorName() + "%"
+ + FilterOperator.getOperatorName() + "%"
+ + FilterOperator.getOperatorName() + "%)"),
+ PcrOpProcFactory.getFilterProc());
// The dispatcher fires the processor corresponding to the closest matching
// rule and passes the context along
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/LocalMapJoinProcFactory.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/LocalMapJoinProcFactory.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/LocalMapJoinProcFactory.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/LocalMapJoinProcFactory.java Thu Sep 13 04:11:55 2012
@@ -191,7 +191,8 @@ public final class LocalMapJoinProcFacto
LocalMapJoinProcCtx localMapJoinProcCtx) throws Exception {
List<Operator<? extends OperatorDesc>> childOps = mapJoinOp.getChildOperators();
Map<Rule, NodeProcessor> opRules = new LinkedHashMap<Rule, NodeProcessor>();
- opRules.put(new RuleRegExp("R1", "GBY%"), LocalMapJoinProcFactory.getGroupByProc());
+ opRules.put(new RuleRegExp("R1", GroupByOperator.getOperatorName() + "%"),
+ LocalMapJoinProcFactory.getGroupByProc());
// The dispatcher fires the processor corresponding to the closest
// matching rule and passes the context along
Dispatcher disp = new DefaultRuleDispatcher(LocalMapJoinProcFactory.getDefaultProc(),
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/MapJoinResolver.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/MapJoinResolver.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/MapJoinResolver.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/MapJoinResolver.java Thu Sep 13 04:11:55 2012
@@ -29,6 +29,7 @@ import java.util.Stack;
import org.apache.hadoop.hive.ql.Context;
import org.apache.hadoop.hive.ql.exec.ConditionalTask;
import org.apache.hadoop.hive.ql.exec.MapredLocalTask;
+import org.apache.hadoop.hive.ql.exec.MapJoinOperator;
import org.apache.hadoop.hive.ql.exec.Operator;
import org.apache.hadoop.hive.ql.exec.Task;
import org.apache.hadoop.hive.ql.exec.TaskFactory;
@@ -239,7 +240,8 @@ public class MapJoinResolver implements
LocalMapJoinProcCtx localMapJoinProcCtx = new LocalMapJoinProcCtx(task, physicalContext
.getParseContext());
Map<Rule, NodeProcessor> opRules = new LinkedHashMap<Rule, NodeProcessor>();
- opRules.put(new RuleRegExp("R1", "MAPJOIN%"), LocalMapJoinProcFactory.getJoinProc());
+ opRules.put(new RuleRegExp("R1", MapJoinOperator.getOperatorName() + "%"),
+ LocalMapJoinProcFactory.getJoinProc());
// The dispatcher fires the processor corresponding to the closest
// matching rule and passes the context along
Dispatcher disp = new DefaultRuleDispatcher(LocalMapJoinProcFactory.getDefaultProc(),
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/MetadataOnlyOptimizer.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/MetadataOnlyOptimizer.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/MetadataOnlyOptimizer.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/MetadataOnlyOptimizer.java Thu Sep 13 04:11:55 2012
@@ -30,6 +30,7 @@ import java.util.Stack;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.fs.Path;
+import org.apache.hadoop.hive.ql.exec.FileSinkOperator;
import org.apache.hadoop.hive.ql.exec.GroupByOperator;
import org.apache.hadoop.hive.ql.exec.Operator;
import org.apache.hadoop.hive.ql.exec.TableScanOperator;
@@ -264,8 +265,12 @@ public class MetadataOnlyOptimizer imple
WalkerCtx walkerCtx = new WalkerCtx();
Map<Rule, NodeProcessor> opRules = new LinkedHashMap<Rule, NodeProcessor>();
- opRules.put(new RuleRegExp("R1", "TS%"), new TableScanProcessor());
- opRules.put(new RuleRegExp("R2", "GBY%.*FS%"), new FileSinkProcessor());
+ opRules.put(new RuleRegExp("R1",
+ TableScanOperator.getOperatorName() + "%"),
+ new TableScanProcessor());
+ opRules.put(new RuleRegExp("R2",
+ GroupByOperator.getOperatorName() + "%.*" + FileSinkOperator.getOperatorName() + "%"),
+ new FileSinkProcessor());
// The dispatcher fires the processor corresponding to the closest
// matching rule and passes the context along
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/SkewJoinResolver.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/SkewJoinResolver.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/SkewJoinResolver.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/SkewJoinResolver.java Thu Sep 13 04:11:55 2012
@@ -24,6 +24,7 @@ import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Stack;
+import org.apache.hadoop.hive.ql.exec.CommonJoinOperator;
import org.apache.hadoop.hive.ql.exec.ConditionalTask;
import org.apache.hadoop.hive.ql.exec.Task;
import org.apache.hadoop.hive.ql.lib.DefaultGraphWalker;
@@ -81,8 +82,9 @@ public class SkewJoinResolver implements
physicalContext.getParseContext());
Map<Rule, NodeProcessor> opRules = new LinkedHashMap<Rule, NodeProcessor>();
- opRules.put(new RuleRegExp("R1", "JOIN%"), SkewJoinProcFactory
- .getJoinProc());
+ opRules.put(new RuleRegExp("R1",
+ CommonJoinOperator.getOperatorName() + "%"),
+ SkewJoinProcFactory.getJoinProc());
// The dispatcher fires the processor corresponding to the closest
// matching rule and passes the context along
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/index/IndexWhereTaskDispatcher.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/index/IndexWhereTaskDispatcher.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/index/IndexWhereTaskDispatcher.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/physical/index/IndexWhereTaskDispatcher.java Thu Sep 13 04:11:55 2012
@@ -28,6 +28,7 @@ import java.util.Map;
import java.util.Stack;
import org.apache.hadoop.hive.metastore.api.Index;
+import org.apache.hadoop.hive.ql.exec.TableScanOperator;
import org.apache.hadoop.hive.ql.exec.Task;
import org.apache.hadoop.hive.ql.index.bitmap.BitmapIndexHandler;
import org.apache.hadoop.hive.ql.index.compact.CompactIndexHandler;
@@ -131,7 +132,8 @@ public class IndexWhereTaskDispatcher im
// We set the pushed predicate from the WHERE clause as the filter expr on
// all table scan operators, so we look for table scan operators(TS%)
- operatorRules.put(new RuleRegExp("RULEWhere", "TS%"), new IndexWhereProcessor(indexes));
+ operatorRules.put(new RuleRegExp("RULEWhere", TableScanOperator.getOperatorName() + "%"),
+ new IndexWhereProcessor(indexes));
return operatorRules;
}
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartitionPruner.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartitionPruner.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartitionPruner.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/ppr/PartitionPruner.java Thu Sep 13 04:11:55 2012
@@ -37,6 +37,9 @@ import org.apache.hadoop.hive.ql.ErrorMs
import org.apache.hadoop.hive.ql.exec.ExprNodeEvaluator;
import org.apache.hadoop.hive.ql.exec.FunctionRegistry;
import org.apache.hadoop.hive.ql.exec.Utilities;
+import org.apache.hadoop.hive.ql.exec.Operator;
+import org.apache.hadoop.hive.ql.exec.FilterOperator;
+import org.apache.hadoop.hive.ql.exec.TableScanOperator;
import org.apache.hadoop.hive.ql.lib.DefaultGraphWalker;
import org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher;
import org.apache.hadoop.hive.ql.lib.Dispatcher;
@@ -89,8 +92,13 @@ public class PartitionPruner implements
OpWalkerCtx opWalkerCtx = new OpWalkerCtx(pctx.getOpToPartPruner());
Map<Rule, NodeProcessor> opRules = new LinkedHashMap<Rule, NodeProcessor>();
- opRules.put(new RuleRegExp("R1", "(TS%FIL%)|(TS%FIL%FIL%)"), OpProcFactory
- .getFilterProc());
+ opRules.put(new RuleRegExp("R1",
+ "(" + TableScanOperator.getOperatorName() + "%"
+ + FilterOperator.getOperatorName() + "%)|("
+ + TableScanOperator.getOperatorName() + "%"
+ + FilterOperator.getOperatorName() + "%"
+ + FilterOperator.getOperatorName() + "%)"),
+ OpProcFactory.getFilterProc());
// The dispatcher fires the processor corresponding to the closest matching
// rule and passes the context along
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/unionproc/UnionProcessor.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/unionproc/UnionProcessor.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/unionproc/UnionProcessor.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/optimizer/unionproc/UnionProcessor.java Thu Sep 13 04:11:55 2012
@@ -22,6 +22,11 @@ import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.Map;
+import org.apache.hadoop.hive.ql.exec.Operator;
+import org.apache.hadoop.hive.ql.exec.MapJoinOperator;
+import org.apache.hadoop.hive.ql.exec.TableScanOperator;
+import org.apache.hadoop.hive.ql.exec.UnionOperator;
+import org.apache.hadoop.hive.ql.exec.ReduceSinkOperator;
import org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher;
import org.apache.hadoop.hive.ql.lib.Dispatcher;
import org.apache.hadoop.hive.ql.lib.GraphWalker;
@@ -63,14 +68,18 @@ public class UnionProcessor implements T
// create a walker which walks the tree in a DFS manner while maintaining
// the operator stack.
Map<Rule, NodeProcessor> opRules = new LinkedHashMap<Rule, NodeProcessor>();
- opRules.put(new RuleRegExp("R1", "RS%.*UNION%"),
- UnionProcFactory.getMapRedUnion());
- opRules.put(new RuleRegExp("R2", "UNION%.*UNION%"),
- UnionProcFactory.getUnknownUnion());
- opRules.put(new RuleRegExp("R3", "TS%.*UNION%"),
- UnionProcFactory.getMapUnion());
- opRules.put(new RuleRegExp("R3", "MAPJOIN%.*UNION%"),
- UnionProcFactory.getMapJoinUnion());
+ opRules.put(new RuleRegExp("R1",
+ ReduceSinkOperator.getOperatorName() + "%.*" + UnionOperator.getOperatorName() + "%"),
+ UnionProcFactory.getMapRedUnion());
+ opRules.put(new RuleRegExp("R2",
+ UnionOperator.getOperatorName() + "%.*" + UnionOperator.getOperatorName() + "%"),
+ UnionProcFactory.getUnknownUnion());
+ opRules.put(new RuleRegExp("R3",
+ TableScanOperator.getOperatorName() + "%.*" + UnionOperator.getOperatorName() + "%"),
+ UnionProcFactory.getMapUnion());
+ opRules.put(new RuleRegExp("R3",
+ MapJoinOperator.getOperatorName() + "%.*" + UnionOperator.getOperatorName() + "%"),
+ UnionProcFactory.getMapJoinUnion());
// The dispatcher fires the processor for the matching rule and passes the
// context along
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java Thu Sep 13 04:11:55 2012
@@ -62,6 +62,7 @@ import org.apache.hadoop.hive.ql.exec.Fu
import org.apache.hadoop.hive.ql.exec.FunctionRegistry;
import org.apache.hadoop.hive.ql.exec.GroupByOperator;
import org.apache.hadoop.hive.ql.exec.JoinOperator;
+import org.apache.hadoop.hive.ql.exec.MapJoinOperator;
import org.apache.hadoop.hive.ql.exec.MapRedTask;
import org.apache.hadoop.hive.ql.exec.Operator;
import org.apache.hadoop.hive.ql.exec.OperatorFactory;
@@ -70,6 +71,7 @@ import org.apache.hadoop.hive.ql.exec.Re
import org.apache.hadoop.hive.ql.exec.ReduceSinkOperator;
import org.apache.hadoop.hive.ql.exec.RowSchema;
import org.apache.hadoop.hive.ql.exec.StatsTask;
+import org.apache.hadoop.hive.ql.exec.SelectOperator;
import org.apache.hadoop.hive.ql.exec.TableScanOperator;
import org.apache.hadoop.hive.ql.exec.Task;
import org.apache.hadoop.hive.ql.exec.TaskFactory;
@@ -7141,27 +7143,42 @@ public class SemanticAnalyzer extends Ba
// the operator stack.
// The dispatcher generates the plan from the operator tree
Map<Rule, NodeProcessor> opRules = new LinkedHashMap<Rule, NodeProcessor>();
- opRules.put(new RuleRegExp(new String("R1"), "TS%"), new GenMRTableScan1());
- opRules.put(new RuleRegExp(new String("R2"), "TS%.*RS%"),
- new GenMRRedSink1());
- opRules.put(new RuleRegExp(new String("R3"), "RS%.*RS%"),
- new GenMRRedSink2());
- opRules.put(new RuleRegExp(new String("R4"), "FS%"), new GenMRFileSink1());
- opRules.put(new RuleRegExp(new String("R5"), "UNION%"), new GenMRUnion1());
- opRules.put(new RuleRegExp(new String("R6"), "UNION%.*RS%"),
- new GenMRRedSink3());
- opRules.put(new RuleRegExp(new String("R6"), "MAPJOIN%.*RS%"),
- new GenMRRedSink4());
- opRules.put(new RuleRegExp(new String("R7"), "TS%.*MAPJOIN%"),
- MapJoinFactory.getTableScanMapJoin());
- opRules.put(new RuleRegExp(new String("R8"), "RS%.*MAPJOIN%"),
- MapJoinFactory.getReduceSinkMapJoin());
- opRules.put(new RuleRegExp(new String("R9"), "UNION%.*MAPJOIN%"),
- MapJoinFactory.getUnionMapJoin());
- opRules.put(new RuleRegExp(new String("R10"), "MAPJOIN%.*MAPJOIN%"),
- MapJoinFactory.getMapJoinMapJoin());
- opRules.put(new RuleRegExp(new String("R11"), "MAPJOIN%SEL%"),
- MapJoinFactory.getMapJoin());
+ opRules.put(new RuleRegExp(new String("R1"),
+ TableScanOperator.getOperatorName() + "%"),
+ new GenMRTableScan1());
+ opRules.put(new RuleRegExp(new String("R2"),
+ TableScanOperator.getOperatorName() + "%.*" + ReduceSinkOperator.getOperatorName() + "%"),
+ new GenMRRedSink1());
+ opRules.put(new RuleRegExp(new String("R3"),
+ ReduceSinkOperator.getOperatorName() + "%.*" + ReduceSinkOperator.getOperatorName() + "%"),
+ new GenMRRedSink2());
+ opRules.put(new RuleRegExp(new String("R4"),
+ FileSinkOperator.getOperatorName() + "%"),
+ new GenMRFileSink1());
+ opRules.put(new RuleRegExp(new String("R5"),
+ UnionOperator.getOperatorName() + "%"),
+ new GenMRUnion1());
+ opRules.put(new RuleRegExp(new String("R6"),
+ UnionOperator.getOperatorName() + "%.*" + ReduceSinkOperator.getOperatorName() + "%"),
+ new GenMRRedSink3());
+ opRules.put(new RuleRegExp(new String("R6"),
+ MapJoinOperator.getOperatorName() + "%.*" + ReduceSinkOperator.getOperatorName() + "%"),
+ new GenMRRedSink4());
+ opRules.put(new RuleRegExp(new String("R7"),
+ TableScanOperator.getOperatorName() + "%.*" + MapJoinOperator.getOperatorName() + "%"),
+ MapJoinFactory.getTableScanMapJoin());
+ opRules.put(new RuleRegExp(new String("R8"),
+ ReduceSinkOperator.getOperatorName() + "%.*" + MapJoinOperator.getOperatorName() + "%"),
+ MapJoinFactory.getReduceSinkMapJoin());
+ opRules.put(new RuleRegExp(new String("R9"),
+ UnionOperator.getOperatorName() + "%.*" + MapJoinOperator.getOperatorName() + "%"),
+ MapJoinFactory.getUnionMapJoin());
+ opRules.put(new RuleRegExp(new String("R10"),
+ MapJoinOperator.getOperatorName() + "%.*" + MapJoinOperator.getOperatorName() + "%"),
+ MapJoinFactory.getMapJoinMapJoin());
+ opRules.put(new RuleRegExp(new String("R11"),
+ MapJoinOperator.getOperatorName() + "%" + SelectOperator.getOperatorName() + "%"),
+ MapJoinFactory.getMapJoin());
// The dispatcher fires the processor corresponding to the closest matching
// rule and passes the context along
Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/ppd/PredicatePushDown.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/ppd/PredicatePushDown.java?rev=1384200&r1=1384199&r2=1384200&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/ppd/PredicatePushDown.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/ppd/PredicatePushDown.java Thu Sep 13 04:11:55 2012
@@ -21,6 +21,15 @@ import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.Map;
+import org.apache.hadoop.hive.ql.exec.Operator;
+import org.apache.hadoop.hive.ql.exec.FilterOperator;
+import org.apache.hadoop.hive.ql.exec.TableScanOperator;
+import org.apache.hadoop.hive.ql.exec.ScriptOperator;
+import org.apache.hadoop.hive.ql.exec.LimitOperator;
+import org.apache.hadoop.hive.ql.exec.UDTFOperator;
+import org.apache.hadoop.hive.ql.exec.CommonJoinOperator;
+import org.apache.hadoop.hive.ql.exec.ReduceSinkOperator;
+import org.apache.hadoop.hive.ql.exec.LateralViewForwardOperator;
import org.apache.hadoop.hive.ql.lib.DefaultGraphWalker;
import org.apache.hadoop.hive.ql.lib.DefaultRuleDispatcher;
import org.apache.hadoop.hive.ql.lib.Dispatcher;
@@ -78,14 +87,30 @@ public class PredicatePushDown implement
OpWalkerInfo opWalkerInfo = new OpWalkerInfo(pGraphContext);
Map<Rule, NodeProcessor> opRules = new LinkedHashMap<Rule, NodeProcessor>();
- opRules.put(new RuleRegExp("R1", "FIL%"), OpProcFactory.getFilterProc());
- opRules.put(new RuleRegExp("R3", "JOIN%"), OpProcFactory.getJoinProc());
- opRules.put(new RuleRegExp("R4", "RS%"), OpProcFactory.getRSProc());
- opRules.put(new RuleRegExp("R5", "TS%"), OpProcFactory.getTSProc());
- opRules.put(new RuleRegExp("R6", "SCR%"), OpProcFactory.getSCRProc());
- opRules.put(new RuleRegExp("R6", "LIM%"), OpProcFactory.getLIMProc());
- opRules.put(new RuleRegExp("R7", "UDTF%"), OpProcFactory.getUDTFProc());
- opRules.put(new RuleRegExp("R8", "LVF%"), OpProcFactory.getLVFProc());
+ opRules.put(new RuleRegExp("R1",
+ FilterOperator.getOperatorName() + "%"),
+ OpProcFactory.getFilterProc());
+ opRules.put(new RuleRegExp("R3",
+ CommonJoinOperator.getOperatorName() + "%"),
+ OpProcFactory.getJoinProc());
+ opRules.put(new RuleRegExp("R4",
+ ReduceSinkOperator.getOperatorName() + "%"),
+ OpProcFactory.getRSProc());
+ opRules.put(new RuleRegExp("R5",
+ TableScanOperator.getOperatorName() + "%"),
+ OpProcFactory.getTSProc());
+ opRules.put(new RuleRegExp("R6",
+ ScriptOperator.getOperatorName() + "%"),
+ OpProcFactory.getSCRProc());
+ opRules.put(new RuleRegExp("R6",
+ LimitOperator.getOperatorName() + "%"),
+ OpProcFactory.getLIMProc());
+ opRules.put(new RuleRegExp("R7",
+ UDTFOperator.getOperatorName() + "%"),
+ OpProcFactory.getUDTFProc());
+ opRules.put(new RuleRegExp("R8",
+ LateralViewForwardOperator.getOperatorName() + "%"),
+ OpProcFactory.getLVFProc());
// The dispatcher fires the processor corresponding to the closest matching
// rule and passes the context along
Added: hive/trunk/ql/src/test/queries/clientpositive/recursive_dir.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/recursive_dir.q?rev=1384200&view=auto
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/recursive_dir.q (added)
+++ hive/trunk/ql/src/test/queries/clientpositive/recursive_dir.q Thu Sep 13 04:11:55 2012
@@ -0,0 +1,19 @@
+-- The test verifies that sub-directories are supported for versions of hadoop
+-- where MAPREDUCE-1501 is fixed. So, enable this test only for hadoop 23.
+-- INCLUDE_HADOOP_MAJOR_VERSIONS(0.23)
+
+CREATE TABLE fact_daily(x int) PARTITIONED BY (ds STRING);
+CREATE TABLE fact_tz(x int) PARTITIONED BY (ds STRING, hr STRING)
+LOCATION 'pfile:${system:test.tmp.dir}/fact_tz';
+
+INSERT OVERWRITE TABLE fact_tz PARTITION (ds='1', hr='1')
+SELECT key+11 FROM src WHERE key=484;
+
+ALTER TABLE fact_daily SET TBLPROPERTIES('EXTERNAL'='TRUE');
+ALTER TABLE fact_daily ADD PARTITION (ds='1')
+LOCATION 'pfile:${system:test.tmp.dir}/fact_tz/ds=1';
+
+set mapred.input.dir.recursive=true;
+SELECT * FROM fact_daily WHERE ds='1';
+
+SELECT count(1) FROM fact_daily WHERE ds='1';