http://git-wip-us.apache.org/repos/asf/tajo/blob/49367117/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/LogicalPlanEqualityTester.java ---------------------------------------------------------------------- diff --cc tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/LogicalPlanEqualityTester.java index 89efdc8,afe0c4d..c35194e --- a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/LogicalPlanEqualityTester.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/LogicalPlanEqualityTester.java @@@ -18,11 -18,11 +18,11 @@@ package org.apache.tajo.plan.rewrite.rules; -import org.apache.tajo.OverridableConf; + import org.apache.tajo.exception.TajoException; import org.apache.tajo.plan.LogicalPlan; - import org.apache.tajo.plan.PlanningException; import org.apache.tajo.plan.logical.LogicalNode; import org.apache.tajo.plan.rewrite.LogicalPlanRewriteRule; +import org.apache.tajo.plan.rewrite.LogicalPlanRewriteRuleContext; import org.apache.tajo.plan.serder.LogicalNodeDeserializer; import org.apache.tajo.plan.serder.LogicalNodeSerializer; import org.apache.tajo.plan.serder.PlanProto; @@@ -45,11 -45,10 +45,11 @@@ public class LogicalPlanEqualityTester } @Override - public LogicalPlan rewrite(LogicalPlanRewriteRuleContext context) throws PlanningException { - public LogicalPlan rewrite(OverridableConf queryContext, LogicalPlan plan) throws TajoException { ++ public LogicalPlan rewrite(LogicalPlanRewriteRuleContext context) throws TajoException { + LogicalPlan plan = context.getPlan(); LogicalNode root = plan.getRootBlock().getRoot(); PlanProto.LogicalNodeTree serialized = LogicalNodeSerializer.serialize(plan.getRootBlock().getRoot()); - LogicalNode deserialized = LogicalNodeDeserializer.deserialize(queryContext, null, serialized); + LogicalNode deserialized = LogicalNodeDeserializer.deserialize(context.getQueryContext(), null, serialized); assert root.deepEquals(deserialized); return plan; }
http://git-wip-us.apache.org/repos/asf/tajo/blob/49367117/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/PartitionedTableRewriter.java ---------------------------------------------------------------------- diff --cc tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/PartitionedTableRewriter.java index d200923,71b9fd7..244d385 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/PartitionedTableRewriter.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/PartitionedTableRewriter.java @@@ -30,13 -30,13 +30,14 @@@ import org.apache.tajo.catalog.TableDes import org.apache.tajo.catalog.partition.PartitionMethodDesc; import org.apache.tajo.datum.DatumFactory; import org.apache.tajo.datum.NullDatum; + import org.apache.tajo.exception.TajoException; + import org.apache.tajo.exception.TajoInternalError; import org.apache.tajo.plan.LogicalPlan; + import org.apache.tajo.plan.expr.*; + import org.apache.tajo.plan.logical.*; import org.apache.tajo.plan.rewrite.LogicalPlanRewriteRule; +import org.apache.tajo.plan.rewrite.LogicalPlanRewriteRuleContext; import org.apache.tajo.plan.util.PlannerUtil; - import org.apache.tajo.plan.PlanningException; - import org.apache.tajo.plan.expr.*; - import org.apache.tajo.plan.logical.*; import org.apache.tajo.plan.visitor.BasicLogicalPlanVisitor; import org.apache.tajo.storage.Tuple; import org.apache.tajo.storage.VTuple; @@@ -74,10 -74,9 +75,10 @@@ public class PartitionedTableRewriter i } @Override - public LogicalPlan rewrite(LogicalPlanRewriteRuleContext context) throws PlanningException { - public LogicalPlan rewrite(OverridableConf queryContext, LogicalPlan plan) throws TajoException { ++ public LogicalPlan rewrite(LogicalPlanRewriteRuleContext context) throws TajoException { + LogicalPlan plan = context.getPlan(); LogicalPlan.QueryBlock rootBlock = plan.getRootBlock(); - rewriter.visit(queryContext, plan, rootBlock, rootBlock.getRoot(), new Stack<LogicalNode>()); + rewriter.visit(context.getQueryContext(), plan, rootBlock, rootBlock.getRoot(), new Stack<LogicalNode>()); return plan; } http://git-wip-us.apache.org/repos/asf/tajo/blob/49367117/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/ProjectionPushDownRule.java ---------------------------------------------------------------------- diff --cc tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/ProjectionPushDownRule.java index 9d8b81a,650a484..78a5dad --- a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/ProjectionPushDownRule.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/ProjectionPushDownRule.java @@@ -31,9 -37,7 +37,8 @@@ import org.apache.tajo.plan.Target import org.apache.tajo.plan.expr.*; import org.apache.tajo.plan.logical.*; import org.apache.tajo.plan.rewrite.LogicalPlanRewriteRule; +import org.apache.tajo.plan.rewrite.LogicalPlanRewriteRuleContext; import org.apache.tajo.plan.util.PlannerUtil; - import org.apache.tajo.catalog.SchemaUtil; import org.apache.tajo.plan.visitor.BasicLogicalPlanVisitor; import org.apache.tajo.util.TUtil; @@@ -72,8 -76,7 +77,8 @@@ public class ProjectionPushDownRule ext } @Override - public LogicalPlan rewrite(LogicalPlanRewriteRuleContext rewriteRuleContext) throws PlanningException { - public LogicalPlan rewrite(OverridableConf queryContext, LogicalPlan plan) throws TajoException { ++ public LogicalPlan rewrite(LogicalPlanRewriteRuleContext rewriteRuleContext) throws TajoException { + LogicalPlan plan = rewriteRuleContext.getPlan(); LogicalPlan.QueryBlock rootBlock = plan.getRootBlock(); LogicalPlan.QueryBlock topmostBlock = rootBlock; @@@ -521,13 -524,8 +526,13 @@@ createTableNode.setChild(child); createTableNode.setInSchema(child.getOutSchema()); break; + case CREATE_INDEX: + CreateIndexNode createIndexNode = (CreateIndexNode) parentNode; + createIndexNode.setChild(child); + createIndexNode.setInSchema(child.getOutSchema()); + break; default: - throw new PlanningException("Unexpected Parent Node: " + parentNode.getType()); + throw new TajoInternalError("unexpected parent node: " + parentNode.getType()); } plan.addHistory("ProjectionNode is eliminated."); } @@@ -1113,14 -1111,8 +1118,14 @@@ } @Override + public LogicalNode visitIndexScan(Context context, LogicalPlan plan, LogicalPlan.QueryBlock block, - IndexScanNode node, Stack<LogicalNode> stack) throws PlanningException { ++ IndexScanNode node, Stack<LogicalNode> stack) throws TajoException { + return visitScan(context, plan, block,node, stack); + } + + @Override public LogicalNode visitTableSubQuery(Context upperContext, LogicalPlan plan, LogicalPlan.QueryBlock block, - TableSubQueryNode node, Stack<LogicalNode> stack) throws PlanningException { + TableSubQueryNode node, Stack<LogicalNode> stack) throws TajoException { Context childContext = new Context(plan, upperContext.requiredSet); stack.push(node); LogicalNode child = super.visitTableSubQuery(childContext, plan, block, node, stack); http://git-wip-us.apache.org/repos/asf/tajo/blob/49367117/tajo-plan/src/main/java/org/apache/tajo/plan/serder/LogicalNodeSerializer.java ---------------------------------------------------------------------- diff --cc tajo-plan/src/main/java/org/apache/tajo/plan/serder/LogicalNodeSerializer.java index dd69e3a,0207932..fe69fc1 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/serder/LogicalNodeSerializer.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/serder/LogicalNodeSerializer.java @@@ -21,15 -21,13 +21,16 @@@ package org.apache.tajo.plan.serder import com.google.common.collect.Maps; import org.apache.hadoop.fs.Path; import org.apache.tajo.algebra.JoinType; +import org.apache.tajo.catalog.SortSpec; import org.apache.tajo.catalog.proto.CatalogProtos; +import org.apache.tajo.catalog.proto.CatalogProtos.SortSpecProto; + import org.apache.tajo.exception.TajoException; + import org.apache.tajo.exception.TajoInternalError; import org.apache.tajo.exception.UnimplementedException; import org.apache.tajo.plan.LogicalPlan; - import org.apache.tajo.plan.PlanningException; import org.apache.tajo.plan.Target; import org.apache.tajo.plan.logical.*; +import org.apache.tajo.plan.rewrite.rules.IndexScanInfo.SimplePredicate; import org.apache.tajo.plan.serder.PlanProto.AlterTableNode.AddColumn; import org.apache.tajo.plan.serder.PlanProto.AlterTableNode.RenameColumn; import org.apache.tajo.plan.serder.PlanProto.AlterTableNode.RenameTable; @@@ -107,9 -105,8 +108,9 @@@ public class LogicalNodeSerializer exte private LogicalNodeTree.Builder treeBuilder = LogicalNodeTree.newBuilder(); } + @Override public LogicalNode visitRoot(SerializeContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, - LogicalRootNode root, Stack<LogicalNode> stack) throws PlanningException { + LogicalRootNode root, Stack<LogicalNode> stack) throws TajoException { super.visitRoot(context, plan, block, root, stack); int [] childIds = registerGetChildIds(context, root); @@@ -142,9 -139,8 +143,9 @@@ return node; } + @Override public LogicalNode visitEvalExpr(SerializeContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, - EvalExprNode exprEval, Stack<LogicalNode> stack) throws PlanningException { + EvalExprNode exprEval, Stack<LogicalNode> stack) throws TajoException { PlanProto.EvalExprNode.Builder exprEvalBuilder = PlanProto.EvalExprNode.newBuilder(); exprEvalBuilder.addAllTargets( ProtoUtil.<PlanProto.Target>toProtoObjects(exprEval.getTargets())); @@@ -156,9 -152,8 +157,9 @@@ return exprEval; } + @Override public LogicalNode visitProjection(SerializeContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, - ProjectionNode projection, Stack<LogicalNode> stack) throws PlanningException { + ProjectionNode projection, Stack<LogicalNode> stack) throws TajoException { super.visitProjection(context, plan, block, projection, stack); int [] childIds = registerGetChildIds(context, projection); @@@ -194,9 -189,8 +195,9 @@@ return limit; } + @Override public LogicalNode visitWindowAgg(SerializeContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, - WindowAggNode windowAgg, Stack<LogicalNode> stack) throws PlanningException { + WindowAggNode windowAgg, Stack<LogicalNode> stack) throws TajoException { super.visitWindowAgg(context, plan, block, windowAgg, stack); int [] childIds = registerGetChildIds(context, windowAgg); @@@ -269,9 -263,8 +270,9 @@@ return having; } + @Override public LogicalNode visitGroupBy(SerializeContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, - GroupbyNode node, Stack<LogicalNode> stack) throws PlanningException { + GroupbyNode node, Stack<LogicalNode> stack) throws TajoException { super.visitGroupBy(context, plan, block, node, new Stack<LogicalNode>()); PlanProto.LogicalNode.Builder nodeBuilder = buildGroupby(context, node); @@@ -305,9 -298,8 +306,9 @@@ return nodeBuilder; } + @Override public LogicalNode visitDistinctGroupby(SerializeContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, - DistinctGroupbyNode node, Stack<LogicalNode> stack) throws PlanningException { + DistinctGroupbyNode node, Stack<LogicalNode> stack) throws TajoException { super.visitDistinctGroupby(context, plan, block, node, new Stack<LogicalNode>()); int [] childIds = registerGetChildIds(context, node); @@@ -362,9 -354,8 +363,9 @@@ return filter; } + @Override public LogicalNode visitJoin(SerializeContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, JoinNode join, - Stack<LogicalNode> stack) throws PlanningException { + Stack<LogicalNode> stack) throws TajoException { super.visitJoin(context, plan, block, join, stack); int [] childIds = registerGetChildIds(context, join); @@@ -447,29 -438,9 +448,29 @@@ } @Override + public LogicalNode visitIndexScan(SerializeContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, - IndexScanNode node, Stack<LogicalNode> stack) throws PlanningException { ++ IndexScanNode node, Stack<LogicalNode> stack) throws TajoException { + + PlanProto.ScanNode.Builder scanBuilder = buildScanNode(node); + + PlanProto.IndexScanSpec.Builder indexScanSpecBuilder = PlanProto.IndexScanSpec.newBuilder(); + indexScanSpecBuilder.setKeySchema(node.getKeySchema().getProto()); + indexScanSpecBuilder.setIndexPath(node.getIndexPath().toString()); + for (SimplePredicate predicate : node.getPredicates()) { + indexScanSpecBuilder.addPredicates(predicate.getProto()); + } + + PlanProto.LogicalNode.Builder nodeBuilder = createNodeBuilder(context, node); + nodeBuilder.setScan(scanBuilder); + nodeBuilder.setIndexScan(indexScanSpecBuilder); + context.treeBuilder.addNodes(nodeBuilder); + return node; + } + + @Override public LogicalNode visitPartitionedTableScan(SerializeContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, PartitionedTableScanNode node, Stack<LogicalNode> stack) - throws PlanningException { + throws TajoException { PlanProto.ScanNode.Builder scanBuilder = buildScanNode(node); @@@ -490,9 -461,8 +491,9 @@@ return node; } + @Override public LogicalNode visitTableSubQuery(SerializeContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, - TableSubQueryNode node, Stack<LogicalNode> stack) throws PlanningException { + TableSubQueryNode node, Stack<LogicalNode> stack) throws TajoException { super.visitTableSubQuery(context, plan, block, node, stack); int [] childIds = registerGetChildIds(context, node); @@@ -513,9 -483,8 +514,9 @@@ return node; } + @Override public LogicalNode visitCreateTable(SerializeContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, - CreateTableNode node, Stack<LogicalNode> stack) throws PlanningException { + CreateTableNode node, Stack<LogicalNode> stack) throws TajoException { super.visitCreateTable(context, plan, block, node, stack); int [] childIds = registerGetChildIds(context, node); @@@ -654,9 -623,8 +655,9 @@@ return node; } + @Override public LogicalNode visitInsert(SerializeContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, - InsertNode node, Stack<LogicalNode> stack) throws PlanningException { + InsertNode node, Stack<LogicalNode> stack) throws TajoException { super.visitInsert(context, plan, block, node, stack); int [] childIds = registerGetChildIds(context, node); @@@ -743,48 -711,6 +744,48 @@@ return node; } + @Override + public LogicalNode visitCreateIndex(SerializeContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, - CreateIndexNode node, Stack<LogicalNode> stack) throws PlanningException { ++ CreateIndexNode node, Stack<LogicalNode> stack) throws TajoException { + super.visitCreateIndex(context, plan, block, node, new Stack<LogicalNode>()); + + PlanProto.CreateIndexNode.Builder createIndexBuilder = PlanProto.CreateIndexNode.newBuilder(); + int [] childIds = registerGetChildIds(context, node); + createIndexBuilder.setChildSeq(childIds[0]); + createIndexBuilder.setIndexName(node.getIndexName()); + createIndexBuilder.setIndexMethod(node.getIndexMethod()); + createIndexBuilder.setIndexPath(node.getIndexPath().toString()); + for (SortSpec sortSpec : node.getKeySortSpecs()) { + createIndexBuilder.addKeySortSpecs(sortSpec.getProto()); + } + createIndexBuilder.setTargetRelationSchema(node.getTargetRelationSchema().getProto()); + createIndexBuilder.setIsUnique(node.isUnique()); + createIndexBuilder.setIsClustered(node.isClustered()); + if (node.hasOptions()) { + createIndexBuilder.setIndexProperties(node.getOptions().getProto()); + } + createIndexBuilder.setIsExternal(node.isExternal()); + + PlanProto.LogicalNode.Builder nodeBuilder = createNodeBuilder(context, node); + nodeBuilder.setCreateIndex(createIndexBuilder); + context.treeBuilder.addNodes(nodeBuilder); + + return node; + } + + @Override + public LogicalNode visitDropIndex(SerializeContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, + DropIndexNode node, Stack<LogicalNode> stack) { + PlanProto.DropIndexNode.Builder dropIndexBuilder = PlanProto.DropIndexNode.newBuilder(); + dropIndexBuilder.setIndexName(node.getIndexName()); + + PlanProto.LogicalNode.Builder nodeBuilder = createNodeBuilder(context, node); + nodeBuilder.setDropIndex(dropIndexBuilder); + context.treeBuilder.addNodes(nodeBuilder); + + return node; + } + public static PlanProto.NodeType convertType(NodeType type) { return PlanProto.NodeType.valueOf(type.name()); } http://git-wip-us.apache.org/repos/asf/tajo/blob/49367117/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java ---------------------------------------------------------------------- diff --cc tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java index 3d9e53e,9c34826..c4a4367 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java @@@ -416,17 -383,9 +404,15 @@@ public class PlannerUtil @Override public LogicalNode visitPartitionedTableScan(ReplacerContext context, LogicalPlan plan, LogicalPlan. - QueryBlock block, PartitionedTableScanNode node, Stack<LogicalNode> stack) - - throws PlanningException { + QueryBlock block, PartitionedTableScanNode node, Stack<LogicalNode> stack) { return node; } + + @Override + public LogicalNode visitIndexScan(ReplacerContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, - IndexScanNode node, Stack<LogicalNode> stack) throws PlanningException { ++ IndexScanNode node, Stack<LogicalNode> stack) throws TajoException { + return node; + } } public static void replaceNode(LogicalNode plan, LogicalNode newNode, NodeType type) { http://git-wip-us.apache.org/repos/asf/tajo/blob/49367117/tajo-plan/src/main/java/org/apache/tajo/plan/visitor/BasicLogicalPlanVisitor.java ---------------------------------------------------------------------- diff --cc tajo-plan/src/main/java/org/apache/tajo/plan/visitor/BasicLogicalPlanVisitor.java index a8f0935,ebb5c80..2c8f344 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/visitor/BasicLogicalPlanVisitor.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/visitor/BasicLogicalPlanVisitor.java @@@ -18,8 -18,10 +18,9 @@@ package org.apache.tajo.plan.visitor; + import org.apache.tajo.exception.TajoException; + import org.apache.tajo.exception.TajoInternalError; import org.apache.tajo.plan.LogicalPlan; --import org.apache.tajo.plan.PlanningException; import org.apache.tajo.plan.logical.*; import java.util.Stack; @@@ -144,11 -140,8 +145,11 @@@ public class BasicLogicalPlanVisitor<CO case TRUNCATE_TABLE: current = visitTruncateTable(context, plan, block, (TruncateTableNode) node, stack); break; + case DROP_INDEX: + current = visitDropIndex(context, plan, block, (DropIndexNode) node, stack); + break; default: - throw new PlanningException("Unknown logical node type: " + node.getType()); + throw new TajoInternalError("Unknown logical node type: " + node.getType()); } postHook(plan, node, stack, context); @@@ -319,15 -312,9 +320,15 @@@ } @Override + public RESULT visitIndexScan(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, IndexScanNode node, - Stack<LogicalNode> stack) throws PlanningException { ++ Stack<LogicalNode> stack) throws TajoException { + return null; + } + + @Override public RESULT visitPartitionedTableScan(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, PartitionedTableScanNode node, Stack<LogicalNode> stack) - throws PlanningException { + throws TajoException { return null; } @@@ -391,24 -379,8 +393,24 @@@ } @Override + public RESULT visitCreateIndex(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, CreateIndexNode node, - Stack<LogicalNode> stack) throws PlanningException { ++ Stack<LogicalNode> stack) throws TajoException { + RESULT result = null; + stack.push(node); + result = visit(context, plan, block, node.getChild(), stack); + stack.pop(); + return result; + } + + @Override + public RESULT visitDropIndex(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, DropIndexNode node, + Stack<LogicalNode> stack) { + return null; + } + + @Override public RESULT visitTruncateTable(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, - TruncateTableNode node, Stack<LogicalNode> stack) throws PlanningException { + TruncateTableNode node, Stack<LogicalNode> stack) throws TajoException { return null; } } http://git-wip-us.apache.org/repos/asf/tajo/blob/49367117/tajo-plan/src/main/java/org/apache/tajo/plan/visitor/ExplainLogicalPlanVisitor.java ---------------------------------------------------------------------- diff --cc tajo-plan/src/main/java/org/apache/tajo/plan/visitor/ExplainLogicalPlanVisitor.java index 2b33937,925742a..f826479 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/visitor/ExplainLogicalPlanVisitor.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/visitor/ExplainLogicalPlanVisitor.java @@@ -19,9 -19,10 +19,9 @@@ package org.apache.tajo.plan.visitor; import org.apache.tajo.annotation.Nullable; + import org.apache.tajo.exception.TajoException; import org.apache.tajo.plan.LogicalPlan; import org.apache.tajo.plan.PlanString; --import org.apache.tajo.plan.PlanningException; import org.apache.tajo.plan.logical.*; import java.util.Stack; @@@ -234,19 -235,6 +234,19 @@@ public class ExplainLogicalPlanVisitor return node; } + @Override + public LogicalNode visitCreateIndex(Context context, LogicalPlan plan, LogicalPlan.QueryBlock block, - CreateIndexNode node, Stack<LogicalNode> stack) throws PlanningException { ++ CreateIndexNode node, Stack<LogicalNode> stack) throws TajoException { + return visitUnaryNode(context, plan, block, node, stack); + } + + @Override + public LogicalNode visitDropIndex(Context context, LogicalPlan plan, LogicalPlan.QueryBlock block, + DropIndexNode node, Stack<LogicalNode> stack) { + context.add(context.depth, node.getPlanString()); + return node; + } + public static String printDepthString(int maxDepth, DepthString planStr) { StringBuilder output = new StringBuilder(); String pad = new String(new char[planStr.getDepth() * 3]).replace('\0', ' '); http://git-wip-us.apache.org/repos/asf/tajo/blob/49367117/tajo-plan/src/main/java/org/apache/tajo/plan/visitor/LogicalPlanVisitor.java ---------------------------------------------------------------------- diff --cc tajo-plan/src/main/java/org/apache/tajo/plan/visitor/LogicalPlanVisitor.java index a9fb20b,dd832ae..9e9389d --- a/tajo-plan/src/main/java/org/apache/tajo/plan/visitor/LogicalPlanVisitor.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/visitor/LogicalPlanVisitor.java @@@ -18,8 -18,9 +18,8 @@@ package org.apache.tajo.plan.visitor; + import org.apache.tajo.exception.TajoException; import org.apache.tajo.plan.LogicalPlan; --import org.apache.tajo.plan.PlanningException; import org.apache.tajo.plan.logical.*; import java.util.Stack; @@@ -27,90 -28,81 +27,90 @@@ public interface LogicalPlanVisitor<CONTEXT, RESULT> { RESULT visitRoot(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, LogicalRootNode node, - Stack<LogicalNode> stack) throws PlanningException; + Stack<LogicalNode> stack) throws TajoException; RESULT visitSetSession(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, SetSessionNode node, - Stack<LogicalNode> stack) throws PlanningException; + Stack<LogicalNode> stack) throws TajoException; RESULT visitEvalExpr(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, EvalExprNode node, - Stack<LogicalNode> stack) throws PlanningException; + Stack<LogicalNode> stack) throws TajoException; RESULT visitProjection(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, ProjectionNode node, - Stack<LogicalNode> stack) throws PlanningException; + Stack<LogicalNode> stack) throws TajoException; RESULT visitLimit(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, LimitNode node, - Stack<LogicalNode> stack) throws PlanningException; + Stack<LogicalNode> stack) throws TajoException; RESULT visitSort(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, SortNode node, - Stack<LogicalNode> stack) throws PlanningException; + Stack<LogicalNode> stack) throws TajoException; RESULT visitHaving(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, HavingNode node, - Stack<LogicalNode> stack) throws PlanningException; + Stack<LogicalNode> stack) throws TajoException; RESULT visitGroupBy(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, GroupbyNode node, - Stack<LogicalNode> stack) throws PlanningException; + Stack<LogicalNode> stack) throws TajoException; RESULT visitWindowAgg(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, WindowAggNode node, - Stack<LogicalNode> stack) throws PlanningException; + Stack<LogicalNode> stack) throws TajoException; RESULT visitDistinctGroupby(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, DistinctGroupbyNode node, - Stack<LogicalNode> stack) throws PlanningException; + Stack<LogicalNode> stack) throws TajoException; RESULT visitFilter(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, SelectionNode node, - Stack<LogicalNode> stack) throws PlanningException; + Stack<LogicalNode> stack) throws TajoException; RESULT visitJoin(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, JoinNode node, - Stack<LogicalNode> stack) throws PlanningException; + Stack<LogicalNode> stack) throws TajoException; RESULT visitUnion(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, UnionNode node, - Stack<LogicalNode> stack) throws PlanningException; + Stack<LogicalNode> stack) throws TajoException; RESULT visitExcept(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, ExceptNode node, - Stack<LogicalNode> stack) throws PlanningException; + Stack<LogicalNode> stack) throws TajoException; RESULT visitIntersect(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, IntersectNode node, - Stack<LogicalNode> stack) throws PlanningException; + Stack<LogicalNode> stack) throws TajoException; RESULT visitTableSubQuery(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, TableSubQueryNode node, - Stack<LogicalNode> stack) throws PlanningException; + Stack<LogicalNode> stack) throws TajoException; RESULT visitScan(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, ScanNode node, - Stack<LogicalNode> stack) throws PlanningException; + Stack<LogicalNode> stack) throws TajoException; + RESULT visitIndexScan(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, IndexScanNode node, - Stack<LogicalNode> stack) throws PlanningException; ++ Stack<LogicalNode> stack) throws TajoException; + RESULT visitPartitionedTableScan(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, - PartitionedTableScanNode node, Stack<LogicalNode> stack) throws PlanningException; + PartitionedTableScanNode node, Stack<LogicalNode> stack) throws TajoException; RESULT visitStoreTable(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, StoreTableNode node, - Stack<LogicalNode> stack) throws PlanningException; + Stack<LogicalNode> stack) throws TajoException; RESULT visitInsert(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, InsertNode node, - Stack<LogicalNode> stack) throws PlanningException; + Stack<LogicalNode> stack) throws TajoException; RESULT visitCreateDatabase(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, CreateDatabaseNode node, - Stack<LogicalNode> stack) throws PlanningException; + Stack<LogicalNode> stack) throws TajoException; RESULT visitDropDatabase(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, DropDatabaseNode node, - Stack<LogicalNode> stack) throws PlanningException; + Stack<LogicalNode> stack) throws TajoException; RESULT visitCreateTable(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, CreateTableNode node, - Stack<LogicalNode> stack) throws PlanningException; + Stack<LogicalNode> stack) throws TajoException; RESULT visitDropTable(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, DropTableNode node, - Stack<LogicalNode> stack) throws PlanningException; + Stack<LogicalNode> stack) throws TajoException; RESULT visitAlterTablespace(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, AlterTablespaceNode node, - Stack<LogicalNode> stack) throws PlanningException; + Stack<LogicalNode> stack) throws TajoException; RESULT visitAlterTable(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, AlterTableNode node, - Stack<LogicalNode> stack) throws PlanningException; + Stack<LogicalNode> stack) throws TajoException; + RESULT visitCreateIndex(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, CreateIndexNode node, - Stack<LogicalNode> stack) throws PlanningException; ++ Stack<LogicalNode> stack) throws TajoException; + + RESULT visitDropIndex(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, DropIndexNode node, - Stack<LogicalNode> stack) throws PlanningException; ++ Stack<LogicalNode> stack) throws TajoException; + RESULT visitTruncateTable(CONTEXT context, LogicalPlan plan, LogicalPlan.QueryBlock block, TruncateTableNode node, - Stack<LogicalNode> stack) throws PlanningException; + Stack<LogicalNode> stack) throws TajoException; } http://git-wip-us.apache.org/repos/asf/tajo/blob/49367117/tajo-plan/src/main/java/org/apache/tajo/plan/visitor/SimpleAlgebraVisitor.java ---------------------------------------------------------------------- diff --cc tajo-plan/src/main/java/org/apache/tajo/plan/visitor/SimpleAlgebraVisitor.java index ad4ef18,989af88..4854d7f --- a/tajo-plan/src/main/java/org/apache/tajo/plan/visitor/SimpleAlgebraVisitor.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/visitor/SimpleAlgebraVisitor.java @@@ -19,7 -19,8 +19,7 @@@ package org.apache.tajo.plan.visitor; import org.apache.tajo.algebra.*; - import org.apache.tajo.plan.PlanningException; + import org.apache.tajo.exception.TajoException; -import org.apache.tajo.plan.PlanningException; import org.apache.tajo.plan.algebra.BaseAlgebraVisitor; import java.util.Stack; http://git-wip-us.apache.org/repos/asf/tajo/blob/49367117/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/Tablespace.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tajo/blob/49367117/tajo-storage/tajo-storage-hbase/src/main/java/org/apache/tajo/storage/hbase/HBaseTablespace.java ---------------------------------------------------------------------- diff --cc tajo-storage/tajo-storage-hbase/src/main/java/org/apache/tajo/storage/hbase/HBaseTablespace.java index bcb02c6,00cac77..3060d53 --- a/tajo-storage/tajo-storage-hbase/src/main/java/org/apache/tajo/storage/hbase/HBaseTablespace.java +++ b/tajo-storage/tajo-storage-hbase/src/main/java/org/apache/tajo/storage/hbase/HBaseTablespace.java @@@ -1091,9 -1090,9 +1091,9 @@@ public class HBaseTablespace extends Ta } @Override - public void rewritePlan(OverridableConf context, LogicalPlan plan) throws PlanningException { + public void rewritePlan(OverridableConf context, LogicalPlan plan) throws TajoException { - if (REWRITE_RULE.isEligible(context, plan)) { - REWRITE_RULE.rewrite(context, plan); + if (REWRITE_RULE.isEligible(new LogicalPlanRewriteRuleContext(context, plan))) { + REWRITE_RULE.rewrite(new LogicalPlanRewriteRuleContext(context, plan)); } } http://git-wip-us.apache.org/repos/asf/tajo/blob/49367117/tajo-storage/tajo-storage-hbase/src/main/java/org/apache/tajo/storage/hbase/SortedInsertRewriter.java ---------------------------------------------------------------------- diff --cc tajo-storage/tajo-storage-hbase/src/main/java/org/apache/tajo/storage/hbase/SortedInsertRewriter.java index b6143f3,db9f3c8..40789ac --- a/tajo-storage/tajo-storage-hbase/src/main/java/org/apache/tajo/storage/hbase/SortedInsertRewriter.java +++ b/tajo-storage/tajo-storage-hbase/src/main/java/org/apache/tajo/storage/hbase/SortedInsertRewriter.java @@@ -68,8 -69,7 +69,8 @@@ public class SortedInsertRewriter imple } @Override - public LogicalPlan rewrite(LogicalPlanRewriteRuleContext context) throws PlanningException { - public LogicalPlan rewrite(OverridableConf queryContext, LogicalPlan plan) throws TajoException { ++ public LogicalPlan rewrite(LogicalPlanRewriteRuleContext context) throws TajoException { + LogicalPlan plan = context.getPlan(); LogicalRootNode rootNode = plan.getRootBlock().getRoot(); StoreTableNode storeTable = rootNode.getChild(); http://git-wip-us.apache.org/repos/asf/tajo/blob/49367117/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/index/TestBSTIndex.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/tajo/blob/49367117/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/index/TestSingleCSVFileBSTIndex.java ---------------------------------------------------------------------- diff --cc tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/index/TestSingleCSVFileBSTIndex.java index 72810fd,c198965..a001492 --- a/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/index/TestSingleCSVFileBSTIndex.java +++ b/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/index/TestSingleCSVFileBSTIndex.java @@@ -111,7 -111,7 +111,8 @@@ public class TestSingleCSVFileBSTIndex creater.setLoadNum(LOAD_NUM); creater.open(); - SeekableScanner fileScanner = new CSVScanner(conf, schema, meta, tablet); - SeekableScanner fileScanner = OldStorageManager.getSeekableScanner(conf, meta, schema, tablet, schema); ++ SeekableScanner fileScanner = OldStorageManager.getStorageManager(conf, meta.getStoreType()) ++ .getSeekableScanner(meta, schema, tablet.getProto(), schema); fileScanner.init(); Tuple keyTuple; long offset; @@@ -135,7 -135,7 +136,8 @@@ BSTIndexReader reader = bst.getIndexReader(new Path(testDir, "FindValueInCSV.idx"), keySchema, comp); reader.open(); - fileScanner = new CSVScanner(conf, schema, meta, tablet); - fileScanner = OldStorageManager.getSeekableScanner(conf, meta, schema, tablet, schema); ++ fileScanner = OldStorageManager.getStorageManager(conf, meta.getStoreType()) ++ .getSeekableScanner(meta, schema, tablet.getProto(), schema); fileScanner.init(); for (int i = 0; i < TUPLE_NUM - 1; i++) { tuple.put(0, DatumFactory.createInt8(i)); @@@ -200,7 -200,7 +202,8 @@@ creater.setLoadNum(LOAD_NUM); creater.open(); - SeekableScanner fileScanner = new CSVScanner(conf, schema, meta, tablet); - SeekableScanner fileScanner = OldStorageManager.getSeekableScanner(conf, meta, schema, tablet, schema); ++ SeekableScanner fileScanner = OldStorageManager.getStorageManager(conf, meta.getStoreType()) ++ .getSeekableScanner(meta, schema, tablet.getProto(), schema); fileScanner.init(); Tuple keyTuple; long offset; @@@ -221,7 -221,7 +224,8 @@@ BSTIndexReader reader = bst.getIndexReader(new Path(testDir, "FindNextKeyValueInCSV.idx"), keySchema, comp); reader.open(); - fileScanner = new CSVScanner(conf, schema, meta, tablet); - fileScanner = OldStorageManager.getSeekableScanner(conf, meta, schema, tablet, schema); ++ fileScanner = OldStorageManager.getStorageManager(conf, meta.getStoreType()) ++ .getSeekableScanner(meta, schema, tablet.getProto(), schema); fileScanner.init(); Tuple result; for(int i = 0 ; i < TUPLE_NUM -1 ; i ++) {
