/** * This method transforms the unqualified names of a schema to the qualified names. * * @param tableName a table name to be prefixed * @param schema a schema to be transformed * * @return */ public static SchemaProto getQualfiedSchema(String tableName, SchemaProto schema) { Schema restored = new Schema(schema); restored.setQualifier(tableName); return restored.getProto(); }
/** * This method transforms the unqualified names of a schema to the qualified names. * * @param tableName a table name to be prefixed * @param schema a schema to be transformed * * @return */ public static SchemaProto getQualfiedSchema(String tableName, SchemaProto schema) { Schema restored = SchemaFactory.newV1(schema); restored.setQualifier(tableName); return restored.getProto(); }
public void writeHeader(int entryNum) throws IOException { // schema byte [] schemaBytes = keySchema.getProto().toByteArray(); out.writeInt(schemaBytes.length); out.write(schemaBytes); // comparator byte [] comparatorBytes = compartor.getProto().toByteArray(); out.writeInt(comparatorBytes.length); out.write(comparatorBytes); // level out.writeInt(this.level); // entry out.writeInt(entryNum); if (entryNum > 0) { byte [] minBytes = rowStoreEncoder.toBytes(firstKey); out.writeInt(minBytes.length); out.write(minBytes); byte [] maxBytes = rowStoreEncoder.toBytes(lastKey); out.writeInt(maxBytes.length); out.write(maxBytes); } out.flush(); }
private static PlanProto.LogicalNode.Builder createNodeBuilder(SerializeContext context, LogicalNode node) { int selfId; if (context.idMap.containsKey(node.getPID())) { selfId = context.idMap.get(node.getPID()); } else { selfId = context.seqId++; context.idMap.put(node.getPID(), selfId); } PlanProto.LogicalNode.Builder nodeBuilder = PlanProto.LogicalNode.newBuilder(); nodeBuilder.setVisitSeq(selfId); nodeBuilder.setNodeId(node.getPID()); nodeBuilder.setType(convertType(node.getType())); // some DDL statements like DropTable or DropDatabase do not have in/out schemas if (node.getInSchema() != null) { nodeBuilder.setInSchema(node.getInSchema().getProto()); } if (node.getOutSchema() != null) { nodeBuilder.setOutSchema(node.getOutSchema().getProto()); } return nodeBuilder; }
private static PlanProto.LogicalNode.Builder createNodeBuilder(SerializeContext context, LogicalNode node) { int selfId; if (context.idMap.containsKey(node.getPID())) { selfId = context.idMap.get(node.getPID()); } else { selfId = context.seqId++; context.idMap.put(node.getPID(), selfId); } PlanProto.LogicalNode.Builder nodeBuilder = PlanProto.LogicalNode.newBuilder(); nodeBuilder.setVisitSeq(selfId); nodeBuilder.setNodeId(node.getPID()); nodeBuilder.setType(convertType(node.getType())); // some DDL statements like DropTable or DropDatabase do not have in/out schemas if (node.getInSchema() != null) { nodeBuilder.setInSchema(node.getInSchema().getProto()); } if (node.getOutSchema() != null) { nodeBuilder.setOutSchema(node.getOutSchema().getProto()); } return nodeBuilder; }
@Override public LogicalNode visitIndexScan(SerializeContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, 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 visitIndexScan(SerializeContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, 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; }
private static PlanProto.StoreTableNodeSpec.Builder buildStoreTableNodeSpec(StoreTableNode node) { PlanProto.StoreTableNodeSpec.Builder storeTableBuilder = PlanProto.StoreTableNodeSpec.newBuilder(); if (node.hasTableName()) { // It will be false if node is for INSERT INTO LOCATION '...' storeTableBuilder.setTableName(node.getTableName()); } if (node.hasUri()) { storeTableBuilder.setUri(node.getUri().toString()); } if (node.hasTableSchema()) { storeTableBuilder.setTableSchema(node.getTableSchema().getProto()); } if (node.hasPartition()) { storeTableBuilder.setPartitionMethod(node.getPartitionMethod().getProto()); } return storeTableBuilder; }
private static PlanProto.StoreTableNodeSpec.Builder buildStoreTableNodeSpec(StoreTableNode node) { PlanProto.StoreTableNodeSpec.Builder storeTableBuilder = PlanProto.StoreTableNodeSpec.newBuilder(); if (node.hasTableName()) { // It will be false if node is for INSERT INTO LOCATION '...' storeTableBuilder.setTableName(node.getTableName()); } if (node.hasUri()) { storeTableBuilder.setUri(node.getUri().toString()); } if (node.hasTableSchema()) { storeTableBuilder.setTableSchema(node.getTableSchema().getProto()); } if (node.hasPartition()) { storeTableBuilder.setPartitionMethod(node.getPartitionMethod().getProto()); } return storeTableBuilder; }
@Override public TupleComparatorProto getProto() { TupleComparatorProto.Builder builder = TupleComparatorProto.newBuilder(); builder.setSchema(schema.getProto()); for (SortSpec sortSpec : sortSpecs) { builder.addSortSpecs(sortSpec.getProto()); } TupleComparatorSpecProto.Builder sortSpecBuilder; for (int i = 0; i < sortKeyIds.length; i++) { sortSpecBuilder = TupleComparatorSpecProto.newBuilder(); sortSpecBuilder.setColumnId(sortKeyIds[i]); sortSpecBuilder.setAscending(asc[i]); sortSpecBuilder.setNullFirst(nullFirsts[i]); builder.addCompSpecs(sortSpecBuilder); } return builder.build(); }
@Override public CatalogProtos.PartitionMethodProto getProto() { TableIdentifierProto.Builder tableIdentifierBuilder = TableIdentifierProto.newBuilder(); if (databaseName != null) { tableIdentifierBuilder.setDatabaseName(databaseName); } if (tableName != null) { tableIdentifierBuilder.setTableName(tableName); } CatalogProtos.PartitionMethodProto.Builder builder = CatalogProtos.PartitionMethodProto.newBuilder(); builder.setTableIdentifier(tableIdentifierBuilder.build()); builder.setPartitionType(partitionType); builder.setExpression(expression); builder.setExpressionSchema(expressionSchema.getProto()); return builder.build(); }
@Override public TupleComparatorProto getProto() { TupleComparatorProto.Builder builder = TupleComparatorProto.newBuilder(); builder.setSchema(schema.getProto()); for (int i = 0; i < sortSpecs.length; i++) { builder.addSortSpecs(sortSpecs[i].getProto()); } TupleComparatorSpecProto.Builder sortSpecBuilder; for (int i = 0; i < sortKeyIds.length; i++) { sortSpecBuilder = TupleComparatorSpecProto.newBuilder(); sortSpecBuilder.setColumnId(sortKeyIds[i]); sortSpecBuilder.setAscending(asc[i]); sortSpecBuilder.setNullFirst(nullFirsts[i]); builder.addCompSpecs(sortSpecBuilder); } return builder.build(); }
@Override public CatalogProtos.PartitionMethodProto getProto() { TableIdentifierProto.Builder tableIdentifierBuilder = TableIdentifierProto.newBuilder(); if (databaseName != null) { tableIdentifierBuilder.setDatabaseName(databaseName); } if (tableName != null) { tableIdentifierBuilder.setTableName(tableName); } CatalogProtos.PartitionMethodProto.Builder builder = CatalogProtos.PartitionMethodProto.newBuilder(); builder.setTableIdentifier(tableIdentifierBuilder.build()); builder.setPartitionType(partitionType); builder.setExpression(expression); builder.setExpressionSchema(expressionSchema.getProto()); return builder.build(); }
@Override public LogicalNode visitInsert(SerializeContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, InsertNode node, Stack<LogicalNode> stack) throws TajoException { super.visitInsert(context, plan, block, node, stack); int [] childIds = registerGetChildIds(context, node); PlanProto.PersistentStoreNode.Builder persistentStoreBuilder = buildPersistentStoreBuilder(node, childIds); PlanProto.StoreTableNodeSpec.Builder storeTableBuilder = buildStoreTableNodeSpec(node); PlanProto.InsertNodeSpec.Builder insertNodeSpec = PlanProto.InsertNodeSpec.newBuilder(); insertNodeSpec.setOverwrite(node.isOverwrite()); if (node.hasProjectedSchema()) { insertNodeSpec.setProjectedSchema(node.getProjectedSchema().getProto()); } if (node.hasTargetSchema()) { insertNodeSpec.setTargetSchema(node.getTargetSchema().getProto()); } PlanProto.LogicalNode.Builder nodeBuilder = createNodeBuilder(context, node); nodeBuilder.setPersistentStore(persistentStoreBuilder); nodeBuilder.setStoreTable(storeTableBuilder); nodeBuilder.setInsert(insertNodeSpec); context.treeBuilder.addNodes(nodeBuilder); return node; }
@Override public LogicalNode visitInsert(SerializeContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, InsertNode node, Stack<LogicalNode> stack) throws TajoException { super.visitInsert(context, plan, block, node, stack); int [] childIds = registerGetChildIds(context, node); PlanProto.PersistentStoreNode.Builder persistentStoreBuilder = buildPersistentStoreBuilder(node, childIds); PlanProto.StoreTableNodeSpec.Builder storeTableBuilder = buildStoreTableNodeSpec(node); PlanProto.InsertNodeSpec.Builder insertNodeSpec = PlanProto.InsertNodeSpec.newBuilder(); insertNodeSpec.setOverwrite(node.isOverwrite()); if (node.hasProjectedSchema()) { insertNodeSpec.setProjectedSchema(node.getProjectedSchema().getProto()); } if (node.hasTargetSchema()) { insertNodeSpec.setTargetSchema(node.getTargetSchema().getProto()); } PlanProto.LogicalNode.Builder nodeBuilder = createNodeBuilder(context, node); nodeBuilder.setPersistentStore(persistentStoreBuilder); nodeBuilder.setStoreTable(storeTableBuilder); nodeBuilder.setInsert(insertNodeSpec); context.treeBuilder.addNodes(nodeBuilder); return node; }
public DataChannelProto getProto() { DataChannelProto.Builder builder = DataChannelProto.newBuilder(); builder.setSrcId(srcId.getProto()); builder.setTargetId(targetId.getProto()); if (transmitType != null) { builder.setTransmitType(transmitType); } builder.setShuffleType(shuffleType); if (schema != null) { builder.setSchema(schema.getProto()); } if (shuffleKeys != null) { for (Column column : shuffleKeys) { builder.addShuffleKeys(column.getProto()); } } if (numOutputs != null) { builder.setNumOutputs(numOutputs); } if(dataFormat != null){ builder.setDataFormat(dataFormat); } return builder.build(); }
@Override public LogicalNode visitCreateIndex(SerializeContext context, LogicalPlan plan, LogicalPlan.QueryBlock block, CreateIndexNode node, Stack<LogicalNode> stack) throws TajoException { super.visitCreateIndex(context, plan, block, node, new Stack<>()); 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 IndexDescProto getProto() { IndexDescProto.Builder builder = IndexDescProto.newBuilder(); CatalogProtos.TableIdentifierProto.Builder tableIdentifierBuilder = CatalogProtos.TableIdentifierProto.newBuilder(); if (databaseName != null) { tableIdentifierBuilder.setDatabaseName(databaseName); } if (tableName != null) { tableIdentifierBuilder.setTableName(tableName); } builder.setTableIdentifier(tableIdentifierBuilder.build()); builder.setIndexName(indexMeta.getIndexName()); builder.setIndexPath(indexMeta.getIndexPath().toString()); for (SortSpec colSpec : indexMeta.getKeySortSpecs()) { builder.addKeySortSpecs(colSpec.getProto()); } builder.setIndexMethod(indexMeta.getIndexMethod()); builder.setIsUnique(indexMeta.isUnique()); builder.setIsClustered(indexMeta.isClustered()); builder.setTargetRelationSchema(indexMeta.getTargetRelationSchema().getProto()); return builder.build(); }
@Override public IndexDescProto getProto() { IndexDescProto.Builder builder = IndexDescProto.newBuilder(); CatalogProtos.TableIdentifierProto.Builder tableIdentifierBuilder = CatalogProtos.TableIdentifierProto.newBuilder(); if (databaseName != null) { tableIdentifierBuilder.setDatabaseName(databaseName); } if (tableName != null) { tableIdentifierBuilder.setTableName(tableName); } builder.setTableIdentifier(tableIdentifierBuilder.build()); builder.setIndexName(indexMeta.getIndexName()); builder.setIndexPath(indexMeta.getIndexPath().toString()); for (SortSpec colSpec : indexMeta.getKeySortSpecs()) { builder.addKeySortSpecs(colSpec.getProto()); } builder.setIndexMethod(indexMeta.getIndexMethod()); builder.setIsUnique(indexMeta.isUnique()); builder.setIsClustered(indexMeta.isClustered()); builder.setTargetRelationSchema(indexMeta.getTargetRelationSchema().getProto()); return builder.build(); }