@Override public EvalNode visitSimpleTableSubquery(Context ctx, Stack<Expr> stack, SimpleTableSubquery expr) throws TajoException { if (stack.peek().getType() == OpType.InPredicate) { // In the case of in-subquery, stop visiting because the subquery expr is not expression. return new SubqueryEval((TableSubQueryNode) ctx.currentBlock.getNodeFromExpr(expr)); } else { return super.visitSimpleTableSubquery(ctx, stack, expr); } }
@Override public EvalNode visitSimpleTableSubquery(Context ctx, Stack<Expr> stack, SimpleTableSubquery expr) throws TajoException { if (stack.peek().getType() == OpType.InPredicate) { // In the case of in-subquery, stop visiting because the subquery expr is not expression. return new SubqueryEval((TableSubQueryNode) ctx.currentBlock.getNodeFromExpr(expr)); } else { return super.visitSimpleTableSubquery(ctx, stack, expr); } }
private TableSubQueryNode visitCommonTableSubquery(PlanContext context, Stack<Expr> stack, CommonSubquery expr) throws TajoException { QueryBlock currentBlock = context.queryBlock; QueryBlock childBlock = context.plan.getBlock(context.plan.getBlockNameByExpr(expr.getSubQuery())); context.plan.connectBlocks(childBlock, currentBlock, BlockType.TableSubQuery); PlanContext newContext = new PlanContext(context, childBlock); context.plan.connectBlocks(childBlock, context.queryBlock, BlockType.TableSubQuery); LogicalNode child = visit(newContext, new Stack<>(), expr.getSubQuery()); TableSubQueryNode subQueryNode = currentBlock.getNodeFromExpr(expr); subQueryNode.setSubQuery(child); setTargetOfTableSubQuery(context, currentBlock, subQueryNode); return subQueryNode; }
private static <T extends LogicalNode> T getNodeFromExpr(LogicalPlan plan, Expr expr) { return plan.getBlockByExpr(expr).getNodeFromExpr(expr); }
private static <T extends LogicalNode> T getNodeFromExpr(LogicalPlan plan, Expr expr) { return plan.getBlockByExpr(expr).getNodeFromExpr(expr); }
@Override public LogicalNode visitDropTable(PlanContext context, Stack<Expr> stack, DropTable dropTable) { DropTableNode dropTableNode = context.queryBlock.getNodeFromExpr(dropTable); String qualified; if (IdentifierUtil.isFQTableName(dropTable.getTableName())) { qualified = dropTable.getTableName(); } else { qualified = IdentifierUtil.buildFQName( context.queryContext.get(SessionVars.CURRENT_DATABASE), dropTable.getTableName()); } dropTableNode.init(qualified, dropTable.isIfExists(), dropTable.isPurge()); return dropTableNode; }
@Override public LogicalNode visitDropTable(PlanContext context, Stack<Expr> stack, DropTable dropTable) { DropTableNode dropTableNode = context.queryBlock.getNodeFromExpr(dropTable); String qualified; if (CatalogUtil.isFQTableName(dropTable.getTableName())) { qualified = dropTable.getTableName(); } else { qualified = CatalogUtil.buildFQName( context.queryContext.get(SessionVars.CURRENT_DATABASE), dropTable.getTableName()); } dropTableNode.init(qualified, dropTable.isIfExists(), dropTable.isPurge()); return dropTableNode; }
private TableSubQueryNode visitCommonTableSubquery(PlanContext context, Stack<Expr> stack, CommonSubquery expr) throws TajoException { QueryBlock currentBlock = context.queryBlock; QueryBlock childBlock = context.plan.getBlock(context.plan.getBlockNameByExpr(expr.getSubQuery())); context.plan.connectBlocks(childBlock, currentBlock, BlockType.TableSubQuery); PlanContext newContext = new PlanContext(context, childBlock); context.plan.connectBlocks(childBlock, context.queryBlock, BlockType.TableSubQuery); LogicalNode child = visit(newContext, new Stack<Expr>(), expr.getSubQuery()); TableSubQueryNode subQueryNode = currentBlock.getNodeFromExpr(expr); subQueryNode.setSubQuery(child); setTargetOfTableSubQuery(context, currentBlock, subQueryNode); return subQueryNode; }
@Override public LogicalNode visitTruncateTable(PlanContext context, Stack<Expr> stack, TruncateTable truncateTable) throws TajoException { TruncateTableNode truncateTableNode = context.queryBlock.getNodeFromExpr(truncateTable); truncateTableNode.setTableNames(truncateTable.getTableNames()); return truncateTableNode; }
@Override public LogicalNode visitDropIndex(PlanContext context, Stack<Expr> stack, DropIndex dropIndex) { DropIndexNode dropIndexNode = context.queryBlock.getNodeFromExpr(dropIndex); dropIndexNode.setIndexName(dropIndex.getIndexName()); return dropIndexNode; }
public LogicalNode visitAlterTablespace(PlanContext context, Stack<Expr> stack, AlterTablespace alterTablespace) { AlterTablespaceNode alter = context.queryBlock.getNodeFromExpr(alterTablespace); alter.setTablespaceName(alterTablespace.getTablespaceName()); alter.setLocation(alterTablespace.getLocation()); return alter; }
@Override public LogicalNode visitDropIndex(PlanContext context, Stack<Expr> stack, DropIndex dropIndex) { DropIndexNode dropIndexNode = context.queryBlock.getNodeFromExpr(dropIndex); dropIndexNode.setIndexName(dropIndex.getIndexName()); return dropIndexNode; }
public LogicalNode visitAlterTablespace(PlanContext context, Stack<Expr> stack, AlterTablespace alterTablespace) { AlterTablespaceNode alter = context.queryBlock.getNodeFromExpr(alterTablespace); alter.setTablespaceName(alterTablespace.getTablespaceName()); alter.setLocation(alterTablespace.getLocation()); return alter; }
@Override public LogicalNode visitCreateDatabase(PlanContext context, Stack<Expr> stack, CreateDatabase expr) throws TajoException { CreateDatabaseNode createDatabaseNode = context.queryBlock.getNodeFromExpr(expr); createDatabaseNode.init(expr.getDatabaseName(), expr.isIfNotExists()); return createDatabaseNode; }
@Override public LogicalNode visitDropDatabase(PlanContext context, Stack<Expr> stack, DropDatabase expr) throws TajoException { DropDatabaseNode dropDatabaseNode = context.queryBlock.getNodeFromExpr(expr); dropDatabaseNode.init(expr.getDatabaseName(), expr.isIfExists()); return dropDatabaseNode; }
@Override public LogicalNode visitTruncateTable(PlanContext context, Stack<Expr> stack, TruncateTable truncateTable) throws TajoException { TruncateTableNode truncateTableNode = context.queryBlock.getNodeFromExpr(truncateTable); truncateTableNode.setTableNames(truncateTable.getTableNames()); return truncateTableNode; }
@Override public LogicalNode visitSetSession(PlanContext context, Stack<Expr> stack, SetSession expr) throws TajoException { QueryBlock block = context.queryBlock; SetSessionNode setSessionNode = block.getNodeFromExpr(expr); setSessionNode.init(expr.getName(), expr.getValue()); return setSessionNode; }
@Override public LogicalNode visitDropDatabase(PlanContext context, Stack<Expr> stack, DropDatabase expr) throws TajoException { DropDatabaseNode dropDatabaseNode = context.queryBlock.getNodeFromExpr(expr); dropDatabaseNode.init(expr.getDatabaseName(), expr.isIfExists()); return dropDatabaseNode; }
@Override public LogicalNode visitCreateDatabase(PlanContext context, Stack<Expr> stack, CreateDatabase expr) throws TajoException { CreateDatabaseNode createDatabaseNode = context.queryBlock.getNodeFromExpr(expr); createDatabaseNode.init(expr.getDatabaseName(), expr.isIfNotExists()); return createDatabaseNode; }
@Override public LogicalNode visitSetSession(PlanContext context, Stack<Expr> stack, SetSession expr) throws TajoException { QueryBlock block = context.queryBlock; SetSessionNode setSessionNode = block.getNodeFromExpr(expr); setSessionNode.init(expr.getName(), expr.getValue()); return setSessionNode; }