@Override public String getTableName() { return plan.getTableName(); }
@Override public String getTableName() { return plan.getTableName(); }
@Override public String getTableName() { return plan.getTableName(); }
@Override public String getTableName() { return plan.getTableName(); }
public LogicalNode visitScan(StringBuilder sb, LogicalPlan plan, LogicalPlan.QueryBlock block, ScanNode node, Stack<LogicalNode> stack) { sb.append(node.getTableName()); return node; } }
public LogicalNode visitScan(StringBuilder sb, LogicalPlan plan, LogicalPlan.QueryBlock block, ScanNode node, Stack<LogicalNode> stack) { sb.append(node.getTableName()); return node; } }
private long getTotalVolumeOfBroadcastableRelations(Context context, ExecutionBlock block) { return block.getBroadcastRelations().stream() .filter(r -> !context.estimatedEbOutputSize.containsKey(r.getTableName())) .mapToLong(r -> { long volume = PlannerUtil.getTableVolume(r); return volume == TajoConstants.UNKNOWN_LENGTH ? Integer.MAX_VALUE : volume; // Use Integer.MAX to prevent overflow }).sum(); }
public String toString() { StringBuilder sb = new StringBuilder("Scan (table=").append(getTableName()); if (hasAlias()) { sb.append(", alias=").append(alias); } if (hasQual()) { sb.append(", filter=").append(qual); } sb.append(", path=").append(getTableDesc().getUri()).append(")"); return sb.toString(); }
public String toString() { StringBuilder sb = new StringBuilder(capitalize(getType().name()) + " (table=").append(getTableName()); if (hasAlias()) { sb.append(", alias=").append(alias); } if (hasQual()) { sb.append(", filter=").append(qual); } sb.append(", path=").append(getTableDesc().getUri()).append(")"); return sb.toString(); }
public void visitScan(SQLBuilderContext ctx, ScanNode scan, Stack<LogicalNode> stack) { StringBuilder selectClause = new StringBuilder("SELECT "); if (scan.getTargets().size() > 0) { selectClause.append(generateTargetList(scan.getTargets())); } else { selectClause.append("1"); } selectClause.append(" "); ctx.sb.append("FROM ").append(scan.getTableName()).append(" "); if (scan.hasAlias()) { ctx.sb.append("AS ").append(scan.getAlias()).append(" "); } if (scan.hasQual()) { ctx.sb.append("WHERE " + sqlExprGen.generate(scan.getQual())); } }
public void visitScan(SQLBuilderContext ctx, ScanNode scan, Stack<LogicalNode> stack) { StringBuilder selectClause = new StringBuilder("SELECT "); if (scan.getTargets().length > 0) { selectClause.append(generateTargetList(scan.getTargets())); } else { selectClause.append("1"); } selectClause.append(" "); ctx.sb.append("FROM ").append(scan.getTableName()).append(" "); if (scan.hasAlias()) { ctx.sb.append("AS ").append(scan.getAlias()).append(" "); } if (scan.hasQual()) { ctx.sb.append("WHERE " + sqlExprGen.generate(scan.getQual())); } }
private boolean checkIfSortEquivalance(TaskAttemptContext ctx, ScanNode scanNode, Stack<LogicalNode> node) { Enforcer enforcer = ctx.getEnforcer(); List<EnforceProperty> property = enforcer.getEnforceProperties(EnforceType.SORTED_INPUT); if (property != null && property.size() > 0 && node.peek().getType() == NodeType.SORT) { SortNode sortNode = (SortNode) node.peek(); SortedInputEnforce sortEnforcer = property.get(0).getSortedInput(); boolean condition = scanNode.getTableName().equals(sortEnforcer.getTableName()); SortSpec [] sortSpecs = LogicalNodeDeserializer.convertSortSpecs(sortEnforcer.getSortSpecsList()); return condition && TUtil.checkEquals(sortNode.getSortKeys(), sortSpecs); } else { return false; } }
private boolean checkIfSortEquivalance(TaskAttemptContext ctx, ScanNode scanNode, Stack<LogicalNode> node) { Enforcer enforcer = ctx.getEnforcer(); List<EnforceProperty> property = enforcer.getEnforceProperties(EnforceType.SORTED_INPUT); if (property != null && property.size() > 0 && node.peek().getType() == NodeType.SORT) { SortNode sortNode = (SortNode) node.peek(); SortedInputEnforce sortEnforcer = property.get(0).getSortedInput(); boolean condition = scanNode.getTableName().equals(sortEnforcer.getTableName()); SortSpec [] sortSpecs = LogicalNodeDeserializer.convertSortSpecs(sortEnforcer.getSortSpecsList()); return condition && TUtil.checkEquals(sortNode.getSortKeys(), sortSpecs); } else { return false; } }
/** * Find a scan node in the plan of the parent EB corresponding to the output of the child EB. * * @param child * @param parent * @return ScanNode */ private static ScanNode findScanForChildEb(ExecutionBlock child, ExecutionBlock parent) { ScanNode scanForChild = null; for (ScanNode scanNode : parent.getScanNodes()) { if (scanNode.getTableName().equals(child.getId().toString())) { scanForChild = scanNode; break; } } if (scanForChild == null) { throw new NoScanNodeForChildEbException( "cannot find any scan nodes for " + child.getId() + " in " + parent.getId()); } return scanForChild; }
@Override public PlanString getPlanString() { PlanString planStr = new PlanString(this).appendTitle(" on ").appendTitle(getTableName()); if (hasAlias()) { planStr.appendTitle(" as ").appendTitle(alias); } if (hasQual()) { planStr.addExplan("filter: ").appendExplain(this.qual.toString()); } if (hasTargets()) { planStr.addExplan("target list: ").appendExplain(StringUtils.join(targets, ", ")); } planStr.addDetail("out schema: ").appendDetail(getOutSchema().toString()); planStr.addDetail("in schema: ").appendDetail(getInSchema().toString()); return planStr; } }
static void testQuery7(LogicalNode plan) { assertEquals(NodeType.PROJECTION, plan.getType()); ProjectionNode projNode = (ProjectionNode) plan; assertEquals(NodeType.GROUP_BY, projNode.getChild().getType()); GroupbyNode groupByNode = projNode.getChild(); assertEquals(NodeType.JOIN, groupByNode.getChild().getType()); JoinNode joinNode = groupByNode.getChild(); assertEquals(NodeType.SCAN, joinNode.getLeftChild().getType()); ScanNode leftNode = joinNode.getLeftChild(); assertEquals(IdentifierUtil.buildFQName(DEFAULT_DATABASE_NAME, "dept"), leftNode.getTableName()); assertEquals(NodeType.SCAN, joinNode.getRightChild().getType()); ScanNode rightNode = joinNode.getRightChild(); assertEquals(IdentifierUtil.buildFQName(DEFAULT_DATABASE_NAME, "score"), rightNode.getTableName()); }
@Test public final void testSingleRelation() throws CloneNotSupportedException, TajoException { QueryContext qc = createQueryContext(); Expr expr = sqlAnalyzer.parse(QUERIES[0]); LogicalPlan planNode = planner.createPlan(qc, expr); LogicalNode plan = planNode.getRootBlock().getRoot(); assertEquals(NodeType.ROOT, plan.getType()); testCloneLogicalNode(plan); LogicalRootNode root = (LogicalRootNode) plan; assertEquals(NodeType.PROJECTION, root.getChild().getType()); ProjectionNode projNode = root.getChild(); assertEquals(NodeType.SELECTION, projNode.getChild().getType()); SelectionNode selNode = projNode.getChild(); assertEquals(NodeType.SCAN, selNode.getChild().getType()); ScanNode scanNode = selNode.getChild(); assertEquals(IdentifierUtil.buildFQName(DEFAULT_DATABASE_NAME, "employee"), scanNode.getTableName()); }
@Test public final void testSPJPush() throws CloneNotSupportedException, TajoException { QueryContext qc = createQueryContext(); Expr expr = sqlAnalyzer.parse(QUERIES[5]); LogicalNode plan = planner.createPlan(qc, expr).getRootBlock().getRoot(); testCloneLogicalNode(plan); assertEquals(NodeType.ROOT, plan.getType()); LogicalRootNode root = (LogicalRootNode) plan; assertEquals(NodeType.PROJECTION, root.getChild().getType()); ProjectionNode projNode = root.getChild(); assertEquals(NodeType.SELECTION, projNode.getChild().getType()); SelectionNode selNode = projNode.getChild(); assertEquals(NodeType.SCAN, selNode.getChild().getType()); ScanNode scanNode = selNode.getChild(); assertEquals(IdentifierUtil.buildFQName(DEFAULT_DATABASE_NAME, "employee"), scanNode.getTableName()); }
@Test public final void testCreateIndexNode() throws TajoException { QueryContext qc = new QueryContext(util.getConfiguration(), session); Expr expr = sqlAnalyzer.parse(QUERIES[11]); LogicalPlan rootNode = planner.createPlan(qc, expr); LogicalNode plan = rootNode.getRootBlock().getRoot(); LogicalRootNode root = (LogicalRootNode) plan; assertEquals(NodeType.CREATE_INDEX, root.getChild().getType()); CreateIndexNode createIndexNode = root.getChild(); assertEquals(NodeType.PROJECTION, createIndexNode.getChild().getType()); ProjectionNode projNode = createIndexNode.getChild(); assertEquals(NodeType.SELECTION, projNode.getChild().getType()); SelectionNode selNode = projNode.getChild(); assertEquals(NodeType.SCAN, selNode.getChild().getType()); ScanNode scanNode = selNode.getChild(); assertEquals(IdentifierUtil.buildFQName(DEFAULT_DATABASE_NAME, "employee"), scanNode.getTableName()); }
@Test public final void testAsterisk() throws CloneNotSupportedException, TajoException { QueryContext qc = createQueryContext(); Expr expr = sqlAnalyzer.parse(QUERIES[13]); LogicalPlan planNode = planner.createPlan(qc, expr); LogicalNode plan = planNode.getRootBlock().getRoot(); assertEquals(NodeType.ROOT, plan.getType()); testCloneLogicalNode(plan); LogicalRootNode root = (LogicalRootNode) plan; assertEquals(NodeType.PROJECTION, root.getChild().getType()); ProjectionNode projNode = root.getChild(); assertEquals(6, projNode.getOutSchema().size()); assertEquals(NodeType.SELECTION, projNode.getChild().getType()); SelectionNode selNode = projNode.getChild(); assertEquals(NodeType.SCAN, selNode.getChild().getType()); ScanNode scanNode = selNode.getChild(); assertEquals(IdentifierUtil.buildFQName(DEFAULT_DATABASE_NAME, "employee"), scanNode.getTableName()); }