@Override public LogicalNode visitRelation(ProcessorContext ctx, Stack<Expr> stack, Relation expr) throws TajoException { LogicalPlan plan = ctx.planContext.getPlan(); QueryBlock queryBlock = plan.getBlockByExpr(expr); ScanNode scan = queryBlock.getNodeFromExpr(expr); TableDesc desc = scan.getTableDesc(); if (desc.hasEmptySchema()) { Set<Column> columns = new HashSet<>(); if (ctx.projectColumns.containsKey(getQualifiedName(ctx.planContext, expr.getName()))) { for (ColumnReferenceExpr col : ctx.projectColumns.get(getQualifiedName(ctx.planContext, expr.getName()))) { columns.add(NameResolver.resolve(plan, queryBlock, col, NameResolvingMode.RELS_ONLY, true)); } } if (expr.hasAlias()) { if (ctx.projectColumns.containsKey(getQualifiedName(ctx.planContext, expr.getAlias()))) { for (ColumnReferenceExpr col : ctx.projectColumns.get(getQualifiedName(ctx.planContext, expr.getAlias()))) { columns.add(NameResolver.resolve(plan, queryBlock, col, NameResolvingMode.RELS_ONLY, true)); } } } if (columns.isEmpty()) { // error throw new TajoInternalError( "Columns projected from " + getQualifiedName(ctx.planContext, expr.getName()) + " is not found."); } desc.setSchema(buildSchemaFromColumnSet(columns)); scan.init(desc); } return scan; }
@Override public LogicalNode visitRelation(ProcessorContext ctx, Stack<Expr> stack, Relation expr) throws TajoException { LogicalPlan plan = ctx.planContext.getPlan(); QueryBlock queryBlock = plan.getBlockByExpr(expr); ScanNode scan = queryBlock.getNodeFromExpr(expr); TableDesc desc = scan.getTableDesc(); if (desc.hasEmptySchema()) { Set<Column> columns = new HashSet<>(); if (ctx.projectColumns.containsKey(getQualifiedName(ctx.planContext, expr.getName()))) { for (ColumnReferenceExpr col : ctx.projectColumns.get(getQualifiedName(ctx.planContext, expr.getName()))) { columns.add(NameResolver.resolve(plan, queryBlock, col, NameResolvingMode.RELS_ONLY, true)); } } if (expr.hasAlias()) { if (ctx.projectColumns.containsKey(getQualifiedName(ctx.planContext, expr.getAlias()))) { for (ColumnReferenceExpr col : ctx.projectColumns.get(getQualifiedName(ctx.planContext, expr.getAlias()))) { columns.add(NameResolver.resolve(plan, queryBlock, col, NameResolvingMode.RELS_ONLY, true)); } } } if (columns.isEmpty()) { // error throw new TajoInternalError( "Columns projected from " + getQualifiedName(ctx.planContext, expr.getName()) + " is not found."); } desc.setSchema(buildSchemaFromColumnSet(columns)); scan.init(desc); } return scan; }
private static NonForwardQueryResultScanner getNonForwardQueryResultScanner( MasterContext masterContext, Session session, QueryId queryId) throws IOException, TajoException { NonForwardQueryResultScanner resultScanner = session.getNonForwardQueryResultScanner(queryId); if (resultScanner == null) { QueryInfo queryInfo = masterContext.getQueryJobManager().getFinishedQuery(queryId); if (queryInfo == null) { throw new RuntimeException("QueryInfo isnull."); } TableDesc resultTableDesc = queryInfo.getResultDesc(); if (resultTableDesc == null) { throw new RuntimeException("Result Table Desc is null."); } ScanNode scanNode; if (resultTableDesc.hasPartition()) { scanNode = LogicalPlan.createNodeWithoutPID(PartitionedTableScanNode.class); scanNode.init(resultTableDesc); } else { scanNode = LogicalPlan.createNodeWithoutPID(ScanNode.class); scanNode.init(resultTableDesc); } resultScanner = new NonForwardQueryResultFileScanner(masterContext.getConf(), session.getSessionId(), queryId, scanNode, Integer.MAX_VALUE); resultScanner.init(); session.addNonForwardQueryResultScanner(resultScanner); } return resultScanner; }
public static ScanNode buildInputExecutor(LogicalPlan plan, DataChannel channel) { Preconditions.checkArgument(channel.getSchema() != null, "Channel schema (" + channel.getSrcId().getId() + " -> " + channel.getTargetId().getId() + ") is not initialized"); TableMeta meta = new TableMeta(channel.getDataFormat(), new KeyValueSet()); TableDesc desc = new TableDesc( channel.getSrcId().toString(), channel.getSchema(), meta, StorageConstants.LOCAL_FS_URI); ScanNode scanNode = plan.createNode(ScanNode.class); scanNode.init(desc); return scanNode; }
public static ScanNode buildInputExecutor(LogicalPlan plan, DataChannel channel) { Preconditions.checkArgument(channel.getSchema() != null, "Channel schema (" + channel.getSrcId().getId() + " -> " + channel.getTargetId().getId() + ") is not initialized"); TableMeta meta = new TableMeta(channel.getDataFormat(), new KeyValueSet()); TableDesc desc = new TableDesc( channel.getSrcId().toString(), channel.getSchema(), meta, StorageConstants.LOCAL_FS_URI); ScanNode scanNode = plan.createNode(ScanNode.class); scanNode.init(desc); return scanNode; }
@Override public LogicalNode visitRelation(LogicalPlanner.PlanContext ctx, Stack<Expr> stack, Relation relation) throws TajoException { String actualRelationName; if (IdentifierUtil.isFQTableName(relation.getName())) { actualRelationName = relation.getName(); } else { actualRelationName = IdentifierUtil.buildFQName(ctx.getQueryContext().get(SessionVars.CURRENT_DATABASE), relation.getName()); } TableDesc desc = catalog.getTableDesc(actualRelationName); ScanNode scanNode = ctx.getPlan().createNode(ScanNode.class); if (relation.hasAlias()) { scanNode.init(desc, relation.getAlias()); } else { scanNode.init(desc); } TablePropertyUtil.setTableProperty(ctx.getQueryContext(), scanNode); ctx.getQueryBlock().addRelation(scanNode); return scanNode; }
@Override public LogicalNode visitRelation(LogicalPlanner.PlanContext ctx, Stack<Expr> stack, Relation relation) throws TajoException { String actualRelationName; if (CatalogUtil.isFQTableName(relation.getName())) { actualRelationName = relation.getName(); } else { actualRelationName = CatalogUtil.buildFQName(ctx.getQueryContext().get(SessionVars.CURRENT_DATABASE), relation.getName()); } TableDesc desc = catalog.getTableDesc(actualRelationName); ScanNode scanNode = ctx.getPlan().createNode(ScanNode.class); if (relation.hasAlias()) { scanNode.init(desc, relation.getAlias()); } else { scanNode.init(desc); } TablePropertyUtil.setTableProperty(ctx.getQueryContext(), scanNode); ctx.getQueryBlock().addRelation(scanNode); return scanNode; }
private static void fillScanNode(OverridableConf context, EvalContext evalContext, PlanProto.LogicalNode protoNode, ScanNode scan) { PlanProto.ScanNode scanProto = protoNode.getScan(); if (scanProto.hasAlias()) { scan.init(new TableDesc(scanProto.getTable()), scanProto.getAlias()); } else { scan.init(new TableDesc(scanProto.getTable())); } if (scanProto.getExistTargets()) { scan.setTargets(convertTargets(context, evalContext, scanProto.getTargetsList())); } if (scanProto.hasQual()) { scan.setQual(EvalNodeDeserializer.deserialize(context, evalContext, scanProto.getQual())); } if(scanProto.hasBroadcast()){ scan.setBroadcastTable(scanProto.getBroadcast()); } scan.setInSchema(convertSchema(protoNode.getInSchema())); scan.setOutSchema(convertSchema(protoNode.getOutSchema())); scan.setNameResolveBase(scanProto.getNameResolveBase()); }
private static void fillScanNode(OverridableConf context, EvalContext evalContext, PlanProto.LogicalNode protoNode, ScanNode scan) { PlanProto.ScanNode scanProto = protoNode.getScan(); if (scanProto.hasAlias()) { scan.init(new TableDesc(scanProto.getTable()), scanProto.getAlias()); } else { scan.init(new TableDesc(scanProto.getTable())); } if (scanProto.getExistTargets()) { scan.setTargets(convertTargets(context, evalContext, scanProto.getTargetsList())); } if (scanProto.hasQual()) { scan.setQual(EvalNodeDeserializer.deserialize(context, evalContext, scanProto.getQual())); } if(scanProto.hasBroadcast()){ scan.setBroadcastTable(scanProto.getBroadcast()); } scan.setInSchema(convertSchema(protoNode.getInSchema())); scan.setOutSchema(convertSchema(protoNode.getOutSchema())); scan.setNameResolveBase(scanProto.getNameResolveBase()); }
groupbyNode.setGroupingColumns(new Column[]{schema.getColumn(1), schema.getColumn(2)}); ScanNode scanNode = new ScanNode(0); scanNode.init(CatalogUtil.newTableDesc("in", schema, CatalogUtil.newTableMeta(BuiltinStorages.TEXT, conf), new Path("in"))); JoinNode joinNode = new JoinNode(0); ScanNode scanNode2 = new ScanNode(0); scanNode2.init(CatalogUtil.newTableDesc("in2", schema, CatalogUtil.newTableMeta(BuiltinStorages.TEXT, conf), new Path("in2"))); scanNode3.init(CatalogUtil.newTableDesc("in", schema, CatalogUtil.newTableMeta(BuiltinStorages.TEXT, conf), new Path("in"))); groupbyNode2.setChild(scanNode3);