@Override protected void compile() throws CompilationError { if (plan.hasQual()) { qual = context.getPrecompiledEval(inSchema, qual); } }
@Override protected void compile() throws CompilationError { if (scanNode.hasQual()) { qual = context.getPrecompiledEval(inSchema, qual); } }
@Override protected void compile() throws CompilationError { if (scanNode.hasQual()) { qual = context.getPrecompiledEval(inSchema, qual); } }
@Override protected void compile() throws CompilationError { if (plan.hasQual()) { qual = context.getPrecompiledEval(inSchema, qual); } }
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().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())); } }
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())); } }
private void initScanIterator() { // We should use FilterScanIterator only if underlying storage does not support filter push down. if (plan.hasQual() && !scanner.isSelectable()) { scanIt = new FilterScanIterator(scanner, qual); } else { scanIt = new FullScanIterator(scanner); } }
private void initScanIterator() { // We should use FilterScanIterator only if underlying storage does not support filter push down. if (plan.hasQual() && !scanner.isSelectable()) { scanIt = new FilterScanIterator(scanner, qual); } else { scanIt = new FullScanIterator(scanner); } }
public SystemPhysicalExec(TaskAttemptContext context, ScanNode scanNode) { super(context, scanNode.getInSchema(), scanNode.getOutSchema()); this.scanNode = scanNode; if (this.scanNode.hasQual()) { this.qual = this.scanNode.getQual(); this.qual.bind(null, inSchema); } cachedData = new ArrayList<>(); currentRow = 0; isClosed = false; projector = new Projector(context, inSchema, outSchema, scanNode.getTargets()); }
@Override public Object visitScan(Object object, LogicalPlan plan, LogicalPlan.QueryBlock block, ScanNode scanNode, Stack<LogicalNode> stack) throws TajoException { final TableDesc table = scanNode.getTableDesc(); if (!isVirtual(table)) { final TableStats stats = getTableStat(table); final long tableSize = stats.getNumBytes(); final Optional<EvalNode> filter = scanNode.hasQual() ? Optional.of(scanNode.getQual()) : Optional.<EvalNode>absent(); // If USE_TABLE_VOLUME is set, we will update the table volume through a storage handler. // In addition, if the table size is zero, we will update too. // It is a good workaround to avoid suboptimal join orders without cheap cost. if (conf.getBool(SessionVars.USE_TABLE_VOLUME) || tableSize == 0) { table.getStats().setNumBytes(getTableVolume(table, filter)); } } return scanNode; }
@Override public LogicalNode visitScan(PlanShapeFixerContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, ScanNode node, Stack<LogicalNode> stack) throws TajoException { super.visitScan(context, plan, block, node, stack); context.childNumbers.push(1); if (node.hasTargets()) { node.setTargets(sortTargets(node.getTargets())); } if (node.hasQual()) { node.setQual(sortQual(node.getQual())); } return null; }
@Override public LogicalNode visitScan(PlanShapeFixerContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, ScanNode node, Stack<LogicalNode> stack) throws TajoException { super.visitScan(context, plan, block, node, stack); context.childNumbers.push(1); if (node.hasTargets()) { node.setTargets(sortTargets(node.getTargets())); } if (node.hasQual()) { node.setQual(sortQual(node.getQual())); } return null; }
public SystemPhysicalExec(TaskAttemptContext context, ScanNode scanNode) { super(context, scanNode.getInSchema(), scanNode.getOutSchema()); this.scanNode = scanNode; if (this.scanNode.hasQual()) { this.qual = this.scanNode.getQual(); this.qual.bind(null, inSchema); } cachedData = TUtil.newList(); currentRow = 0; isClosed = false; projector = new Projector(context, inSchema, outSchema, scanNode.getTargets()); }
@Override public Object clone() throws CloneNotSupportedException { ScanNode scanNode = (ScanNode) super.clone(); scanNode.tableDesc = (TableDesc) this.tableDesc.clone(); if (hasQual()) { scanNode.qual = (EvalNode) this.qual.clone(); } if (hasTargets()) { scanNode.targets = new Target[targets.length]; for (int i = 0; i < targets.length; i++) { scanNode.targets[i] = (Target) targets[i].clone(); } } if (hasAlias()) { scanNode.alias = alias; } return scanNode; }
@Override public LogicalNode visitScan(Context context, LogicalPlan plan, LogicalPlan.QueryBlock block, ScanNode node, Stack<LogicalNode> stack) throws TajoException { if (node.hasTargets()) { for (Target target : node.getTargets()) { ExprsVerifier.verify(context.state, node, target.getEvalTree()); } } if (node.hasQual()) { ExprsVerifier.verify(context.state, node, node.getQual()); } verifyProjectableOutputSchema(context, node); return node; }
@Override public LogicalNode visitScan(Context context, LogicalPlan plan, LogicalPlan.QueryBlock block, ScanNode node, Stack<LogicalNode> stack) throws TajoException { if (node.hasTargets()) { for (Target target : node.getTargets()) { ExprsVerifier.verify(context.state, node, target.getEvalTree()); } } if (node.hasQual()) { ExprsVerifier.verify(context.state, node, node.getQual()); } verifyProjectableOutputSchema(context, node); return node; }
@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; } }
public PlanProto.ScanNode.Builder buildScanNode(ScanNode scan) { PlanProto.ScanNode.Builder scanBuilder = PlanProto.ScanNode.newBuilder(); scanBuilder.setTable(scan.getTableDesc().getProto()); if (scan.hasAlias()) { scanBuilder.setAlias(scan.getAlias()); } if (scan.hasTargets()) { scanBuilder.setExistTargets(true); scanBuilder.addAllTargets(ProtoUtil.<PlanProto.Target>toProtoObjects(scan.getTargets())); } else { scanBuilder.setExistTargets(false); } if (scan.hasQual()) { scanBuilder.setQual(EvalNodeSerializer.serialize(scan.getQual())); } scanBuilder.setBroadcast(scan.isBroadcastTable()); scanBuilder.setNameResolveBase(scan.isNameResolveBase()); return scanBuilder; }