From 5be6a506903c9a6a2861c57f24271f2434d29a0e Mon Sep 17 00:00:00 2001 From: Hyunsik Choi Date: Wed, 16 Mar 2016 15:10:05 -0700 Subject: [PATCH 1/5] TAJO-2099: Implement an Adapter for legacy Schema. --- .../org/apache/tajo/catalog/CatalogUtil.java | 2 +- .../org/apache/tajo/catalog/IndexDesc.java | 2 +- .../java/org/apache/tajo/catalog/Schema.java | 479 +-------------- .../apache/tajo/catalog/SchemaFactory.java | 48 ++ .../org/apache/tajo/catalog/SchemaLegacy.java | 555 ++++++++++++++++++ .../org/apache/tajo/catalog/SchemaUtil.java | 8 +- .../org/apache/tajo/catalog/TableDesc.java | 4 +- .../tajo/catalog/json/CatalogGsonHelper.java | 2 + .../tajo/catalog/json/SchemaAdapter.java | 57 ++ .../partition/PartitionMethodDesc.java | 3 +- .../apache/tajo/catalog/TestIndexDesc.java | 2 +- .../org/apache/tajo/catalog/TestSchema.java | 58 +- .../apache/tajo/catalog/TestTableDesc.java | 4 +- .../apache/tajo/catalog/TestTableMeta.java | 8 +- .../tajo/catalog/store/AbstractDBStore.java | 6 +- .../tajo/catalog/CatalogTestingUtil.java | 4 +- .../org/apache/tajo/catalog/TestCatalog.java | 42 +- .../TestCatalogAgainstCaseSensitivity.java | 6 +- .../tajo/catalog/TestCatalogExceptions.java | 2 +- .../catalog/TestLinkedMetadataManager.java | 10 +- .../apache/tajo/client/QueryClientImpl.java | 3 +- .../apache/tajo/client/TajoClientUtil.java | 7 +- .../tajo/jdbc/TajoMetaDataResultSet.java | 3 +- .../org/apache/tajo/BackendTestingUtil.java | 3 +- .../apache/tajo/cli/tools/TestDDLBuilder.java | 8 +- .../TestCatalogAdminClientExceptions.java | 7 +- .../engine/codegen/TestEvalCodeGenerator.java | 15 +- .../apache/tajo/engine/eval/TestEvalTree.java | 5 +- .../tajo/engine/eval/TestEvalTreeUtil.java | 2 +- .../tajo/engine/eval/TestPredicates.java | 31 +- .../tajo/engine/eval/TestSQLExpression.java | 23 +- .../engine/function/TestBuiltinFunctions.java | 51 +- .../function/TestConditionalExpressions.java | 9 +- .../function/TestDateTimeFunctions.java | 13 +- .../engine/function/TestMathFunctions.java | 57 +- .../TestPatternMatchingPredicates.java | 3 +- .../TestStringOperatorsAndFunctions.java | 53 +- .../function/TestUserDefinedFunctions.java | 3 +- .../planner/TestJoinOrderAlgorithm.java | 8 +- .../engine/planner/TestLogicalOptimizer.java | 6 +- .../engine/planner/TestLogicalPlanner.java | 14 +- .../tajo/engine/planner/TestPlannerUtil.java | 18 +- .../planner/TestUniformRangePartition.java | 73 +-- .../physical/TestExternalSortExec.java | 2 +- .../physical/TestFullOuterHashJoinExec.java | 8 +- .../physical/TestFullOuterMergeJoinExec.java | 10 +- .../physical/TestHashAntiJoinExec.java | 4 +- .../planner/physical/TestHashJoinExec.java | 4 +- .../physical/TestHashSemiJoinExec.java | 4 +- .../physical/TestLeftOuterHashJoinExec.java | 8 +- .../planner/physical/TestMergeJoinExec.java | 4 +- .../planner/physical/TestPhysicalPlanner.java | 4 +- .../TestProgressExternalSortExec.java | 2 +- .../physical/TestRightOuterHashJoinExec.java | 6 +- .../physical/TestRightOuterMergeJoinExec.java | 10 +- .../engine/planner/physical/TestSortExec.java | 4 +- .../physical/TestSortIntersectExec.java | 4 +- .../planner/physical/TestTupleSorter.java | 3 +- .../planner/physical/TestUnSafeTuple.java | 3 +- .../tajo/engine/query/TestGroupByQuery.java | 9 +- .../tajo/engine/query/TestHBaseTable.java | 19 +- .../tajo/engine/query/TestJoinQuery.java | 17 +- .../tajo/engine/query/TestNullValues.java | 11 +- .../tajo/engine/query/TestSelectQuery.java | 3 +- .../tajo/engine/query/TestSortQuery.java | 17 +- .../engine/query/TestTablePartitions.java | 7 +- .../tajo/engine/query/TestWindowQuery.java | 11 +- .../tajo/engine/util/TestTupleUtil.java | 9 +- .../org/apache/tajo/storage/TestRowFile.java | 3 +- .../java/org/apache/tajo/benchmark/TPCH.java | 23 +- .../engine/planner/global/DataChannel.java | 3 +- .../builder/DistinctGroupbyBuilder.java | 3 +- .../planner/physical/BSTIndexScanExec.java | 5 +- .../physical/ColPartitionStoreExec.java | 7 +- .../engine/planner/physical/SeqScanExec.java | 2 +- .../planner/physical/WindowAggExec.java | 5 +- .../tajo/master/TajoMasterClientService.java | 2 +- .../exec/ExplainPlanPreprocessorForTest.java | 3 +- .../tajo/master/exec/QueryExecutor.java | 2 +- .../tajo/querymaster/Repartitioner.java | 2 +- .../tajo/jdbc/TajoDatabaseMetaData.java | 2 +- .../org/apache/tajo/jdbc/TestResultSet.java | 4 +- .../org/apache/tajo/plan/LogicalPlanner.java | 14 +- .../apache/tajo/plan/expr/EvalTreeUtil.java | 3 +- .../function/python/PythonScriptEngine.java | 16 +- .../tajo/plan/logical/CreateTableNode.java | 3 +- .../apache/tajo/plan/logical/InsertNode.java | 7 +- .../apache/tajo/plan/logical/ScanNode.java | 7 +- .../rewrite/SelfDescSchemaBuildPhase.java | 4 +- .../plan/rewrite/rules/IndexScanInfo.java | 3 +- .../rules/PartitionedTableRewriter.java | 2 +- .../plan/serder/LogicalNodeDeserializer.java | 11 +- .../apache/tajo/plan/util/PlannerUtil.java | 4 +- .../org/apache/tajo/plan/TestLogicalNode.java | 3 +- .../tajo/storage/BaseTupleComparator.java | 3 +- .../org/apache/tajo/storage/MergeScanner.java | 3 +- .../org/apache/tajo/storage/TupleRange.java | 3 +- .../apache/tajo/storage/TestLazyTuple.java | 5 +- .../tajo/storage/TestTupleComparator.java | 7 +- .../tajo/storage/hbase/TestColumnMapping.java | 3 +- .../tajo/storage/index/bst/BSTIndex.java | 3 +- .../tajo/storage/parquet/ParquetScanner.java | 3 +- .../storage/parquet/TajoSchemaConverter.java | 3 +- .../tajo/storage/TestCompressionStorages.java | 3 +- .../tajo/storage/TestDelimitedTextFile.java | 3 +- .../apache/tajo/storage/TestFileSystems.java | 3 +- .../tajo/storage/TestFileTablespace.java | 9 +- .../apache/tajo/storage/TestLineReader.java | 9 +- .../apache/tajo/storage/TestMergeScanner.java | 5 +- .../org/apache/tajo/storage/TestStorages.java | 51 +- .../tajo/storage/index/TestBSTIndex.java | 24 +- .../index/TestSingleCSVFileBSTIndex.java | 6 +- .../tajo/storage/json/TestJsonSerDe.java | 5 +- .../tajo/storage/parquet/TestReadWrite.java | 3 +- .../storage/parquet/TestSchemaConverter.java | 5 +- .../tajo/storage/raw/TestDirectRawFile.java | 7 +- .../jdbc/JdbcMetadataProviderBase.java | 2 +- 117 files changed, 1249 insertions(+), 962 deletions(-) create mode 100644 tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/SchemaFactory.java create mode 100644 tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/SchemaLegacy.java create mode 100644 tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/json/SchemaAdapter.java diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/CatalogUtil.java b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/CatalogUtil.java index 94e8157693..76990f2792 100644 --- a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/CatalogUtil.java +++ b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/CatalogUtil.java @@ -351,7 +351,7 @@ public static PartitionMethodDesc newPartitionMethodDesc(CatalogProtos.Partition * @return */ public static SchemaProto getQualfiedSchema(String tableName, SchemaProto schema) { - Schema restored = new Schema(schema); + Schema restored = SchemaFactory.newV1(schema); restored.setQualifier(tableName); return restored.getProto(); } diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/IndexDesc.java b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/IndexDesc.java index 9f64913ad4..ad038e8cbd 100644 --- a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/IndexDesc.java +++ b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/IndexDesc.java @@ -58,7 +58,7 @@ public IndexDesc(IndexDescProto proto) { proto.getIndexName(), new URI(proto.getIndexPath()), keySortSpecs, proto.getIndexMethod(), proto.getIsUnique(), proto.getIsClustered(), - new Schema(proto.getTargetRelationSchema())); + SchemaFactory.newV1(proto.getTargetRelationSchema())); } catch (URISyntaxException e) { e.printStackTrace(); } diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/Schema.java b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/Schema.java index 9574f12440..1b4c1eb114 100644 --- a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/Schema.java +++ b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/Schema.java @@ -18,113 +18,16 @@ package org.apache.tajo.catalog; -import com.google.common.base.Objects; -import com.google.common.collect.ImmutableList; -import com.google.gson.annotations.Expose; -import org.apache.tajo.catalog.SchemaUtil.ColumnVisitor; -import org.apache.tajo.catalog.json.CatalogGsonHelper; -import org.apache.tajo.catalog.proto.CatalogProtos.ColumnProto; import org.apache.tajo.catalog.proto.CatalogProtos.SchemaProto; import org.apache.tajo.common.ProtoObject; import org.apache.tajo.common.TajoDataTypes.DataType; import org.apache.tajo.common.TajoDataTypes.Type; -import org.apache.tajo.exception.DuplicateColumnException; -import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.json.GsonObject; -import org.apache.tajo.util.StringUtils; -import java.util.*; +import java.util.Collection; +import java.util.List; -public class Schema implements ProtoObject, Cloneable, GsonObject { - - @Expose protected List fields = null; - @Expose protected Map fieldsByQualifiedName = null; - @Expose protected Map> fieldsByName = null; - - public Schema() { - init(); - } - - /** - * This Schema constructor restores a serialized schema into in-memory Schema structure. - * A serialized schema is an ordered list in depth-first order over a nested schema. - * This constructor transforms the list into a tree-like structure. - * - * @param proto - */ - public Schema(SchemaProto proto) { - init(); - - List toBeAdded = new ArrayList<>(); - for (int i = 0; i < proto.getFieldsCount(); i++) { - deserializeColumn(toBeAdded, proto.getFieldsList(), i); - } - - for (Column c : toBeAdded) { - addColumn(c); - } - } - - /** - * This method transforms a list of ColumnProtos into a schema tree. - * It assumes that protos contains a list of ColumnProtos in the depth-first order. - * - * @param tobeAdded - * @param protos - * @param serializedColumnIndex - */ - private static void deserializeColumn(List tobeAdded, List protos, int serializedColumnIndex) { - ColumnProto columnProto = protos.get(serializedColumnIndex); - if (columnProto.getDataType().getType() == Type.RECORD) { - - // Get the number of child fields - int childNum = columnProto.getDataType().getNumNestedFields(); - // where is start index of nested fields? - int childStartIndex = tobeAdded.size() - childNum; - // Extract nested fields - List nestedColumns = new ArrayList<>(tobeAdded.subList(childStartIndex, childStartIndex + childNum)); - - // Remove nested fields from the the current level - for (int i = 0; i < childNum; i++) { - tobeAdded.remove(tobeAdded.size() - 1); - } - - // Add the nested fields to the list as a single record column - tobeAdded.add(new Column(columnProto.getName(), new TypeDesc(new Schema(nestedColumns)))); - } else { - tobeAdded.add(new Column(protos.get(serializedColumnIndex))); - } - } - - public Schema(Schema schema) { - this(); - - this.fields.addAll(schema.fields); - this.fieldsByQualifiedName.putAll(schema.fieldsByQualifiedName); - this.fieldsByName.putAll(schema.fieldsByName); - } - - public Schema(Column [] columns) { - init(); - - for(Column c : columns) { - addColumn(c); - } - } - - public Schema(Iterable columns) { - init(); - - for(Column c : columns) { - addColumn(c); - } - } - - private void init() { - this.fields = new ArrayList<>(); - this.fieldsByQualifiedName = new HashMap<>(); - this.fieldsByName = new HashMap<>(); - } +public interface Schema extends ProtoObject, Cloneable, GsonObject { /** * Set a qualifier to this schema. @@ -132,45 +35,15 @@ private void init() { * * @param qualifier The qualifier */ - public void setQualifier(String qualifier) { - // only change root fields, and must keep each nested field simple name - List columns = getRootColumns(); - - fields.clear(); - fieldsByQualifiedName.clear(); - fieldsByName.clear(); - - Column newColumn; - for (Column c : columns) { - newColumn = new Column(qualifier + "." + c.getSimpleName(), c.typeDesc); - addColumn(newColumn); - } - } + void setQualifier(String qualifier); - public int size() { - return this.fields.size(); - } + int size(); - public Column getColumn(int id) { - return fields.get(id); - } + Column getColumn(int id); - public Column getColumn(Column column) { - int idx = getIndex(column); - return idx >= 0 ? fields.get(idx) : null; - } + Column getColumn(Column column); - public int getIndex(Column column) { - if (!contains(column)) { - return -1; - } - - if (column.hasQualifier()) { - return fieldsByQualifiedName.get(column.getQualifiedName()); - } else { - return fieldsByName.get(column.getSimpleName()).get(0); - } - } + int getIndex(Column column); /** * Get a column by a given name. @@ -178,224 +51,35 @@ public int getIndex(Column column) { * @param name The column name to be found. * @return The column matched to a given column name. */ - public Column getColumn(String name) { - - if (NestedPathUtil.isPath(name)) { - - // TODO - to be refactored - if (fieldsByQualifiedName.containsKey(name)) { - Column flattenColumn = fields.get(fieldsByQualifiedName.get(name)); - if (flattenColumn != null) { - return flattenColumn; - } - } - - String [] paths = name.split(NestedPathUtil.PATH_DELIMITER); - Column column = getColumn(paths[0]); - if (column == null) { - return null; - } - Column actualColumn = NestedPathUtil.lookupPath(column, paths); + Column getColumn(String name); - Column columnPath = new Column( - column.getQualifiedName() + NestedPathUtil.makePath(paths, 1), - actualColumn.typeDesc); + int getColumnId(String name); - return columnPath; - } else { - String[] parts = name.split("\\."); - // Some of the string can includes database name and table name and column name. - // For example, it can be 'default.table1.id'. - // Therefore, spilt string array length can be 3. - if (parts.length >= 2) { - return getColumnByQName(name); - } else { - return getColumnByName(name); - } - } - } - - /** - * Find a column by a qualified name (e.g., table1.col1). - * - * @param qualifiedName The qualified name - * @return The Column matched to a given qualified name - */ - private Column getColumnByQName(String qualifiedName) { - Integer cid = fieldsByQualifiedName.get(qualifiedName); - return cid != null ? fields.get(cid) : null; - } - - /** - * Find a column by a name (e.g., col1). - * The same name columns can be exist in a schema. For example, table1.col1 and table2.col1 coexist in a schema. - * In this case, it will throw {@link java.lang.RuntimeException}. But, it occurs rarely because all column names - * except for alias have a qualified form. - * - * @param columnName The column name without qualifier - * @return The Column matched to a given name. - */ - private Column getColumnByName(String columnName) { - String normalized = columnName; - List list = fieldsByName.get(normalized); - - if (list == null || list.size() == 0) { - return null; - } - - if (list.size() == 1) { - return fields.get(list.get(0)); - } else { - throw throwAmbiguousFieldException(list); - } - } - - private RuntimeException throwAmbiguousFieldException(Collection idList) { - StringBuilder sb = new StringBuilder(); - boolean first = true; - for (Integer id : idList) { - if (first) { - first = false; - } else { - sb.append(", "); - } - sb.append(fields.get(id)); - } - throw new RuntimeException("Ambiguous Column Name Access: " + sb.toString()); - } - - public int getColumnId(String name) { - // if the same column exists, immediately return that column. - if (fieldsByQualifiedName.containsKey(name)) { - return fieldsByQualifiedName.get(name); - } - - // The following is some workaround code. - List list = fieldsByName.get(name); - if (list == null) { - return -1; - } else if (list.size() == 1) { - return fieldsByName.get(name).get(0); - } else if (list.size() == 0) { - return -1; - } else { // if list.size > 2 - throw throwAmbiguousFieldException(list); - } - } - - public int getColumnIdByName(String colName) { - for (Column col : fields) { - if (col.getSimpleName().equals(colName)) { - String qualifiedName = col.getQualifiedName(); - return fieldsByQualifiedName.get(qualifiedName); - } - } - return -1; - } + int getColumnIdByName(String colName); /** * Get root columns, meaning all columns except for nested fields. * * @return A list of root columns */ - public List getRootColumns() { - return ImmutableList.copyOf(fields); - } + List getRootColumns(); /** * Get all columns, including all nested fields * * @return A list of all columns */ - public List getAllColumns() { - final List columnList = new ArrayList<>(); - - SchemaUtil.visitSchema(this, new ColumnVisitor() { - @Override - public void visit(int depth, List path, Column column) { - if (path.size() > 0) { - String parentPath = StringUtils.join(path, NestedPathUtil.PATH_DELIMITER); - String currentPath = parentPath + NestedPathUtil.PATH_DELIMITER + column.getSimpleName(); - columnList.add(new Column(currentPath, column.getTypeDesc())); - } else { - columnList.add(column); - } - } - }); - - return columnList; - } - - public boolean contains(String name) { - // TODO - It's a hack - if (NestedPathUtil.isPath(name)) { - return (getColumn(name) != null); - } - - if (fieldsByQualifiedName.containsKey(name)) { - return true; - } - if (fieldsByName.containsKey(name)) { - if (fieldsByName.get(name).size() > 1) { - throw new RuntimeException("Ambiguous Column name"); - } - return true; - } + List getAllColumns(); - return false; - } + boolean contains(String name); - public boolean contains(Column column) { - // TODO - It's a hack - if (NestedPathUtil.isPath(column.getQualifiedName())) { - return (getColumn(column.getQualifiedName()) != null); - } - - if (column.hasQualifier()) { - return fieldsByQualifiedName.containsKey(column.getQualifiedName()); - } else { - if (fieldsByName.containsKey(column.getSimpleName())) { - int num = fieldsByName.get(column.getSimpleName()).size(); - if (num == 0) { - throw new IllegalStateException("No such column name: " + column.getSimpleName()); - } - if (num > 1) { - throw new RuntimeException("Ambiguous column name: " + column.getSimpleName()); - } - return true; - } - return false; - } - } + boolean contains(Column column); - public boolean containsByQualifiedName(String qualifiedName) { - return fieldsByQualifiedName.containsKey(qualifiedName); - } - - public boolean containsByName(String colName) { - return fieldsByName.containsKey(colName); - } + boolean containsByQualifiedName(String qualifiedName); - public boolean containsAll(Collection columns) { - boolean containFlag = true; + boolean containsByName(String colName); - for (Column c :columns) { - if (NestedPathUtil.isPath(c.getSimpleName())) { - if (contains(c.getQualifiedName())) { - containFlag &= true; - } else { - String[] paths = c.getQualifiedName().split("/"); - boolean existRootPath = contains(paths[0]); - boolean existLeafPath = getColumn(c.getSimpleName()) != null; - containFlag &= existRootPath && existLeafPath; - } - } else { - containFlag &= fields.contains(c); - } - } - - return containFlag; - } + boolean containsAll(Collection columns); /** * Return TRUE if any column in columns is included in this schema. @@ -404,133 +88,34 @@ public boolean containsAll(Collection columns) { * @return true if any column in columns is included in this schema. * Otherwise, false. */ - public boolean containsAny(Collection columns) { - for (Column column : columns) { - if (contains(column)) { - return true; - } - } - return false; - } - - public synchronized Schema addColumn(String name, TypeDesc typeDesc) { - String normalized = name; - if(fieldsByQualifiedName.containsKey(normalized)) { - throw new TajoRuntimeException(new DuplicateColumnException(normalized)); - } + boolean containsAny(Collection columns); - Column newCol = new Column(normalized, typeDesc); - fields.add(newCol); - fieldsByQualifiedName.put(newCol.getQualifiedName(), fields.size() - 1); - List inputList = new ArrayList<>(); - inputList.add(fields.size() - 1); - fieldsByName.put(newCol.getSimpleName(), inputList); + Schema addColumn(String name, TypeDesc typeDesc); - return this; - } + Schema addColumn(String name, Type type); - public synchronized Schema addColumn(String name, Type type) { - return addColumn(name, CatalogUtil.newSimpleDataType(type)); - } + Schema addColumn(String name, Type type, int length); - public synchronized Schema addColumn(String name, Type type, int length) { - return addColumn(name, CatalogUtil.newDataTypeWithLen(type, length)); - } - - public synchronized Schema addColumn(String name, DataType dataType) { - addColumn(name, new TypeDesc(dataType)); - - return this; - } + Schema addColumn(String name, DataType dataType); - public synchronized void addColumn(Column column) { - addColumn(column.getQualifiedName(), column.typeDesc); - } + void addColumn(Column column); - public synchronized void addColumns(Schema schema) { - for(Column column : schema.getRootColumns()) { - addColumn(column); - } - } + void addColumns(Schema schema); - @Override - public int hashCode() { - return Objects.hashCode(fields, fieldsByQualifiedName, fieldsByName); - } @Override - public boolean equals(Object o) { - if (o instanceof Schema) { - Schema other = (Schema) o; - return getProto().equals(other.getProto()); - } - return false; - } - - @Override - public Object clone() throws CloneNotSupportedException { - Schema schema = (Schema) super.clone(); - schema.init(); + boolean equals(Object o); - for(Column column: this.fields) { - schema.addColumn(column); - } - return schema; - } + Object clone() throws CloneNotSupportedException; @Override - public SchemaProto getProto() { - SchemaProto.Builder builder = SchemaProto.newBuilder(); - SchemaProtoBuilder recursiveBuilder = new SchemaProtoBuilder(builder); - SchemaUtil.visitSchema(this, recursiveBuilder); - return builder.build(); - } - - private static class SchemaProtoBuilder implements ColumnVisitor { - private SchemaProto.Builder builder; - public SchemaProtoBuilder(SchemaProto.Builder builder) { - this.builder = builder; - } - - @Override - public void visit(int depth, List path, Column column) { - - if (column.getDataType().getType() == Type.RECORD) { - DataType.Builder updatedType = DataType.newBuilder(column.getDataType()); - updatedType.setNumNestedFields(column.typeDesc.nestedRecordSchema.size()); + SchemaProto getProto(); - ColumnProto.Builder updatedColumn = ColumnProto.newBuilder(column.getProto()); - updatedColumn.setDataType(updatedType); - - builder.addFields(updatedColumn.build()); - } else { - builder.addFields(column.getProto()); - } - } - } - - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("{(").append(size()).append(") "); - int i = 0; - for(Column col : fields) { - sb.append(col); - if (i < fields.size() - 1) { - sb.append(", "); - } - i++; - } - sb.append("}"); - - return sb.toString(); - } + @Override + String toString(); @Override - public String toJson() { - return CatalogGsonHelper.toJson(this, Schema.class); - } + String toJson(); - public Column [] toArray() { - return this.fields.toArray(new Column[this.fields.size()]); - } + Column [] toArray(); } \ No newline at end of file diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/SchemaFactory.java b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/SchemaFactory.java new file mode 100644 index 0000000000..fb6910bd3d --- /dev/null +++ b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/SchemaFactory.java @@ -0,0 +1,48 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.tajo.catalog; + +import org.apache.tajo.catalog.proto.CatalogProtos; +import org.apache.tajo.exception.TajoInternalError; + +public class SchemaFactory { + public static Schema newV1() { + return new SchemaLegacy(); + } + + public static Schema newV1(CatalogProtos.SchemaProto proto) { + return new SchemaLegacy(proto); + } + + public static Schema newV1(Schema schema) { + try { + return (Schema) schema.clone(); + } catch (CloneNotSupportedException e) { + throw new TajoInternalError(e); + } + } + + public static Schema newV1(Column [] columns) { + return new SchemaLegacy(columns); + } + + public static Schema newV1(Iterable columns) { + return new SchemaLegacy(columns); + } +} diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/SchemaLegacy.java b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/SchemaLegacy.java new file mode 100644 index 0000000000..f23d519788 --- /dev/null +++ b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/SchemaLegacy.java @@ -0,0 +1,555 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.tajo.catalog; + +import com.google.common.base.Objects; +import com.google.common.collect.ImmutableList; +import com.google.gson.annotations.Expose; +import org.apache.tajo.catalog.SchemaUtil.ColumnVisitor; +import org.apache.tajo.catalog.json.CatalogGsonHelper; +import org.apache.tajo.catalog.proto.CatalogProtos.ColumnProto; +import org.apache.tajo.catalog.proto.CatalogProtos.SchemaProto; +import org.apache.tajo.common.ProtoObject; +import org.apache.tajo.common.TajoDataTypes.DataType; +import org.apache.tajo.common.TajoDataTypes.Type; +import org.apache.tajo.exception.DuplicateColumnException; +import org.apache.tajo.exception.TajoRuntimeException; +import org.apache.tajo.json.GsonObject; +import org.apache.tajo.util.StringUtils; + +import java.util.*; + +public class SchemaLegacy implements Schema, ProtoObject, Cloneable, GsonObject { + + @Expose protected List fields = null; + @Expose protected Map fieldsByQualifiedName = null; + @Expose protected Map> fieldsByName = null; + + public SchemaLegacy() { + init(); + } + + /** + * This Schema constructor restores a serialized schema into in-memory Schema structure. + * A serialized schema is an ordered list in depth-first order over a nested schema. + * This constructor transforms the list into a tree-like structure. + * + * @param proto + */ + public SchemaLegacy(SchemaProto proto) { + init(); + + List toBeAdded = new ArrayList<>(); + for (int i = 0; i < proto.getFieldsCount(); i++) { + deserializeColumn(toBeAdded, proto.getFieldsList(), i); + } + + for (Column c : toBeAdded) { + addColumn(c); + } + } + + /** + * This method transforms a list of ColumnProtos into a schema tree. + * It assumes that protos contains a list of ColumnProtos in the depth-first order. + * + * @param tobeAdded + * @param protos + * @param serializedColumnIndex + */ + private static void deserializeColumn(List tobeAdded, List protos, int serializedColumnIndex) { + ColumnProto columnProto = protos.get(serializedColumnIndex); + if (columnProto.getDataType().getType() == Type.RECORD) { + + // Get the number of child fields + int childNum = columnProto.getDataType().getNumNestedFields(); + // where is start index of nested fields? + int childStartIndex = tobeAdded.size() - childNum; + // Extract nested fields + List nestedColumns = new ArrayList<>(tobeAdded.subList(childStartIndex, childStartIndex + childNum)); + + // Remove nested fields from the the current level + for (int i = 0; i < childNum; i++) { + tobeAdded.remove(tobeAdded.size() - 1); + } + + // Add the nested fields to the list as a single record column + tobeAdded.add(new Column(columnProto.getName(), new TypeDesc(new SchemaLegacy(nestedColumns)))); + } else { + tobeAdded.add(new Column(protos.get(serializedColumnIndex))); + } + } + + public SchemaLegacy(Schema schema) { + new SchemaLegacy(schema.getRootColumns()); + } + + public SchemaLegacy(Column [] columns) { + init(); + + for(Column c : columns) { + addColumn(c); + } + } + + public SchemaLegacy(Iterable columns) { + init(); + + for(Column c : columns) { + addColumn(c); + } + } + + private void init() { + this.fields = new ArrayList<>(); + this.fieldsByQualifiedName = new HashMap<>(); + this.fieldsByName = new HashMap<>(); + } + + /** + * Set a qualifier to this schema. + * This changes the qualifier of all columns except for not-qualified columns. + * + * @param qualifier The qualifier + */ + @Override + public void setQualifier(String qualifier) { + // only change root fields, and must keep each nested field simple name + List columns = getRootColumns(); + + fields.clear(); + fieldsByQualifiedName.clear(); + fieldsByName.clear(); + + Column newColumn; + for (Column c : columns) { + newColumn = new Column(qualifier + "." + c.getSimpleName(), c.typeDesc); + addColumn(newColumn); + } + } + + @Override + public int size() { + return this.fields.size(); + } + + @Override + public Column getColumn(int id) { + return fields.get(id); + } + + @Override + public Column getColumn(Column column) { + int idx = getIndex(column); + return idx >= 0 ? fields.get(idx) : null; + } + + public int getIndex(Column column) { + if (!contains(column)) { + return -1; + } + + if (column.hasQualifier()) { + return fieldsByQualifiedName.get(column.getQualifiedName()); + } else { + return fieldsByName.get(column.getSimpleName()).get(0); + } + } + + /** + * Get a column by a given name. + * + * @param name The column name to be found. + * @return The column matched to a given column name. + */ + @Override + public Column getColumn(String name) { + + if (NestedPathUtil.isPath(name)) { + + // TODO - to be refactored + if (fieldsByQualifiedName.containsKey(name)) { + Column flattenColumn = fields.get(fieldsByQualifiedName.get(name)); + if (flattenColumn != null) { + return flattenColumn; + } + } + + String [] paths = name.split(NestedPathUtil.PATH_DELIMITER); + Column column = getColumn(paths[0]); + if (column == null) { + return null; + } + Column actualColumn = NestedPathUtil.lookupPath(column, paths); + + Column columnPath = new Column( + column.getQualifiedName() + NestedPathUtil.makePath(paths, 1), + actualColumn.typeDesc); + + return columnPath; + } else { + String[] parts = name.split("\\."); + // Some of the string can includes database name and table name and column name. + // For example, it can be 'default.table1.id'. + // Therefore, spilt string array length can be 3. + if (parts.length >= 2) { + return getColumnByQName(name); + } else { + return getColumnByName(name); + } + } + } + + /** + * Find a column by a qualified name (e.g., table1.col1). + * + * @param qualifiedName The qualified name + * @return The Column matched to a given qualified name + */ + private Column getColumnByQName(String qualifiedName) { + Integer cid = fieldsByQualifiedName.get(qualifiedName); + return cid != null ? fields.get(cid) : null; + } + + /** + * Find a column by a name (e.g., col1). + * The same name columns can be exist in a schema. For example, table1.col1 and table2.col1 coexist in a schema. + * In this case, it will throw {@link RuntimeException}. But, it occurs rarely because all column names + * except for alias have a qualified form. + * + * @param columnName The column name without qualifier + * @return The Column matched to a given name. + */ + private Column getColumnByName(String columnName) { + String normalized = columnName; + List list = fieldsByName.get(normalized); + + if (list == null || list.size() == 0) { + return null; + } + + if (list.size() == 1) { + return fields.get(list.get(0)); + } else { + throw throwAmbiguousFieldException(list); + } + } + + private RuntimeException throwAmbiguousFieldException(Collection idList) { + StringBuilder sb = new StringBuilder(); + boolean first = true; + for (Integer id : idList) { + if (first) { + first = false; + } else { + sb.append(", "); + } + sb.append(fields.get(id)); + } + throw new RuntimeException("Ambiguous Column Name Access: " + sb.toString()); + } + + @Override + public int getColumnId(String name) { + // if the same column exists, immediately return that column. + if (fieldsByQualifiedName.containsKey(name)) { + return fieldsByQualifiedName.get(name); + } + + // The following is some workaround code. + List list = fieldsByName.get(name); + if (list == null) { + return -1; + } else if (list.size() == 1) { + return fieldsByName.get(name).get(0); + } else if (list.size() == 0) { + return -1; + } else { // if list.size > 2 + throw throwAmbiguousFieldException(list); + } + } + + @Override + public int getColumnIdByName(String colName) { + for (Column col : fields) { + if (col.getSimpleName().equals(colName)) { + String qualifiedName = col.getQualifiedName(); + return fieldsByQualifiedName.get(qualifiedName); + } + } + return -1; + } + + /** + * Get root columns, meaning all columns except for nested fields. + * + * @return A list of root columns + */ + @Override + public List getRootColumns() { + return ImmutableList.copyOf(fields); + } + + /** + * Get all columns, including all nested fields + * + * @return A list of all columns + */ + @Override + public List getAllColumns() { + final List columnList = new ArrayList<>(); + + SchemaUtil.visitSchema(this, new ColumnVisitor() { + @Override + public void visit(int depth, List path, Column column) { + if (path.size() > 0) { + String parentPath = StringUtils.join(path, NestedPathUtil.PATH_DELIMITER); + String currentPath = parentPath + NestedPathUtil.PATH_DELIMITER + column.getSimpleName(); + columnList.add(new Column(currentPath, column.getTypeDesc())); + } else { + columnList.add(column); + } + } + }); + + return columnList; + } + + @Override + public boolean contains(String name) { + // TODO - It's a hack + if (NestedPathUtil.isPath(name)) { + return (getColumn(name) != null); + } + + if (fieldsByQualifiedName.containsKey(name)) { + return true; + } + if (fieldsByName.containsKey(name)) { + if (fieldsByName.get(name).size() > 1) { + throw new RuntimeException("Ambiguous Column name"); + } + return true; + } + + return false; + } + + @Override + public boolean contains(Column column) { + // TODO - It's a hack + if (NestedPathUtil.isPath(column.getQualifiedName())) { + return (getColumn(column.getQualifiedName()) != null); + } + + if (column.hasQualifier()) { + return fieldsByQualifiedName.containsKey(column.getQualifiedName()); + } else { + if (fieldsByName.containsKey(column.getSimpleName())) { + int num = fieldsByName.get(column.getSimpleName()).size(); + if (num == 0) { + throw new IllegalStateException("No such column name: " + column.getSimpleName()); + } + if (num > 1) { + throw new RuntimeException("Ambiguous column name: " + column.getSimpleName()); + } + return true; + } + return false; + } + } + + @Override + public boolean containsByQualifiedName(String qualifiedName) { + return fieldsByQualifiedName.containsKey(qualifiedName); + } + + @Override + public boolean containsByName(String colName) { + return fieldsByName.containsKey(colName); + } + + @Override + public boolean containsAll(Collection columns) { + boolean containFlag = true; + + for (Column c :columns) { + if (NestedPathUtil.isPath(c.getSimpleName())) { + if (contains(c.getQualifiedName())) { + containFlag &= true; + } else { + String[] paths = c.getQualifiedName().split("/"); + boolean existRootPath = contains(paths[0]); + boolean existLeafPath = getColumn(c.getSimpleName()) != null; + containFlag &= existRootPath && existLeafPath; + } + } else { + containFlag &= fields.contains(c); + } + } + + return containFlag; + } + + /** + * Return TRUE if any column in columns is included in this schema. + * + * @param columns Columns to be checked + * @return true if any column in columns is included in this schema. + * Otherwise, false. + */ + @Override + public boolean containsAny(Collection columns) { + for (Column column : columns) { + if (contains(column)) { + return true; + } + } + return false; + } + + @Override + public synchronized SchemaLegacy addColumn(String name, TypeDesc typeDesc) { + String normalized = name; + if(fieldsByQualifiedName.containsKey(normalized)) { + throw new TajoRuntimeException(new DuplicateColumnException(normalized)); + } + + Column newCol = new Column(normalized, typeDesc); + fields.add(newCol); + fieldsByQualifiedName.put(newCol.getQualifiedName(), fields.size() - 1); + List inputList = new ArrayList<>(); + inputList.add(fields.size() - 1); + fieldsByName.put(newCol.getSimpleName(), inputList); + + return this; + } + + @Override + public synchronized SchemaLegacy addColumn(String name, Type type) { + return addColumn(name, CatalogUtil.newSimpleDataType(type)); + } + + @Override + public synchronized SchemaLegacy addColumn(String name, Type type, int length) { + return addColumn(name, CatalogUtil.newDataTypeWithLen(type, length)); + } + + @Override + public synchronized SchemaLegacy addColumn(String name, DataType dataType) { + addColumn(name, new TypeDesc(dataType)); + + return this; + } + + @Override + public synchronized void addColumn(Column column) { + addColumn(column.getQualifiedName(), column.typeDesc); + } + + @Override + public synchronized void addColumns(Schema schema) { + for(Column column : schema.getRootColumns()) { + addColumn(column); + } + } + + @Override + public int hashCode() { + return Objects.hashCode(fields, fieldsByQualifiedName, fieldsByName); + } + + @Override + public boolean equals(Object o) { + if (o instanceof SchemaLegacy) { + SchemaLegacy other = (SchemaLegacy) o; + return getProto().equals(other.getProto()); + } + return false; + } + + @Override + public Object clone() throws CloneNotSupportedException { + SchemaLegacy schema = (SchemaLegacy) super.clone(); + schema.init(); + + for(Column column: this.fields) { + schema.addColumn(column); + } + return schema; + } + + @Override + public SchemaProto getProto() { + SchemaProto.Builder builder = SchemaProto.newBuilder(); + SchemaProtoBuilder recursiveBuilder = new SchemaProtoBuilder(builder); + SchemaUtil.visitSchema(this, recursiveBuilder); + return builder.build(); + } + + private static class SchemaProtoBuilder implements ColumnVisitor { + private SchemaProto.Builder builder; + public SchemaProtoBuilder(SchemaProto.Builder builder) { + this.builder = builder; + } + + @Override + public void visit(int depth, List path, Column column) { + + if (column.getDataType().getType() == Type.RECORD) { + DataType.Builder updatedType = DataType.newBuilder(column.getDataType()); + updatedType.setNumNestedFields(column.typeDesc.nestedRecordSchema.size()); + + ColumnProto.Builder updatedColumn = ColumnProto.newBuilder(column.getProto()); + updatedColumn.setDataType(updatedType); + + builder.addFields(updatedColumn.build()); + } else { + builder.addFields(column.getProto()); + } + } + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("{(").append(size()).append(") "); + int i = 0; + for(Column col : fields) { + sb.append(col); + if (i < fields.size() - 1) { + sb.append(", "); + } + i++; + } + sb.append("}"); + + return sb.toString(); + } + + @Override + public String toJson() { + return CatalogGsonHelper.toJson(this, SchemaLegacy.class); + } + + @Override + public Column [] toArray() { + return this.fields.toArray(new Column[this.fields.size()]); + } +} \ No newline at end of file diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/SchemaUtil.java b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/SchemaUtil.java index 0ffe584c5d..0c62ae5c3e 100644 --- a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/SchemaUtil.java +++ b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/SchemaUtil.java @@ -42,7 +42,7 @@ public class SchemaUtil { // The essential solution would be https://issues.apache.org/jira/browse/TAJO-895. static int tmpColumnSeq = 0; public static Schema merge(Schema left, Schema right) { - Schema merged = new Schema(); + Schema merged = SchemaFactory.newV1(); for(Column col : left.getRootColumns()) { if (!merged.containsByQualifiedName(col.getQualifiedName())) { merged.addColumn(col); @@ -67,7 +67,7 @@ public static Schema merge(Schema left, Schema right) { * Get common columns to be used as join keys of natural joins. */ public static Schema getNaturalJoinColumns(Schema left, Schema right) { - Schema common = new Schema(); + Schema common = SchemaFactory.newV1(); for (Column outer : left.getRootColumns()) { if (!common.containsByName(outer.getSimpleName()) && right.containsByName(outer.getSimpleName())) { common.addColumn(new Column(outer.getSimpleName(), outer.getDataType())); @@ -78,7 +78,7 @@ public static Schema getNaturalJoinColumns(Schema left, Schema right) { } public static Schema getQualifiedLogicalSchema(TableDesc tableDesc, String tableName) { - Schema logicalSchema = new Schema(tableDesc.getLogicalSchema()); + Schema logicalSchema = SchemaFactory.newV1(tableDesc.getLogicalSchema()); if (tableName != null) { logicalSchema.setQualifier(tableName); } @@ -208,7 +208,7 @@ public static String toDisplayString(Schema schema) { */ public static int estimateRowByteSizeWithSchema(Schema schema) { int size = 0; - for (Column column : schema.fields) { + for (Column column : schema.getAllColumns()) { size += getColByteSize(column); } return size; diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/TableDesc.java b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/TableDesc.java index 3cdc00b80f..392a83db11 100644 --- a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/TableDesc.java +++ b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/TableDesc.java @@ -70,7 +70,7 @@ public TableDesc(String tableName, @Nullable Schema schema, String dataFormat, K } public TableDesc(TableDescProto proto) { - this(proto.getTableName(), proto.hasSchema() ? new Schema(proto.getSchema()) : null, + this(proto.getTableName(), proto.hasSchema() ? SchemaFactory.newV1(proto.getSchema()) : null, new TableMeta(proto.getMeta()), proto.hasPath() ? URI.create(proto.getPath()) : null, proto.getIsExternal()); if(proto.hasStats()) { this.stats = new TableStats(proto.getStats()); @@ -122,7 +122,7 @@ public Schema getSchema() { public Schema getLogicalSchema() { if (hasPartition()) { - Schema logicalSchema = new Schema(schema); + Schema logicalSchema = SchemaFactory.newV1(schema); logicalSchema.addColumns(getPartitionMethod().getExpressionSchema()); logicalSchema.setQualifier(tableName); return logicalSchema; diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/json/CatalogGsonHelper.java b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/json/CatalogGsonHelper.java index ec439f0936..69f6955953 100644 --- a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/json/CatalogGsonHelper.java +++ b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/json/CatalogGsonHelper.java @@ -21,6 +21,7 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; import org.apache.hadoop.fs.Path; +import org.apache.tajo.catalog.Schema; import org.apache.tajo.catalog.TableMeta; import org.apache.tajo.function.Function; import org.apache.tajo.common.TajoDataTypes.DataType; @@ -46,6 +47,7 @@ private static Map registerAdapters() { adapters.put(Function.class, new FunctionAdapter()); adapters.put(Datum.class, new DatumAdapter()); adapters.put(DataType.class, new DataTypeAdapter()); + adapters.put(Schema.class, new SchemaAdapter()); return adapters; } diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/json/SchemaAdapter.java b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/json/SchemaAdapter.java new file mode 100644 index 0000000000..f7c2392fc8 --- /dev/null +++ b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/json/SchemaAdapter.java @@ -0,0 +1,57 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.tajo.catalog.json; + +import com.google.gson.*; +import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaLegacy; +import org.apache.tajo.exception.TajoInternalError; +import org.apache.tajo.exception.TajoRuntimeException; +import org.apache.tajo.exception.UnsupportedException; +import org.apache.tajo.function.Function; +import org.apache.tajo.json.CommonGsonHelper; +import org.apache.tajo.json.GsonSerDerAdapter; + +import java.lang.reflect.Type; + +public class SchemaAdapter implements GsonSerDerAdapter { + + @Override + public JsonElement serialize(Schema src, Type typeOfSrc, + JsonSerializationContext context) { + JsonObject jsonObj = new JsonObject(); + jsonObj.addProperty("version", src instanceof SchemaLegacy ? "1" : "2"); + JsonElement jsonElem = context.serialize(src); + jsonObj.add("body", jsonElem); + return jsonObj; + } + + @Override + public Schema deserialize(JsonElement json, Type typeOfT, + JsonDeserializationContext context) throws JsonParseException { + JsonObject jsonObject = json.getAsJsonObject(); + int version = CommonGsonHelper.getOrDie(jsonObject, "version").getAsJsonPrimitive().getAsInt(); + + if (version == 1) { + return context.deserialize(CommonGsonHelper.getOrDie(jsonObject, "body"), SchemaLegacy.class); + } else { + throw new TajoInternalError("Schema version 2 is not supported yet"); + } + } +} diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/partition/PartitionMethodDesc.java b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/partition/PartitionMethodDesc.java index 721a7a060e..d3f10ad0a0 100644 --- a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/partition/PartitionMethodDesc.java +++ b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/partition/PartitionMethodDesc.java @@ -23,6 +23,7 @@ import com.google.gson.GsonBuilder; import com.google.gson.annotations.Expose; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.catalog.json.CatalogGsonHelper; import org.apache.tajo.catalog.proto.CatalogProtos; import org.apache.tajo.common.ProtoObject; @@ -59,7 +60,7 @@ public PartitionMethodDesc(CatalogProtos.PartitionMethodProto proto) { this(proto.getTableIdentifier().getDatabaseName(), proto.getTableIdentifier().getTableName(), proto.getPartitionType(), proto.getExpression(), - new Schema(proto.getExpressionSchema())); + SchemaFactory.newV1(proto.getExpressionSchema())); } public String getTableName() { diff --git a/tajo-catalog/tajo-catalog-common/src/test/java/org/apache/tajo/catalog/TestIndexDesc.java b/tajo-catalog/tajo-catalog-common/src/test/java/org/apache/tajo/catalog/TestIndexDesc.java index 7561dfd973..0b7516e1df 100644 --- a/tajo-catalog/tajo-catalog-common/src/test/java/org/apache/tajo/catalog/TestIndexDesc.java +++ b/tajo-catalog/tajo-catalog-common/src/test/java/org/apache/tajo/catalog/TestIndexDesc.java @@ -40,7 +40,7 @@ public class TestIndexDesc { @BeforeClass public static void setUp() throws Exception { - relationSchema = new Schema(new Column[]{new Column("id", Type.INT4), + relationSchema = SchemaFactory.newV1(new Column[]{new Column("id", Type.INT4), new Column("score", Type.FLOAT8), new Column("name", Type.TEXT)}); SortSpec[] colSpecs1 = new SortSpec[1]; colSpecs1[0] = new SortSpec(new Column("id", Type.INT4), true, true); diff --git a/tajo-catalog/tajo-catalog-common/src/test/java/org/apache/tajo/catalog/TestSchema.java b/tajo-catalog/tajo-catalog-common/src/test/java/org/apache/tajo/catalog/TestSchema.java index c4092f085e..6235945015 100644 --- a/tajo-catalog/tajo-catalog-common/src/test/java/org/apache/tajo/catalog/TestSchema.java +++ b/tajo-catalog/tajo-catalog-common/src/test/java/org/apache/tajo/catalog/TestSchema.java @@ -40,10 +40,10 @@ public class TestSchema { static { // simple nested schema - nestedSchema1 = new Schema(); + nestedSchema1 = SchemaFactory.newV1(); nestedSchema1.addColumn("s1", Type.INT8); - Schema nestedRecordSchema = new Schema(); + Schema nestedRecordSchema = SchemaFactory.newV1(); nestedRecordSchema.addColumn("s2", Type.FLOAT4); nestedRecordSchema.addColumn("s3", Type.TEXT); @@ -63,10 +63,10 @@ public class TestSchema { // |- s8 // |- s6 // |- s7 - nestedSchema2 = new Schema(); + nestedSchema2 = SchemaFactory.newV1(); nestedSchema2.addColumn("s1", Type.INT8); - Schema nestedRecordSchema1 = new Schema(); + Schema nestedRecordSchema1 = SchemaFactory.newV1(); nestedRecordSchema1.addColumn("s2", Type.FLOAT4); nestedRecordSchema1.addColumn("s3", Type.TEXT); @@ -75,7 +75,7 @@ public class TestSchema { nestedSchema2.addColumn("s5", Type.FLOAT8); - Schema nestedRecordSchema2 = new Schema(); + Schema nestedRecordSchema2 = SchemaFactory.newV1(); nestedRecordSchema2.addColumn("s6", Type.FLOAT4); nestedRecordSchema2.addColumn("s7", Type.TEXT); @@ -95,18 +95,18 @@ public class TestSchema { // |- s8 // |- s9 - nestedSchema3 = new Schema(); + nestedSchema3 = SchemaFactory.newV1(); nestedSchema3.addColumn("s1", Type.INT8); nestedSchema3.addColumn("s2", Type.INT8); - Schema s5 = new Schema(); + Schema s5 = SchemaFactory.newV1(); s5.addColumn("s6", Type.INT8); - Schema s7 = new Schema(); + Schema s7 = SchemaFactory.newV1(); s7.addColumn("s5", new TypeDesc(s5)); - Schema s3 = new Schema(); + Schema s3 = SchemaFactory.newV1(); s3.addColumn("s4", Type.INT8); s3.addColumn("s7", new TypeDesc(s7)); s3.addColumn("s8", Type.INT8); @@ -117,7 +117,7 @@ public class TestSchema { @Before public void setUp() throws Exception { - schema = new Schema(); + schema = SchemaFactory.newV1(); col1 = new Column("name", Type.TEXT); schema.addColumn(col1); col2 = new Column("age", Type.INT4); @@ -128,14 +128,14 @@ public void setUp() throws Exception { @Test public final void testSchemaSchema() { - Schema schema2 = new Schema(schema); + Schema schema2 = SchemaFactory.newV1(schema); assertEquals(schema, schema2); } @Test public final void testSchemaSchemaProto() { - Schema schema2 = new Schema(schema.getProto()); + Schema schema2 = SchemaFactory.newV1(schema.getProto()); assertEquals(schema, schema2); } @@ -149,7 +149,7 @@ public final void testGetColumnString() { @Test public final void testAddField() { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); assertFalse(schema.containsByQualifiedName("studentId")); schema.addColumn("studentId", Type.INT4); assertTrue(schema.containsByQualifiedName("studentId")); @@ -157,7 +157,7 @@ public final void testAddField() { @Test public final void testEqualsObject() { - Schema schema2 = new Schema(); + Schema schema2 = SchemaFactory.newV1(); schema2.addColumn("name", Type.TEXT); schema2.addColumn("age", Type.INT4); schema2.addColumn("addr", Type.TEXT); @@ -176,11 +176,11 @@ public final void testGetProto() { @Test public final void testClone() throws CloneNotSupportedException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("abc", Type.FLOAT8); schema.addColumn("bbc", Type.FLOAT8); - Schema schema2 = new Schema(schema.getProto()); + Schema schema2 = SchemaFactory.newV1(schema.getProto()); assertEquals(schema.getProto(), schema2.getProto()); assertEquals(schema.getColumn(0), schema2.getColumn(0)); assertEquals(schema.size(), schema2.size()); @@ -193,7 +193,7 @@ public final void testClone() throws CloneNotSupportedException { @Test(expected = TajoRuntimeException.class) public final void testAddExistColumn() { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("abc", Type.FLOAT8); schema.addColumn("bbc", Type.FLOAT8); schema.addColumn("abc", Type.INT4); @@ -201,31 +201,31 @@ public final void testAddExistColumn() { @Test public final void testJson() { - Schema schema2 = new Schema(schema.getProto()); + Schema schema2 = SchemaFactory.newV1(schema.getProto()); String json = schema2.toJson(); - Schema fromJson = CatalogGsonHelper.fromJson(json, Schema.class); + Schema fromJson = CatalogGsonHelper.fromJson(json, SchemaLegacy.class); assertEquals(schema2, fromJson); assertEquals(schema2.getProto(), fromJson.getProto()); } @Test public final void testProto() { - Schema schema2 = new Schema(schema.getProto()); + Schema schema2 = SchemaFactory.newV1(schema.getProto()); SchemaProto proto = schema2.getProto(); - Schema fromJson = new Schema(proto); - assertEquals(schema2, fromJson); + Schema fromProto = SchemaFactory.newV1(proto); + assertEquals(schema2, fromProto); } @Test public final void testSetQualifier() { - Schema schema2 = new Schema(schema.getProto()); + Schema schema2 = SchemaFactory.newV1(schema.getProto()); schema2.setQualifier("test1"); Column column = schema2.getColumn(1); assertEquals(1, schema2.getColumnIdByName("age")); assertEquals(column, schema2.getColumn("age")); assertEquals(column, schema2.getColumn("test1.age")); - Schema schema3 = new Schema(); + Schema schema3 = SchemaFactory.newV1(); schema3.addColumn("tb1.col1", Type.INT4); schema3.addColumn("col2", Type.INT4); assertEquals("tb1", schema3.getColumn(0).getQualifier()); @@ -267,17 +267,17 @@ public void testNestedRecord3() { @Test public void testNestedRecord4() { - Schema root = new Schema(); + Schema root = SchemaFactory.newV1(); - Schema nf2DotNf1 = new Schema(); + Schema nf2DotNf1 = SchemaFactory.newV1(); nf2DotNf1.addColumn("f1", Type.INT8); nf2DotNf1.addColumn("f2", Type.INT8); - Schema nf2DotNf2 = new Schema(); + Schema nf2DotNf2 = SchemaFactory.newV1(); nf2DotNf2.addColumn("f1", Type.INT8); nf2DotNf2.addColumn("f2", Type.INT8); - Schema nf2 = new Schema(); + Schema nf2 = SchemaFactory.newV1(); nf2.addColumn("f1", Type.INT8); nf2.addColumn("nf1", new TypeDesc(nf2DotNf1)); nf2.addColumn("nf2", new TypeDesc(nf2DotNf2)); @@ -295,7 +295,7 @@ public static void verifySchema(Schema s1) { assertEquals(s1, s1); SchemaProto proto = s1.getProto(); - assertEquals("Proto (de)serialized schema is different from the original: ", s1, new Schema(proto)); + assertEquals("Proto (de)serialized schema is different from the original: ", s1, SchemaFactory.newV1(proto)); Schema cloned = null; try { diff --git a/tajo-catalog/tajo-catalog-common/src/test/java/org/apache/tajo/catalog/TestTableDesc.java b/tajo-catalog/tajo-catalog-common/src/test/java/org/apache/tajo/catalog/TestTableDesc.java index b3d343d85a..f3347382e7 100644 --- a/tajo-catalog/tajo-catalog-common/src/test/java/org/apache/tajo/catalog/TestTableDesc.java +++ b/tajo-catalog/tajo-catalog-common/src/test/java/org/apache/tajo/catalog/TestTableDesc.java @@ -41,7 +41,7 @@ public class TestTableDesc { @Before public void setup() throws IOException { - schema = new Schema(); + schema = SchemaFactory.newV1(); schema.addColumn("name", Type.BLOB); schema.addColumn("addr", Type.TEXT); info = CatalogUtil.newTableMeta("TEXT"); @@ -67,7 +67,7 @@ public void setup() throws IOException { @Test public void test() throws CloneNotSupportedException, IOException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("name", Type.BLOB); schema.addColumn("addr", Type.TEXT); TableMeta info = CatalogUtil.newTableMeta("TEXT"); diff --git a/tajo-catalog/tajo-catalog-common/src/test/java/org/apache/tajo/catalog/TestTableMeta.java b/tajo-catalog/tajo-catalog-common/src/test/java/org/apache/tajo/catalog/TestTableMeta.java index d85fc4870e..2e4c6a9b12 100644 --- a/tajo-catalog/tajo-catalog-common/src/test/java/org/apache/tajo/catalog/TestTableMeta.java +++ b/tajo-catalog/tajo-catalog-common/src/test/java/org/apache/tajo/catalog/TestTableMeta.java @@ -38,7 +38,7 @@ public void setUp() { @Test public void testTableMetaTableProto() { - Schema schema1 = new Schema(); + Schema schema1 = SchemaFactory.newV1(); schema1.addColumn("name", Type.BLOB); schema1.addColumn("addr", Type.TEXT); TableMeta meta1 = CatalogUtil.newTableMeta("TEXT"); @@ -49,7 +49,7 @@ public void testTableMetaTableProto() { @Test public final void testClone() throws CloneNotSupportedException { - Schema schema1 = new Schema(); + Schema schema1 = SchemaFactory.newV1(); schema1.addColumn("name", Type.BLOB); schema1.addColumn("addr", Type.TEXT); TableMeta meta1 = CatalogUtil.newTableMeta("TEXT"); @@ -61,7 +61,7 @@ public final void testClone() throws CloneNotSupportedException { @Test public void testSchema() throws CloneNotSupportedException { - Schema schema1 = new Schema(); + Schema schema1 = SchemaFactory.newV1(); schema1.addColumn("name", Type.BLOB); schema1.addColumn("addr", Type.TEXT); TableMeta meta1 = CatalogUtil.newTableMeta("TEXT"); @@ -78,7 +78,7 @@ public void testGetStorageType() { @Test public void testEqualsObject() { - Schema schema2 = new Schema(); + Schema schema2 = SchemaFactory.newV1(); schema2.addColumn("name", Type.BLOB); schema2.addColumn("addr", Type.TEXT); TableMeta meta2 = CatalogUtil.newTableMeta("TEXT"); diff --git a/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/AbstractDBStore.java b/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/AbstractDBStore.java index 99ffcb5562..1c93d08bf7 100644 --- a/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/AbstractDBStore.java +++ b/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/AbstractDBStore.java @@ -2717,7 +2717,7 @@ public IndexDescProto getIndexByColumns(String databaseName, String tableName, S // Since the column names in the unified name are always sorted // in order of occurrence position in the relation schema, // they can be uniquely identified. - String unifiedName = CatalogUtil.getUnifiedSimpleColumnName(new Schema(tableDescProto.getSchema()), columnNames); + String unifiedName = CatalogUtil.getUnifiedSimpleColumnName(SchemaFactory.newV1(tableDescProto.getSchema()), columnNames); pstmt.setInt(1, databaseId); pstmt.setInt(2, tableId); pstmt.setString(3, unifiedName); @@ -2784,12 +2784,12 @@ public boolean existIndexByColumns(String databaseName, String tableName, String try (PreparedStatement pstmt = getConnection().prepareStatement(sql)) { int databaseId = getDatabaseId(databaseName); int tableId = getTableId(databaseId, databaseName, tableName); - Schema relationSchema = new Schema(getTable(databaseName, tableName).getSchema()); + Schema relationSchema = SchemaFactory.newV1(getTable(databaseName, tableName).getSchema()); // Since the column names in the unified name are always sorted // in order of occurrence position in the relation schema, // they can be uniquely identified. - String unifiedName = CatalogUtil.getUnifiedSimpleColumnName(new Schema(relationSchema), columnNames); + String unifiedName = CatalogUtil.getUnifiedSimpleColumnName(SchemaFactory.newV1(relationSchema), columnNames); pstmt.setInt(1, databaseId); pstmt.setInt(2, tableId); pstmt.setString(3, unifiedName); diff --git a/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/CatalogTestingUtil.java b/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/CatalogTestingUtil.java index 3a1a0cd048..51461d1111 100644 --- a/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/CatalogTestingUtil.java +++ b/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/CatalogTestingUtil.java @@ -197,7 +197,7 @@ public static void cleanupBaseData(CatalogService catalog) throws Exception { } public static TableDesc buildTableDesc(String databaseName, String tableName, String testDir) throws IOException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn(CatalogUtil.buildFQName(tableName, "Column"), Type.BLOB); schema.addColumn(CatalogUtil.buildFQName(tableName, "column"), Type.INT4); schema.addColumn(CatalogUtil.buildFQName(tableName, "cOlumn"), Type.INT8); @@ -213,7 +213,7 @@ public static TableDesc buildTableDesc(String databaseName, String tableName, St } public static TableDesc buildPartitionTableDesc(String databaseName, String tableName, String testDir) throws Exception { - Schema partSchema = new Schema(); + Schema partSchema = SchemaFactory.newV1(); partSchema.addColumn(CatalogUtil.buildFQName(tableName, "DaTe"), Type.TEXT); partSchema.addColumn(CatalogUtil.buildFQName(tableName, "dAtE"), Type.TEXT); PartitionMethodDesc partitionMethodDesc = diff --git a/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalog.java b/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalog.java index fe4b4a7e52..c64fe436cf 100644 --- a/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalog.java +++ b/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalog.java @@ -181,7 +181,7 @@ public void testCreateAndDropManyDatabases() throws Exception { } private TableDesc createMockupTable(String databaseName, String tableName) throws IOException { - schema1 = new Schema(); + schema1 = SchemaFactory.newV1(); schema1.addColumn(FieldName1, Type.BLOB); schema1.addColumn(FieldName2, Type.INT4); schema1.addColumn(FieldName3, Type.INT8); @@ -299,7 +299,7 @@ public void testDropDatabaseWithAllTables() throws Exception { @Test public void testGetTable() throws Exception { - schema1 = new Schema(); + schema1 = SchemaFactory.newV1(); schema1.addColumn(FieldName1, Type.BLOB); schema1.addColumn(FieldName2, Type.INT4); schema1.addColumn(FieldName3, Type.INT8); @@ -361,18 +361,18 @@ public void testCreateAndGetNestedTable1() throws Exception { // |- s8 // |- s9 - Schema nestedSchema = new Schema(); + Schema nestedSchema = SchemaFactory.newV1(); nestedSchema.addColumn("s1", Type.INT8); nestedSchema.addColumn("s2", Type.INT8); - Schema s5 = new Schema(); + Schema s5 = SchemaFactory.newV1(); s5.addColumn("s6", Type.INT8); - Schema s7 = new Schema(); + Schema s7 = SchemaFactory.newV1(); s7.addColumn("s5", new TypeDesc(s5)); - Schema s3 = new Schema(); + Schema s3 = SchemaFactory.newV1(); s3.addColumn("s4", Type.INT8); s3.addColumn("s7", new TypeDesc(s7)); s3.addColumn("s8", Type.INT8); @@ -398,18 +398,18 @@ public void testCreateAndGetNestedTable2() throws Exception { // |- s3 // |- s4 - Schema nestedSchema = new Schema(); + Schema nestedSchema = SchemaFactory.newV1(); nestedSchema.addColumn("s1", Type.INT8); nestedSchema.addColumn("s2", Type.INT8); - Schema s5 = new Schema(); + Schema s5 = SchemaFactory.newV1(); s5.addColumn("s6", Type.INT8); - Schema s7 = new Schema(); + Schema s7 = SchemaFactory.newV1(); s7.addColumn("s5", new TypeDesc(s5)); - Schema s3 = new Schema(); + Schema s3 = SchemaFactory.newV1(); s3.addColumn("s4", Type.INT8); s3.addColumn("s7", new TypeDesc(s7)); s3.addColumn("s8", Type.INT8); @@ -426,7 +426,7 @@ public void testCreateAndGetNestedTable2() throws Exception { static Schema relationSchema; public static TableDesc prepareTable() throws IOException { - relationSchema = new Schema(); + relationSchema = SchemaFactory.newV1(); relationSchema.addColumn(DEFAULT_DATABASE_NAME + ".indexed.id", Type.INT4) .addColumn(DEFAULT_DATABASE_NAME + ".indexed.name", Type.TEXT) .addColumn(DEFAULT_DATABASE_NAME + ".indexed.age", Type.INT4) @@ -625,7 +625,7 @@ public final void testDropFunction() throws Exception { @Test public final void testAddAndDeleteTablePartitionByHash1() throws Exception { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4) .addColumn("name", Type.TEXT) .addColumn("age", Type.INT4) @@ -637,7 +637,7 @@ public final void testAddAndDeleteTablePartitionByHash1() throws Exception { TableMeta meta = CatalogUtil.newTableMeta("TEXT", opts); - Schema partSchema = new Schema(); + Schema partSchema = SchemaFactory.newV1(); partSchema.addColumn("id", Type.INT4); PartitionMethodDesc partitionDesc = @@ -665,7 +665,7 @@ public final void testAddAndDeleteTablePartitionByHash1() throws Exception { @Test public final void testAddAndDeleteTablePartitionByHash2() throws Exception { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4) .addColumn("name", Type.TEXT) .addColumn("age", Type.INT4) @@ -676,7 +676,7 @@ public final void testAddAndDeleteTablePartitionByHash2() throws Exception { opts.set("file.delimiter", ","); TableMeta meta = CatalogUtil.newTableMeta("TEXT", opts); - Schema partSchema = new Schema(); + Schema partSchema = SchemaFactory.newV1(); partSchema.addColumn("id", Type.INT4); PartitionMethodDesc partitionDesc = new PartitionMethodDesc(DEFAULT_DATABASE_NAME, tableName, @@ -703,7 +703,7 @@ public final void testAddAndDeleteTablePartitionByHash2() throws Exception { @Test public final void testAddAndDeleteTablePartitionByList() throws Exception { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4) .addColumn("name", Type.TEXT) .addColumn("age", Type.INT4) @@ -714,7 +714,7 @@ public final void testAddAndDeleteTablePartitionByList() throws Exception { opts.set("file.delimiter", ","); TableMeta meta = CatalogUtil.newTableMeta("TEXT", opts); - Schema partSchema = new Schema(); + Schema partSchema = SchemaFactory.newV1(); partSchema.addColumn("id", Type.INT4); PartitionMethodDesc partitionDesc = new PartitionMethodDesc(DEFAULT_DATABASE_NAME, tableName, @@ -740,7 +740,7 @@ public final void testAddAndDeleteTablePartitionByList() throws Exception { @Test public final void testAddAndDeleteTablePartitionByRange() throws Exception { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4) .addColumn("name", Type.TEXT) .addColumn("age", Type.INT4) @@ -751,7 +751,7 @@ public final void testAddAndDeleteTablePartitionByRange() throws Exception { opts.set("file.delimiter", ","); TableMeta meta = CatalogUtil.newTableMeta("TEXT", opts); - Schema partSchema = new Schema(); + Schema partSchema = SchemaFactory.newV1(); partSchema.addColumn("id", Type.INT4); PartitionMethodDesc partitionDesc = new PartitionMethodDesc(DEFAULT_DATABASE_NAME, tableName, CatalogProtos.PartitionType.RANGE, @@ -777,7 +777,7 @@ public final void testAddAndDeleteTablePartitionByRange() throws Exception { // TODO: This should be added at TAJO-1891 public final void testAddAndDeleteTablePartitionByColumn() throws Exception { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4) .addColumn("name", Type.TEXT) .addColumn("age", Type.INT4) @@ -789,7 +789,7 @@ public final void testAddAndDeleteTablePartitionByColumn() throws Exception { opts.set("file.delimiter", ","); TableMeta meta = CatalogUtil.newTableMeta("TEXT", opts); - Schema partSchema = new Schema(); + Schema partSchema = SchemaFactory.newV1(); partSchema.addColumn("id", Type.INT4); partSchema.addColumn("name", Type.TEXT); diff --git a/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalogAgainstCaseSensitivity.java b/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalogAgainstCaseSensitivity.java index 314dd8cc0b..f3933ff42e 100644 --- a/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalogAgainstCaseSensitivity.java +++ b/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalogAgainstCaseSensitivity.java @@ -334,20 +334,20 @@ public void testTableColumnWithNestedField() throws Exception { String databaseName = "TestDatabase1"; String tableName = "nested_Table"; - Schema schema = new Schema( + Schema schema = SchemaFactory.newV1( new Column[]{ new Column("CoL1", CatalogUtil.newSimpleDataType(Type.INT4)), new Column("CoL2", CatalogUtil.newSimpleDataType(Type.FLOAT4)), new Column("CoL3", CatalogUtil.newSimpleDataType(Type.TEXT)), }); - Schema tableSchema = new Schema(); + Schema tableSchema = SchemaFactory.newV1(); tableSchema.addColumn("RecoRd1", new TypeDesc(schema)); tableSchema.addColumn("CoL1", CatalogUtil.newSimpleDataType(Type.INT4)); tableSchema.addColumn("CoL3", CatalogUtil.newSimpleDataType(Type.TEXT)); tableSchema.addColumn("RecoRd2", new TypeDesc(schema)); tableSchema.addColumn("RecoRd3", new TypeDesc( - new Schema(new Column[]{ + SchemaFactory.newV1(new Column[]{ new Column("CoL1", CatalogUtil.newSimpleDataType(Type.INT4)), new Column("RecoRd1", new TypeDesc(schema)), }) diff --git a/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalogExceptions.java b/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalogExceptions.java index 5d4065673b..c151e3bad8 100644 --- a/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalogExceptions.java +++ b/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalogExceptions.java @@ -115,7 +115,7 @@ public void testDropDefaultDatabase() throws Exception { public void testCreateTableWithWrongUri() throws Exception { // TODO: currently, wrong uri does not occur any exception. String tableName = "wrongUri"; - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn(CatalogUtil.buildFQName(tableName, "Column"), Type.BLOB); schema.addColumn(CatalogUtil.buildFQName(tableName, "column"), Type.INT4); schema.addColumn(CatalogUtil.buildFQName(tableName, "cOlumn"), Type.INT8); diff --git a/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestLinkedMetadataManager.java b/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestLinkedMetadataManager.java index a065fa8671..d381ebd65e 100644 --- a/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestLinkedMetadataManager.java +++ b/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestLinkedMetadataManager.java @@ -42,25 +42,25 @@ public class TestLinkedMetadataManager { static TableDesc TABLE1 = new TableDesc( "table1", - new Schema(new Column[]{new Column("c1", Type.INT8)}), + SchemaFactory.newV1(new Column[]{new Column("c1", Type.INT8)}), "TEXT", new KeyValueSet(), URI.create("http://space1/x/table1") ); static TableDesc TABLE2 = new TableDesc( "table2", - new Schema(new Column[]{new Column("c1", Type.INT8)}), + SchemaFactory.newV1(new Column[]{new Column("c1", Type.INT8)}), "TEXT", new KeyValueSet(), URI.create("http://space1/x/table2") ); static TableDesc TABLE3 = new TableDesc( "table3", - new Schema(new Column[]{new Column("c1", Type.INT8)}), + SchemaFactory.newV1(new Column[]{new Column("c1", Type.INT8)}), "TEXT", new KeyValueSet(), URI.create("http://space1/x/table3") ); static TableDesc TABLE4 = new TableDesc( "table4", - new Schema(new Column[]{new Column("c1", Type.INT8)}), + SchemaFactory.newV1(new Column[]{new Column("c1", Type.INT8)}), "TEXT", new KeyValueSet(), URI.create("http://space1/x/table4") ); @@ -211,7 +211,7 @@ public void testGetTableNames() throws Exception { public void testCreateTable() throws Exception { TableDesc tb = new TableDesc( "space1.errortable", - new Schema(), + SchemaFactory.newV1(), new TableMeta("x", new KeyValueSet()), URI.create("file:///")); diff --git a/tajo-client/src/main/java/org/apache/tajo/client/QueryClientImpl.java b/tajo-client/src/main/java/org/apache/tajo/client/QueryClientImpl.java index 18640edb17..3618f1f477 100644 --- a/tajo-client/src/main/java/org/apache/tajo/client/QueryClientImpl.java +++ b/tajo-client/src/main/java/org/apache/tajo/client/QueryClientImpl.java @@ -30,6 +30,7 @@ import org.apache.tajo.auth.UserRoleInfo; import org.apache.tajo.catalog.CatalogUtil; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.catalog.TableDesc; import org.apache.tajo.client.v2.exception.ClientUnableToConnectException; import org.apache.tajo.TajoProtos.CodecType; @@ -374,7 +375,7 @@ protected TajoMemoryResultSet fetchNextQueryResult(final QueryId queryId, final if(response.hasResultSet()) { SerializedResultSet resultSet = response.getResultSet(); return new TajoMemoryResultSet(queryId, - new Schema(resultSet.getSchema()), + SchemaFactory.newV1(resultSet.getSchema()), resultSet, getClientSideSessionVars()); } else { return TajoClientUtil.createNullResultSet(queryId); diff --git a/tajo-client/src/main/java/org/apache/tajo/client/TajoClientUtil.java b/tajo-client/src/main/java/org/apache/tajo/client/TajoClientUtil.java index baafbe84bf..733bcec93a 100644 --- a/tajo-client/src/main/java/org/apache/tajo/client/TajoClientUtil.java +++ b/tajo-client/src/main/java/org/apache/tajo/client/TajoClientUtil.java @@ -24,6 +24,7 @@ import org.apache.tajo.TajoProtos; import org.apache.tajo.catalog.CatalogUtil; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.catalog.TableDesc; import org.apache.tajo.exception.QueryNotFoundException; import org.apache.tajo.ipc.ClientProtos; @@ -99,16 +100,16 @@ public static ResultSet createResultSet(QueryClient client, ClientProtos.SubmitQ // select substr('abc', 1, 2) ClientProtos.SerializedResultSet serializedResultSet = response.getResultSet(); return new TajoMemoryResultSet(new QueryId(response.getQueryId()), - new Schema(serializedResultSet.getSchema()), + SchemaFactory.newV1(serializedResultSet.getSchema()), serializedResultSet, client.getClientSideSessionVars()); } } public static final ResultSet NULL_RESULT_SET = - new TajoMemoryResultSet(QueryIdFactory.NULL_QUERY_ID, new Schema(), null, null); + new TajoMemoryResultSet(QueryIdFactory.NULL_QUERY_ID, SchemaFactory.newV1(), null, null); public static TajoMemoryResultSet createNullResultSet(QueryId queryId) { - return new TajoMemoryResultSet(queryId, new Schema(), null, null); + return new TajoMemoryResultSet(queryId, SchemaFactory.newV1(), null, null); } } diff --git a/tajo-client/src/main/java/org/apache/tajo/jdbc/TajoMetaDataResultSet.java b/tajo-client/src/main/java/org/apache/tajo/jdbc/TajoMetaDataResultSet.java index 9fba40a47c..6e7092b9ac 100644 --- a/tajo-client/src/main/java/org/apache/tajo/jdbc/TajoMetaDataResultSet.java +++ b/tajo-client/src/main/java/org/apache/tajo/jdbc/TajoMetaDataResultSet.java @@ -19,6 +19,7 @@ package org.apache.tajo.jdbc; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.common.TajoDataTypes.Type; import org.apache.tajo.storage.Tuple; @@ -35,7 +36,7 @@ public TajoMetaDataResultSet(Schema schema, List values) { } public TajoMetaDataResultSet(List columns, List types, List values) { - super(null, new Schema(), null); + super(null, SchemaFactory.newV1(), null); int index = 0; if(columns != null) { for(String columnName: columns) { diff --git a/tajo-cluster-tests/src/test/java/org/apache/tajo/BackendTestingUtil.java b/tajo-cluster-tests/src/test/java/org/apache/tajo/BackendTestingUtil.java index 3bfd34d348..062db47ac7 100644 --- a/tajo-cluster-tests/src/test/java/org/apache/tajo/BackendTestingUtil.java +++ b/tajo-cluster-tests/src/test/java/org/apache/tajo/BackendTestingUtil.java @@ -22,6 +22,7 @@ import org.apache.hadoop.fs.Path; import org.apache.tajo.catalog.CatalogUtil; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.catalog.TableMeta; import org.apache.tajo.common.TajoDataTypes.Type; import org.apache.tajo.conf.TajoConf; @@ -35,7 +36,7 @@ public class BackendTestingUtil { public final static TableMeta mockupMeta; static { - mockupSchema = new Schema(); + mockupSchema = SchemaFactory.newV1(); mockupSchema.addColumn("deptname", Type.TEXT); mockupSchema.addColumn("score", Type.INT4); mockupMeta = CatalogUtil.newTableMeta("TEXT"); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/cli/tools/TestDDLBuilder.java b/tajo-core-tests/src/test/java/org/apache/tajo/cli/tools/TestDDLBuilder.java index ec92884754..51a017ee0d 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/cli/tools/TestDDLBuilder.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/cli/tools/TestDDLBuilder.java @@ -37,7 +37,7 @@ public class TestDDLBuilder { private static final PartitionMethodDesc partitionMethod1; static { - schema1 = new Schema(); + schema1 = SchemaFactory.newV1(); schema1.addColumn("name", TajoDataTypes.Type.BLOB); schema1.addColumn("addr", TajoDataTypes.Type.TEXT); @@ -45,7 +45,7 @@ public class TestDDLBuilder { meta1.putProperty(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); meta1.putProperty(StorageConstants.COMPRESSION_CODEC, GzipCodec.class.getName()); - Schema expressionSchema = new Schema(); + Schema expressionSchema = SchemaFactory.newV1(); expressionSchema.addColumn("key", TajoDataTypes.Type.INT4); expressionSchema.addColumn("key2", TajoDataTypes.Type.TEXT); partitionMethod1 = new PartitionMethodDesc( @@ -67,14 +67,14 @@ public void testBuildDDLForExternalTable() throws Exception { @Test public void testBuildDDLQuotedTableName() throws Exception { - Schema schema2 = new Schema(); + Schema schema2 = SchemaFactory.newV1(); schema2.addColumn("name", TajoDataTypes.Type.BLOB); schema2.addColumn("addr", TajoDataTypes.Type.TEXT); schema2.addColumn("FirstName", TajoDataTypes.Type.TEXT); schema2.addColumn("LastName", TajoDataTypes.Type.TEXT); schema2.addColumn("with", TajoDataTypes.Type.TEXT); - Schema expressionSchema2 = new Schema(); + Schema expressionSchema2 = SchemaFactory.newV1(); expressionSchema2.addColumn("BirthYear", TajoDataTypes.Type.INT4); PartitionMethodDesc partitionMethod2 = new PartitionMethodDesc( diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/client/TestCatalogAdminClientExceptions.java b/tajo-core-tests/src/test/java/org/apache/tajo/client/TestCatalogAdminClientExceptions.java index 78fb45a0e2..6abc3fb136 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/client/TestCatalogAdminClientExceptions.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/client/TestCatalogAdminClientExceptions.java @@ -23,6 +23,7 @@ import org.apache.tajo.TajoTestingCluster; import org.apache.tajo.TpchTestBase; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.catalog.TableMeta; import org.apache.tajo.conf.TajoConf; import org.apache.tajo.exception.*; @@ -67,20 +68,20 @@ public final void testDropDatabase() throws TajoException { @Test(expected = UnavailableTableLocationException.class) public final void testCreateExternalTableUnavailableLocation() throws TajoException { - client.createExternalTable("table128237", new Schema(), URI.create("/tajo/test1bcd"), + client.createExternalTable("table128237", SchemaFactory.newV1(), URI.create("/tajo/test1bcd"), new TableMeta("TEXT", new KeyValueSet())); } @Test(expected = DuplicateTableException.class) public final void testCreateExternalTableDuplicated() throws TajoException { - client.createExternalTable("default.lineitem", new Schema(), URI.create("/"), + client.createExternalTable("default.lineitem", SchemaFactory.newV1(), URI.create("/"), new TableMeta("TEXT", new KeyValueSet())); } @Test(expected = InsufficientPrivilegeException.class) public final void testCreateExternalTableInsufficientPrivilege() throws TajoException { Path p = TajoConf.getWarehouseDir(conf); - client.createExternalTable("information_schema.table1237891", new Schema(), p.toUri(), + client.createExternalTable("information_schema.table1237891", SchemaFactory.newV1(), p.toUri(), new TableMeta("TEXT", new KeyValueSet())); } diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/codegen/TestEvalCodeGenerator.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/codegen/TestEvalCodeGenerator.java index 68104e767a..cdb86a130e 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/codegen/TestEvalCodeGenerator.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/codegen/TestEvalCodeGenerator.java @@ -21,6 +21,7 @@ import org.apache.tajo.catalog.CatalogUtil; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.common.TajoDataTypes; import org.apache.tajo.datum.NullDatum; import org.apache.tajo.engine.eval.ExprTestBase; @@ -30,7 +31,7 @@ public class TestEvalCodeGenerator extends ExprTestBase { private static Schema schema; static { - schema = new Schema(); + schema = SchemaFactory.newV1(); schema.addColumn("col0", TajoDataTypes.Type.INT1); schema.addColumn("col1", TajoDataTypes.Type.INT2); schema.addColumn("col2", TajoDataTypes.Type.INT4); @@ -65,7 +66,7 @@ public void testGetField() throws TajoException { @Test public void testNullHandling() throws TajoException { - schema = new Schema(); + schema = SchemaFactory.newV1(); schema.addColumn("col0", TajoDataTypes.Type.INT1); schema.addColumn("col1", TajoDataTypes.Type.INT2); schema.addColumn("col2", TajoDataTypes.Type.INT4); @@ -105,7 +106,7 @@ public void testNullHandling() throws TajoException { @Test public void testComparison() throws TajoException { - Schema inetSchema = new Schema(); + Schema inetSchema = SchemaFactory.newV1(); inetSchema.addColumn("addr1", TajoDataTypes.Type.INET4); inetSchema.addColumn("addr2", TajoDataTypes.Type.INET4); @@ -161,7 +162,7 @@ public void testComparison() throws TajoException { @Test public void testBetweenAsymmetric() throws TajoException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TajoDataTypes.Type.INT4); schema.addColumn("col2", TajoDataTypes.Type.INT4); testEval(schema, "table1", "0,", "select col1 between 1 and 3 from table1", new String[]{"f"}); @@ -195,7 +196,7 @@ public void testBetweenAsymmetric() throws TajoException { @Test public void testBetweenSymmetric() throws TajoException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TajoDataTypes.Type.INT4); schema.addColumn("col2", TajoDataTypes.Type.INT4); testEval(schema, "table1", "0,", "select col1 between symmetric 1 and 3 from table1", new String[]{"f"}); @@ -230,7 +231,7 @@ public void testBetweenSymmetric() throws TajoException { @Test public void testUnary() throws TajoException { - schema = new Schema(); + schema = SchemaFactory.newV1(); schema.addColumn("col0", TajoDataTypes.Type.INT1); schema.addColumn("col1", TajoDataTypes.Type.INT2); schema.addColumn("col2", TajoDataTypes.Type.INT4); @@ -302,7 +303,7 @@ public void testStringConcat() throws TajoException { testSimpleEval("select length('123456') as col1 ", new String[]{"6"}); testEval(schema, "table1", "0,1,2,3,4.5,6.5", "select 'abc' || 'bbc'", new String [] {"abcbbc"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TajoDataTypes.Type.TEXT); schema.addColumn("col2", TajoDataTypes.Type.TEXT); testEval(schema, "table1", " trim, abc", "select ltrim(col1) || ltrim(col2) from table1", diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestEvalTree.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestEvalTree.java index 9116635799..0b3362688d 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestEvalTree.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestEvalTree.java @@ -21,6 +21,7 @@ import org.apache.tajo.catalog.CatalogUtil; import org.apache.tajo.catalog.Column; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.common.TajoDataTypes; import org.apache.tajo.common.TajoDataTypes.DataType; import org.apache.tajo.datum.Datum; @@ -42,7 +43,7 @@ public void testTupleEval() throws CloneNotSupportedException { FieldEval e2 = new FieldEval("table1.score", CatalogUtil.newSimpleDataType(INT4)); // it indicates assertCloneEqual(e2); - Schema schema1 = new Schema(); + Schema schema1 = SchemaFactory.newV1(); schema1.addColumn("table1.id", INT4); schema1.addColumn("table1.score", INT4); @@ -395,7 +396,7 @@ public final void testBindCheck() { assertEquals(caseWhenEval.bind(null, null).eval(null).asInt4(), 1); } - Schema schema = new Schema(new Column[]{new Column("test", TajoDataTypes.Type.INT4)}); + Schema schema = SchemaFactory.newV1(new Column[]{new Column("test", TajoDataTypes.Type.INT4)}); Tuple tuple = new VTuple(new Datum[]{DatumFactory.createText("aaa")}); RegexPredicateEval regexEval = new RegexPredicateEval(false, new FieldEval("test", CatalogUtil.newSimpleDataType(TajoDataTypes.Type.INT4)), new ConstEval(DatumFactory.createText("a*")), false); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestEvalTreeUtil.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestEvalTreeUtil.java index 6a659be233..9192235264 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestEvalTreeUtil.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestEvalTreeUtil.java @@ -97,7 +97,7 @@ public static void setUp() throws Exception { catalog.createTablespace(DEFAULT_TABLESPACE_NAME, "hdfs://localhost:1234/warehouse"); catalog.createDatabase(TajoConstants.DEFAULT_DATABASE_NAME, DEFAULT_TABLESPACE_NAME); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("name", TajoDataTypes.Type.TEXT); schema.addColumn("score", TajoDataTypes.Type.INT4); schema.addColumn("age", TajoDataTypes.Type.INT4); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestPredicates.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestPredicates.java index 3a2de5b8f0..c3cd0a0607 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestPredicates.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestPredicates.java @@ -20,6 +20,7 @@ import org.apache.tajo.catalog.CatalogUtil; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.common.TajoDataTypes; import org.apache.tajo.exception.TajoException; import org.junit.Test; @@ -86,7 +87,7 @@ public void testNot() throws TajoException { testSimpleEval("select (not (1 > null)) is null;", new String[] {"t"}); - Schema schema1 = new Schema(); + Schema schema1 = SchemaFactory.newV1(); schema1.addColumn("col1", INT4); schema1.addColumn("col2", INT4); schema1.addColumn("col3", INT4); @@ -112,7 +113,7 @@ public void testParenthesizedValues() throws TajoException { public void testComparisonEqual() throws TajoException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col0", TajoDataTypes.Type.INT1); schema.addColumn("col1", TajoDataTypes.Type.INT2); schema.addColumn("col2", TajoDataTypes.Type.INT4); @@ -125,7 +126,7 @@ public void testComparisonEqual() throws TajoException { testEval(schema, "t1", "0,1,2,3,4.1,5.1,cmp,asm,", "SELECT col6 = 'cmp' from t1", new String [] {"t"}); - Schema schema1 = new Schema(); + Schema schema1 = SchemaFactory.newV1(); schema1.addColumn("col1", INT4); schema1.addColumn("col2", INT4); schema1.addColumn("col3", INT4); @@ -142,7 +143,7 @@ public void testComparisonEqual() throws TajoException { @Test public void testComparisonNotEqual() throws TajoException { - Schema schema1 = new Schema(); + Schema schema1 = SchemaFactory.newV1(); schema1.addColumn("col1", INT4); schema1.addColumn("col2", INT4); schema1.addColumn("col3", INT4); @@ -159,7 +160,7 @@ public void testComparisonNotEqual() throws TajoException { @Test public void testComparisonLessThan() throws TajoException { - Schema schema1 = new Schema(); + Schema schema1 = SchemaFactory.newV1(); schema1.addColumn("col1", INT4); schema1.addColumn("col2", INT4); schema1.addColumn("col3", INT4); @@ -176,7 +177,7 @@ public void testComparisonLessThan() throws TajoException { @Test public void testComparisonLessThanEqual() throws TajoException { - Schema schema1 = new Schema(); + Schema schema1 = SchemaFactory.newV1(); schema1.addColumn("col1", INT4); schema1.addColumn("col2", INT4); schema1.addColumn("col3", INT4); @@ -193,7 +194,7 @@ public void testComparisonLessThanEqual() throws TajoException { @Test public void testComparisonGreaterThan() throws TajoException { - Schema schema1 = new Schema(); + Schema schema1 = SchemaFactory.newV1(); schema1.addColumn("col1", INT4); schema1.addColumn("col2", INT4); schema1.addColumn("col3", INT4); @@ -210,7 +211,7 @@ public void testComparisonGreaterThan() throws TajoException { @Test public void testComparisonGreaterThanEqual() throws TajoException { - Schema schema1 = new Schema(); + Schema schema1 = SchemaFactory.newV1(); schema1.addColumn("col1", INT4); schema1.addColumn("col2", INT4); schema1.addColumn("col3", INT4); @@ -231,7 +232,7 @@ public void testComparisonGreaterThanEqual() throws TajoException { @Test public void testBetween() throws TajoException { - Schema schema2 = new Schema(); + Schema schema2 = SchemaFactory.newV1(); schema2.addColumn("col1", TEXT); schema2.addColumn("col2", TEXT); schema2.addColumn("col3", TEXT); @@ -255,7 +256,7 @@ public void testBetween() throws TajoException { @Test public void testBetween2() throws TajoException { // for TAJO-249 - Schema schema3 = new Schema(); + Schema schema3 = SchemaFactory.newV1(); schema3.addColumn("date_a", INT4); schema3.addColumn("date_b", INT4); schema3.addColumn("date_c", INT4); @@ -294,7 +295,7 @@ public void testBetween2() throws TajoException { // for TAJO-249 @Test public void testInPredicateWithConstant() throws TajoException { - Schema schema2 = new Schema(); + Schema schema2 = SchemaFactory.newV1(); schema2.addColumn("col1", TEXT); schema2.addColumn("col2", TEXT); schema2.addColumn("col3", TEXT); @@ -319,7 +320,7 @@ public void testInPredicateWithConstant() throws TajoException { @Test public void testInPredicateWithSimpleExprs() throws TajoException { - Schema schema2 = new Schema(); + Schema schema2 = SchemaFactory.newV1(); schema2.addColumn("col1", TEXT); schema2.addColumn("col2", INT4); schema2.addColumn("col3", TEXT); @@ -343,7 +344,7 @@ public void testInPredicateWithSimpleExprs() throws TajoException { @Test public void testIsNullPredicate() throws TajoException { - Schema schema1 = new Schema(); + Schema schema1 = SchemaFactory.newV1(); schema1.addColumn("col1", INT4); schema1.addColumn("col2", INT4); testEval(schema1, "table1", "123,", "select col1 is null, col2 is null as a from table1", @@ -354,7 +355,7 @@ public void testIsNullPredicate() throws TajoException { @Test public void testIsNullPredicateWithFunction() throws TajoException { - Schema schema2 = new Schema(); + Schema schema2 = SchemaFactory.newV1(); schema2.addColumn("col1", TEXT); schema2.addColumn("col2", TEXT); testEval(schema2, "table1", "_123,", "select ltrim(col1, '_') is null, upper(col2) is null as a from table1", @@ -393,7 +394,7 @@ public void testBooleanTest() throws TajoException { @Test public void testBooleanTestOnTable() throws TajoException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", BOOLEAN); schema.addColumn("col2", BOOLEAN); testEval(schema, "table1", "t,f", "select col1 is true, col2 is false from table1", new String [] {"t", "t"}); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestSQLExpression.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestSQLExpression.java index fe51aa4eff..2db826b7c6 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestSQLExpression.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestSQLExpression.java @@ -21,6 +21,7 @@ import org.apache.tajo.SessionVars; import org.apache.tajo.catalog.CatalogUtil; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.exception.UndefinedFunctionException; import org.apache.tajo.common.TajoDataTypes; import org.apache.tajo.datum.DatumFactory; @@ -39,7 +40,7 @@ public class TestSQLExpression extends ExprTestBase { @Test public void testQuotedIdentifiers() throws TajoException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("컬럼1", TEXT); schema.addColumn("컬럼2", TEXT); testEval(schema, "테이블1", "123,234", "select \"컬럼1\"::float, cast (\"컬럼2\" as float4) as a from \"테이블1\"", @@ -93,7 +94,7 @@ public void testSQLStandardCast() throws TajoException { @Test public void testExplicitCast() throws TajoException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col0", INT1); schema.addColumn("col1", INT2); schema.addColumn("col2", INT4); @@ -173,7 +174,7 @@ public void testExplicitCast() throws TajoException { @Test public void testImplicitCastForInt1() throws TajoException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col0", TajoDataTypes.Type.INT1); schema.addColumn("col1", TajoDataTypes.Type.INT2); schema.addColumn("col2", TajoDataTypes.Type.INT4); @@ -275,7 +276,7 @@ public void testImplicitCastForInt1() throws TajoException { @Test public void testImplicitCastForInt2() throws TajoException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col0", TajoDataTypes.Type.INT1); schema.addColumn("col1", TajoDataTypes.Type.INT2); schema.addColumn("col2", TajoDataTypes.Type.INT4); @@ -377,7 +378,7 @@ public void testImplicitCastForInt2() throws TajoException { @Test public void testImplicitCastForInt4() throws TajoException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col0", TajoDataTypes.Type.INT1); schema.addColumn("col1", TajoDataTypes.Type.INT2); schema.addColumn("col2", TajoDataTypes.Type.INT4); @@ -480,7 +481,7 @@ public void testImplicitCastForInt4() throws TajoException { @Test public void testImplicitCastForInt8() throws TajoException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col0", TajoDataTypes.Type.INT1); schema.addColumn("col1", TajoDataTypes.Type.INT2); schema.addColumn("col2", TajoDataTypes.Type.INT4); @@ -587,7 +588,7 @@ public void testImplicitCastForInt8() throws TajoException { @Test public void testImplicitCastForFloat4() throws TajoException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col0", TajoDataTypes.Type.INT1); schema.addColumn("col1", TajoDataTypes.Type.INT2); schema.addColumn("col2", TajoDataTypes.Type.INT4); @@ -706,7 +707,7 @@ public void testImplicitCastForFloat4() throws TajoException { @Test public void testImplicitCastForFloat8() throws TajoException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col0", TajoDataTypes.Type.INT1); schema.addColumn("col1", TajoDataTypes.Type.INT2); schema.addColumn("col2", TajoDataTypes.Type.INT4); @@ -826,7 +827,7 @@ public void testImplicitCastForFloat8() throws TajoException { @Test public void testSigned() throws TajoException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col0", TajoDataTypes.Type.INT1); schema.addColumn("col1", TajoDataTypes.Type.INT2); schema.addColumn("col2", TajoDataTypes.Type.INT4); @@ -870,7 +871,7 @@ public void testCastFromTable() throws TajoException { queryContext.put(SessionVars.TIMEZONE, "GMT-6"); TimeZone tz = TimeZone.getTimeZone("GMT-6"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TEXT); schema.addColumn("col2", TEXT); @@ -902,7 +903,7 @@ public void testBooleanLiteral() throws TajoException { testSimpleEval("select true", new String[] {"t"}); testSimpleEval("select false", new String[]{"f"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TEXT); schema.addColumn("col2", TEXT); testEval(schema, "table1", "123,234", "select col1, col2 from table1 where true", new String[]{"123", "234"}); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestBuiltinFunctions.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestBuiltinFunctions.java index 72fdd6fa06..ae2de77f60 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestBuiltinFunctions.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestBuiltinFunctions.java @@ -23,6 +23,7 @@ import org.apache.tajo.TajoConstants; import org.apache.tajo.TajoTestingCluster; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.common.TajoDataTypes; import org.apache.tajo.storage.StorageConstants; import org.apache.tajo.util.KeyValueSet; @@ -53,7 +54,7 @@ public void testMaxLongWithNull() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", TajoDataTypes.Type.INT4); schema.addColumn("value", TajoDataTypes.Type.INT8); String[] data = new String[]{ "1|-111", "2|\\N", "3|-333" }; @@ -79,7 +80,7 @@ public void testMinMaxDate() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("value", TajoDataTypes.Type.DATE); String[] data = new String[]{ "2014-01-02", "2014-12-01", "2015-01-01", "1999-08-09", "2000-03-01" }; TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1); @@ -103,7 +104,7 @@ public void testMinMaxDateWithNull() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("value", TajoDataTypes.Type.DATE); String[] data = new String[]{ "2014-01-02", "2014-12-01", "\\N", "\\N", "2000-03-01" }; TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1); @@ -127,7 +128,7 @@ public void testMinMaxTime() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("value", TajoDataTypes.Type.TIME); String[] data = new String[]{ "11:11:11", "23:12:50", "00:00:01", "09:59:59", "12:13:14" }; TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1); @@ -151,7 +152,7 @@ public void testMinMaxTimeWithNull() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("value", TajoDataTypes.Type.TIME); String[] data = new String[]{ "11:11:11", "\\N", "\\N", "09:59:59", "12:13:14" }; TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1); @@ -175,7 +176,7 @@ public void testMinMaxTimestamp() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("value", TajoDataTypes.Type.TIMESTAMP); String[] data = new String[]{ "1999-01-01 11:11:11", "2015-01-01 23:12:50", "2016-12-24 00:00:01", "1977-05-04 09:59:59", "2002-11-21 12:13:14" }; @@ -200,7 +201,7 @@ public void testMinMaxTimestampWithNull() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("value", TajoDataTypes.Type.TIMESTAMP); String[] data = new String[]{ "1999-01-01 11:11:11", "2015-01-01 23:12:50", "\\N", "\\N", "2002-11-21 12:13:14" }; @@ -232,7 +233,7 @@ public void testMinLongWithNull() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", TajoDataTypes.Type.INT4); schema.addColumn("value", TajoDataTypes.Type.INT8); String[] data = new String[]{ "1|111", "2|\\N", "3|333" }; @@ -265,7 +266,7 @@ public void testMaxStringWithNull() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", TajoDataTypes.Type.INT4); schema.addColumn("name", TajoDataTypes.Type.TEXT); String[] data = new String[]{ "1|\\N", "2|\\N", "3|\\N" }; @@ -298,7 +299,7 @@ public void testMinStringWithNull() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", TajoDataTypes.Type.INT4); schema.addColumn("name", TajoDataTypes.Type.TEXT); String[] data = new String[]{ "1|def", "2|\\N", "3|abc" }; @@ -359,7 +360,7 @@ public void testAvgWithNull() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", TajoDataTypes.Type.INT4); schema.addColumn("value_int", TajoDataTypes.Type.INT4); schema.addColumn("value_long", TajoDataTypes.Type.INT8); @@ -388,7 +389,7 @@ public void testAvgWithAllNulls() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", TajoDataTypes.Type.INT4); schema.addColumn("value_int", TajoDataTypes.Type.INT4); schema.addColumn("value_long", TajoDataTypes.Type.INT8); @@ -417,7 +418,7 @@ public void testSumWithNull() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", TajoDataTypes.Type.INT4); schema.addColumn("value_int", TajoDataTypes.Type.INT4); schema.addColumn("value_long", TajoDataTypes.Type.INT8); @@ -446,7 +447,7 @@ public void testSumWithAllNulls() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", TajoDataTypes.Type.INT4); schema.addColumn("value_int", TajoDataTypes.Type.INT4); schema.addColumn("value_long", TajoDataTypes.Type.INT8); @@ -475,7 +476,7 @@ public void testStdDevSamp() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", TajoDataTypes.Type.INT4); schema.addColumn("value_int", TajoDataTypes.Type.INT4); schema.addColumn("value_long", TajoDataTypes.Type.INT8); @@ -507,7 +508,7 @@ public void testStdDevSampWithFewNumbers() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", TajoDataTypes.Type.INT4); schema.addColumn("value_int", TajoDataTypes.Type.INT4); schema.addColumn("value_long", TajoDataTypes.Type.INT8); @@ -539,7 +540,7 @@ public void testStdDevPop() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", TajoDataTypes.Type.INT4); schema.addColumn("value_int", TajoDataTypes.Type.INT4); schema.addColumn("value_long", TajoDataTypes.Type.INT8); @@ -571,7 +572,7 @@ public void testStdDevPopWithFewNumbers() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", TajoDataTypes.Type.INT4); schema.addColumn("value_int", TajoDataTypes.Type.INT4); schema.addColumn("value_long", TajoDataTypes.Type.INT8); @@ -603,7 +604,7 @@ public void testVarSamp() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", TajoDataTypes.Type.INT4); schema.addColumn("value_int", TajoDataTypes.Type.INT4); schema.addColumn("value_long", TajoDataTypes.Type.INT8); @@ -634,7 +635,7 @@ public void testVarSampWithFewNumbers() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", TajoDataTypes.Type.INT4); schema.addColumn("value_int", TajoDataTypes.Type.INT4); schema.addColumn("value_long", TajoDataTypes.Type.INT8); @@ -665,7 +666,7 @@ public void testVarPop() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", TajoDataTypes.Type.INT4); schema.addColumn("value_int", TajoDataTypes.Type.INT4); schema.addColumn("value_long", TajoDataTypes.Type.INT8); @@ -696,7 +697,7 @@ public void testVarPopWithFewNumbers() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", TajoDataTypes.Type.INT4); schema.addColumn("value_int", TajoDataTypes.Type.INT4); schema.addColumn("value_long", TajoDataTypes.Type.INT8); @@ -757,11 +758,11 @@ public void testRankWithTwoTables() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", TajoDataTypes.Type.INT4); String[] data = new String[] {"1", "3", "2", "4"}; TajoTestingCluster.createTable("rank_table1", schema, tableOptions, data, 1); - schema = new Schema(); + schema = SchemaFactory.newV1(); schema.addColumn("refid", TajoDataTypes.Type.INT4); schema.addColumn("value", TajoDataTypes.Type.TEXT); data = new String[] {"1|efgh", "2|abcd", "4|erjk", "8|dfef"}; @@ -795,7 +796,7 @@ public void testCorr() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", TajoDataTypes.Type.INT4); schema.addColumn("value_int", TajoDataTypes.Type.INT4); schema.addColumn("value_long", TajoDataTypes.Type.INT8); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestConditionalExpressions.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestConditionalExpressions.java index 691579c3ea..9a072ef611 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestConditionalExpressions.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestConditionalExpressions.java @@ -20,6 +20,7 @@ import org.apache.tajo.catalog.CatalogUtil; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.datum.NullDatum; import org.apache.tajo.exception.UndefinedFunctionException; import org.apache.tajo.common.TajoDataTypes; @@ -32,7 +33,7 @@ public class TestConditionalExpressions extends ExprTestBase { @Test public void testCaseWhens1() throws TajoException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TajoDataTypes.Type.INT1); schema.addColumn("col2", TajoDataTypes.Type.INT2); schema.addColumn("col3", TajoDataTypes.Type.INT4); @@ -59,7 +60,7 @@ public void testCaseWhens1() throws TajoException { @Test public void testCaseWhensWithNullReturn() throws TajoException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TajoDataTypes.Type.TEXT); schema.addColumn("col2", TajoDataTypes.Type.TEXT); @@ -73,7 +74,7 @@ public void testCaseWhensWithNullReturn() throws TajoException { @Test public void testCaseWhensWithCommonExpression() throws TajoException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TajoDataTypes.Type.INT4); schema.addColumn("col2", TajoDataTypes.Type.INT4); schema.addColumn("col3", TajoDataTypes.Type.INT4); @@ -111,7 +112,7 @@ public void testCaseWhensWithCommonExpression() throws TajoException { @Test public void testCaseWhensWithCommonExpressionAndNull() throws TajoException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TajoDataTypes.Type.INT4); schema.addColumn("col2", TajoDataTypes.Type.INT4); schema.addColumn("col3", TajoDataTypes.Type.INT4); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestDateTimeFunctions.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestDateTimeFunctions.java index 9dd8653183..dc9bd256af 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestDateTimeFunctions.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestDateTimeFunctions.java @@ -21,6 +21,7 @@ import org.apache.tajo.SessionVars; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.datum.DatumFactory; import org.apache.tajo.datum.TimestampDatum; import org.apache.tajo.engine.eval.ExprTestBase; @@ -119,7 +120,7 @@ public void testExtract() throws TajoException { TimeZone GMT = TimeZone.getTimeZone("GMT"); TimeZone PST = TimeZone.getTimeZone("PST"); - Schema schema2 = new Schema(); + Schema schema2 = SchemaFactory.newV1(); schema2.addColumn("col1", TIMESTAMP); testEval(schema2, "table1", "1970-01-17 10:09:37", @@ -135,7 +136,7 @@ public void testExtract() throws TajoException { new String[]{"1970.0", "1.0", "17.0"}); // Currently TIME type can be loaded with INT8 type. - Schema schema3 = new Schema(); + Schema schema3 = SchemaFactory.newV1(); schema3.addColumn("col1", TIME); testEval(schema3, "table1", "10:09:37.5", @@ -150,7 +151,7 @@ public void testExtract() throws TajoException { "select extract(hour from col1), extract(minute from col1), extract(second from col1) from table1;", new String[]{"18.0", "9.0", "37.5"}); - Schema schema4 = new Schema(); + Schema schema4 = SchemaFactory.newV1(); schema4.addColumn("col1", DATE); testEval(schema4, "table1", "1970-01-17", @@ -235,7 +236,7 @@ public void testDatePart() throws TajoException { TimeZone GMT = TimeZone.getTimeZone("GMT"); TimeZone PST = TimeZone.getTimeZone("PST"); - Schema schema2 = new Schema(); + Schema schema2 = SchemaFactory.newV1(); schema2.addColumn("col1", TIMESTAMP); testEval(schema2, "table1", @@ -251,7 +252,7 @@ public void testDatePart() throws TajoException { "select date_part('year', col1), date_part('month', col1), date_part('day', col1) from table1;", new String[]{"1970.0", "1.0", "18.0"}); - Schema schema3 = new Schema(); + Schema schema3 = SchemaFactory.newV1(); schema3.addColumn("col1", TIME); testEval(schema3, "table1", "10:09:37.5", "select date_part('hour', col1), date_part('minute', col1), date_part('second', col1) from table1;", @@ -263,7 +264,7 @@ public void testDatePart() throws TajoException { "select date_part('hour', col1), date_part('minute', col1), date_part('second', col1) from table1;", new String[]{"18.0", "9.0", "37.5"}); - Schema schema4 = new Schema(); + Schema schema4 = SchemaFactory.newV1(); schema4.addColumn("col1", DATE); testEval(schema4, "table1", "1970-01-17", diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestMathFunctions.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestMathFunctions.java index a43e4d396f..1c07388cbc 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestMathFunctions.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestMathFunctions.java @@ -19,6 +19,7 @@ package org.apache.tajo.engine.function; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.datum.NullDatum; import org.apache.tajo.engine.eval.ExprTestBase; import org.apache.tajo.exception.TajoException; @@ -37,7 +38,7 @@ public void testRound() throws TajoException { testSimpleEval("select round(-5.5) as col1 ", new String[]{"-6"}); testSimpleEval("select round(-5.6) as col1 ", new String[]{"-6"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", FLOAT8); schema.addColumn("col2", FLOAT8); schema.addColumn("col3", FLOAT8); @@ -45,7 +46,7 @@ public void testRound() throws TajoException { testEval(schema, "table1", "1.0, 0.2, 0.4", "select round(col1 + col2 + col3) from table1", new String[]{"2"}); - Schema schema2 = new Schema(); + Schema schema2 = SchemaFactory.newV1(); schema2.addColumn("col1", INT4); schema2.addColumn("col2", INT8); schema2.addColumn("col3", FLOAT4); @@ -65,7 +66,7 @@ public void testFloor() throws TajoException { testSimpleEval("select floor(-5.1) as col1 ", new String[]{"-6"}); testSimpleEval("select floor(-5.6) as col1 ", new String[]{"-6"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", FLOAT8); schema.addColumn("col2", FLOAT8); schema.addColumn("col3", FLOAT8); @@ -84,7 +85,7 @@ public void testCeil() throws TajoException { testSimpleEval("select ceil(-5.1) as col1 ", new String[]{"-5"}); testSimpleEval("select ceil(-5.6) as col1 ", new String[]{"-5"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", FLOAT8); schema.addColumn("col2", FLOAT8); schema.addColumn("col3", FLOAT8); @@ -103,7 +104,7 @@ public void testCeiling() throws TajoException { testSimpleEval("select ceiling(-5.1) as col1 ", new String[]{"-5"}); testSimpleEval("select ceiling(-5.6) as col1 ", new String[]{"-5"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", FLOAT8); schema.addColumn("col2", FLOAT8); schema.addColumn("col3", FLOAT8); @@ -119,7 +120,7 @@ public void testSin() throws TajoException { testSimpleEval("select sin(1.2) as col1 ", new String[]{"0.9320390859672263"}); testSimpleEval("select sin(-0.5) as col1 ", new String[]{"-0.479425538604203"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", FLOAT8); schema.addColumn("col2", FLOAT8); schema.addColumn("col3", FLOAT8); @@ -136,7 +137,7 @@ public void testCos() throws TajoException { testSimpleEval("select cos(1.2) as col1 ", new String[]{"0.3623577544766736"}); testSimpleEval("select cos(-0.5) as col1 ", new String[]{"0.8775825618903728"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", FLOAT8); schema.addColumn("col2", FLOAT8); schema.addColumn("col3", FLOAT8); @@ -152,7 +153,7 @@ public void testTan() throws TajoException { testSimpleEval("select tan(0.8) as col1 ", new String[]{"1.0296385570503641"}); testSimpleEval("select tan(-0.5) as col1 ", new String[]{"-0.5463024898437905"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", FLOAT8); schema.addColumn("col2", FLOAT8); schema.addColumn("col3", FLOAT8); @@ -168,7 +169,7 @@ public void testAsin() throws TajoException { testSimpleEval("select asin(0.8) as col1 ", new String[]{"0.9272952180016123"}); testSimpleEval("select asin(-0.5) as col1 ", new String[]{"-0.5235987755982989"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", FLOAT8); schema.addColumn("col2", FLOAT8); schema.addColumn("col3", FLOAT8); @@ -184,7 +185,7 @@ public void testAcos() throws TajoException { testSimpleEval("select acos(0.8) as col1 ", new String[]{"0.6435011087932843"}); testSimpleEval("select acos(-0.5) as col1 ", new String[]{"2.0943951023931957"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", FLOAT8); schema.addColumn("col2", FLOAT8); schema.addColumn("col3", FLOAT8); @@ -200,7 +201,7 @@ public void testAtan() throws TajoException { testSimpleEval("select atan(1.2) as col1 ", new String[]{"0.8760580505981934"}); testSimpleEval("select atan(-0.5) as col1 ", new String[]{"-0.4636476090008061"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", FLOAT8); schema.addColumn("col2", FLOAT8); schema.addColumn("col3", FLOAT8); @@ -217,7 +218,7 @@ public void testAtan2() throws TajoException { testSimpleEval("select atan2(-0.5, 0.3) as col1 ", new String[]{"-1.0303768265243125"}); testSimpleEval("select atan2(-0.2, -1.3) as col1 ", new String[]{"-2.988943325194528"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", FLOAT8); schema.addColumn("col2", FLOAT8); schema.addColumn("col3", FLOAT8); @@ -233,7 +234,7 @@ public void testMod() throws TajoException { testSimpleEval("select mod(200000000000,2) as col1 ", new String[]{"0"}); testSimpleEval("select mod(2,200000000000) as col1 ", new String[]{"2"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", INT8); schema.addColumn("col2", INT8); schema.addColumn("col3", INT8); @@ -249,7 +250,7 @@ public void testDiv() throws TajoException { testSimpleEval("select div(200000000000,2) as col1 ", new String[]{"100000000000"}); testSimpleEval("select div(2,200000000000) as col1 ", new String[]{"0"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", INT8); schema.addColumn("col2", INT8); schema.addColumn("col3", INT8); @@ -265,7 +266,7 @@ public void testSign() throws TajoException { testSimpleEval("select sign(0.3) as col1 ", new String[]{"1.0"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", FLOAT4); schema.addColumn("col2", FLOAT4); schema.addColumn("col3", FLOAT4); @@ -274,7 +275,7 @@ public void testSign() throws TajoException { new String[]{"1.0"}); - Schema schema2 = new Schema(); + Schema schema2 = SchemaFactory.newV1(); schema2.addColumn("col1", FLOAT8); schema2.addColumn("col2", FLOAT8); schema2.addColumn("col3", FLOAT8); @@ -290,7 +291,7 @@ public void testSqrt() throws TajoException { testSimpleEval("select sqrt(8.0) as col1 ", new String[]{"2.8284271247461903"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", FLOAT4); schema.addColumn("col2", FLOAT4); schema.addColumn("col3", FLOAT4); @@ -299,7 +300,7 @@ public void testSqrt() throws TajoException { new String[]{"1.1401754564651765"}); - Schema schema2 = new Schema(); + Schema schema2 = SchemaFactory.newV1(); schema2.addColumn("col1", FLOAT8); schema2.addColumn("col2", FLOAT8); schema2.addColumn("col3", FLOAT8); @@ -315,13 +316,13 @@ public void testExp() throws TajoException { testSimpleEval("select exp(1.2) as col1 ", new String[]{String.valueOf(Math.exp(1.2d))}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", FLOAT4); testEval(schema, "table1", "1.123", "select exp(col1) from table1", new String[]{String.valueOf(Math.exp(1.123f))}); - Schema schema2 = new Schema(); + Schema schema2 = SchemaFactory.newV1(); schema2.addColumn("col1", FLOAT8); testEval(schema2, "table1", "1.123", "select exp(col1) from table1", @@ -338,12 +339,12 @@ public void testAbs() throws TajoException { testSimpleEval("select abs(2.0) as col1 ", new String[]{"2.0"}); testSimpleEval("select abs(-2.0) as col1 ", new String[]{"2.0"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", FLOAT4); schema.addColumn("col2", FLOAT4); testEval(schema, "table1", "0.39,-0.39", "select abs(col1), abs(col2) from table1", new String[]{"0.39", "0.39"}); - Schema schema2 = new Schema(); + Schema schema2 = SchemaFactory.newV1(); schema2.addColumn("col1", FLOAT8); schema2.addColumn("col2", FLOAT8); testEval(schema2, "table1", "0.033312347,-0.033312347", "select abs(col1), abs(col2) from table1", @@ -357,14 +358,14 @@ public void testCbrt() throws TajoException { testSimpleEval("select cbrt(8.0) as col1 ", new String[]{"2.0"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", FLOAT4); schema.addColumn("col2", FLOAT4); schema.addColumn("col3", FLOAT4); testEval(schema, "table1", "1.0, 0.2, 0.1", "select cbrt(col1 + col2 + col3) from table1", new String[]{"1.0913929030771317"}); - Schema schema2 = new Schema(); + Schema schema2 = SchemaFactory.newV1(); schema2.addColumn("col1", FLOAT8); schema2.addColumn("col2", FLOAT8); schema2.addColumn("col3", FLOAT8); @@ -379,7 +380,7 @@ public void testDegrees() throws TajoException { testSimpleEval("select degrees(2.7) as col1 ", new String[]{String.valueOf(Math.toDegrees(2.7))}); testSimpleEval("select degrees(-0.8) as col1 ", new String[]{String.valueOf(Math.toDegrees(-0.8))}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", FLOAT4); schema.addColumn("col2", FLOAT8); schema.addColumn("col3", FLOAT8); @@ -400,7 +401,7 @@ public void testPow() throws TajoException { testSimpleEval("select pow(null,3.1) as col1 ", new String[]{NullDatum.get().toString()}); testSimpleEval("select pow(20.1,null) as col1 ", new String[]{NullDatum.get().toString()}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", FLOAT4); schema.addColumn("col2", FLOAT8); schema.addColumn("col3", INT4); @@ -420,7 +421,7 @@ public void testRadians() throws TajoException { testSimpleEval("select radians(2.7) as col1 ", new String[]{String.valueOf(Math.toRadians(2.7))}); testSimpleEval("select radians(-0.8) as col1 ", new String[]{String.valueOf(Math.toRadians(-0.8))}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", FLOAT4); schema.addColumn("col2", FLOAT8); schema.addColumn("col3", FLOAT8); @@ -462,7 +463,7 @@ public void testRoundWithSpecifiedPrecision() throws TajoException { testSimpleEval("select round(1234567890.1234567,3) ", new String[]{"1.234567890123E9"}); testSimpleEval("select round(1234567890.1234567,5) ", new String[]{"1.23456789012346E9"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", FLOAT8); schema.addColumn("col2", INT4); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestPatternMatchingPredicates.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestPatternMatchingPredicates.java index eb0bd96452..0cfbe1c6e9 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestPatternMatchingPredicates.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestPatternMatchingPredicates.java @@ -19,6 +19,7 @@ package org.apache.tajo.engine.function; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.datum.NullDatum; import org.apache.tajo.engine.eval.ExprTestBase; import org.apache.tajo.exception.TajoException; @@ -30,7 +31,7 @@ public class TestPatternMatchingPredicates extends ExprTestBase { @Test public void testLike() throws TajoException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TEXT); // test for null values diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestStringOperatorsAndFunctions.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestStringOperatorsAndFunctions.java index 751a24333d..dd40822038 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestStringOperatorsAndFunctions.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestStringOperatorsAndFunctions.java @@ -21,6 +21,7 @@ import org.apache.commons.lang.StringEscapeUtils; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.datum.NullDatum; import org.apache.tajo.engine.eval.ExprTestBase; import org.apache.tajo.exception.TajoException; @@ -40,7 +41,7 @@ public void testConcatenateOnLiteral() throws TajoException { @Test public void testConcatenateOnExpressions() throws TajoException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TEXT); schema.addColumn("col2", INT4); schema.addColumn("col3", FLOAT8); @@ -61,7 +62,7 @@ public void testFunctionCallIngoreCases() throws TajoException { @Test public void testLTrim() throws TajoException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TEXT); schema.addColumn("col2", TEXT); @@ -82,7 +83,7 @@ public void testLTrim() throws TajoException { @Test public void testRTrim() throws TajoException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TEXT); schema.addColumn("col2", TEXT); @@ -103,7 +104,7 @@ public void testRTrim() throws TajoException { @Test public void testTrim() throws TajoException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TEXT); schema.addColumn("col2", TEXT); @@ -131,7 +132,7 @@ public void testRegexReplace() throws TajoException { testSimpleEval("select regexp_replace('abcdef', null, '--') as col1 ", new String[]{NullDatum.get().toString()}); testSimpleEval("select regexp_replace('abcdef','bc', null) as col1 ", new String[]{NullDatum.get().toString()}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TEXT); schema.addColumn("col2", TEXT); schema.addColumn("col3", TEXT); @@ -164,7 +165,7 @@ public void testLeft() throws TajoException { testSimpleEval("select left('abcdef',-5) as col1 ", new String[]{"a"}); testSimpleEval("select left('abcdef',-6) as col1 ", new String[]{""}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TEXT); schema.addColumn("col2", INT4); schema.addColumn("col3", TEXT); @@ -193,7 +194,7 @@ public void testRight() throws TajoException { testSimpleEval("select right('abcdef',-5) as col1 ", new String[]{"f"}); testSimpleEval("select right('abcdef',-6) as col1 ", new String[]{""}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TEXT); schema.addColumn("col2", INT4); schema.addColumn("col3", TEXT); @@ -210,7 +211,7 @@ public void testReverse() throws TajoException { testSimpleEval("select reverse('abcdef') as col1 ", new String[]{"fedcba"}); testSimpleEval("select reverse('가') as col1 ", new String[]{"가"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TEXT); schema.addColumn("col2", TEXT); schema.addColumn("col3", TEXT); @@ -224,7 +225,7 @@ public void testRepeat() throws TajoException { testSimpleEval("select repeat('가',3) as col1 ", new String[]{"가가가"}); testSimpleEval("select repeat('a',2) as col1 ", new String[]{"aa"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TEXT); schema.addColumn("col2", TEXT); schema.addColumn("col3", TEXT); @@ -236,7 +237,7 @@ public void testRepeat() throws TajoException { public void testUpper() throws TajoException { testSimpleEval("select upper('abcdef') as col1 ", new String[]{"ABCDEF"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TEXT); schema.addColumn("col2", TEXT); schema.addColumn("col3", TEXT); @@ -249,7 +250,7 @@ public void testUpper() throws TajoException { public void testLower() throws TajoException { testSimpleEval("select lower('ABCdEF') as col1 ", new String[]{"abcdef"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TEXT); schema.addColumn("col2", TEXT); schema.addColumn("col3", TEXT); @@ -262,7 +263,7 @@ public void testLower() throws TajoException { public void testCharLength() throws TajoException { testSimpleEval("select char_length('123456') as col1 ", new String[]{"6"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TEXT); schema.addColumn("col2", TEXT); schema.addColumn("col3", TEXT); @@ -274,7 +275,7 @@ public void testCharLength() throws TajoException { public void testLength() throws TajoException { testSimpleEval("select length('123456') as col1 ", new String[]{"6"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TEXT); schema.addColumn("col2", TEXT); schema.addColumn("col3", TEXT); @@ -287,7 +288,7 @@ public void testMd5() throws TajoException { testSimpleEval("select md5('1') as col1 ", new String[]{"c4ca4238a0b923820dcc509a6f75849b"}); testSimpleEval("select md5('tajo') as col1 ", new String[]{"742721b3a79f71a9491681b8e8a7ce85"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TEXT); schema.addColumn("col2", TEXT); schema.addColumn("col3", TEXT); @@ -316,7 +317,7 @@ public void testHex() throws TajoException { testSimpleEval("select to_hex(1234) as col1 ", new String[]{"4d2"}); testSimpleEval("select to_hex(1023456788888888) as col1 ", new String[]{"3a2d41a583d38"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TEXT); schema.addColumn("col2", TEXT); schema.addColumn("col3", TEXT); @@ -330,7 +331,7 @@ public void testBin() throws TajoException { testSimpleEval("select to_bin(10) as col1 ", new String[]{"1010"}); testSimpleEval("select to_bin(1234) as col1 ", new String[]{"10011010010"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TEXT); schema.addColumn("col2", TEXT); schema.addColumn("col3", TEXT); @@ -344,7 +345,7 @@ public void testOctetLength() throws TajoException { testSimpleEval("select octet_length('1') as col1 ", new String[]{"1"}); testSimpleEval("select octet_length('가') as col1 ", new String[]{"3"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TEXT); schema.addColumn("col2", TEXT); schema.addColumn("col3", TEXT); @@ -360,7 +361,7 @@ public void testSplitPart() throws TajoException { testSimpleEval("select split_part('1386577650.123', '.', 3) is null", new String[]{"t"}); // null handling tests - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TEXT); schema.addColumn("col2", TEXT); schema.addColumn("col3", TEXT); @@ -389,7 +390,7 @@ public void testSubstr() throws TajoException { testSimpleEval("select substr('abcdef', -1, 3) as col1 ", new String[]{"a"}); testSimpleEval("select substr('abcdef', -1, 1) as col1 ", new String[]{""}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TEXT); schema.addColumn("col2", TEXT); schema.addColumn("col3", TEXT); @@ -432,7 +433,7 @@ public void testLocate() throws TajoException { testSimpleEval("select locate('abcdef', 'a', -1) as col1 ", new String[]{"0"}); testSimpleEval("select locate('abcdef', 'a', -5) as col1 ", new String[]{"0"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TEXT); schema.addColumn("col2", TEXT); schema.addColumn("col3", TEXT); @@ -450,7 +451,7 @@ public void testLocate() throws TajoException { public void testBitLength() throws TajoException { testSimpleEval("select bit_length('123456') as col1 ", new String[]{"48"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TEXT); schema.addColumn("col2", TEXT); schema.addColumn("col3", TEXT); @@ -466,7 +467,7 @@ public void testStrpos() throws TajoException { testSimpleEval("select strpos('일이삼사오육','삼사') as col1 ", new String[]{"3"}); testSimpleEval("select strpos('일이삼사오육','일이삼') as col1 ", new String[]{"1"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TEXT); schema.addColumn("col2", TEXT); schema.addColumn("col3", TEXT); @@ -482,7 +483,7 @@ public void testStrposb() throws TajoException { testSimpleEval("select strposb('일이삼사오육','삼사') as col1 ", new String[]{"7"}); //utf8 1 korean word = 3 chars testSimpleEval("select strposb('일이삼사오육','삼사일') as col1 ", new String[]{"0"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TEXT); schema.addColumn("col2", TEXT); schema.addColumn("col3", TEXT); @@ -500,7 +501,7 @@ public void testInitcap() throws TajoException { public void testAscii() throws TajoException { testSimpleEval("select ascii('abc') as col1 ", new String[]{"97"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TEXT); testEval(schema, "table1", "abc", "select ascii(col1) from table1", new String[]{"97"}); @@ -516,7 +517,7 @@ public void testChr() throws TajoException { testSimpleEval("select chr(50) as col1 ", new String[]{"2"}); testSimpleEval("select chr(64) as col1 ", new String[]{"@"}); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", INT4); testEval(schema, "table1", "65", "select chr(col1) from table1", new String[]{"A"}); testEval(schema, "table1", "66", "select chr(col1) from table1", new String[]{"B"}); @@ -587,7 +588,7 @@ public void testFindInSet() throws TajoException { testSimpleEval("select find_in_set('딸기','사과,배,옥수수,감자,딸기,수박') as col1 ", new String[]{"5"}); // null test - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TEXT); schema.addColumn("col2", TEXT); testEval(schema, "table1", "|crt,c,cr,c,def", "select find_in_set(col1, col2) is null from table1", diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestUserDefinedFunctions.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestUserDefinedFunctions.java index a179e74e40..f66c6bba28 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestUserDefinedFunctions.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestUserDefinedFunctions.java @@ -19,6 +19,7 @@ package org.apache.tajo.engine.function; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.datum.NullDatum; import org.apache.tajo.engine.eval.ExprTestBase; import org.apache.tajo.exception.TajoException; @@ -35,7 +36,7 @@ public void testNullHandling() throws TajoException { @Test public void testNullHandling2() throws TajoException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", BOOLEAN); testEval(schema, "table1", "", "select null_test() from table1", new String[]{NullDatum.get().toString()}); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderAlgorithm.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderAlgorithm.java index 4ae3e5aad3..ce5a6ab9a5 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderAlgorithm.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderAlgorithm.java @@ -67,16 +67,16 @@ public static void setUp() throws Exception { catalog.createFunction(funcDesc); } - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("name", Type.TEXT); schema.addColumn("empid", Type.INT4); schema.addColumn("deptname", Type.TEXT); - Schema schema2 = new Schema(); + Schema schema2 = SchemaFactory.newV1(); schema2.addColumn("deptname", Type.TEXT); schema2.addColumn("manager", Type.TEXT); - Schema schema3 = new Schema(); + Schema schema3 = SchemaFactory.newV1(); schema3.addColumn("deptname", Type.TEXT); schema3.addColumn("score", Type.INT4); schema3.addColumn("phone", Type.INT4); @@ -101,7 +101,7 @@ public static void setUp() throws Exception { /////////////////////////////////////////////////////////////////////////// // creating table for overflow in JoinOrderOptimizer. - Schema schema4 = new Schema(); + Schema schema4 = SchemaFactory.newV1(); schema4.addColumn("deptname", Type.TEXT); schema4.addColumn("manager", Type.TEXT); // Set store type as FAKEFILE to prevent auto update of physical information in LogicalPlanner.updatePhysicalInfo() diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestLogicalOptimizer.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestLogicalOptimizer.java index 1b911a12ee..56ef78bb97 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestLogicalOptimizer.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestLogicalOptimizer.java @@ -65,16 +65,16 @@ public static void setUp() throws Exception { catalog.createFunction(funcDesc); } - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("name", Type.TEXT); schema.addColumn("empid", Type.INT4); schema.addColumn("deptname", Type.TEXT); - Schema schema2 = new Schema(); + Schema schema2 = SchemaFactory.newV1(); schema2.addColumn("deptname", Type.TEXT); schema2.addColumn("manager", Type.TEXT); - Schema schema3 = new Schema(); + Schema schema3 = SchemaFactory.newV1(); schema3.addColumn("deptname", Type.TEXT); schema3.addColumn("score", Type.INT4); schema3.addColumn("phone", Type.INT4); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestLogicalPlanner.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestLogicalPlanner.java index 98874ba72c..d09ef77258 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestLogicalPlanner.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestLogicalPlanner.java @@ -86,16 +86,16 @@ public static void setUp() throws Exception { catalog.createFunction(funcDesc); } - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("name", Type.TEXT); schema.addColumn("empid", Type.INT4); schema.addColumn("deptname", Type.TEXT); - Schema schema2 = new Schema(); + Schema schema2 = SchemaFactory.newV1(); schema2.addColumn("deptname", Type.TEXT); schema2.addColumn("manager", Type.TEXT); - Schema schema3 = new Schema(); + Schema schema3 = SchemaFactory.newV1(); schema3.addColumn("deptname", Type.TEXT); schema3.addColumn("score", Type.INT4); @@ -222,7 +222,7 @@ public final void testImplicityJoinPlan() throws CloneNotSupportedException, Taj testJsonSerDerObject(root); testCloneLogicalNode(root); - Schema expectedSchema = new Schema(); + Schema expectedSchema = SchemaFactory.newV1(); expectedSchema.addColumn("name", Type.TEXT); expectedSchema.addColumn("empid", Type.INT4); expectedSchema.addColumn("deptname", Type.TEXT); @@ -291,7 +291,7 @@ public final void testImplicityJoinPlan() throws CloneNotSupportedException, Taj static Schema expectedJoinSchema; static { - expectedJoinSchema = new Schema(); + expectedJoinSchema = SchemaFactory.newV1(); expectedJoinSchema.addColumn("name", Type.TEXT); expectedJoinSchema.addColumn("deptname", Type.TEXT); expectedJoinSchema.addColumn("score", Type.INT4); @@ -1290,7 +1290,7 @@ public final void testAddPartitionAndDropPartition() throws TajoException { String tableName = CatalogUtil.normalizeIdentifier("partitioned_table"); String qualifiedTableName = CatalogUtil.buildFQName(DEFAULT_DATABASE_NAME, tableName); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4) .addColumn("name", Type.TEXT) .addColumn("age", Type.INT4) @@ -1299,7 +1299,7 @@ public final void testAddPartitionAndDropPartition() throws TajoException { KeyValueSet opts = new KeyValueSet(); opts.set("file.delimiter", ","); - Schema partSchema = new Schema(); + Schema partSchema = SchemaFactory.newV1(); partSchema.addColumn("id", Type.INT4); partSchema.addColumn("name", Type.TEXT); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestPlannerUtil.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestPlannerUtil.java index c9e0c46225..6479124e00 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestPlannerUtil.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestPlannerUtil.java @@ -72,16 +72,16 @@ public static void setUp() throws Exception { catalog.createTablespace(DEFAULT_TABLESPACE_NAME, "hdfs://localhost:1234/warehouse"); catalog.createDatabase(DEFAULT_DATABASE_NAME, DEFAULT_TABLESPACE_NAME); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("name", Type.TEXT); schema.addColumn("empid", CatalogUtil.newSimpleDataType(Type.INT4)); schema.addColumn("deptname", Type.TEXT); - Schema schema2 = new Schema(); + Schema schema2 = SchemaFactory.newV1(); schema2.addColumn("deptname", Type.TEXT); schema2.addColumn("manager", Type.TEXT); - Schema schema3 = new Schema(); + Schema schema3 = SchemaFactory.newV1(); schema3.addColumn("deptname", Type.TEXT); schema3.addColumn("score", CatalogUtil.newSimpleDataType(Type.INT4)); @@ -188,10 +188,10 @@ public final void testIsJoinQual() { @Test public final void testGetJoinKeyPairs() { - Schema outerSchema = new Schema(); + Schema outerSchema = SchemaFactory.newV1(); outerSchema.addColumn("employee.id1", CatalogUtil.newSimpleDataType(Type.INT4)); outerSchema.addColumn("employee.id2", CatalogUtil.newSimpleDataType(Type.INT4)); - Schema innerSchema = new Schema(); + Schema innerSchema = SchemaFactory.newV1(); innerSchema.addColumn("people.fid1", CatalogUtil.newSimpleDataType(Type.INT4)); innerSchema.addColumn("people.fid2", CatalogUtil.newSimpleDataType(Type.INT4)); @@ -250,10 +250,10 @@ public final void testGetJoinKeyPairs() { @Test public final void testGetSortKeysFromJoinQual() { - Schema outerSchema = new Schema(); + Schema outerSchema = SchemaFactory.newV1(); outerSchema.addColumn("employee.id1", CatalogUtil.newSimpleDataType(Type.INT4)); outerSchema.addColumn("employee.id2", CatalogUtil.newSimpleDataType(Type.INT4)); - Schema innerSchema = new Schema(); + Schema innerSchema = SchemaFactory.newV1(); innerSchema.addColumn("people.fid1", CatalogUtil.newSimpleDataType(Type.INT4)); innerSchema.addColumn("people.fid2", CatalogUtil.newSimpleDataType(Type.INT4)); @@ -286,10 +286,10 @@ public final void testGetSortKeysFromJoinQual() { @Test public final void testComparatorsFromJoinQual() { - Schema outerSchema = new Schema(); + Schema outerSchema = SchemaFactory.newV1(); outerSchema.addColumn("employee.id1", CatalogUtil.newSimpleDataType(Type.INT4)); outerSchema.addColumn("employee.id2", CatalogUtil.newSimpleDataType(Type.INT4)); - Schema innerSchema = new Schema(); + Schema innerSchema = SchemaFactory.newV1(); innerSchema.addColumn("people.fid1", CatalogUtil.newSimpleDataType(Type.INT4)); innerSchema.addColumn("people.fid2", CatalogUtil.newSimpleDataType(Type.INT4)); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestUniformRangePartition.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestUniformRangePartition.java index 178af47738..ece17c7325 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestUniformRangePartition.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestUniformRangePartition.java @@ -19,6 +19,7 @@ package org.apache.tajo.engine.planner; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.catalog.SortSpec; import org.apache.tajo.common.TajoDataTypes.Type; import org.apache.tajo.datum.DatumFactory; @@ -38,7 +39,7 @@ public class TestUniformRangePartition { @Test public void testPartitionForINT2Asc() { - Schema schema = new Schema() + Schema schema = SchemaFactory.newV1() .addColumn("col1", Type.INT2); SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema); @@ -68,7 +69,7 @@ public void testPartitionForINT2Asc() { @Test public void testPartitionForINT2Desc() { - Schema schema = new Schema() + Schema schema = SchemaFactory.newV1() .addColumn("col1", Type.INT2); SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema); @@ -99,7 +100,7 @@ public void testPartitionForINT2Desc() { @Test public void testPartitionForINT4Asc() { - Schema schema = new Schema() + Schema schema = SchemaFactory.newV1() .addColumn("col1", Type.INT4); SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema); @@ -129,7 +130,7 @@ public void testPartitionForINT4Asc() { @Test public void testPartitionForINT4Desc() { - Schema schema = new Schema() + Schema schema = SchemaFactory.newV1() .addColumn("col1", Type.INT4); SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema); @@ -160,7 +161,7 @@ public void testPartitionForINT4Desc() { @Test public void testPartitionForINT8Asc() { - Schema schema = new Schema() + Schema schema = SchemaFactory.newV1() .addColumn("col1", Type.INT8); SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema); @@ -190,7 +191,7 @@ public void testPartitionForINT8Asc() { @Test public void testPartitionForInt8Desc() { - Schema schema = new Schema() + Schema schema = SchemaFactory.newV1() .addColumn("col1", Type.INT8); SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema); @@ -221,7 +222,7 @@ public void testPartitionForInt8Desc() { @Test public void testPartitionForFloat4Asc() { - Schema schema = new Schema() + Schema schema = SchemaFactory.newV1() .addColumn("col1", Type.FLOAT4); SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema); @@ -251,7 +252,7 @@ public void testPartitionForFloat4Asc() { @Test public void testPartitionForFloat4Desc() { - Schema schema = new Schema() + Schema schema = SchemaFactory.newV1() .addColumn("col1", Type.FLOAT4); SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema); @@ -282,7 +283,7 @@ public void testPartitionForFloat4Desc() { @Test public void testPartitionForFloat8Asc() { - Schema schema = new Schema() + Schema schema = SchemaFactory.newV1() .addColumn("col1", Type.FLOAT8); SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema); @@ -312,7 +313,7 @@ public void testPartitionForFloat8Asc() { @Test public void testPartitionForFloat8Desc() { - Schema schema = new Schema() + Schema schema = SchemaFactory.newV1() .addColumn("col1", Type.FLOAT8); SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema); @@ -346,7 +347,7 @@ public void testPartitionForFloat8Desc() { */ @Test public void testIncrementOfText() { - Schema schema = new Schema() + Schema schema = SchemaFactory.newV1() .addColumn("l_returnflag", Type.TEXT) .addColumn("l_linestatus", Type.TEXT); @@ -393,7 +394,7 @@ public void testIncrementOfText() { */ @Test public void testIncrementOfText2() { - Schema schema = new Schema() + Schema schema = SchemaFactory.newV1() .addColumn("l_returnflag", Type.TEXT) .addColumn("l_linestatus", Type.TEXT); @@ -438,7 +439,7 @@ public void testIncrementOfText2() { */ @Test public void testIncrementOfText3() { - Schema schema = new Schema() + Schema schema = SchemaFactory.newV1() .addColumn("l_returnflag", Type.TEXT) .addColumn("l_linestatus", Type.TEXT) .addColumn("final", Type.TEXT); @@ -471,7 +472,7 @@ public void testIncrementOfText3() { @Test public void testIncrementOfUnicode() { - Schema schema = new Schema() + Schema schema = SchemaFactory.newV1() .addColumn("col1", Type.TEXT); SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema); @@ -499,7 +500,7 @@ public void testIncrementOfUnicode() { @Test public void testIncrementOfUnicodeOneCharSinglePartition() { - Schema schema = new Schema() + Schema schema = SchemaFactory.newV1() .addColumn("col1", Type.TEXT); SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema); @@ -529,7 +530,7 @@ public void testIncrementOfUnicodeOneCharSinglePartition() { @Test public void testIncrementOfUnicodeOneCharMultiPartition() { - Schema schema = new Schema() + Schema schema = SchemaFactory.newV1() .addColumn("col1", Type.TEXT); SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema); @@ -559,7 +560,7 @@ public void testIncrementOfUnicodeOneCharMultiPartition() { @Test public void testPartitionForUnicodeTextAsc() { - Schema schema = new Schema() + Schema schema = SchemaFactory.newV1() .addColumn("col1", Type.TEXT); SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema); @@ -589,7 +590,7 @@ public void testPartitionForUnicodeTextAsc() { @Test public void testPartitionForUnicodeDiffLenBeginTextAsc() { - Schema schema = new Schema() + Schema schema = SchemaFactory.newV1() .addColumn("col1", Type.TEXT); SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema); @@ -619,7 +620,7 @@ public void testPartitionForUnicodeDiffLenBeginTextAsc() { @Test public void testPartitionForUnicodeDiffLenEndTextAsc() { - Schema schema = new Schema() + Schema schema = SchemaFactory.newV1() .addColumn("col1", Type.TEXT); SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema); @@ -649,7 +650,7 @@ public void testPartitionForUnicodeDiffLenEndTextAsc() { @Test public void testPartitionForUnicodeTextDesc() { - Schema schema = new Schema() + Schema schema = SchemaFactory.newV1() .addColumn("col1", Type.TEXT); SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema); @@ -680,7 +681,7 @@ public void testPartitionForUnicodeTextDesc() { @Test public void testPartitionForUnicodeDiffLenBeginTextDesc() { - Schema schema = new Schema() + Schema schema = SchemaFactory.newV1() .addColumn("col1", Type.TEXT); SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema); @@ -711,7 +712,7 @@ public void testPartitionForUnicodeDiffLenBeginTextDesc() { @Test public void testPartitionForUnicodeDiffLenEndTextDesc() { - Schema schema = new Schema() + Schema schema = SchemaFactory.newV1() .addColumn("col1", Type.TEXT); SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema); @@ -742,7 +743,7 @@ public void testPartitionForUnicodeDiffLenEndTextDesc() { @Test public void testIncrementOfInt8() { - Schema schema = new Schema() + Schema schema = SchemaFactory.newV1() .addColumn("l_orderkey", Type.INT8) .addColumn("l_linenumber", Type.INT8); @@ -769,7 +770,7 @@ public void testIncrementOfInt8() { } @Test public void testIncrementOfInt8AndFinal() { - Schema schema = new Schema() + Schema schema = SchemaFactory.newV1() .addColumn("l_orderkey", Type.INT8) .addColumn("l_linenumber", Type.INT8) .addColumn("final", Type.INT8); @@ -802,7 +803,7 @@ public void testIncrementOfInt8() { @Test public void testIncrementOfFloat8() { - Schema schema = new Schema() + Schema schema = SchemaFactory.newV1() .addColumn("l_orderkey", Type.FLOAT8) .addColumn("l_linenumber", Type.FLOAT8) .addColumn("final", Type.FLOAT8); @@ -835,7 +836,7 @@ public void testIncrementOfFloat8() { @Test public void testIncrementOfInet4() { - Schema schema = new Schema() + Schema schema = SchemaFactory.newV1() .addColumn("l_orderkey", Type.INET4) .addColumn("l_linenumber", Type.INET4) .addColumn("final", Type.INET4); @@ -868,7 +869,7 @@ public void testIncrementOfInet4() { @Test public void testPartition() { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("l_returnflag", Type.TEXT); schema.addColumn("l_linestatus", Type.TEXT); @@ -897,7 +898,7 @@ public void testPartition() { @Test public void testPartitionForOnePartNum() { - Schema schema = new Schema() + Schema schema = SchemaFactory.newV1() .addColumn("l_returnflag", Type.TEXT) .addColumn("l_linestatus", Type.TEXT); @@ -919,7 +920,7 @@ public void testPartitionForOnePartNum() { @Test public void testPartitionForOnePartNumWithOneOfTheValueNull() { - Schema schema = new Schema() + Schema schema = SchemaFactory.newV1() .addColumn("l_returnflag", Type.TEXT) .addColumn("l_linestatus", Type.TEXT); @@ -941,7 +942,7 @@ public void testPartitionForOnePartNumWithOneOfTheValueNull() { @Test public void testPartitionForMultipleChars() { - Schema schema = new Schema() + Schema schema = SchemaFactory.newV1() .addColumn("KEY1", Type.TEXT); SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema); @@ -970,7 +971,7 @@ public void testPartitionForMultipleChars() { @Test public void testPartitionForMultipleChars2() { - Schema schema = new Schema() + Schema schema = SchemaFactory.newV1() .addColumn("KEY1", Type.TEXT); SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema); @@ -1001,7 +1002,7 @@ public void testPartitionForMultipleChars2() { @Test public void testPartitionForMultipleChars2Desc() { - Schema schema = new Schema() + Schema schema = SchemaFactory.newV1() .addColumn("KEY1", Type.TEXT); SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema); @@ -1033,7 +1034,7 @@ public void testPartitionForMultipleChars2Desc() { @Test public void testPartitionForMultipleCharsWithSameFirstChar() { - Schema schema = new Schema() + Schema schema = SchemaFactory.newV1() .addColumn("KEY1", Type.TEXT); SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema); @@ -1064,7 +1065,7 @@ public void testPartitionForMultipleCharsWithSameFirstChar() { @Test public void testPartitionForOnePartNumWithBothValueNull() { - Schema schema = new Schema() + Schema schema = SchemaFactory.newV1() .addColumn("l_returnflag", Type.TEXT) .addColumn("l_linestatus", Type.TEXT); @@ -1086,7 +1087,7 @@ public void testPartitionForOnePartNumWithBothValueNull() { @Test public void testPartitionWithNull() { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("l_returnflag", Type.TEXT); schema.addColumn("l_linestatus", Type.TEXT); @@ -1115,7 +1116,7 @@ public void testPartitionWithNull() { @Test public void testPartitionWithINET4() { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("l_returnflag", Type.INET4); schema.addColumn("l_linestatus", Type.INET4); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestExternalSortExec.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestExternalSortExec.java index 30c46e526b..580fe86a6a 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestExternalSortExec.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestExternalSortExec.java @@ -79,7 +79,7 @@ public void setUp() throws Exception { catalog.createDatabase(TajoConstants.DEFAULT_DATABASE_NAME, DEFAULT_TABLESPACE_NAME); conf.setVar(TajoConf.ConfVars.WORKER_TEMPORAL_DIR, testDir.toString()); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("managerid", Type.INT4); schema.addColumn("empid", Type.INT4); schema.addColumn("deptname", Type.TEXT); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestFullOuterHashJoinExec.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestFullOuterHashJoinExec.java index 2e26a2a0c6..40dc3735f7 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestFullOuterHashJoinExec.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestFullOuterHashJoinExec.java @@ -101,7 +101,7 @@ public void setUp() throws Exception { // 7 | dep_7 | 1007 // 8 | dep_8 | 1008 // 9 | dep_9 | 1009 - Schema dep3Schema = new Schema(); + Schema dep3Schema = SchemaFactory.newV1(); dep3Schema.addColumn("dep_id", Type.INT4); dep3Schema.addColumn("dep_name", Type.TEXT); dep3Schema.addColumn("loc_id", Type.INT4); @@ -131,7 +131,7 @@ public void setUp() throws Exception { // 102 | job_102 // 103 | job_103 - Schema job3Schema = new Schema(); + Schema job3Schema = SchemaFactory.newV1(); job3Schema.addColumn("job_id", Type.INT4); job3Schema.addColumn("job_title", Type.TEXT); @@ -166,7 +166,7 @@ public void setUp() throws Exception { // 21 | fn_21 | ln_21 | 1 | 123 | 101 // 23 | fn_23 | ln_23 | 3 | 369 | 103 - Schema emp3Schema = new Schema(); + Schema emp3Schema = SchemaFactory.newV1(); emp3Schema.addColumn("emp_id", Type.INT4); emp3Schema.addColumn("first_name", Type.TEXT); emp3Schema.addColumn("last_name", Type.TEXT); @@ -222,7 +222,7 @@ public void setUp() throws Exception { // ----------------------------------------------- // this table is empty, no rows - Schema phone3Schema = new Schema(); + Schema phone3Schema = SchemaFactory.newV1(); phone3Schema.addColumn("emp_id", Type.INT4); phone3Schema.addColumn("phone_number", Type.TEXT); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestFullOuterMergeJoinExec.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestFullOuterMergeJoinExec.java index fd42b9a990..9c426adce8 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestFullOuterMergeJoinExec.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestFullOuterMergeJoinExec.java @@ -105,7 +105,7 @@ public void setUp() throws Exception { // 7 | dep_7 | 1007 // 8 | dep_8 | 1008 // 9 | dep_9 | 1009 - Schema dep3Schema = new Schema(); + Schema dep3Schema = SchemaFactory.newV1(); dep3Schema.addColumn("dep_id", Type.INT4); dep3Schema.addColumn("dep_name", Type.TEXT); dep3Schema.addColumn("loc_id", Type.INT4); @@ -143,7 +143,7 @@ public void setUp() throws Exception { // 8 | dep_8 | 1008 // 9 | dep_9 | 1009 // 10 | dep_10 | 1010 - Schema dep4Schema = new Schema(); + Schema dep4Schema = SchemaFactory.newV1(); dep4Schema.addColumn("dep_id", Type.INT4); dep4Schema.addColumn("dep_name", Type.TEXT); dep4Schema.addColumn("loc_id", Type.INT4); @@ -175,7 +175,7 @@ public void setUp() throws Exception { // 102 | job_102 // 103 | job_103 - Schema job3Schema = new Schema(); + Schema job3Schema = SchemaFactory.newV1(); job3Schema.addColumn("job_id", Type.INT4); job3Schema.addColumn("job_title", Type.TEXT); @@ -210,7 +210,7 @@ public void setUp() throws Exception { // 21 | fn_21 | ln_21 | 1 | 123 | 101 // 23 | fn_23 | ln_23 | 3 | 369 | 103 - Schema emp3Schema = new Schema(); + Schema emp3Schema = SchemaFactory.newV1(); emp3Schema.addColumn("emp_id", Type.INT4); emp3Schema.addColumn("first_name", Type.TEXT); emp3Schema.addColumn("last_name", Type.TEXT); @@ -266,7 +266,7 @@ public void setUp() throws Exception { // ----------------------------------------------- // this table is empty, no rows - Schema phone3Schema = new Schema(); + Schema phone3Schema = SchemaFactory.newV1(); phone3Schema.addColumn("emp_id", Type.INT4); phone3Schema.addColumn("phone_number", Type.TEXT); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashAntiJoinExec.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashAntiJoinExec.java index aeda300332..f4257f1c2c 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashAntiJoinExec.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashAntiJoinExec.java @@ -78,7 +78,7 @@ public void setUp() throws Exception { catalog.createDatabase(DEFAULT_DATABASE_NAME, DEFAULT_TABLESPACE_NAME); conf = util.getConfiguration(); - Schema employeeSchema = new Schema(); + Schema employeeSchema = SchemaFactory.newV1(); employeeSchema.addColumn("managerid", Type.INT4); employeeSchema.addColumn("empid", Type.INT4); employeeSchema.addColumn("memid", Type.INT4); @@ -105,7 +105,7 @@ public void setUp() throws Exception { employee = CatalogUtil.newTableDesc("default.employee", employeeSchema, employeeMeta, employeePath); catalog.createTable(employee); - Schema peopleSchema = new Schema(); + Schema peopleSchema = SchemaFactory.newV1(); peopleSchema.addColumn("empid", Type.INT4); peopleSchema.addColumn("fk_memid", Type.INT4); peopleSchema.addColumn("name", Type.TEXT); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashJoinExec.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashJoinExec.java index 2f4d66f090..0731d9ce9b 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashJoinExec.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashJoinExec.java @@ -80,7 +80,7 @@ public void setUp() throws Exception { catalog.createDatabase(TajoConstants.DEFAULT_DATABASE_NAME, DEFAULT_TABLESPACE_NAME); conf = util.getConfiguration(); - Schema employeeSchema = new Schema(); + Schema employeeSchema = SchemaFactory.newV1(); employeeSchema.addColumn("managerid", Type.INT4); employeeSchema.addColumn("empid", Type.INT4); employeeSchema.addColumn("memid", Type.INT4); @@ -104,7 +104,7 @@ public void setUp() throws Exception { employee = CatalogUtil.newTableDesc("default.employee", employeeSchema, employeeMeta, employeePath); catalog.createTable(employee); - Schema peopleSchema = new Schema(); + Schema peopleSchema = SchemaFactory.newV1(); peopleSchema.addColumn("empid", Type.INT4); peopleSchema.addColumn("fk_memid", Type.INT4); peopleSchema.addColumn("name", Type.TEXT); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashSemiJoinExec.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashSemiJoinExec.java index 2b50310c0c..524465228f 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashSemiJoinExec.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashSemiJoinExec.java @@ -78,7 +78,7 @@ public void setUp() throws Exception { catalog.createDatabase(DEFAULT_DATABASE_NAME, DEFAULT_TABLESPACE_NAME); conf = util.getConfiguration(); - Schema employeeSchema = new Schema(); + Schema employeeSchema = SchemaFactory.newV1(); employeeSchema.addColumn("managerid", Type.INT4); employeeSchema.addColumn("empid", Type.INT4); employeeSchema.addColumn("memid", Type.INT4); @@ -105,7 +105,7 @@ public void setUp() throws Exception { employee = CatalogUtil.newTableDesc("default.employee", employeeSchema, employeeMeta, employeePath); catalog.createTable(employee); - Schema peopleSchema = new Schema(); + Schema peopleSchema = SchemaFactory.newV1(); peopleSchema.addColumn("empid", Type.INT4); peopleSchema.addColumn("fk_memid", Type.INT4); peopleSchema.addColumn("name", Type.TEXT); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestLeftOuterHashJoinExec.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestLeftOuterHashJoinExec.java index ab5f5093c7..61ccd002ab 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestLeftOuterHashJoinExec.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestLeftOuterHashJoinExec.java @@ -99,7 +99,7 @@ public void setUp() throws Exception { // 7 | dep_7 | 1007 // 8 | dep_8 | 1008 // 9 | dep_9 | 1009 - Schema dep3Schema = new Schema(); + Schema dep3Schema = SchemaFactory.newV1(); dep3Schema.addColumn("dep_id", Type.INT4); dep3Schema.addColumn("dep_name", Type.TEXT); dep3Schema.addColumn("loc_id", Type.INT4); @@ -129,7 +129,7 @@ public void setUp() throws Exception { // 102 | job_102 // 103 | job_103 - Schema job3Schema = new Schema(); + Schema job3Schema = SchemaFactory.newV1(); job3Schema.addColumn("job_id", Type.INT4); job3Schema.addColumn("job_title", Type.TEXT); @@ -165,7 +165,7 @@ public void setUp() throws Exception { // 21 | fn_21 | ln_21 | 1 | 123 | 101 // 23 | fn_23 | ln_23 | 3 | 369 | 103 - Schema emp3Schema = new Schema(); + Schema emp3Schema = SchemaFactory.newV1(); emp3Schema.addColumn("emp_id", Type.INT4); emp3Schema.addColumn("first_name", Type.TEXT); emp3Schema.addColumn("last_name", Type.TEXT); @@ -222,7 +222,7 @@ public void setUp() throws Exception { // ----------------------------------------------- // this table is empty, no rows - Schema phone3Schema = new Schema(); + Schema phone3Schema = SchemaFactory.newV1(); phone3Schema.addColumn("emp_id", Type.INT4); phone3Schema.addColumn("phone_number", Type.TEXT); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestMergeJoinExec.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestMergeJoinExec.java index d29782573f..88018e9802 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestMergeJoinExec.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestMergeJoinExec.java @@ -78,7 +78,7 @@ public void setUp() throws Exception { catalog.createDatabase(TajoConstants.DEFAULT_DATABASE_NAME, DEFAULT_TABLESPACE_NAME); conf = util.getConfiguration(); - Schema employeeSchema = new Schema(); + Schema employeeSchema = SchemaFactory.newV1(); employeeSchema.addColumn("managerid", Type.INT4); employeeSchema.addColumn("empid", Type.INT4); employeeSchema.addColumn("memid", Type.INT4); @@ -108,7 +108,7 @@ public void setUp() throws Exception { employee = CatalogUtil.newTableDesc("default.employee", employeeSchema, employeeMeta, employeePath); catalog.createTable(employee); - Schema peopleSchema = new Schema(); + Schema peopleSchema = SchemaFactory.newV1(); peopleSchema.addColumn("empid", Type.INT4); peopleSchema.addColumn("fk_memid", Type.INT4); peopleSchema.addColumn("name", Type.TEXT); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestPhysicalPlanner.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestPhysicalPlanner.java index 25283991a4..28d99b17e7 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestPhysicalPlanner.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestPhysicalPlanner.java @@ -104,12 +104,12 @@ public static void setUp() throws Exception { catalog.createFunction(funcDesc); } - Schema employeeSchema = new Schema(); + Schema employeeSchema = SchemaFactory.newV1(); employeeSchema.addColumn("name", Type.TEXT); employeeSchema.addColumn("empid", Type.INT4); employeeSchema.addColumn("deptname", Type.TEXT); - Schema scoreSchema = new Schema(); + Schema scoreSchema = SchemaFactory.newV1(); scoreSchema.addColumn("deptname", Type.TEXT); scoreSchema.addColumn("class", Type.TEXT); scoreSchema.addColumn("score", Type.INT4); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestProgressExternalSortExec.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestProgressExternalSortExec.java index 15250a3049..21a08bd4fa 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestProgressExternalSortExec.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestProgressExternalSortExec.java @@ -80,7 +80,7 @@ public void setUp() throws Exception { catalog.createDatabase(DEFAULT_DATABASE_NAME, DEFAULT_TABLESPACE_NAME); conf.setVar(TajoConf.ConfVars.WORKER_TEMPORAL_DIR, testDir.toString()); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("managerid", TajoDataTypes.Type.INT4); schema.addColumn("empid", TajoDataTypes.Type.INT4); schema.addColumn("deptname", TajoDataTypes.Type.TEXT); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestRightOuterHashJoinExec.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestRightOuterHashJoinExec.java index 9a7eaff725..a5c54b8446 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestRightOuterHashJoinExec.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestRightOuterHashJoinExec.java @@ -93,7 +93,7 @@ public void setUp() throws Exception { // 7 | dep_7 | 1007 // 8 | dep_8 | 1008 // 9 | dep_9 | 1009 - Schema dep3Schema = new Schema(); + Schema dep3Schema = SchemaFactory.newV1(); dep3Schema.addColumn("dep_id", Type.INT4); dep3Schema.addColumn("dep_name", Type.TEXT); dep3Schema.addColumn("loc_id", Type.INT4); @@ -124,7 +124,7 @@ public void setUp() throws Exception { // 102 | job_102 // 103 | job_103 - Schema job3Schema = new Schema(); + Schema job3Schema = SchemaFactory.newV1(); job3Schema.addColumn("job_id", Type.INT4); job3Schema.addColumn("job_title", Type.TEXT); @@ -160,7 +160,7 @@ public void setUp() throws Exception { // 21 | fn_21 | ln_21 | 1 | 123 | 101 // 23 | fn_23 | ln_23 | 3 | 369 | 103 - Schema emp3Schema = new Schema(); + Schema emp3Schema = SchemaFactory.newV1(); emp3Schema.addColumn("emp_id", Type.INT4); emp3Schema.addColumn("first_name", Type.TEXT); emp3Schema.addColumn("last_name", Type.TEXT); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestRightOuterMergeJoinExec.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestRightOuterMergeJoinExec.java index 280722b001..22946e93f9 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestRightOuterMergeJoinExec.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestRightOuterMergeJoinExec.java @@ -104,7 +104,7 @@ public void setUp() throws Exception { // 7 | dep_7 | 1007 // 8 | dep_8 | 1008 // 9 | dep_9 | 1009 - Schema dep3Schema = new Schema(); + Schema dep3Schema = SchemaFactory.newV1(); dep3Schema.addColumn("dep_id", Type.INT4); dep3Schema.addColumn("dep_name", Type.TEXT); dep3Schema.addColumn("loc_id", Type.INT4); @@ -143,7 +143,7 @@ public void setUp() throws Exception { // 8 | dep_8 | 1008 // 9 | dep_9 | 1009 // 10 | dep_10 | 1010 - Schema dep4Schema = new Schema(); + Schema dep4Schema = SchemaFactory.newV1(); dep4Schema.addColumn("dep_id", Type.INT4); dep4Schema.addColumn("dep_name", Type.TEXT); dep4Schema.addColumn("loc_id", Type.INT4); @@ -176,7 +176,7 @@ public void setUp() throws Exception { // 102 | job_102 // 103 | job_103 - Schema job3Schema = new Schema(); + Schema job3Schema = SchemaFactory.newV1(); job3Schema.addColumn("job_id", Type.INT4); job3Schema.addColumn("job_title", Type.TEXT); @@ -212,7 +212,7 @@ public void setUp() throws Exception { // 21 | fn_21 | ln_21 | 1 | 123 | 101 // 23 | fn_23 | ln_23 | 3 | 369 | 103 - Schema emp3Schema = new Schema(); + Schema emp3Schema = SchemaFactory.newV1(); emp3Schema.addColumn("emp_id", Type.INT4); emp3Schema.addColumn("first_name", Type.TEXT); emp3Schema.addColumn("last_name", Type.TEXT); @@ -269,7 +269,7 @@ public void setUp() throws Exception { // ----------------------------------------------- // this table is empty, no rows - Schema phone3Schema = new Schema(); + Schema phone3Schema = SchemaFactory.newV1(); phone3Schema.addColumn("emp_id", Type.INT4); phone3Schema.addColumn("phone_number", Type.TEXT); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestSortExec.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestSortExec.java index 872815d7b1..43cc719f5a 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestSortExec.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestSortExec.java @@ -81,7 +81,7 @@ public static void setUp() throws Exception { workDir = CommonTestingUtil.getTestDir(TEST_PATH); sm = TablespaceManager.getLocalFs(); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("managerid", Type.INT4); schema.addColumn("empid", Type.INT4); schema.addColumn("deptname", Type.TEXT); @@ -156,7 +156,7 @@ public final void testNext() throws IOException, TajoException { * Later it should be moved TestUniformPartitions. */ public void testTAJO_946() { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("l_orderkey", Type.INT8); SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestSortIntersectExec.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestSortIntersectExec.java index df786678cb..2012362a83 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestSortIntersectExec.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestSortIntersectExec.java @@ -84,7 +84,7 @@ public void setUp() throws Exception { catalog.createDatabase(DEFAULT_DATABASE_NAME, DEFAULT_TABLESPACE_NAME); conf = util.getConfiguration(); - Schema employeeSchema1 = new Schema(); + Schema employeeSchema1 = SchemaFactory.newV1(); employeeSchema1.addColumn("managerid", TajoDataTypes.Type.INT4); employeeSchema1.addColumn("empid", TajoDataTypes.Type.INT4); employeeSchema1.addColumn("memid", TajoDataTypes.Type.INT4); @@ -111,7 +111,7 @@ public void setUp() throws Exception { employee1 = CatalogUtil.newTableDesc("default.employee1", employeeSchema1, employeeMeta1, employeePath1); catalog.createTable(employee1); - Schema employeeSchema2 = new Schema(); + Schema employeeSchema2 = SchemaFactory.newV1(); employeeSchema2.addColumn("managerid", TajoDataTypes.Type.INT4); employeeSchema2.addColumn("empid", TajoDataTypes.Type.INT4); employeeSchema2.addColumn("memid", TajoDataTypes.Type.INT4); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestTupleSorter.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestTupleSorter.java index 2f7330b09d..3485df420e 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestTupleSorter.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestTupleSorter.java @@ -24,6 +24,7 @@ import org.apache.commons.logging.LogFactory; import org.apache.tajo.catalog.Column; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.catalog.SortSpec; import org.apache.tajo.common.TajoDataTypes.Type; import org.apache.tajo.datum.Datum; @@ -69,7 +70,7 @@ public final void testSortBench() { Column col4 = new Column("col4", Type.INT8); Column col5 = new Column("col5", Type.INTERVAL); - Schema schema = new Schema(new Column[] {col0, col1, col2, col3, col4, col5}); + Schema schema = SchemaFactory.newV1(new Column[] {col0, col1, col2, col3, col4, col5}); long[] time1 = new long[ITERATION]; long[] time2 = new long[ITERATION]; diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestUnSafeTuple.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestUnSafeTuple.java index 48170f667d..e2b865e3e1 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestUnSafeTuple.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestUnSafeTuple.java @@ -20,6 +20,7 @@ import org.apache.tajo.catalog.Column; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.catalog.SchemaUtil; import org.apache.tajo.common.TajoDataTypes.Type; import org.apache.tajo.datum.Datum; @@ -48,7 +49,7 @@ public static void setupClass() { Column col3 = new Column("col3", Type.FLOAT4); Column col4 = new Column("col4", Type.FLOAT8); - schema = new Schema(new Column[]{col0, col1, col2, col3, col4}); + schema = SchemaFactory.newV1(new Column[]{col0, col1, col2, col3, col4}); } @Test diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestGroupByQuery.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestGroupByQuery.java index ea4a7c8f15..b346d0833e 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestGroupByQuery.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestGroupByQuery.java @@ -20,6 +20,7 @@ import org.apache.tajo.*; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.common.TajoDataTypes.Type; import org.apache.tajo.conf.TajoConf.ConfVars; import org.apache.tajo.storage.StorageConstants; @@ -420,7 +421,7 @@ public final void testDistinctAggregationCasebyCase11() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.TEXT); schema.addColumn("code", Type.TEXT); schema.addColumn("qty", Type.INT4); @@ -474,7 +475,7 @@ public final void testDistinctAggregationCaseByCase3() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", Type.TEXT); schema.addColumn("col2", Type.TEXT); schema.addColumn("col3", Type.TEXT); @@ -504,7 +505,7 @@ public final void testDistinctAggregationCaseByCase4() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", Type.TEXT); schema.addColumn("col2", Type.TEXT); @@ -691,7 +692,7 @@ public final void testNumShufflePartition() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", Type.TEXT); schema.addColumn("col2", Type.TEXT); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestHBaseTable.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestHBaseTable.java index d4712dc534..a179f88230 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestHBaseTable.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestHBaseTable.java @@ -37,6 +37,7 @@ import org.apache.tajo.QueryTestCaseBase; import org.apache.tajo.TajoTestingCluster; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.catalog.TableDesc; import org.apache.tajo.common.TajoDataTypes.Type; import org.apache.tajo.conf.TajoConf; @@ -821,7 +822,7 @@ public void testInsertIntoMultiRegion() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.TEXT); schema.addColumn("name", Type.TEXT); List datas = new ArrayList<>(); @@ -877,7 +878,7 @@ public void testInsertIntoMultiRegion2() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.TEXT); schema.addColumn("name", Type.TEXT); List datas = new ArrayList<>(); @@ -935,7 +936,7 @@ public void testInsertIntoMultiRegionWithSplitFile() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.TEXT); schema.addColumn("name", Type.TEXT); List datas = new ArrayList<>(); @@ -993,7 +994,7 @@ public void testInsertIntoMultiRegionMultiRowFields() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id1", Type.TEXT); schema.addColumn("id2", Type.TEXT); schema.addColumn("name", Type.TEXT); @@ -1050,7 +1051,7 @@ public void testInsertIntoBinaryMultiRegion() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4); schema.addColumn("name", Type.TEXT); List datas = new ArrayList<>(); @@ -1106,7 +1107,7 @@ public void testInsertIntoColumnKeyValue() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("rk", Type.TEXT); schema.addColumn("col2_key", Type.TEXT); schema.addColumn("col2_value", Type.TEXT); @@ -1195,7 +1196,7 @@ public void testInsertIntoDifferentType() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4); schema.addColumn("name", Type.TEXT); List datas = new ArrayList<>(); @@ -1267,7 +1268,7 @@ public void testCTAS() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.TEXT); schema.addColumn("name", Type.TEXT); List datas = new ArrayList<>(); @@ -1388,7 +1389,7 @@ public void testInsertIntoLocation() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.TEXT); schema.addColumn("name", Type.TEXT); schema.addColumn("comment", Type.TEXT); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java index 9b5b9ed4a6..34f26a67e9 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java @@ -26,10 +26,7 @@ import org.apache.tajo.QueryTestCaseBase; import org.apache.tajo.TajoConstants; import org.apache.tajo.TajoTestingCluster; -import org.apache.tajo.catalog.Column; -import org.apache.tajo.catalog.Schema; -import org.apache.tajo.catalog.TableDesc; -import org.apache.tajo.catalog.TableMeta; +import org.apache.tajo.catalog.*; import org.apache.tajo.common.TajoDataTypes; import org.apache.tajo.conf.TajoConf.ConfVars; import org.apache.tajo.datum.Datum; @@ -149,37 +146,37 @@ protected static void createCommonTables() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", TajoDataTypes.Type.INT4); schema.addColumn("name", TajoDataTypes.Type.TEXT); String[] data = new String[]{"1|table11-1", "2|table11-2", "3|table11-3", "4|table11-4", "5|table11-5"}; TajoTestingCluster.createTable("jointable11", schema, tableOptions, data, 2); - schema = new Schema(); + schema = SchemaFactory.newV1(); schema.addColumn("id", TajoDataTypes.Type.INT4); schema.addColumn("name", TajoDataTypes.Type.TEXT); data = new String[]{"1|table12-1", "2|table12-2"}; TajoTestingCluster.createTable("jointable12", schema, tableOptions, data, 2); - schema = new Schema(); + schema = SchemaFactory.newV1(); schema.addColumn("id", TajoDataTypes.Type.INT4); schema.addColumn("name", TajoDataTypes.Type.TEXT); data = new String[]{"2|table13-2", "3|table13-3"}; TajoTestingCluster.createTable("jointable13", schema, tableOptions, data); - schema = new Schema(); + schema = SchemaFactory.newV1(); schema.addColumn("id", TajoDataTypes.Type.INT4); schema.addColumn("name", TajoDataTypes.Type.TEXT); data = new String[]{"1|table14-1", "2|table14-2", "3|table14-3", "4|table14-4"}; TajoTestingCluster.createTable("jointable14", schema, tableOptions, data); - schema = new Schema(); + schema = SchemaFactory.newV1(); schema.addColumn("id", TajoDataTypes.Type.INT4); schema.addColumn("name", TajoDataTypes.Type.TEXT); data = new String[]{}; TajoTestingCluster.createTable("jointable15", schema, tableOptions, data); - schema = new Schema(); + schema = SchemaFactory.newV1(); schema.addColumn("id", TajoDataTypes.Type.INT4); schema.addColumn("name", TajoDataTypes.Type.TEXT); data = new String[]{"1000000|a", "1000001|b", "2|c", "3|d", "4|e"}; diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestNullValues.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestNullValues.java index 791a81954f..2bca027aae 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestNullValues.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestNullValues.java @@ -22,6 +22,7 @@ import org.apache.tajo.TajoTestingCluster; import org.apache.tajo.TpchTestBase; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.client.TajoClient; import org.apache.tajo.common.TajoDataTypes.Type; import org.apache.tajo.storage.StorageConstants; @@ -58,7 +59,7 @@ public static void tearDown() { @Test public final void testIsNull() throws Exception { String [] table = new String[] {"nulltable1"}; - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", Type.INT4); schema.addColumn("col2", Type.TEXT); schema.addColumn("col3", Type.FLOAT4); @@ -83,7 +84,7 @@ public final void testIsNull() throws Exception { @Test public final void testIsNotNull() throws Exception { String [] table = new String[] {"nulltable2"}; - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", Type.INT4); schema.addColumn("col2", Type.TEXT); Schema [] schemas = new Schema[] {schema}; @@ -108,7 +109,7 @@ public final void testIsNotNull() throws Exception { @Test public final void testIsNotNull2() throws Exception { String [] table = new String[] {"nulltable3"}; - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", Type.INT8); schema.addColumn("col2", Type.INT8); schema.addColumn("col3", Type.INT8); @@ -138,7 +139,7 @@ public final void testIsNotNull2() throws Exception { @Test public final void testIsNotNull3() throws Exception { String [] table = new String[] {"nulltable4"}; - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", Type.INT8); schema.addColumn("col2", Type.INT8); schema.addColumn("col3", Type.INT8); @@ -251,7 +252,7 @@ public final void testResultSetNull() throws Exception { private ResultSet runNullTableQuery(String tableName, String query, TajoClient client) throws Exception { String [] table = new String[] {tableName}; - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", Type.INT4); schema.addColumn("col2", Type.TEXT); schema.addColumn("col3", Type.FLOAT4); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestSelectQuery.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestSelectQuery.java index e55acf1fc0..96f3bd4b96 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestSelectQuery.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestSelectQuery.java @@ -23,6 +23,7 @@ import org.apache.tajo.TajoProtos.QueryState; import org.apache.tajo.catalog.CatalogService; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.catalog.TableDesc; import org.apache.tajo.client.QueryStatus; import org.apache.tajo.common.TajoDataTypes.Type; @@ -498,7 +499,7 @@ public final void testNowInMultipleTasks() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4); schema.addColumn("name", Type.TEXT); String[] data = new String[]{ "1|table11-1", "2|table11-2", "3|table11-3", "4|table11-4", "5|table11-5" }; diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestSortQuery.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestSortQuery.java index d889d34ea3..582d0b0c77 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestSortQuery.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestSortQuery.java @@ -20,6 +20,7 @@ import org.apache.tajo.*; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.common.TajoDataTypes.Type; import org.apache.tajo.conf.TajoConf.ConfVars; import org.apache.tajo.storage.StorageConstants; @@ -111,7 +112,7 @@ public final void testSortFirstDesc() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", Type.INT4); schema.addColumn("col2", Type.TEXT); String[] data = new String[]{ @@ -213,7 +214,7 @@ public final void testSortOnNullColumn() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4); schema.addColumn("name", Type.TEXT); String[] data = new String[]{ @@ -239,7 +240,7 @@ public final void testSortOnNullColumn2() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4); schema.addColumn("name", Type.TEXT); String[] data = new String[]{ "1|111", "2|\\N", "3|333" }; @@ -276,7 +277,7 @@ public final void testSortOnNullColumn3() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4); schema.addColumn("name", Type.TEXT); String[] data = new String[]{ "1|111", "2|\\N", "3|333" }; @@ -304,7 +305,7 @@ public final void testSortOnNullColumn4() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4); schema.addColumn("name", Type.TEXT); String[] data = new String[]{ "1|111", "2|\\N", "3|333" }; @@ -332,7 +333,7 @@ public final void testSortOnNullColumn5() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4); schema.addColumn("name", Type.TEXT); String[] data = new String[]{ "1|111", "2|\\N", "3|333" }; @@ -362,7 +363,7 @@ public final void testSortOnUnicodeTextAsc() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", Type.INT4); schema.addColumn("col2", Type.TEXT); String[] data = new String[]{ @@ -390,7 +391,7 @@ public final void testSortOnUnicodeTextDesc() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", Type.INT4); schema.addColumn("col2", Type.TEXT); String[] data = new String[]{ diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestTablePartitions.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestTablePartitions.java index de2cbdf9ca..3438759086 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestTablePartitions.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestTablePartitions.java @@ -24,10 +24,7 @@ import org.apache.hadoop.io.compress.CompressionCodecFactory; import org.apache.hadoop.io.compress.DeflateCodec; import org.apache.tajo.*; -import org.apache.tajo.catalog.CatalogService; -import org.apache.tajo.catalog.CatalogUtil; -import org.apache.tajo.catalog.Schema; -import org.apache.tajo.catalog.TableDesc; +import org.apache.tajo.catalog.*; import org.apache.tajo.client.TajoClientUtil; import org.apache.tajo.exception.ReturnStateUtil; import org.apache.tajo.catalog.proto.CatalogProtos.PartitionDescProto; @@ -1094,7 +1091,7 @@ public void testScatteredHashShuffle() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TajoDataTypes.Type.TEXT); schema.addColumn("col2", TajoDataTypes.Type.TEXT); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestWindowQuery.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestWindowQuery.java index 9993992aa9..19b8bbc55d 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestWindowQuery.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestWindowQuery.java @@ -23,6 +23,7 @@ import org.apache.tajo.TajoConstants; import org.apache.tajo.TajoTestingCluster; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.common.TajoDataTypes; import org.apache.tajo.storage.StorageConstants; import org.apache.tajo.util.KeyValueSet; @@ -265,7 +266,7 @@ public final void testFirstValueTime() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", TajoDataTypes.Type.INT4); schema.addColumn("time", TajoDataTypes.Type.TIME); String[] data = new String[]{ "1|12:11:12", "2|10:11:13", "2|05:42:41" }; @@ -300,7 +301,7 @@ public final void testLastValueTime() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", TajoDataTypes.Type.INT4); schema.addColumn("time", TajoDataTypes.Type.TIME); String[] data = new String[]{ "1|12:11:12", "2|10:11:13", "2|05:42:41" }; @@ -335,7 +336,7 @@ public final void testLagTime() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", TajoDataTypes.Type.INT4); schema.addColumn("time", TajoDataTypes.Type.TIME); String[] data = new String[]{ "1|12:11:12", "2|10:11:13", "2|05:42:41" }; @@ -384,7 +385,7 @@ public final void testLeadTime() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", TajoDataTypes.Type.INT4); schema.addColumn("time", TajoDataTypes.Type.TIME); String[] data = new String[]{ "1|12:11:12", "2|10:11:13", "2|05:42:41" }; @@ -440,7 +441,7 @@ public final void testMultipleWindow() throws Exception { tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER); tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", TajoDataTypes.Type.INT4); schema.addColumn("time", TajoDataTypes.Type.TIME); schema.addColumn("name", TajoDataTypes.Type.TEXT); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/util/TestTupleUtil.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/util/TestTupleUtil.java index 4a3565e184..5683c7a8cf 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/util/TestTupleUtil.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/util/TestTupleUtil.java @@ -20,6 +20,7 @@ import org.apache.hadoop.fs.Path; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.catalog.SortSpec; import org.apache.tajo.common.TajoDataTypes.Type; import org.apache.tajo.datum.Datum; @@ -38,7 +39,7 @@ public class TestTupleUtil { @Test public final void testFixedSizeChar() { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", Type.CHAR, 5); Tuple tuple = new VTuple(1); @@ -56,7 +57,7 @@ public final void testFixedSizeChar() { @Test public final void testToBytesAndToTuple() { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", Type.BOOLEAN); schema.addColumn("col2", Type.BIT); schema.addColumn("col3", Type.CHAR); @@ -97,7 +98,7 @@ public final void testGetPartitions() { VTuple sTuple = new VTuple(7); VTuple eTuple = new VTuple(7); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("numByte", Type.BIT); schema.addColumn("numChar", Type.CHAR); @@ -141,7 +142,7 @@ public final void testGetPartitions() { @Test public void testBuildTupleFromPartitionPath() { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("key1", Type.INT8); schema.addColumn("key2", Type.TEXT); diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/storage/TestRowFile.java b/tajo-core-tests/src/test/java/org/apache/tajo/storage/TestRowFile.java index 01ae39ca6d..25f0e6109a 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/storage/TestRowFile.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/storage/TestRowFile.java @@ -28,6 +28,7 @@ import org.apache.tajo.TpchTestBase; import org.apache.tajo.catalog.CatalogUtil; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.catalog.TableMeta; import org.apache.tajo.catalog.statistics.TableStats; import org.apache.tajo.common.TajoDataTypes.Type; @@ -62,7 +63,7 @@ public void teardown() throws Exception { @Test public void test() throws IOException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4); schema.addColumn("age", Type.INT8); schema.addColumn("description", Type.TEXT); diff --git a/tajo-core/src/main/java/org/apache/tajo/benchmark/TPCH.java b/tajo-core/src/main/java/org/apache/tajo/benchmark/TPCH.java index 8472020ca0..9ccfeb7ecc 100644 --- a/tajo-core/src/main/java/org/apache/tajo/benchmark/TPCH.java +++ b/tajo-core/src/main/java/org/apache/tajo/benchmark/TPCH.java @@ -24,6 +24,7 @@ import org.apache.hadoop.fs.Path; import org.apache.tajo.catalog.CatalogUtil; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.catalog.TableMeta; import org.apache.tajo.catalog.partition.PartitionMethodDesc; import org.apache.tajo.catalog.proto.CatalogProtos; @@ -69,7 +70,7 @@ public class TPCH extends BenchmarkSet { @Override public void loadSchemas() { - Schema lineitem = new Schema() + Schema lineitem = SchemaFactory.newV1() .addColumn("l_orderkey", Type.INT4) // 0 .addColumn("l_partkey", Type.INT4) // 1 .addColumn("l_suppkey", Type.INT4) // 2 @@ -90,7 +91,7 @@ public void loadSchemas() { .addColumn("l_comment", Type.TEXT); // 15 schemas.put(LINEITEM, lineitem); - Schema customer = new Schema() + Schema customer = SchemaFactory.newV1() .addColumn("c_custkey", Type.INT4) // 0 .addColumn("c_name", Type.TEXT) // 1 .addColumn("c_address", Type.TEXT) // 2 @@ -101,7 +102,7 @@ public void loadSchemas() { .addColumn("c_comment", Type.TEXT); // 7 schemas.put(CUSTOMER, customer); - Schema customerParts = new Schema() + Schema customerParts = SchemaFactory.newV1() .addColumn("c_custkey", Type.INT4) // 0 .addColumn("c_name", Type.TEXT) // 1 .addColumn("c_address", Type.TEXT) // 2 @@ -111,14 +112,14 @@ public void loadSchemas() { .addColumn("c_comment", Type.TEXT); // 6 schemas.put(CUSTOMER_PARTS, customerParts); - Schema nation = new Schema() + Schema nation = SchemaFactory.newV1() .addColumn("n_nationkey", Type.INT4) // 0 .addColumn("n_name", Type.TEXT) // 1 .addColumn("n_regionkey", Type.INT4) // 2 .addColumn("n_comment", Type.TEXT); // 3 schemas.put(NATION, nation); - Schema part = new Schema() + Schema part = SchemaFactory.newV1() .addColumn("p_partkey", Type.INT4) // 0 .addColumn("p_name", Type.TEXT) // 1 .addColumn("p_mfgr", Type.TEXT) // 2 @@ -130,13 +131,13 @@ public void loadSchemas() { .addColumn("p_comment", Type.TEXT); // 8 schemas.put(PART, part); - Schema region = new Schema() + Schema region = SchemaFactory.newV1() .addColumn("r_regionkey", Type.INT4) // 0 .addColumn("r_name", Type.TEXT) // 1 .addColumn("r_comment", Type.TEXT); // 2 schemas.put(REGION, region); - Schema orders = new Schema() + Schema orders = SchemaFactory.newV1() .addColumn("o_orderkey", Type.INT4) // 0 .addColumn("o_custkey", Type.INT4) // 1 .addColumn("o_orderstatus", Type.TEXT) // 2 @@ -151,7 +152,7 @@ public void loadSchemas() { schemas.put(EMPTY_ORDERS, orders); - Schema partsupp = new Schema() + Schema partsupp = SchemaFactory.newV1() .addColumn("ps_partkey", Type.INT4) // 0 .addColumn("ps_suppkey", Type.INT4) // 1 .addColumn("ps_availqty", Type.INT4) // 2 @@ -159,7 +160,7 @@ public void loadSchemas() { .addColumn("ps_comment", Type.TEXT); // 4 schemas.put(PARTSUPP, partsupp); - Schema supplier = new Schema() + Schema supplier = SchemaFactory.newV1() .addColumn("s_suppkey", Type.INT4) // 0 .addColumn("s_name", Type.TEXT) // 1 .addColumn("s_address", Type.TEXT) // 2 @@ -171,7 +172,7 @@ public void loadSchemas() { } public void loadOutSchema() { - Schema q2 = new Schema() + Schema q2 = SchemaFactory.newV1() .addColumn("s_acctbal", Type.FLOAT8) .addColumn("s_name", Type.TEXT) .addColumn("n_name", Type.TEXT) @@ -207,7 +208,7 @@ public void loadTable(String tableName) throws TajoException { PartitionMethodDesc partitionMethodDesc = null; if (tableName.equals(CUSTOMER_PARTS)) { - Schema expressionSchema = new Schema(); + Schema expressionSchema = SchemaFactory.newV1(); expressionSchema.addColumn("c_nationkey", TajoDataTypes.Type.INT4); partitionMethodDesc = new PartitionMethodDesc( tajo.getCurrentDatabase(), diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/DataChannel.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/DataChannel.java index 10e9973a31..3e6e6bf9f1 100644 --- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/DataChannel.java +++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/DataChannel.java @@ -23,6 +23,7 @@ import org.apache.tajo.ExecutionBlockId; import org.apache.tajo.catalog.Column; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.catalog.SchemaUtil; import org.apache.tajo.util.StringUtils; @@ -68,7 +69,7 @@ public DataChannel(DataChannelProto proto) { this.transmitType = proto.getTransmitType(); this.shuffleType = proto.getShuffleType(); if (proto.hasSchema()) { - this.setSchema(new Schema(proto.getSchema())); + this.setSchema(SchemaFactory.newV1(proto.getSchema())); } if (proto.getShuffleKeysCount() > 0) { shuffleKeys = new Column[proto.getShuffleKeysCount()]; diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/builder/DistinctGroupbyBuilder.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/builder/DistinctGroupbyBuilder.java index 8f7673b3ee..eb8f7adb72 100644 --- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/builder/DistinctGroupbyBuilder.java +++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/builder/DistinctGroupbyBuilder.java @@ -23,6 +23,7 @@ import org.apache.commons.logging.LogFactory; import org.apache.tajo.catalog.Column; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.catalog.proto.CatalogProtos.SortSpecProto; import org.apache.tajo.common.TajoDataTypes.Type; import org.apache.tajo.engine.planner.global.DataChannel; @@ -644,7 +645,7 @@ select col1, count(distinct col2), count(distinct col3), sum(col4) from ... grou //Set SecondStage ColumnId and Input schema secondStageDistinctNode.setResultColumnIds(secondStageColumnIds); - Schema secondStageInSchema = new Schema(); + Schema secondStageInSchema = SchemaFactory.newV1(); //TODO merged tuple schema int index = 0; for(GroupbyNode eachNode: secondStageDistinctNode.getSubPlans()) { diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/BSTIndexScanExec.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/BSTIndexScanExec.java index 89c5b3d50e..80029898f5 100644 --- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/BSTIndexScanExec.java +++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/BSTIndexScanExec.java @@ -22,6 +22,7 @@ import org.apache.hadoop.io.IOUtils; import org.apache.tajo.catalog.Column; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.catalog.SortSpec; import org.apache.tajo.catalog.proto.CatalogProtos; import org.apache.tajo.catalog.proto.CatalogProtos.FragmentProto; @@ -93,7 +94,7 @@ public BSTIndexScanExec(TaskAttemptContext context, IndexScanNode plan, } private static Schema mergeSubSchemas(Schema originalSchema, Schema subSchema, List targets, EvalNode qual) { - Schema mergedSchema = new Schema(); + Schema mergedSchema = SchemaFactory.newV1(); Set qualAndTargets = new HashSet<>(); qualAndTargets.addAll(EvalTreeUtil.findUniqueColumns(qual)); for (Target target : targets) { @@ -131,7 +132,7 @@ public void init() throws IOException { // in the case where projected column or expression are given // the target can be an empty list. if (plan.hasTargets()) { - projected = new Schema(); + projected = SchemaFactory.newV1(); Set columnSet = new HashSet<>(); if (plan.hasQual()) { diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/ColPartitionStoreExec.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/ColPartitionStoreExec.java index bc667cbc4f..1142095201 100644 --- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/ColPartitionStoreExec.java +++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/ColPartitionStoreExec.java @@ -25,10 +25,7 @@ import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.tajo.SessionVars; -import org.apache.tajo.catalog.CatalogUtil; -import org.apache.tajo.catalog.Column; -import org.apache.tajo.catalog.Schema; -import org.apache.tajo.catalog.TableMeta; +import org.apache.tajo.catalog.*; import org.apache.tajo.catalog.proto.CatalogProtos.PartitionDescProto; import org.apache.tajo.catalog.proto.CatalogProtos.PartitionKeyProto; import org.apache.tajo.catalog.statistics.TableStats; @@ -87,7 +84,7 @@ public ColPartitionStoreExec(TaskAttemptContext context, StoreTableNode plan, Ph if (plan.getType() == NodeType.INSERT && keyNum > 0) { Column[] removedPartitionColumns = new Column[this.outSchema.size() - keyNum]; System.arraycopy(this.outSchema.toArray(), 0, removedPartitionColumns, 0, removedPartitionColumns.length); - this.outSchema = new Schema(removedPartitionColumns); + this.outSchema = SchemaFactory.newV1(removedPartitionColumns); } keyIds = new int[keyNum]; diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/SeqScanExec.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/SeqScanExec.java index 3ddad1e5dc..04b23f873b 100644 --- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/SeqScanExec.java +++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/SeqScanExec.java @@ -142,7 +142,7 @@ public Schema getProjectSchema() { // in the case where projected column or expression are given // the target can be an empty list. if (plan.hasTargets()) { - projected = new Schema(); + projected = SchemaFactory.newV1(); Set columnSet = new HashSet<>(); if (plan.hasQual()) { diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/WindowAggExec.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/WindowAggExec.java index 44845e7de7..04a4a197ca 100644 --- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/WindowAggExec.java +++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/WindowAggExec.java @@ -21,6 +21,7 @@ import com.google.common.collect.Lists; import org.apache.tajo.catalog.Column; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.catalog.SortSpec; import org.apache.tajo.datum.Datum; import org.apache.tajo.plan.expr.EvalNode; @@ -119,7 +120,7 @@ public WindowAggExec(TaskAttemptContext context, WindowAggNode plan, PhysicalExe endCurrentRowFlags = new boolean[functions.length]; List additionalSortKeyColumns = Lists.newArrayList(); - Schema rewrittenSchema = new Schema(outSchema); + Schema rewrittenSchema = SchemaFactory.newV1(outSchema); for (int i = 0; i < functions.length; i++) { WindowSpec.WindowEndBound endBound = functions[i].getWindowFrame().getEndBound(); switch (endBound.getBoundType()) { @@ -160,7 +161,7 @@ public WindowAggExec(TaskAttemptContext context, WindowAggNode plan, PhysicalExe } sortKeyColumns = new int[additionalSortKeyColumns.size()]; - schemaForOrderBy = new Schema(outSchema); + schemaForOrderBy = SchemaFactory.newV1(outSchema); for (int i = 0; i < additionalSortKeyColumns.size(); i++) { sortKeyColumns[i] = i; schemaForOrderBy.addColumn(additionalSortKeyColumns.get(i)); diff --git a/tajo-core/src/main/java/org/apache/tajo/master/TajoMasterClientService.java b/tajo-core/src/main/java/org/apache/tajo/master/TajoMasterClientService.java index bfba51d70b..205329bba1 100644 --- a/tajo-core/src/main/java/org/apache/tajo/master/TajoMasterClientService.java +++ b/tajo-core/src/main/java/org/apache/tajo/master/TajoMasterClientService.java @@ -876,7 +876,7 @@ public TableResponse createExternalTable(RpcController controller, CreateTableRe Schema schema = null; if (request.hasSchema()) { - schema = new Schema(request.getSchema()); + schema = SchemaFactory.newV1(request.getSchema()); } TableMeta meta = new TableMeta(request.getMeta()); diff --git a/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java b/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java index 2740728db6..47d4b4f883 100644 --- a/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java +++ b/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java @@ -21,6 +21,7 @@ import org.apache.hadoop.fs.Path; import org.apache.tajo.catalog.Column; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.exception.TajoException; import org.apache.tajo.plan.LogicalPlan; import org.apache.tajo.plan.Target; @@ -154,7 +155,7 @@ private Schema sortSchema(Schema schema) { Column[] columns = schema.toArray(); Arrays.sort(columns, columnComparator); - Schema sorted = new Schema(); + Schema sorted = SchemaFactory.newV1(); for (Column col : columns) { sorted.addColumn(col); } diff --git a/tajo-core/src/main/java/org/apache/tajo/master/exec/QueryExecutor.java b/tajo-core/src/main/java/org/apache/tajo/master/exec/QueryExecutor.java index 641e2b92d3..da11bd8fc8 100644 --- a/tajo-core/src/main/java/org/apache/tajo/master/exec/QueryExecutor.java +++ b/tajo-core/src/main/java/org/apache/tajo/master/exec/QueryExecutor.java @@ -218,7 +218,7 @@ public void execExplain(Session session, String query, LogicalPlan plan, QueryCo explainStr = PlannerUtil.buildExplainString(plan.getRootBlock().getRoot()); } - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("explain", TajoDataTypes.Type.TEXT); SerializedResultSet.Builder serializedResBuilder = SerializedResultSet.newBuilder(); diff --git a/tajo-core/src/main/java/org/apache/tajo/querymaster/Repartitioner.java b/tajo-core/src/main/java/org/apache/tajo/querymaster/Repartitioner.java index 4e4251a454..8fdd6ce38e 100644 --- a/tajo-core/src/main/java/org/apache/tajo/querymaster/Repartitioner.java +++ b/tajo-core/src/main/java/org/apache/tajo/querymaster/Repartitioner.java @@ -634,7 +634,7 @@ public static void scheduleRangeShuffledFetches(TaskSchedulerContext schedulerCo ExecutionBlock sampleChildBlock = masterPlan.getChild(stage.getId(), 0); SortNode sortNode = PlannerUtil.findTopNode(sampleChildBlock.getPlan(), NodeType.SORT); SortSpec [] sortSpecs = sortNode.getSortKeys(); - Schema sortSchema = new Schema(channel.getShuffleKeys()); + Schema sortSchema = SchemaFactory.newV1(channel.getShuffleKeys()); TupleRange[] ranges; int determinedTaskNum; diff --git a/tajo-jdbc/src/main/java/org/apache/tajo/jdbc/TajoDatabaseMetaData.java b/tajo-jdbc/src/main/java/org/apache/tajo/jdbc/TajoDatabaseMetaData.java index acb5b698a2..f4bf2b00e6 100644 --- a/tajo-jdbc/src/main/java/org/apache/tajo/jdbc/TajoDatabaseMetaData.java +++ b/tajo-jdbc/src/main/java/org/apache/tajo/jdbc/TajoDatabaseMetaData.java @@ -605,7 +605,7 @@ public ResultSet getPrimaryKeys(String catalog, String schema, String table) thr , new ArrayList()); } - private final static Schema importedExportedSchema = new Schema() + private final static Schema importedExportedSchema = SchemaFactory.newV1() .addColumn("PKTABLE_CAT", Type.VARCHAR) // 0 .addColumn("PKTABLE_SCHEM", Type.VARCHAR) // 1 .addColumn("PKTABLE_NAME", Type.VARCHAR) // 2 diff --git a/tajo-jdbc/src/test/java/org/apache/tajo/jdbc/TestResultSet.java b/tajo-jdbc/src/test/java/org/apache/tajo/jdbc/TestResultSet.java index 4c926bbf2c..0fbb9aa964 100644 --- a/tajo-jdbc/src/test/java/org/apache/tajo/jdbc/TestResultSet.java +++ b/tajo-jdbc/src/test/java/org/apache/tajo/jdbc/TestResultSet.java @@ -69,7 +69,7 @@ public static void setup() throws Exception { conf = util.getConfiguration(); sm = TablespaceManager.getDefault(); - scoreSchema = new Schema(); + scoreSchema = SchemaFactory.newV1(); scoreSchema.addColumn("deptname", Type.TEXT); scoreSchema.addColumn("score", Type.INT4); scoreMeta = CatalogUtil.newTableMeta("TEXT"); @@ -197,7 +197,7 @@ public void testDateTimeType() throws Exception { String query = "select col1, col2, col3 from " + tableName; String [] table = new String[] {tableName}; - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", Type.DATE); schema.addColumn("col2", Type.TIME); schema.addColumn("col3", Type.TIMESTAMP); diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java index 3d8ad416b6..f791a3d8a4 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java @@ -1228,7 +1228,7 @@ private List getNewlyEvaluatedExprsForJoin(PlanContext context, JoinNode } private static Schema getNaturalJoinSchema(LogicalNode left, LogicalNode right) { - Schema joinSchema = new Schema(); + Schema joinSchema = SchemaFactory.newV1(); Schema commons = SchemaUtil.getNaturalJoinColumns(left.getOutSchema(), right.getOutSchema()); joinSchema.addColumns(commons); for (Column c : left.getOutSchema().getRootColumns()) { @@ -1677,7 +1677,7 @@ private InsertNode buildInsertIntoTablePlan(PlanContext context, InsertNode inse // See PreLogicalPlanVerifier.visitInsert. // It guarantees that the equivalence between the numbers of target and projected columns. ColumnReferenceExpr [] targets = expr.getTargetColumns(); - Schema targetColumns = new Schema(); + Schema targetColumns = SchemaFactory.newV1(); for (ColumnReferenceExpr target : targets) { Column targetColumn = desc.getLogicalSchema().getColumn(target.getCanonicalName().replace(".", "/")); @@ -1697,7 +1697,7 @@ private InsertNode buildInsertIntoTablePlan(PlanContext context, InsertNode inse Schema tableSchema = desc.getLogicalSchema(); Schema projectedSchema = insertNode.getChild().getOutSchema(); - Schema targetColumns = new Schema(); + Schema targetColumns = SchemaFactory.newV1(); for (int i = 0; i < projectedSchema.size(); i++) { targetColumns.addColumn(tableSchema.getColumn(i)); } @@ -1956,7 +1956,7 @@ public LogicalNode visitCreateTable(PlanContext context, Stack stack, Crea queryOutputSchema.size() < partitionExpressionSchema.size()) { throw makeSyntaxError("Partition columns cannot be more than table columns."); } - Schema tableSchema = new Schema(); + Schema tableSchema = SchemaFactory.newV1(); for (int i = 0; i < queryOutputSchema.size() - partitionExpressionSchema.size(); i++) { tableSchema.addColumn(queryOutputSchema.getColumn(i)); } @@ -1964,7 +1964,7 @@ public LogicalNode visitCreateTable(PlanContext context, Stack stack, Crea createTableNode.setTableSchema(tableSchema); } else { // Convert the schema of subquery into the target table's one. - Schema schema = new Schema(subQuery.getOutSchema()); + Schema schema = SchemaFactory.newV1(subQuery.getOutSchema()); schema.setQualifier(createTableNode.getTableName()); createTableNode.setOutSchema(schema); createTableNode.setTableSchema(schema); @@ -2040,7 +2040,7 @@ private PartitionMethodDesc getPartitionMethod(PlanContext context, * @return schema transformed from table definition elements */ private Schema convertColumnsToSchema(ColumnDefinition[] elements) { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); for (ColumnDefinition columnDefinition: elements) { schema.addColumn(convertColumn(columnDefinition)); @@ -2056,7 +2056,7 @@ private Schema convertColumnsToSchema(ColumnDefinition[] elements) { * @return schema transformed from table definition elements */ private static Schema convertTableElementsSchema(ColumnDefinition[] elements) { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); for (ColumnDefinition columnDefinition: elements) { schema.addColumn(convertColumn(columnDefinition)); diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/expr/EvalTreeUtil.java b/tajo-plan/src/main/java/org/apache/tajo/plan/expr/EvalTreeUtil.java index 3318d35556..31cd1c6753 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/expr/EvalTreeUtil.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/expr/EvalTreeUtil.java @@ -27,6 +27,7 @@ import org.apache.tajo.catalog.CatalogUtil; import org.apache.tajo.catalog.Column; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.common.TajoDataTypes.DataType; import org.apache.tajo.datum.Datum; import org.apache.tajo.exception.TajoInternalError; @@ -144,7 +145,7 @@ public static List findAllColumnRefs(EvalNode node) { } public static Schema getSchemaByTargets(Schema inputSchema, List targets) { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); for (Target target : targets) { schema.addColumn( target.hasAlias() ? target.getAlias() : target.getEvalTree().getName(), diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/function/python/PythonScriptEngine.java b/tajo-plan/src/main/java/org/apache/tajo/plan/function/python/PythonScriptEngine.java index 05a72fe517..8bccdc4324 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/function/python/PythonScriptEngine.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/function/python/PythonScriptEngine.java @@ -290,7 +290,7 @@ enum COMMAND_IDX { private final TableMeta pipeMeta = CatalogUtil.newTableMeta("TEXT"); private final Tuple EMPTY_INPUT = new VTuple(0); - private final Schema EMPTY_SCHEMA = new Schema(); + private final Schema EMPTY_SCHEMA = SchemaFactory.newV1(); public PythonScriptEngine(FunctionDesc functionDesc) { if (!functionDesc.getInvocation().hasPython() && !functionDesc.getInvocation().hasPythonAggregation()) { @@ -388,27 +388,27 @@ private String[] buildCommand() throws IOException { private void setSchema() { if (invocationDesc.isScalarFunction()) { TajoDataTypes.DataType[] paramTypes = functionSignature.getParamTypes(); - inSchema = new Schema(); + inSchema = SchemaFactory.newV1(); for (int i = 0; i < paramTypes.length; i++) { inSchema.addColumn(new Column("in_" + i, paramTypes[i])); } - outSchema = new Schema(new Column[]{new Column("out", functionSignature.getReturnType())}); + outSchema = SchemaFactory.newV1(new Column[]{new Column("out", functionSignature.getReturnType())}); } else { // UDAF if (firstPhase) { // first phase TajoDataTypes.DataType[] paramTypes = functionSignature.getParamTypes(); - inSchema = new Schema(); + inSchema = SchemaFactory.newV1(); for (int i = 0; i < paramTypes.length; i++) { inSchema.addColumn(new Column("in_" + i, paramTypes[i])); } - outSchema = new Schema(new Column[]{new Column("json", TajoDataTypes.Type.TEXT)}); + outSchema = SchemaFactory.newV1(new Column[]{new Column("json", TajoDataTypes.Type.TEXT)}); } else if (lastPhase) { - inSchema = new Schema(new Column[]{new Column("json", TajoDataTypes.Type.TEXT)}); - outSchema = new Schema(new Column[]{new Column("out", functionSignature.getReturnType())}); + inSchema = SchemaFactory.newV1(new Column[]{new Column("json", TajoDataTypes.Type.TEXT)}); + outSchema = SchemaFactory.newV1(new Column[]{new Column("out", functionSignature.getReturnType())}); } else { // intermediate phase - inSchema = outSchema = new Schema(new Column[]{new Column("json", TajoDataTypes.Type.TEXT)}); + inSchema = outSchema = SchemaFactory.newV1(new Column[]{new Column("json", TajoDataTypes.Type.TEXT)}); } } projectionCols = new int[outSchema.size()]; diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/logical/CreateTableNode.java b/tajo-plan/src/main/java/org/apache/tajo/plan/logical/CreateTableNode.java index c8630343ef..3fed56330d 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/logical/CreateTableNode.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/logical/CreateTableNode.java @@ -21,6 +21,7 @@ import com.google.common.base.Objects; import com.google.gson.annotations.Expose; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.plan.PlanString; import org.apache.tajo.util.TUtil; @@ -41,7 +42,7 @@ public int childNum() { public Schema getLogicalSchema() { if (hasPartition()) { - Schema logicalSchema = new Schema(tableSchema); + Schema logicalSchema = SchemaFactory.newV1(tableSchema); logicalSchema.addColumns(getPartitionMethod().getExpressionSchema()); return logicalSchema; } else { diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/logical/InsertNode.java b/tajo-plan/src/main/java/org/apache/tajo/plan/logical/InsertNode.java index eae18bb532..a993d6425f 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/logical/InsertNode.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/logical/InsertNode.java @@ -21,6 +21,7 @@ import com.google.gson.annotations.Expose; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.catalog.TableDesc; import org.apache.tajo.plan.PlanString; import org.apache.tajo.util.TUtil; @@ -123,9 +124,9 @@ public boolean equals(Object obj) { public Object clone() throws CloneNotSupportedException { InsertNode insertNode = (InsertNode) super.clone(); insertNode.overwrite = overwrite; - insertNode.tableSchema = new Schema(tableSchema); - insertNode.targetSchema = targetSchema != null ? new Schema(targetSchema) : null; - insertNode.projectedSchema = projectedSchema != null ? new Schema(projectedSchema) : null; + insertNode.tableSchema = SchemaFactory.newV1(tableSchema); + insertNode.targetSchema = targetSchema != null ? SchemaFactory.newV1(targetSchema) : null; + insertNode.projectedSchema = projectedSchema != null ? SchemaFactory.newV1(projectedSchema) : null; insertNode.uri = uri != null ? uri : null; return insertNode; } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/logical/ScanNode.java b/tajo-plan/src/main/java/org/apache/tajo/plan/logical/ScanNode.java index a3b800162f..5427ba69c8 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/logical/ScanNode.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/logical/ScanNode.java @@ -22,10 +22,7 @@ import com.google.common.base.Preconditions; import com.google.gson.annotations.Expose; import org.apache.commons.lang.StringUtils; -import org.apache.tajo.catalog.CatalogUtil; -import org.apache.tajo.catalog.Schema; -import org.apache.tajo.catalog.SchemaUtil; -import org.apache.tajo.catalog.TableDesc; +import org.apache.tajo.catalog.*; import org.apache.tajo.plan.PlanString; import org.apache.tajo.plan.Target; import org.apache.tajo.plan.expr.EvalNode; @@ -84,7 +81,7 @@ public void init(TableDesc desc, String alias) { String qualifiedAlias = CatalogUtil.buildFQName(databaseName, alias); this.setInSchema(tableDesc.getSchema()); this.getInSchema().setQualifier(qualifiedAlias); - this.setOutSchema(new Schema(getInSchema())); + this.setOutSchema(SchemaFactory.newV1(getInSchema())); logicalSchema = SchemaUtil.getQualifiedLogicalSchema(tableDesc, qualifiedAlias); } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/SelfDescSchemaBuildPhase.java b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/SelfDescSchemaBuildPhase.java index 59adfc5d14..c5ca1ef801 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/SelfDescSchemaBuildPhase.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/SelfDescSchemaBuildPhase.java @@ -401,7 +401,7 @@ public LogicalNode visitRelation(ProcessorContext ctx, Stack stack, Relati private Schema buildSchemaFromColumnSet(Set columns) throws TajoException { SchemaGraph schemaGraph = new SchemaGraph(); Set rootVertexes = new HashSet<>(); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); Set simpleColumns = new HashSet<>(); List columnList = new ArrayList<>(columns); @@ -523,7 +523,7 @@ public void visit(Object context, Stack stack, ColumnVertex schema if (graph.isLeaf(schemaVertex)) { schemaVertex.column = new Column(schemaVertex.name, schemaVertex.type); } else { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); for (ColumnVertex eachChild : graph.getChilds(schemaVertex)) { schema.addColumn(eachChild.column); } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/IndexScanInfo.java b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/IndexScanInfo.java index 9ac8ccf8a9..26c27b3ce7 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/IndexScanInfo.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/IndexScanInfo.java @@ -21,6 +21,7 @@ import com.google.gson.annotations.Expose; import org.apache.tajo.catalog.IndexDesc; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.catalog.SortSpec; import org.apache.tajo.catalog.statistics.TableStats; import org.apache.tajo.common.ProtoObject; @@ -92,7 +93,7 @@ public SimplePredicateProto getProto() { public IndexScanInfo(TableStats tableStats, IndexDesc indexDesc, SimplePredicate[] predicates) { super(ScanTypeControl.INDEX_SCAN, tableStats); this.indexPath = indexDesc.getIndexPath(); - keySchema = new Schema(); + keySchema = SchemaFactory.newV1(); this.predicates = predicates; for (SimplePredicate predicate : predicates) { keySchema.addColumn(predicate.getKeySortSpec().getSortKey()); diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/PartitionedTableRewriter.java b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/PartitionedTableRewriter.java index cf54f7b4c7..00580ae8b2 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/PartitionedTableRewriter.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/PartitionedTableRewriter.java @@ -334,7 +334,7 @@ public static PartitionsByAlgebraProto getPartitionsAlgebraProto( TableDesc table = scanNode.getTableDesc(); PartitionMethodDesc partitionDesc = scanNode.getTableDesc().getPartitionMethod(); - Schema paritionValuesSchema = new Schema(); + Schema paritionValuesSchema = SchemaFactory.newV1(); for (Column column : partitionDesc.getExpressionSchema().getRootColumns()) { paritionValuesSchema.addColumn(column); } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/serder/LogicalNodeDeserializer.java b/tajo-plan/src/main/java/org/apache/tajo/plan/serder/LogicalNodeDeserializer.java index e8c0d4f5d5..4b47e4ac87 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/serder/LogicalNodeDeserializer.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/serder/LogicalNodeDeserializer.java @@ -24,10 +24,7 @@ import org.apache.tajo.OverridableConf; import org.apache.tajo.algebra.JoinType; import org.apache.tajo.annotation.Nullable; -import org.apache.tajo.catalog.Column; -import org.apache.tajo.catalog.Schema; -import org.apache.tajo.catalog.SortSpec; -import org.apache.tajo.catalog.TableDesc; +import org.apache.tajo.catalog.*; import org.apache.tajo.catalog.partition.PartitionMethodDesc; import org.apache.tajo.catalog.proto.CatalogProtos; import org.apache.tajo.exception.NotImplementedException; @@ -449,7 +446,7 @@ private static IndexScanNode convertIndexScan(OverridableConf context, EvalConte predicates[i] = new SimplePredicate(indexScanSpec.getPredicates(i)); } - indexScan.set(new Schema(indexScanSpec.getKeySchema()), predicates, + indexScan.set(SchemaFactory.newV1(indexScanSpec.getKeySchema()), predicates, TUtil.stringToURI(indexScanSpec.getIndexPath())); return indexScan; @@ -683,7 +680,7 @@ private static CreateIndexNode convertCreateIndex(Map node for (int i = 0; i < keySortSpecs.length; i++) { keySortSpecs[i] = new SortSpec(createIndexProto.getKeySortSpecs(i)); } - createIndex.setKeySortSpecs(new Schema(createIndexProto.getTargetRelationSchema()), + createIndex.setKeySortSpecs(SchemaFactory.newV1(createIndexProto.getTargetRelationSchema()), keySortSpecs); createIndex.setUnique(createIndexProto.getIsUnique()); createIndex.setClustered(createIndexProto.getIsClustered()); @@ -727,7 +724,7 @@ private static WindowFunctionEval[] convertWindowFunccEvals(OverridableConf cont } public static Schema convertSchema(CatalogProtos.SchemaProto proto) { - return new Schema(proto); + return SchemaFactory.newV1(proto); } public static Column[] convertColumns(List columnProtos) { diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java b/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java index 6897e17726..eccd37a5e7 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java @@ -565,7 +565,7 @@ public static SortSpec[] columnsToSortSpecs(Collection columns) { } public static Schema sortSpecsToSchema(SortSpec[] sortSpecs) { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); for (SortSpec spec : sortSpecs) { schema.addColumn(spec.getSortKey()); } @@ -656,7 +656,7 @@ public static Schema targetToSchema(Collection targets) { } public static Schema targetToSchema(List targets) { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); for (Target t : targets) { DataType type = t.getEvalTree().getValueType(); String name; diff --git a/tajo-plan/src/test/java/org/apache/tajo/plan/TestLogicalNode.java b/tajo-plan/src/test/java/org/apache/tajo/plan/TestLogicalNode.java index 56edccce62..f3acb00d98 100644 --- a/tajo-plan/src/test/java/org/apache/tajo/plan/TestLogicalNode.java +++ b/tajo-plan/src/test/java/org/apache/tajo/plan/TestLogicalNode.java @@ -22,6 +22,7 @@ import org.apache.tajo.catalog.CatalogUtil; import org.apache.tajo.catalog.Column; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.common.TajoDataTypes.Type; import org.apache.tajo.plan.logical.GroupbyNode; import org.apache.tajo.plan.logical.JoinNode; @@ -35,7 +36,7 @@ public class TestLogicalNode { @Test public void testEquals() { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4); schema.addColumn("name", Type.TEXT); schema.addColumn("age", Type.INT2); diff --git a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/BaseTupleComparator.java b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/BaseTupleComparator.java index 921563a056..2d6d398eda 100644 --- a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/BaseTupleComparator.java +++ b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/BaseTupleComparator.java @@ -20,6 +20,7 @@ import com.google.common.base.Preconditions; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.catalog.SortSpec; import org.apache.tajo.common.ProtoObject; import org.apache.tajo.datum.Datum; @@ -68,7 +69,7 @@ public BaseTupleComparator(Schema schema, SortSpec[] sortKeys) { } public BaseTupleComparator(TupleComparatorProto proto) { - this.schema = new Schema(proto.getSchema()); + this.schema = SchemaFactory.newV1(proto.getSchema()); this.sortSpecs = new SortSpec[proto.getSortSpecsCount()]; for (int i = 0; i < proto.getSortSpecsCount(); i++) { diff --git a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/MergeScanner.java b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/MergeScanner.java index 04d7fedcf2..ec20aca288 100644 --- a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/MergeScanner.java +++ b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/MergeScanner.java @@ -21,6 +21,7 @@ import org.apache.hadoop.conf.Configuration; import org.apache.tajo.catalog.Column; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.catalog.TableMeta; import org.apache.tajo.catalog.statistics.ColumnStats; import org.apache.tajo.catalog.statistics.TableStats; @@ -165,7 +166,7 @@ public boolean isProjectable() { @Override public void setTarget(Column[] targets) { - this.target = new Schema(targets); + this.target = SchemaFactory.newV1(targets); } @Override diff --git a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/TupleRange.java b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/TupleRange.java index c42cdd6dff..560e6424c6 100644 --- a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/TupleRange.java +++ b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/TupleRange.java @@ -20,6 +20,7 @@ import com.google.common.base.Objects; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.catalog.SortSpec; /** @@ -38,7 +39,7 @@ public TupleRange(final SortSpec[] sortSpecs, final Tuple start, final Tuple end } public static Schema sortSpecsToSchema(SortSpec[] sortSpecs) { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); for (SortSpec spec : sortSpecs) { schema.addColumn(spec.getSortKey()); } diff --git a/tajo-storage/tajo-storage-common/src/test/java/org/apache/tajo/storage/TestLazyTuple.java b/tajo-storage/tajo-storage-common/src/test/java/org/apache/tajo/storage/TestLazyTuple.java index 96f90e75b6..df5d3b0f8d 100644 --- a/tajo-storage/tajo-storage-common/src/test/java/org/apache/tajo/storage/TestLazyTuple.java +++ b/tajo-storage/tajo-storage-common/src/test/java/org/apache/tajo/storage/TestLazyTuple.java @@ -20,6 +20,7 @@ import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.common.TajoDataTypes; import org.apache.tajo.datum.DatumFactory; import org.apache.tajo.datum.NullDatum; @@ -40,7 +41,7 @@ public class TestLazyTuple { public void setUp() { nullbytes = "\\N".getBytes(); - schema = new Schema(); + schema = SchemaFactory.newV1(); schema.addColumn("col1", TajoDataTypes.Type.BOOLEAN); schema.addColumn("col2", TajoDataTypes.Type.BIT); schema.addColumn("col3", TajoDataTypes.Type.CHAR, 7); @@ -197,7 +198,7 @@ public void testHashCode() { @Test public void testInvalidNumber() { byte[][] bytes = BytesUtils.splitPreserveAllTokens(" 1| |2 ||".getBytes(), '|', 5); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TajoDataTypes.Type.INT2); schema.addColumn("col2", TajoDataTypes.Type.INT4); schema.addColumn("col3", TajoDataTypes.Type.INT8); diff --git a/tajo-storage/tajo-storage-common/src/test/java/org/apache/tajo/storage/TestTupleComparator.java b/tajo-storage/tajo-storage-common/src/test/java/org/apache/tajo/storage/TestTupleComparator.java index 52622ee6f8..e5d8464e15 100644 --- a/tajo-storage/tajo-storage-common/src/test/java/org/apache/tajo/storage/TestTupleComparator.java +++ b/tajo-storage/tajo-storage-common/src/test/java/org/apache/tajo/storage/TestTupleComparator.java @@ -19,6 +19,7 @@ package org.apache.tajo.storage; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.catalog.SortSpec; import org.apache.tajo.common.TajoDataTypes.Type; import org.apache.tajo.datum.*; @@ -44,7 +45,7 @@ public void tearDown() throws Exception { @Test public final void testCompare() { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", Type.INT4); schema.addColumn("col2", Type.INT4); schema.addColumn("col3", Type.INT4); @@ -77,7 +78,7 @@ public final void testCompare() { @Test public void testNullFirst() throws Exception { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4); schema.addColumn("name", Type.TEXT); @@ -117,7 +118,7 @@ public void testNullFirst() throws Exception { @Test public void testNullLast() throws Exception { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4); schema.addColumn("name", Type.TEXT); diff --git a/tajo-storage/tajo-storage-hbase/src/test/java/org/apache/tajo/storage/hbase/TestColumnMapping.java b/tajo-storage/tajo-storage-hbase/src/test/java/org/apache/tajo/storage/hbase/TestColumnMapping.java index bfdc8ca5a3..6713519af4 100644 --- a/tajo-storage/tajo-storage-hbase/src/test/java/org/apache/tajo/storage/hbase/TestColumnMapping.java +++ b/tajo-storage/tajo-storage-hbase/src/test/java/org/apache/tajo/storage/hbase/TestColumnMapping.java @@ -19,6 +19,7 @@ package org.apache.tajo.storage.hbase; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.catalog.TableMeta; import org.apache.tajo.common.TajoDataTypes.Type; import org.apache.tajo.util.KeyValueSet; @@ -35,7 +36,7 @@ public void testColumnKeyValueMapping() throws Exception { keyValueSet.set(HBaseStorageConstants.META_TABLE_KEY, "test"); keyValueSet.set(HBaseStorageConstants.META_COLUMNS_KEY, ":key,col2:key:,col2:value:#b,col3:"); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("c1", Type.TEXT); schema.addColumn("c2", Type.TEXT); schema.addColumn("c3", Type.TEXT); diff --git a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/index/bst/BSTIndex.java b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/index/bst/BSTIndex.java index e0051f4c42..01a6e7f101 100644 --- a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/index/bst/BSTIndex.java +++ b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/index/bst/BSTIndex.java @@ -26,6 +26,7 @@ import org.apache.hadoop.fs.*; import org.apache.hadoop.fs.FileSystem; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.catalog.proto.CatalogProtos.SchemaProto; import org.apache.tajo.storage.*; import org.apache.tajo.storage.RowStoreUtil.RowStoreDecoder; @@ -543,7 +544,7 @@ private void loadFooter() throws IOException { SchemaProto.Builder builder = SchemaProto.newBuilder(); builder.mergeFrom(schemaBytes); SchemaProto proto = builder.build(); - this.keySchema = new Schema(proto); + this.keySchema = SchemaFactory.newV1(proto); this.rowStoreDecoder = RowStoreUtil.createDecoder(keySchema); // comparator diff --git a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/parquet/ParquetScanner.java b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/parquet/ParquetScanner.java index 0c4749c5dd..4bdb4f4f0d 100644 --- a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/parquet/ParquetScanner.java +++ b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/parquet/ParquetScanner.java @@ -20,6 +20,7 @@ import org.apache.hadoop.conf.Configuration; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.catalog.TableMeta; import org.apache.tajo.exception.NotImplementedException; import org.apache.tajo.exception.TajoRuntimeException; @@ -63,7 +64,7 @@ public void init() throws IOException { if (targets == null) { targets = schema.toArray(); } - reader = new TajoParquetReader(conf, fragment.getPath(), schema, new Schema(targets)); + reader = new TajoParquetReader(conf, fragment.getPath(), schema, SchemaFactory.newV1(targets)); totalRowCount = reader.getTotalRowCount(); currentRowCount = 0; closed = false; diff --git a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/parquet/TajoSchemaConverter.java b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/parquet/TajoSchemaConverter.java index dfe6af8df7..b2f3f3426b 100644 --- a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/parquet/TajoSchemaConverter.java +++ b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/parquet/TajoSchemaConverter.java @@ -25,6 +25,7 @@ import org.apache.parquet.schema.Type; import org.apache.tajo.catalog.Column; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.common.TajoDataTypes; import java.util.ArrayList; @@ -64,7 +65,7 @@ private Schema convertFields(List parquetFields) { } Column[] columnsArray = new Column[columns.size()]; columnsArray = columns.toArray(columnsArray); - return new Schema(columnsArray); + return SchemaFactory.newV1(columnsArray); } private Column convertField(final Type fieldType) { diff --git a/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestCompressionStorages.java b/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestCompressionStorages.java index b63b497d5b..e345cb3cbd 100644 --- a/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestCompressionStorages.java +++ b/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestCompressionStorages.java @@ -30,6 +30,7 @@ import org.apache.tajo.BuiltinStorages; import org.apache.tajo.catalog.CatalogUtil; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.catalog.TableMeta; import org.apache.tajo.catalog.statistics.TableStats; import org.apache.tajo.common.TajoDataTypes.Type; @@ -109,7 +110,7 @@ public void testLz4CodecCompressionData() throws IOException { } private void storageCompressionTest(String dataFormat, Class codec) throws IOException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4); schema.addColumn("age", Type.FLOAT4); schema.addColumn("name", Type.TEXT); diff --git a/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestDelimitedTextFile.java b/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestDelimitedTextFile.java index 6ff291c0d0..523a0d01d9 100644 --- a/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestDelimitedTextFile.java +++ b/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestDelimitedTextFile.java @@ -25,6 +25,7 @@ import org.apache.hadoop.fs.Path; import org.apache.tajo.catalog.CatalogUtil; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.catalog.TableMeta; import org.apache.tajo.common.TajoDataTypes.Type; import org.apache.tajo.conf.TajoConf; @@ -41,7 +42,7 @@ public class TestDelimitedTextFile { private static final Log LOG = LogFactory.getLog(TestDelimitedTextFile.class); - private static Schema schema = new Schema(); + private static Schema schema = SchemaFactory.newV1(); private static Tuple baseTuple; diff --git a/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestFileSystems.java b/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestFileSystems.java index e9e44b565a..59ff6f6bf8 100644 --- a/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestFileSystems.java +++ b/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestFileSystems.java @@ -24,6 +24,7 @@ import org.apache.hadoop.fs.Path; import org.apache.tajo.catalog.CatalogUtil; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.catalog.TableMeta; import org.apache.tajo.common.TajoDataTypes.Type; import org.apache.tajo.conf.TajoConf; @@ -97,7 +98,7 @@ public void tearDown() throws IOException { @Test public void testBlockSplit() throws IOException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4); schema.addColumn("age", Type.INT4); schema.addColumn("name", Type.TEXT); diff --git a/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestFileTablespace.java b/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestFileTablespace.java index 58025c300a..b8f9893c36 100644 --- a/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestFileTablespace.java +++ b/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestFileTablespace.java @@ -27,6 +27,7 @@ import org.apache.tajo.BuiltinStorages; import org.apache.tajo.catalog.CatalogUtil; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.catalog.TableMeta; import org.apache.tajo.common.TajoDataTypes.Type; import org.apache.tajo.conf.TajoConf; @@ -81,7 +82,7 @@ public static HdfsConfiguration getTestHdfsConfiguration() { @Test public final void testGetScannerAndAppender() throws IOException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4); schema.addColumn("age",Type.INT4); schema.addColumn("name",Type.TEXT); @@ -144,7 +145,7 @@ public void testGetSplit() throws Exception { TablespaceManager.addTableSpaceForTest(space); assertEquals(fs.getUri(), space.getUri()); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4); schema.addColumn("age",Type.INT4); schema.addColumn("name",Type.TEXT); @@ -198,7 +199,7 @@ public void testZeroLengthSplit() throws Exception { TablespaceManager.addTableSpaceForTest(space); assertEquals(fs.getUri(), space.getUri()); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4); schema.addColumn("age",Type.INT4); schema.addColumn("name",Type.TEXT); @@ -241,7 +242,7 @@ public void testGetSplitWithBlockStorageLocationsBatching() throws Exception { TablespaceManager.addTableSpaceForTest(sm); assertEquals(fs.getUri(), sm.getUri()); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4); schema.addColumn("age", Type.INT4); schema.addColumn("name", Type.TEXT); diff --git a/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestLineReader.java b/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestLineReader.java index a47853895a..e47741c05e 100644 --- a/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestLineReader.java +++ b/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestLineReader.java @@ -27,6 +27,7 @@ import org.apache.hadoop.io.compress.DeflateCodec; import org.apache.tajo.catalog.CatalogUtil; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.catalog.TableMeta; import org.apache.tajo.common.TajoDataTypes.Type; import org.apache.tajo.conf.TajoConf; @@ -58,7 +59,7 @@ public void testByteBufLineReader() throws IOException { Path testDir = CommonTestingUtil.getTestDir(TEST_PATH); FileSystem fs = testDir.getFileSystem(conf); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4); schema.addColumn("age", Type.INT8); schema.addColumn("comment", Type.TEXT); @@ -110,7 +111,7 @@ public void testLineDelimitedReaderWithCompression() throws IOException { Path testDir = CommonTestingUtil.getTestDir(TEST_PATH); FileSystem fs = testDir.getFileSystem(conf); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4); schema.addColumn("age", Type.INT8); schema.addColumn("comment", Type.TEXT); @@ -169,7 +170,7 @@ public void testLineDelimitedReader() throws IOException { Path testDir = CommonTestingUtil.getTestDir(TEST_PATH); FileSystem fs = testDir.getFileSystem(conf); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4); schema.addColumn("age", Type.INT8); schema.addColumn("comment", Type.TEXT); @@ -275,7 +276,7 @@ public void testSeekableByteBufLineReader() throws IOException { Path testDir = CommonTestingUtil.getTestDir(TEST_PATH); FileSystem fs = testDir.getFileSystem(conf); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4); schema.addColumn("age", Type.INT8); schema.addColumn("comment", Type.TEXT); diff --git a/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestMergeScanner.java b/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestMergeScanner.java index d8d335989a..a04867e7fa 100644 --- a/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestMergeScanner.java +++ b/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestMergeScanner.java @@ -23,6 +23,7 @@ import org.apache.hadoop.fs.Path; import org.apache.tajo.catalog.CatalogUtil; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.catalog.TableMeta; import org.apache.tajo.catalog.statistics.TableStats; import org.apache.tajo.common.TajoDataTypes.Type; @@ -98,7 +99,7 @@ public void setup() throws Exception { @Test public void testMultipleFiles() throws IOException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4); schema.addColumn("file", Type.TEXT); schema.addColumn("name", Type.TEXT); @@ -160,7 +161,7 @@ public void testMultipleFiles() throws IOException { fragment[0] = new FileFragment("tablet1", table1Path, 0, status1.getLen()); fragment[1] = new FileFragment("tablet1", table2Path, 0, status2.getLen()); - Schema targetSchema = new Schema(); + Schema targetSchema = SchemaFactory.newV1(); targetSchema.addColumn(schema.getColumn(0)); targetSchema.addColumn(schema.getColumn(2)); diff --git a/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestStorages.java b/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestStorages.java index 44d8fdc967..b8c0c84032 100644 --- a/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestStorages.java +++ b/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestStorages.java @@ -31,6 +31,7 @@ import org.apache.tajo.TajoIdProtos; import org.apache.tajo.catalog.CatalogUtil; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.catalog.TableMeta; import org.apache.tajo.catalog.statistics.TableStats; import org.apache.tajo.common.TajoDataTypes.Type; @@ -171,7 +172,7 @@ public void tearDown() throws IOException { @Test public void testSplitable() throws IOException { if (splitable) { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4); schema.addColumn("age", Type.INT8); @@ -225,7 +226,7 @@ public void testSplitable() throws IOException { @Test public void testZeroRows() throws IOException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4); schema.addColumn("age", Type.INT8); schema.addColumn("score", Type.FLOAT4); @@ -269,7 +270,7 @@ public void testZeroRows() throws IOException { @Test public void testRCFileSplitable() throws IOException { if (dataFormat.equalsIgnoreCase(BuiltinStorages.RCFILE)) { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4); schema.addColumn("age", Type.INT8); @@ -323,7 +324,7 @@ public void testRCFileSplitable() throws IOException { @Test public void testProjection() throws IOException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4); schema.addColumn("age", Type.INT8); schema.addColumn("score", Type.FLOAT4); @@ -354,7 +355,7 @@ public void testProjection() throws IOException { FileStatus status = fs.getFileStatus(tablePath); FileFragment fragment = new FileFragment("testReadAndWrite", tablePath, 0, status.getLen()); - Schema target = new Schema(); + Schema target = SchemaFactory.newV1(); target.addColumn("age", Type.INT8); target.addColumn("score", Type.FLOAT4); Scanner scanner = sm.getScanner(meta, schema, fragment, target); @@ -388,7 +389,7 @@ private void verifyProjectedFields(boolean projectable, Tuple tuple, int tupleCn public void testVariousTypes() throws IOException { boolean handleProtobuf = !dataFormat.equalsIgnoreCase(BuiltinStorages.JSON); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", Type.BOOLEAN); schema.addColumn("col2", Type.CHAR, 7); schema.addColumn("col3", Type.INT2); @@ -461,7 +462,7 @@ public void testVariousTypes() throws IOException { public void testNullHandlingTypes() throws IOException { boolean handleProtobuf = !dataFormat.equalsIgnoreCase(BuiltinStorages.JSON); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", Type.BOOLEAN); schema.addColumn("col2", Type.CHAR, 7); schema.addColumn("col3", Type.INT2); @@ -560,7 +561,7 @@ public void testNullHandlingTypesWithProjection() throws IOException { boolean handleProtobuf = !dataFormat.equalsIgnoreCase(BuiltinStorages.JSON); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", Type.BOOLEAN); schema.addColumn("col2", Type.CHAR, 7); schema.addColumn("col3", Type.INT2); @@ -633,7 +634,7 @@ public void testNullHandlingTypesWithProjection() throws IOException { // Making projection schema with different column positions - Schema target = new Schema(); + Schema target = SchemaFactory.newV1(); Random random = new Random(); for (int i = 1; i < schema.size(); i++) { int num = random.nextInt(schema.size() - 1) + 1; @@ -668,7 +669,7 @@ public void testNullHandlingTypesWithProjection() throws IOException { public void testRCFileTextSerializeDeserialize() throws IOException { if(!dataFormat.equalsIgnoreCase(BuiltinStorages.RCFILE)) return; - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", Type.BOOLEAN); schema.addColumn("col2", Type.BIT); schema.addColumn("col3", Type.CHAR, 7); @@ -737,7 +738,7 @@ public void testRCFileTextSerializeDeserialize() throws IOException { public void testRCFileBinarySerializeDeserialize() throws IOException { if(!dataFormat.equalsIgnoreCase(BuiltinStorages.RCFILE)) return; - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", Type.BOOLEAN); schema.addColumn("col2", Type.BIT); schema.addColumn("col3", Type.CHAR, 7); @@ -806,7 +807,7 @@ public void testRCFileBinarySerializeDeserialize() throws IOException { public void testSequenceFileTextSerializeDeserialize() throws IOException { if(!dataFormat.equalsIgnoreCase(BuiltinStorages.SEQUENCE_FILE)) return; - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", Type.BOOLEAN); schema.addColumn("col2", Type.BIT); schema.addColumn("col3", Type.CHAR, 7); @@ -878,7 +879,7 @@ public void testSequenceFileTextSerializeDeserialize() throws IOException { public void testSequenceFileBinarySerializeDeserialize() throws IOException { if(!dataFormat.equalsIgnoreCase(BuiltinStorages.SEQUENCE_FILE)) return; - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", Type.BOOLEAN); schema.addColumn("col2", Type.BIT); schema.addColumn("col3", Type.CHAR, 7); @@ -950,7 +951,7 @@ public void testSequenceFileBinarySerializeDeserialize() throws IOException { @Test public void testTime() throws IOException { if (dataFormat.equalsIgnoreCase(BuiltinStorages.TEXT) || internalType) { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", Type.DATE); schema.addColumn("col2", Type.TIME); schema.addColumn("col3", Type.TIMESTAMP); @@ -993,7 +994,7 @@ public void testSeekableScanner() throws IOException { return; } - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4); schema.addColumn("age", Type.INT8); schema.addColumn("comment", Type.TEXT); @@ -1068,7 +1069,7 @@ public void testSeekableScanner() throws IOException { @Test public void testMaxValue() throws IOException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", Type.FLOAT4); schema.addColumn("col2", Type.FLOAT8); schema.addColumn("col3", Type.INT2); @@ -1135,7 +1136,7 @@ public void testLessThanSchemaSize() throws IOException { return; } - Schema dataSchema = new Schema(); + Schema dataSchema = SchemaFactory.newV1(); dataSchema.addColumn("col1", Type.FLOAT4); dataSchema.addColumn("col2", Type.FLOAT8); dataSchema.addColumn("col3", Type.INT2); @@ -1163,7 +1164,7 @@ public void testLessThanSchemaSize() throws IOException { assertTrue(fs.exists(tablePath)); FileStatus status = fs.getFileStatus(tablePath); - Schema inSchema = new Schema(); + Schema inSchema = SchemaFactory.newV1(); inSchema.addColumn("col1", Type.FLOAT4); inSchema.addColumn("col2", Type.FLOAT8); inSchema.addColumn("col3", Type.INT2); @@ -1173,7 +1174,7 @@ public void testLessThanSchemaSize() throws IOException { FileFragment fragment = new FileFragment("table", tablePath, 0, status.getLen()); Scanner scanner = TablespaceManager.getLocalFs().getScanner(meta, inSchema, fragment, null); - Schema target = new Schema(); + Schema target = SchemaFactory.newV1(); target.addColumn("col2", Type.FLOAT8); target.addColumn("col5", Type.INT8); @@ -1201,7 +1202,7 @@ public final void testInsertFixedCharTypeWithOverSize() throws Exception { return; } - Schema dataSchema = new Schema(); + Schema dataSchema = SchemaFactory.newV1(); dataSchema.addColumn("col1", Type.CHAR); KeyValueSet options = new KeyValueSet(); @@ -1244,7 +1245,7 @@ public void testDateTextHandling() throws Exception { return; } - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", Type.TEXT); KeyValueSet options = new KeyValueSet(); @@ -1285,7 +1286,7 @@ public void testFileAlreadyExists() throws IOException { if (internalType) return; - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4); schema.addColumn("age", Type.INT8); schema.addColumn("score", Type.FLOAT4); @@ -1320,7 +1321,7 @@ public void testFileAlreadyExists() throws IOException { @Test public void testProgress() throws IOException { - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", Type.FLOAT4); schema.addColumn("col2", Type.FLOAT8); schema.addColumn("col3", Type.INT2); @@ -1368,7 +1369,7 @@ public void testProgress() throws IOException { public void testEmptySchema() throws IOException { if (internalType) return; - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("id", Type.INT4); schema.addColumn("age", Type.INT8); schema.addColumn("score", Type.FLOAT4); @@ -1406,7 +1407,7 @@ public void testEmptySchema() throws IOException { } //e,g select count(*) from table - Schema target = new Schema(); + Schema target = SchemaFactory.newV1(); assertEquals(0, target.size()); FileFragment fragment = new FileFragment("table", tablePath, 0, status.getLen()); diff --git a/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/index/TestBSTIndex.java b/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/index/TestBSTIndex.java index a9d8ce27c0..18d5012479 100644 --- a/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/index/TestBSTIndex.java +++ b/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/index/TestBSTIndex.java @@ -60,7 +60,7 @@ public TestBSTIndex(String type) { this.dataFormat = type; conf = new TajoConf(); conf.setVar(TajoConf.ConfVars.ROOT_DIR, TEST_PATH); - schema = new Schema(); + schema = SchemaFactory.newV1(); schema.addColumn(new Column("int", Type.INT4)); schema.addColumn(new Column("long", Type.INT8)); schema.addColumn(new Column("double", Type.FLOAT8)); @@ -111,7 +111,7 @@ public void testFindValue() throws IOException { sortKeys[0] = new SortSpec(schema.getColumn("long"), true, false); sortKeys[1] = new SortSpec(schema.getColumn("double"), true, false); - Schema keySchema = new Schema(); + Schema keySchema = SchemaFactory.newV1(); keySchema.addColumn(new Column("long", Type.INT8)); keySchema.addColumn(new Column("double", Type.FLOAT8)); @@ -187,7 +187,7 @@ public void testBuildIndexWithAppender() throws IOException { sortKeys[0] = new SortSpec(schema.getColumn("long"), true, false); sortKeys[1] = new SortSpec(schema.getColumn("double"), true, false); - Schema keySchema = new Schema(); + Schema keySchema = SchemaFactory.newV1(); keySchema.addColumn(new Column("long", Type.INT8)); keySchema.addColumn(new Column("double", Type.FLOAT8)); @@ -280,7 +280,7 @@ public void testFindOmittedValue() throws IOException { sortKeys[0] = new SortSpec(schema.getColumn("long"), true, false); sortKeys[1] = new SortSpec(schema.getColumn("double"), true, false); - Schema keySchema = new Schema(); + Schema keySchema = SchemaFactory.newV1(); keySchema.addColumn(new Column("long", Type.INT8)); keySchema.addColumn(new Column("double", Type.FLOAT8)); @@ -353,7 +353,7 @@ public void testFindNextKeyValue() throws IOException { sortKeys[0] = new SortSpec(schema.getColumn("int"), true, false); sortKeys[1] = new SortSpec(schema.getColumn("long"), true, false); - Schema keySchema = new Schema(); + Schema keySchema = SchemaFactory.newV1(); keySchema.addColumn(new Column("int", Type.INT4)); keySchema.addColumn(new Column("long", Type.INT8)); @@ -446,7 +446,7 @@ public void testFindNextKeyOmittedValue() throws IOException { sortKeys[0] = new SortSpec(schema.getColumn("int"), true, false); sortKeys[1] = new SortSpec(schema.getColumn("long"), true, false); - Schema keySchema = new Schema(); + Schema keySchema = SchemaFactory.newV1(); keySchema.addColumn(new Column("int", Type.INT4)); keySchema.addColumn(new Column("long", Type.INT8)); @@ -529,7 +529,7 @@ public void testFindMinValue() throws IOException { sortKeys[0] = new SortSpec(schema.getColumn("long"), true, false); sortKeys[1] = new SortSpec(schema.getColumn("double"), true, false); - Schema keySchema = new Schema(); + Schema keySchema = SchemaFactory.newV1(); keySchema.addColumn(new Column("long", Type.INT8)); keySchema.addColumn(new Column("double", Type.FLOAT8)); @@ -614,7 +614,7 @@ public void testMinMax() throws IOException { sortKeys[0] = new SortSpec(schema.getColumn("int"), true, false); sortKeys[1] = new SortSpec(schema.getColumn("long"), true, false); - Schema keySchema = new Schema(); + Schema keySchema = SchemaFactory.newV1(); keySchema.addColumn(new Column("int", Type.INT4)); keySchema.addColumn(new Column("long", Type.INT8)); @@ -721,7 +721,7 @@ public void testConcurrentAccess() throws IOException, InterruptedException { sortKeys[0] = new SortSpec(schema.getColumn("int"), true, false); sortKeys[1] = new SortSpec(schema.getColumn("long"), true, false); - Schema keySchema = new Schema(); + Schema keySchema = SchemaFactory.newV1(); keySchema.addColumn(new Column("int", Type.INT4)); keySchema.addColumn(new Column("long", Type.INT8)); @@ -803,7 +803,7 @@ public void testFindValueDescOrder() throws IOException { sortKeys[0] = new SortSpec(schema.getColumn("long"), false, false); sortKeys[1] = new SortSpec(schema.getColumn("double"), false, false); - Schema keySchema = new Schema(); + Schema keySchema = SchemaFactory.newV1(); keySchema.addColumn(new Column("long", Type.INT8)); keySchema.addColumn(new Column("double", Type.FLOAT8)); @@ -896,7 +896,7 @@ public void testFindNextKeyValueDescOrder() throws IOException { sortKeys[0] = new SortSpec(schema.getColumn("int"), false, false); sortKeys[1] = new SortSpec(schema.getColumn("long"), false, false); - Schema keySchema = new Schema(); + Schema keySchema = SchemaFactory.newV1(); keySchema.addColumn(new Column("int", Type.INT4)); keySchema.addColumn(new Column("long", Type.INT8)); @@ -996,7 +996,7 @@ public void testFindValueASCOrder() throws IOException { sortKeys[0] = new SortSpec(schema.getColumn("long"), true, false); sortKeys[1] = new SortSpec(schema.getColumn("double"), true, false); - Schema keySchema = new Schema(); + Schema keySchema = SchemaFactory.newV1(); keySchema.addColumn(new Column("long", Type.INT8)); keySchema.addColumn(new Column("double", Type.FLOAT8)); diff --git a/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/index/TestSingleCSVFileBSTIndex.java b/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/index/TestSingleCSVFileBSTIndex.java index b2ca5b89b8..1053853e4a 100644 --- a/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/index/TestSingleCSVFileBSTIndex.java +++ b/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/index/TestSingleCSVFileBSTIndex.java @@ -56,7 +56,7 @@ public class TestSingleCSVFileBSTIndex { public TestSingleCSVFileBSTIndex() { conf = new TajoConf(); conf.setVar(ConfVars.ROOT_DIR, TEST_PATH); - schema = new Schema(); + schema = SchemaFactory.newV1(); schema.addColumn(new Column("int", Type.INT4)); schema.addColumn(new Column("long", Type.INT8)); schema.addColumn(new Column("double", Type.FLOAT8)); @@ -99,7 +99,7 @@ public void testFindValueInSingleCSV() throws IOException { sortKeys[0] = new SortSpec(schema.getColumn("long"), true, false); sortKeys[1] = new SortSpec(schema.getColumn("double"), true, false); - Schema keySchema = new Schema(); + Schema keySchema = SchemaFactory.newV1(); keySchema.addColumn(new Column("long", Type.INT8)); keySchema.addColumn(new Column("double", Type.FLOAT8)); @@ -190,7 +190,7 @@ public void testFindNextKeyValueInSingleCSV() throws IOException { sortKeys[0] = new SortSpec(schema.getColumn("int"), true, false); sortKeys[1] = new SortSpec(schema.getColumn("long"), true, false); - Schema keySchema = new Schema(); + Schema keySchema = SchemaFactory.newV1(); keySchema.addColumn(new Column("int", Type.INT4)); keySchema.addColumn(new Column("long", Type.INT8)); diff --git a/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/json/TestJsonSerDe.java b/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/json/TestJsonSerDe.java index 75e59da6d9..c2ce9e7694 100644 --- a/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/json/TestJsonSerDe.java +++ b/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/json/TestJsonSerDe.java @@ -23,6 +23,7 @@ import org.apache.hadoop.fs.Path; import org.apache.tajo.catalog.CatalogUtil; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.catalog.TableMeta; import org.apache.tajo.common.TajoDataTypes; import org.apache.tajo.conf.TajoConf; @@ -39,7 +40,7 @@ import static org.junit.Assert.*; public class TestJsonSerDe { - private static Schema schema = new Schema(); + private static Schema schema = SchemaFactory.newV1(); static { schema.addColumn("col1", TajoDataTypes.Type.BOOLEAN); @@ -104,7 +105,7 @@ public void testUnicodeWithControlChar() throws IOException { FileStatus status = fs.getFileStatus(tablePath); FileFragment fragment = new FileFragment("table", tablePath, 0, status.getLen()); - Schema schema = new Schema(); + Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TajoDataTypes.Type.TEXT); schema.addColumn("col2", TajoDataTypes.Type.TEXT); schema.addColumn("col3", TajoDataTypes.Type.TEXT); diff --git a/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/parquet/TestReadWrite.java b/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/parquet/TestReadWrite.java index ea223e7e1c..b39bfcecbf 100644 --- a/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/parquet/TestReadWrite.java +++ b/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/parquet/TestReadWrite.java @@ -24,6 +24,7 @@ import org.apache.hadoop.fs.Path; import org.apache.tajo.catalog.Column; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.common.TajoDataTypes.Type; import org.apache.tajo.conf.TajoConf; import org.apache.tajo.datum.DatumFactory; @@ -67,7 +68,7 @@ private Schema createAllTypesSchema() { columns.add(new Column("mynull", Type.NULL_TYPE)); Column[] columnsArray = new Column[columns.size()]; columnsArray = columns.toArray(columnsArray); - return new Schema(columnsArray); + return SchemaFactory.newV1(columnsArray); } @Test diff --git a/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/parquet/TestSchemaConverter.java b/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/parquet/TestSchemaConverter.java index ba3f72e588..87b5c34cfd 100644 --- a/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/parquet/TestSchemaConverter.java +++ b/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/parquet/TestSchemaConverter.java @@ -22,6 +22,7 @@ import org.apache.parquet.schema.MessageTypeParser; import org.apache.tajo.catalog.Column; import org.apache.tajo.catalog.Schema; +import org.apache.tajo.catalog.SchemaFactory; import org.apache.tajo.common.TajoDataTypes.Type; import org.junit.Test; @@ -80,7 +81,7 @@ private Schema createAllTypesSchema() { columns.add(new Column("myprotobuf", Type.PROTOBUF)); Column[] columnsArray = new Column[columns.size()]; columnsArray = columns.toArray(columnsArray); - return new Schema(columnsArray); + return SchemaFactory.newV1(columnsArray); } private Schema createAllTypesConvertedSchema() { @@ -95,7 +96,7 @@ private Schema createAllTypesConvertedSchema() { columns.add(new Column("myfixed", Type.BLOB)); Column[] columnsArray = new Column[columns.size()]; columnsArray = columns.toArray(columnsArray); - return new Schema(columnsArray); + return SchemaFactory.newV1(columnsArray); } private void testTajoToParquetConversion( diff --git a/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/raw/TestDirectRawFile.java b/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/raw/TestDirectRawFile.java index fb69fa4c9b..1a5a41e696 100644 --- a/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/raw/TestDirectRawFile.java +++ b/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/raw/TestDirectRawFile.java @@ -26,10 +26,7 @@ import org.apache.hadoop.fs.Path; import org.apache.hadoop.hdfs.MiniDFSCluster; import org.apache.tajo.BuiltinStorages; -import org.apache.tajo.catalog.CatalogUtil; -import org.apache.tajo.catalog.Schema; -import org.apache.tajo.catalog.SchemaUtil; -import org.apache.tajo.catalog.TableMeta; +import org.apache.tajo.catalog.*; import org.apache.tajo.common.TajoDataTypes; import org.apache.tajo.conf.TajoConf; import org.apache.tajo.datum.DatumFactory; @@ -130,7 +127,7 @@ public Path getTestDir(FileSystem fs, String dir) throws IOException { } static { - schema = new Schema(); + schema = SchemaFactory.newV1(); schema.addColumn("col0", TajoDataTypes.Type.BOOLEAN); schema.addColumn("col1", TajoDataTypes.Type.INT2); schema.addColumn("col2", TajoDataTypes.Type.INT4); diff --git a/tajo-storage/tajo-storage-jdbc/src/main/java/org/apache/tajo/storage/jdbc/JdbcMetadataProviderBase.java b/tajo-storage/tajo-storage-jdbc/src/main/java/org/apache/tajo/storage/jdbc/JdbcMetadataProviderBase.java index eff1b9c88a..f53c3ed4e1 100644 --- a/tajo-storage/tajo-storage-jdbc/src/main/java/org/apache/tajo/storage/jdbc/JdbcMetadataProviderBase.java +++ b/tajo-storage/tajo-storage-jdbc/src/main/java/org/apache/tajo/storage/jdbc/JdbcMetadataProviderBase.java @@ -208,7 +208,7 @@ public int compare(Pair o1, Pair o2) { }); // transform the pair list into collection for columns - final Schema schema = new Schema(Collections2.transform(columns, new Function, Column>() { + final Schema schema = SchemaFactory.newV1(Collections2.transform(columns, new Function, Column>() { @Override public Column apply(@Nullable Pair columnPair) { return columnPair.getSecond(); From db23069ff255d8c1ed95e9c332a59b05f302708c Mon Sep 17 00:00:00 2001 From: Hyunsik Choi Date: Wed, 16 Mar 2016 15:11:53 -0700 Subject: [PATCH 2/5] Fix missed changes in HiveCatalogStore. --- .../org/apache/tajo/catalog/store/HiveCatalogStore.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tajo-catalog/tajo-catalog-drivers/tajo-hive/src/main/java/org/apache/tajo/catalog/store/HiveCatalogStore.java b/tajo-catalog/tajo-catalog-drivers/tajo-hive/src/main/java/org/apache/tajo/catalog/store/HiveCatalogStore.java index 63f18b6f75..ef0ec658aa 100644 --- a/tajo-catalog/tajo-catalog-drivers/tajo-hive/src/main/java/org/apache/tajo/catalog/store/HiveCatalogStore.java +++ b/tajo-catalog/tajo-catalog-drivers/tajo-hive/src/main/java/org/apache/tajo/catalog/store/HiveCatalogStore.java @@ -147,7 +147,7 @@ public final CatalogProtos.TableDescProto getTable(String databaseName, final St path = table.getPath(); // convert HiveCatalogStore field schema into tajo field schema. - schema = new org.apache.tajo.catalog.Schema(); + schema = SchemaFactory.newV1(); List fieldSchemaList = table.getCols(); boolean isPartitionKey; @@ -237,7 +237,7 @@ public final CatalogProtos.TableDescProto getTable(String databaseName, final St List partitionKeys = table.getPartitionKeys(); if (null != partitionKeys) { - org.apache.tajo.catalog.Schema expressionSchema = new org.apache.tajo.catalog.Schema(); + org.apache.tajo.catalog.Schema expressionSchema = SchemaFactory.newV1(); StringBuilder sb = new StringBuilder(); if (partitionKeys.size() > 0) { for (int i = 0; i < partitionKeys.size(); i++) { @@ -803,7 +803,7 @@ public CatalogProtos.PartitionMethodProto getPartitionMethod(String databaseName List partitionKeys = table.getPartitionKeys(); if (partitionKeys != null && partitionKeys.size() > 0) { - org.apache.tajo.catalog.Schema expressionSchema = new org.apache.tajo.catalog.Schema(); + org.apache.tajo.catalog.Schema expressionSchema = SchemaFactory.newV1(); StringBuilder sb = new StringBuilder(); if (partitionKeys.size() > 0) { for (int i = 0; i < partitionKeys.size(); i++) { From 7f4268a592a8c0189da772258053f4c33bd77ca3 Mon Sep 17 00:00:00 2001 From: Hyunsik Choi Date: Wed, 16 Mar 2016 15:14:23 -0700 Subject: [PATCH 3/5] Fix missed changes. --- .../catalog/store/TestHiveCatalogStore.java | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/tajo-catalog/tajo-catalog-drivers/tajo-hive/src/test/java/org/apache/tajo/catalog/store/TestHiveCatalogStore.java b/tajo-catalog/tajo-catalog-drivers/tajo-hive/src/test/java/org/apache/tajo/catalog/store/TestHiveCatalogStore.java index 7e1a3a4ff6..9ef9d2efb9 100644 --- a/tajo-catalog/tajo-catalog-drivers/tajo-hive/src/test/java/org/apache/tajo/catalog/store/TestHiveCatalogStore.java +++ b/tajo-catalog/tajo-catalog-drivers/tajo-hive/src/test/java/org/apache/tajo/catalog/store/TestHiveCatalogStore.java @@ -94,7 +94,7 @@ public static void tearDown() throws IOException { public void testTableUsingTextFile() throws Exception { TableMeta meta = new TableMeta(BuiltinStorages.TEXT, new KeyValueSet()); - org.apache.tajo.catalog.Schema schema = new org.apache.tajo.catalog.Schema(); + org.apache.tajo.catalog.Schema schema = SchemaFactory.newV1(); schema.addColumn("c_custkey", TajoDataTypes.Type.INT4); schema.addColumn("c_name", TajoDataTypes.Type.TEXT); schema.addColumn("c_address", TajoDataTypes.Type.TEXT); @@ -134,7 +134,7 @@ public void testTableUsingRCFileWithBinarySerde() throws Exception { options.set(StorageConstants.RCFILE_SERDE, StorageConstants.DEFAULT_BINARY_SERDE); TableMeta meta = new TableMeta(BuiltinStorages.RCFILE, options); - org.apache.tajo.catalog.Schema schema = new org.apache.tajo.catalog.Schema(); + org.apache.tajo.catalog.Schema schema = SchemaFactory.newV1(); schema.addColumn("r_regionkey", TajoDataTypes.Type.INT4); schema.addColumn("r_name", TajoDataTypes.Type.TEXT); schema.addColumn("r_comment", TajoDataTypes.Type.TEXT); @@ -168,7 +168,7 @@ public void testTableUsingRCFileWithTextSerde() throws Exception { options.set(StorageConstants.RCFILE_SERDE, StorageConstants.DEFAULT_TEXT_SERDE); TableMeta meta = new TableMeta(BuiltinStorages.RCFILE, options); - org.apache.tajo.catalog.Schema schema = new org.apache.tajo.catalog.Schema(); + org.apache.tajo.catalog.Schema schema = SchemaFactory.newV1(); schema.addColumn("r_regionkey", TajoDataTypes.Type.INT4); schema.addColumn("r_name", TajoDataTypes.Type.TEXT); schema.addColumn("r_comment", TajoDataTypes.Type.TEXT); @@ -202,7 +202,7 @@ public void testTableWithNullValue() throws Exception { options.set(StorageConstants.TEXT_NULL, StringEscapeUtils.escapeJava("\u0003")); TableMeta meta = new TableMeta(BuiltinStorages.TEXT, options); - org.apache.tajo.catalog.Schema schema = new org.apache.tajo.catalog.Schema(); + org.apache.tajo.catalog.Schema schema = SchemaFactory.newV1(); schema.addColumn("s_suppkey", TajoDataTypes.Type.INT4); schema.addColumn("s_name", TajoDataTypes.Type.TEXT); schema.addColumn("s_address", TajoDataTypes.Type.TEXT); @@ -251,7 +251,7 @@ public void testTableWithNullValue() throws Exception { public void testAddTableByPartition() throws Exception { TableMeta meta = new TableMeta("TEXT", new KeyValueSet()); - org.apache.tajo.catalog.Schema schema = new org.apache.tajo.catalog.Schema(); + org.apache.tajo.catalog.Schema schema = SchemaFactory.newV1(); schema.addColumn("n_name", TajoDataTypes.Type.TEXT); schema.addColumn("n_regionkey", TajoDataTypes.Type.INT4); schema.addColumn("n_comment", TajoDataTypes.Type.TEXT); @@ -260,7 +260,7 @@ public void testAddTableByPartition() throws Exception { TableDesc table = new TableDesc(CatalogUtil.buildFQName(DB_NAME, NATION), schema, meta, new Path(warehousePath, new Path(DB_NAME, NATION)).toUri()); - org.apache.tajo.catalog.Schema expressionSchema = new org.apache.tajo.catalog.Schema(); + org.apache.tajo.catalog.Schema expressionSchema = SchemaFactory.newV1(); expressionSchema.addColumn("n_nationkey", TajoDataTypes.Type.INT4); expressionSchema.addColumn("n_date", TajoDataTypes.Type.TEXT); @@ -499,7 +499,7 @@ private void testDropPartition(String tableName, String partitionName) throws E @Test public void testGetAllTableNames() throws Exception{ TableMeta meta = new TableMeta(BuiltinStorages.TEXT, new KeyValueSet()); - org.apache.tajo.catalog.Schema schema = new org.apache.tajo.catalog.Schema(); + org.apache.tajo.catalog.Schema schema = SchemaFactory.newV1(); schema.addColumn("n_name", TajoDataTypes.Type.TEXT); schema.addColumn("n_regionkey", TajoDataTypes.Type.INT4); schema.addColumn("n_comment", TajoDataTypes.Type.TEXT); @@ -527,7 +527,7 @@ public void testGetAllTableNames() throws Exception{ @Test public void testDeleteTable() throws Exception { TableMeta meta = new TableMeta(BuiltinStorages.TEXT, new KeyValueSet()); - org.apache.tajo.catalog.Schema schema = new org.apache.tajo.catalog.Schema(); + org.apache.tajo.catalog.Schema schema = SchemaFactory.newV1(); schema.addColumn("n_name", TajoDataTypes.Type.TEXT); schema.addColumn("n_regionkey", TajoDataTypes.Type.INT4); schema.addColumn("n_comment", TajoDataTypes.Type.TEXT); @@ -552,7 +552,7 @@ public void testTableUsingSequenceFileWithBinarySerde() throws Exception { options.set(StorageConstants.SEQUENCEFILE_SERDE, StorageConstants.DEFAULT_BINARY_SERDE); TableMeta meta = new TableMeta(BuiltinStorages.SEQUENCE_FILE, options); - org.apache.tajo.catalog.Schema schema = new org.apache.tajo.catalog.Schema(); + org.apache.tajo.catalog.Schema schema = SchemaFactory.newV1(); schema.addColumn("r_regionkey", TajoDataTypes.Type.INT4); schema.addColumn("r_name", TajoDataTypes.Type.TEXT); schema.addColumn("r_comment", TajoDataTypes.Type.TEXT); @@ -586,7 +586,7 @@ public void testTableUsingSequenceFileWithTextSerde() throws Exception { options.set(StorageConstants.SEQUENCEFILE_SERDE, StorageConstants.DEFAULT_TEXT_SERDE); TableMeta meta = new TableMeta(BuiltinStorages.SEQUENCE_FILE, options); - org.apache.tajo.catalog.Schema schema = new org.apache.tajo.catalog.Schema(); + org.apache.tajo.catalog.Schema schema = SchemaFactory.newV1(); schema.addColumn("r_regionkey", TajoDataTypes.Type.INT4); schema.addColumn("r_name", TajoDataTypes.Type.TEXT); schema.addColumn("r_comment", TajoDataTypes.Type.TEXT); @@ -618,7 +618,7 @@ public void testTableUsingSequenceFileWithTextSerde() throws Exception { public void testTableUsingParquet() throws Exception { TableMeta meta = new TableMeta("PARQUET", new KeyValueSet()); - org.apache.tajo.catalog.Schema schema = new org.apache.tajo.catalog.Schema(); + org.apache.tajo.catalog.Schema schema = SchemaFactory.newV1(); schema.addColumn("c_custkey", TajoDataTypes.Type.INT4); schema.addColumn("c_name", TajoDataTypes.Type.TEXT); schema.addColumn("c_address", TajoDataTypes.Type.TEXT); @@ -655,7 +655,7 @@ public void testDataTypeCompatibility() throws Exception { TableMeta meta = new TableMeta(BuiltinStorages.TEXT, new KeyValueSet()); - org.apache.tajo.catalog.Schema schema = new org.apache.tajo.catalog.Schema(); + org.apache.tajo.catalog.Schema schema = SchemaFactory.newV1(); schema.addColumn("col1", TajoDataTypes.Type.INT4); schema.addColumn("col2", TajoDataTypes.Type.INT1); schema.addColumn("col3", TajoDataTypes.Type.INT2); From 8dc9a5518a4c5f90b8fb861b47e894955b558122 Mon Sep 17 00:00:00 2001 From: Hyunsik Choi Date: Wed, 16 Mar 2016 16:45:01 -0700 Subject: [PATCH 4/5] Fix missed gson handler. --- .../tajo/engine/json/CoreGsonHelper.java | 24 ++++--------------- .../tajo/plan/serder/PlanGsonHelper.java | 5 +++- 2 files changed, 9 insertions(+), 20 deletions(-) diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/json/CoreGsonHelper.java b/tajo-core/src/main/java/org/apache/tajo/engine/json/CoreGsonHelper.java index ea5e13df82..a922ca8fab 100644 --- a/tajo-core/src/main/java/org/apache/tajo/engine/json/CoreGsonHelper.java +++ b/tajo-core/src/main/java/org/apache/tajo/engine/json/CoreGsonHelper.java @@ -21,8 +21,10 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; import org.apache.hadoop.fs.Path; +import org.apache.tajo.catalog.Schema; import org.apache.tajo.catalog.TableMeta; import org.apache.tajo.catalog.json.FunctionAdapter; +import org.apache.tajo.catalog.json.SchemaAdapter; import org.apache.tajo.catalog.json.TableMetaAdapter; import org.apache.tajo.common.TajoDataTypes.DataType; import org.apache.tajo.datum.Datum; @@ -34,6 +36,7 @@ import org.apache.tajo.function.Function; import org.apache.tajo.plan.serder.EvalNodeAdapter; import org.apache.tajo.plan.serder.LogicalNodeAdapter; +import org.apache.tajo.plan.serder.PlanGsonHelper; import java.lang.reflect.Type; import java.util.HashMap; @@ -46,27 +49,10 @@ public class CoreGsonHelper { private CoreGsonHelper() { } - - private static Map registerAdapters() { - Map adapters = new HashMap<>(); - adapters.put(Path.class, new PathSerializer()); - adapters.put(Class.class, new ClassNameSerializer()); - adapters.put(LogicalNode.class, new LogicalNodeAdapter()); - adapters.put(EvalNode.class, new EvalNodeAdapter()); - adapters.put(TableMeta.class, new TableMetaAdapter()); - adapters.put(Function.class, new FunctionAdapter()); - adapters.put(GeneralFunction.class, new FunctionAdapter()); - adapters.put(AggFunction.class, new FunctionAdapter()); - adapters.put(Datum.class, new DatumAdapter()); - adapters.put(DataType.class, new DataTypeAdapter()); - adapters.put(TimeZone.class, new TimeZoneGsonSerdeAdapter()); - - return adapters; - } public static Gson getInstance() { if (gson == null ) { - GsonHelper helper = new GsonHelper(registerAdapters()); + GsonHelper helper = new GsonHelper(PlanGsonHelper.registerAdapters()); gson = helper.getGson(); } return gson; @@ -77,7 +63,7 @@ public static Gson getPrettyInstance() { GsonBuilder prettyBuilder = new GsonBuilder() .setPrettyPrinting() .excludeFieldsWithoutExposeAnnotation(); - GsonHelper.registerAdapters(prettyBuilder, registerAdapters()); + GsonHelper.registerAdapters(prettyBuilder, PlanGsonHelper.registerAdapters()); gsonPretty = prettyBuilder.create(); } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/serder/PlanGsonHelper.java b/tajo-plan/src/main/java/org/apache/tajo/plan/serder/PlanGsonHelper.java index 875f1d19e7..80fec98165 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/serder/PlanGsonHelper.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/serder/PlanGsonHelper.java @@ -21,8 +21,10 @@ import com.google.gson.Gson; import com.google.gson.GsonBuilder; import org.apache.hadoop.fs.Path; +import org.apache.tajo.catalog.Schema; import org.apache.tajo.catalog.TableMeta; import org.apache.tajo.catalog.json.FunctionAdapter; +import org.apache.tajo.catalog.json.SchemaAdapter; import org.apache.tajo.catalog.json.TableMetaAdapter; import org.apache.tajo.common.TajoDataTypes.DataType; import org.apache.tajo.datum.Datum; @@ -45,7 +47,7 @@ public class PlanGsonHelper { private PlanGsonHelper() { } - private static Map registerAdapters() { + public static Map registerAdapters() { Map adapters = new HashMap<>(); adapters.put(Path.class, new PathSerializer()); adapters.put(Class.class, new ClassNameSerializer()); @@ -58,6 +60,7 @@ private static Map registerAdapters() { adapters.put(Datum.class, new DatumAdapter()); adapters.put(DataType.class, new DataTypeAdapter()); adapters.put(TimeZone.class, new TimeZoneGsonSerdeAdapter()); + adapters.put(Schema.class, new SchemaAdapter()); return adapters; } From bb68e6aefad83a8a0cfa647eb370b313a64afd2b Mon Sep 17 00:00:00 2001 From: Hyunsik Choi Date: Wed, 16 Mar 2016 23:56:12 -0700 Subject: [PATCH 5/5] Fix gson handler in restful server. --- .../tajo/catalog/json/CatalogGsonHelper.java | 6 +- .../apache/tajo/json/CommonGsonHelper.java | 4 +- .../java/org/apache/tajo/json/GsonHelper.java | 6 +- .../tajo/ws/rs/resources/RestTestUtils.java | 64 ------------------- .../ws/rs/resources/TestClusterResource.java | 3 +- .../rs/resources/TestDatabasesResource.java | 3 +- .../rs/resources/TestFunctionsResource.java | 3 +- .../ws/rs/resources/TestQueryResource.java | 3 +- .../rs/resources/TestQueryResultResource.java | 3 +- .../ws/rs/resources/TestSessionsResource.java | 3 +- .../ws/rs/resources/TestTablesResource.java | 3 +- .../apache/tajo/ws/rs/TajoRestService.java | 43 +------------ .../tajo/plan/serder/PlanGsonHelper.java | 4 +- 13 files changed, 26 insertions(+), 122 deletions(-) delete mode 100644 tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/RestTestUtils.java diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/json/CatalogGsonHelper.java b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/json/CatalogGsonHelper.java index 69f6955953..c145ecdd3c 100644 --- a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/json/CatalogGsonHelper.java +++ b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/json/CatalogGsonHelper.java @@ -23,9 +23,9 @@ import org.apache.hadoop.fs.Path; import org.apache.tajo.catalog.Schema; import org.apache.tajo.catalog.TableMeta; -import org.apache.tajo.function.Function; import org.apache.tajo.common.TajoDataTypes.DataType; import org.apache.tajo.datum.Datum; +import org.apache.tajo.function.Function; import org.apache.tajo.json.*; import java.lang.reflect.Type; @@ -39,8 +39,8 @@ public class CatalogGsonHelper { private CatalogGsonHelper() { } - private static Map registerAdapters() { - Map adapters = new HashMap<>(); + private static Map> registerAdapters() { + Map> adapters = new HashMap<>(); adapters.put(Class.class, new ClassNameSerializer()); adapters.put(Path.class, new PathSerializer()); adapters.put(TableMeta.class, new TableMetaAdapter()); diff --git a/tajo-common/src/main/java/org/apache/tajo/json/CommonGsonHelper.java b/tajo-common/src/main/java/org/apache/tajo/json/CommonGsonHelper.java index 1dd1459076..d838b6ad0c 100644 --- a/tajo-common/src/main/java/org/apache/tajo/json/CommonGsonHelper.java +++ b/tajo-common/src/main/java/org/apache/tajo/json/CommonGsonHelper.java @@ -37,8 +37,8 @@ public class CommonGsonHelper { private CommonGsonHelper() { } - private static Map registerAdapters() { - Map adapters = new HashMap<>(); + private static Map> registerAdapters() { + Map> adapters = new HashMap<>(); adapters.put(Datum.class, new DatumAdapter()); return adapters; diff --git a/tajo-common/src/main/java/org/apache/tajo/json/GsonHelper.java b/tajo-common/src/main/java/org/apache/tajo/json/GsonHelper.java index 8c6d89173e..eb73c8995b 100644 --- a/tajo-common/src/main/java/org/apache/tajo/json/GsonHelper.java +++ b/tajo-common/src/main/java/org/apache/tajo/json/GsonHelper.java @@ -27,14 +27,14 @@ public class GsonHelper { private final GsonBuilder builder; private final Gson gson; - public GsonHelper(Map adapters) { + public GsonHelper(Map> adapters) { builder = new GsonBuilder().excludeFieldsWithoutExposeAnnotation(); registerAdapters(builder, adapters); gson = builder.create(); } - public static void registerAdapters(GsonBuilder builder, Map adapters) { - for (Map.Entry entry : adapters.entrySet()) { + public static void registerAdapters(GsonBuilder builder, Map> adapters) { + for (Map.Entry> entry : adapters.entrySet()) { try { builder.registerTypeAdapter(entry.getKey(), entry.getValue()); } catch (Exception e) { diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/RestTestUtils.java b/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/RestTestUtils.java deleted file mode 100644 index 7a5b38d149..0000000000 --- a/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/RestTestUtils.java +++ /dev/null @@ -1,64 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.tajo.ws.rs.resources; - -import java.lang.reflect.Type; -import java.util.HashMap; -import java.util.Map; -import java.util.TimeZone; - -import org.apache.hadoop.fs.Path; -import org.apache.tajo.catalog.TableMeta; -import org.apache.tajo.catalog.json.FunctionAdapter; -import org.apache.tajo.catalog.json.TableMetaAdapter; -import org.apache.tajo.common.TajoDataTypes.DataType; -import org.apache.tajo.datum.Datum; -import org.apache.tajo.function.Function; -import org.apache.tajo.json.ClassNameSerializer; -import org.apache.tajo.json.DataTypeAdapter; -import org.apache.tajo.json.DatumAdapter; -import org.apache.tajo.json.GsonSerDerAdapter; -import org.apache.tajo.json.PathSerializer; -import org.apache.tajo.json.TimeZoneGsonSerdeAdapter; -import org.apache.tajo.plan.expr.EvalNode; -import org.apache.tajo.plan.function.AggFunction; -import org.apache.tajo.plan.function.GeneralFunction; -import org.apache.tajo.plan.logical.LogicalNode; -import org.apache.tajo.plan.serder.EvalNodeAdapter; -import org.apache.tajo.plan.serder.LogicalNodeAdapter; - -public class RestTestUtils { - - public static Map> registerTypeAdapterMap() { - Map> adapters = new HashMap<>(); - adapters.put(Path.class, new PathSerializer()); - adapters.put(Class.class, new ClassNameSerializer()); - adapters.put(LogicalNode.class, new LogicalNodeAdapter()); - adapters.put(EvalNode.class, new EvalNodeAdapter()); - adapters.put(TableMeta.class, new TableMetaAdapter()); - adapters.put(Function.class, new FunctionAdapter()); - adapters.put(GeneralFunction.class, new FunctionAdapter()); - adapters.put(AggFunction.class, new FunctionAdapter()); - adapters.put(Datum.class, new DatumAdapter()); - adapters.put(DataType.class, new DataTypeAdapter()); - adapters.put(TimeZone.class, new TimeZoneGsonSerdeAdapter()); - - return adapters; - } -} diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestClusterResource.java b/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestClusterResource.java index 52e586bbff..de0c5baf85 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestClusterResource.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestClusterResource.java @@ -30,6 +30,7 @@ import org.apache.tajo.QueryTestCaseBase; import org.apache.tajo.TajoConstants; import org.apache.tajo.conf.TajoConf.ConfVars; +import org.apache.tajo.plan.serder.PlanGsonHelper; import org.apache.tajo.ws.rs.netty.gson.GsonFeature; import org.glassfish.jersey.client.ClientProperties; import org.glassfish.jersey.filter.LoggingFilter; @@ -55,7 +56,7 @@ public void setUp() throws Exception { restServiceURI = new URI("http", null, address.getHostName(), address.getPort(), "/rest", null, null); clusterURI = new URI(restServiceURI + "/cluster"); restClient = ClientBuilder.newBuilder() - .register(new GsonFeature(RestTestUtils.registerTypeAdapterMap())) + .register(new GsonFeature(PlanGsonHelper.registerAdapters())) .register(LoggingFilter.class) .property(ClientProperties.FEATURE_AUTO_DISCOVERY_DISABLE, true) .property(ClientProperties.METAINF_SERVICES_LOOKUP_DISABLE, true) diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestDatabasesResource.java b/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestDatabasesResource.java index 6ea95f8d77..614dc735ad 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestDatabasesResource.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestDatabasesResource.java @@ -34,6 +34,7 @@ import org.apache.tajo.QueryTestCaseBase; import org.apache.tajo.TajoConstants; import org.apache.tajo.conf.TajoConf.ConfVars; +import org.apache.tajo.plan.serder.PlanGsonHelper; import org.apache.tajo.ws.rs.netty.gson.GsonFeature; import org.apache.tajo.ws.rs.requests.NewDatabaseRequest; import org.apache.tajo.ws.rs.responses.DatabaseInfoResponse; @@ -61,7 +62,7 @@ public void setUp() throws Exception { restServiceURI = new URI("http", null, address.getHostName(), address.getPort(), "/rest", null, null); databasesURI = new URI(restServiceURI + "/databases"); restClient = ClientBuilder.newBuilder() - .register(new GsonFeature(RestTestUtils.registerTypeAdapterMap())) + .register(new GsonFeature(PlanGsonHelper.registerAdapters())) .register(LoggingFilter.class) .property(ClientProperties.FEATURE_AUTO_DISCOVERY_DISABLE, true) .property(ClientProperties.METAINF_SERVICES_LOOKUP_DISABLE, true) diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestFunctionsResource.java b/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestFunctionsResource.java index db7b8360e1..fb2d1d7b1f 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestFunctionsResource.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestFunctionsResource.java @@ -22,6 +22,7 @@ import org.apache.tajo.TajoConstants; import org.apache.tajo.conf.TajoConf.ConfVars; import org.apache.tajo.function.FunctionSignature; +import org.apache.tajo.plan.serder.PlanGsonHelper; import org.apache.tajo.ws.rs.netty.gson.GsonFeature; import org.glassfish.jersey.client.ClientProperties; import org.glassfish.jersey.filter.LoggingFilter; @@ -56,7 +57,7 @@ public void setUp() throws Exception { restServiceURI = new URI("http", null, address.getHostName(), address.getPort(), "/rest", null, null); functionsURI = new URI(restServiceURI + "/functions"); restClient = ClientBuilder.newBuilder() - .register(new GsonFeature(RestTestUtils.registerTypeAdapterMap())) + .register(new GsonFeature(PlanGsonHelper.registerAdapters())) .register(LoggingFilter.class) .property(ClientProperties.FEATURE_AUTO_DISCOVERY_DISABLE, true) .property(ClientProperties.METAINF_SERVICES_LOOKUP_DISABLE, true) diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestQueryResource.java b/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestQueryResource.java index 7fcb640ee0..4638a8c5a8 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestQueryResource.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestQueryResource.java @@ -25,6 +25,7 @@ import org.apache.tajo.error.Errors.ResultCode; import org.apache.tajo.exception.ErrorUtil; import org.apache.tajo.master.QueryInfo; +import org.apache.tajo.plan.serder.PlanGsonHelper; import org.apache.tajo.ws.rs.netty.gson.GsonFeature; import org.apache.tajo.ws.rs.requests.NewSessionRequest; import org.apache.tajo.ws.rs.requests.SubmitQueryRequest; @@ -69,7 +70,7 @@ public void setUp() throws Exception { sessionsURI = new URI(restServiceURI + "/sessions"); queriesURI = new URI(restServiceURI + "/queries"); restClient = ClientBuilder.newBuilder() - .register(new GsonFeature(RestTestUtils.registerTypeAdapterMap())) + .register(new GsonFeature(PlanGsonHelper.registerAdapters())) .register(LoggingFilter.class) .property(ClientProperties.FEATURE_AUTO_DISCOVERY_DISABLE, true) .property(ClientProperties.METAINF_SERVICES_LOOKUP_DISABLE, true) diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestQueryResultResource.java b/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestQueryResultResource.java index 331fed7ff0..8b9c93df38 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestQueryResultResource.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestQueryResultResource.java @@ -23,6 +23,7 @@ import org.apache.tajo.conf.TajoConf.ConfVars; import org.apache.tajo.error.Errors.ResultCode; import org.apache.tajo.exception.ErrorUtil; +import org.apache.tajo.plan.serder.PlanGsonHelper; import org.apache.tajo.storage.RowStoreUtil; import org.apache.tajo.storage.Tuple; import org.apache.tajo.ws.rs.netty.gson.GsonFeature; @@ -80,7 +81,7 @@ public void setUp() throws Exception { sessionsURI = new URI(restServiceURI + "/sessions"); queriesURI = new URI(restServiceURI + "/queries"); restClient = ClientBuilder.newBuilder() - .register(new GsonFeature(RestTestUtils.registerTypeAdapterMap())) + .register(new GsonFeature(PlanGsonHelper.registerAdapters())) .register(LoggingFilter.class) .property(ClientProperties.FEATURE_AUTO_DISCOVERY_DISABLE, true) .property(ClientProperties.METAINF_SERVICES_LOOKUP_DISABLE, true) diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestSessionsResource.java b/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestSessionsResource.java index 83da87b1aa..3ddeb95937 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestSessionsResource.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestSessionsResource.java @@ -34,6 +34,7 @@ import org.apache.tajo.QueryTestCaseBase; import org.apache.tajo.TajoConstants; import org.apache.tajo.conf.TajoConf.ConfVars; +import org.apache.tajo.plan.serder.PlanGsonHelper; import org.apache.tajo.ws.rs.netty.gson.GsonFeature; import org.apache.tajo.ws.rs.requests.NewSessionRequest; import org.apache.tajo.ws.rs.responses.NewSessionResponse; @@ -61,7 +62,7 @@ public void setUp() throws Exception { restServiceURI = new URI("http", null, address.getHostName(), address.getPort(), "/rest", null, null); sessionsURI = new URI(restServiceURI + "/sessions"); restClient = ClientBuilder.newBuilder() - .register(new GsonFeature(RestTestUtils.registerTypeAdapterMap())) + .register(new GsonFeature(PlanGsonHelper.registerAdapters())) .register(LoggingFilter.class) .property(ClientProperties.FEATURE_AUTO_DISCOVERY_DISABLE, true) .property(ClientProperties.METAINF_SERVICES_LOOKUP_DISABLE, true) diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestTablesResource.java b/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestTablesResource.java index 9d42102bf3..381c044ef4 100644 --- a/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestTablesResource.java +++ b/tajo-core-tests/src/test/java/org/apache/tajo/ws/rs/resources/TestTablesResource.java @@ -23,6 +23,7 @@ import org.apache.tajo.catalog.TableDesc; import org.apache.tajo.conf.TajoConf.ConfVars; import org.apache.tajo.error.Errors.ResultCode; +import org.apache.tajo.plan.serder.PlanGsonHelper; import org.apache.tajo.ws.rs.netty.gson.GsonFeature; import org.apache.tajo.ws.rs.requests.NewSessionRequest; import org.apache.tajo.ws.rs.requests.SubmitQueryRequest; @@ -74,7 +75,7 @@ public void setUp() throws Exception { queriesURI = new URI(restServiceURI + "/queries"); sessionsURI = new URI(restServiceURI + "/sessions"); restClient = ClientBuilder.newBuilder() - .register(new GsonFeature(RestTestUtils.registerTypeAdapterMap())) + .register(new GsonFeature(PlanGsonHelper.registerAdapters())) .register(LoggingFilter.class) .property(ClientProperties.FEATURE_AUTO_DISCOVERY_DISABLE, true) .property(ClientProperties.METAINF_SERVICES_LOOKUP_DISABLE, true) diff --git a/tajo-core/src/main/java/org/apache/tajo/ws/rs/TajoRestService.java b/tajo-core/src/main/java/org/apache/tajo/ws/rs/TajoRestService.java index 293192c3ff..ba106d232c 100644 --- a/tajo-core/src/main/java/org/apache/tajo/ws/rs/TajoRestService.java +++ b/tajo-core/src/main/java/org/apache/tajo/ws/rs/TajoRestService.java @@ -21,28 +21,10 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.fs.Path; import org.apache.hadoop.service.CompositeService; -import org.apache.tajo.catalog.TableMeta; -import org.apache.tajo.catalog.json.FunctionAdapter; -import org.apache.tajo.catalog.json.TableMetaAdapter; -import org.apache.tajo.common.TajoDataTypes.DataType; import org.apache.tajo.conf.TajoConf; -import org.apache.tajo.datum.Datum; -import org.apache.tajo.function.Function; -import org.apache.tajo.json.ClassNameSerializer; -import org.apache.tajo.json.DataTypeAdapter; -import org.apache.tajo.json.DatumAdapter; -import org.apache.tajo.json.GsonSerDerAdapter; -import org.apache.tajo.json.PathSerializer; -import org.apache.tajo.json.TimeZoneGsonSerdeAdapter; import org.apache.tajo.master.TajoMaster.MasterContext; -import org.apache.tajo.plan.expr.EvalNode; -import org.apache.tajo.plan.function.AggFunction; -import org.apache.tajo.plan.function.GeneralFunction; -import org.apache.tajo.plan.logical.LogicalNode; -import org.apache.tajo.plan.serder.EvalNodeAdapter; -import org.apache.tajo.plan.serder.LogicalNodeAdapter; +import org.apache.tajo.plan.serder.PlanGsonHelper; import org.apache.tajo.ws.rs.netty.NettyRestServer; import org.apache.tajo.ws.rs.netty.NettyRestServerFactory; import org.apache.tajo.ws.rs.netty.gson.GsonFeature; @@ -50,12 +32,8 @@ import org.glassfish.jersey.server.ResourceConfig; import org.glassfish.jersey.server.ServerProperties; -import java.lang.reflect.Type; import java.net.InetSocketAddress; import java.net.URI; -import java.util.HashMap; -import java.util.Map; -import java.util.TimeZone; public class TajoRestService extends CompositeService { @@ -69,27 +47,10 @@ public TajoRestService(MasterContext masterContext) { this.masterContext = masterContext; } - - private Map> registerTypeAdapterMap() { - Map> adapters = new HashMap<>(); - adapters.put(Path.class, new PathSerializer()); - adapters.put(Class.class, new ClassNameSerializer()); - adapters.put(LogicalNode.class, new LogicalNodeAdapter()); - adapters.put(EvalNode.class, new EvalNodeAdapter()); - adapters.put(TableMeta.class, new TableMetaAdapter()); - adapters.put(Function.class, new FunctionAdapter()); - adapters.put(GeneralFunction.class, new FunctionAdapter()); - adapters.put(AggFunction.class, new FunctionAdapter()); - adapters.put(Datum.class, new DatumAdapter()); - adapters.put(DataType.class, new DataTypeAdapter()); - adapters.put(TimeZone.class, new TimeZoneGsonSerdeAdapter()); - - return adapters; - } @Override protected void serviceInit(Configuration conf) throws Exception { - GsonFeature gsonFeature = new GsonFeature(registerTypeAdapterMap()); + GsonFeature gsonFeature = new GsonFeature(PlanGsonHelper.registerAdapters()); ClientApplication clientApplication = new ClientApplication(masterContext); ResourceConfig resourceConfig = ResourceConfig.forApplication(clientApplication) diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/serder/PlanGsonHelper.java b/tajo-plan/src/main/java/org/apache/tajo/plan/serder/PlanGsonHelper.java index 80fec98165..77bf103bfa 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/serder/PlanGsonHelper.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/serder/PlanGsonHelper.java @@ -47,8 +47,8 @@ public class PlanGsonHelper { private PlanGsonHelper() { } - public static Map registerAdapters() { - Map adapters = new HashMap<>(); + public static Map> registerAdapters() { + Map> adapters = new HashMap<>(); adapters.put(Path.class, new PathSerializer()); adapters.put(Class.class, new ClassNameSerializer()); adapters.put(LogicalNode.class, new LogicalNodeAdapter());