You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tajo.apache.org by hy...@apache.org on 2016/04/20 22:39:34 UTC
[1/6] tajo git commit: TAJO-2108: Refactor Schema to be immutable.
Repository: tajo
Updated Branches:
refs/heads/master 71d2825cd -> 4aef83a39
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-storage/tajo-storage-common/src/test/java/org/apache/tajo/storage/TestLazyTuple.java
----------------------------------------------------------------------
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 df5d3b0..76c2ef1 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
@@ -19,8 +19,9 @@
package org.apache.tajo.storage;
+import org.apache.tajo.catalog.CatalogUtil;
import org.apache.tajo.catalog.Schema;
-import org.apache.tajo.catalog.SchemaFactory;
+import org.apache.tajo.catalog.SchemaBuilder;
import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.datum.DatumFactory;
import org.apache.tajo.datum.NullDatum;
@@ -41,24 +42,23 @@ public class TestLazyTuple {
public void setUp() {
nullbytes = "\\N".getBytes();
- schema = SchemaFactory.newV1();
- schema.addColumn("col1", TajoDataTypes.Type.BOOLEAN);
- schema.addColumn("col2", TajoDataTypes.Type.BIT);
- schema.addColumn("col3", TajoDataTypes.Type.CHAR, 7);
- schema.addColumn("col4", TajoDataTypes.Type.INT2);
- schema.addColumn("col5", TajoDataTypes.Type.INT4);
- schema.addColumn("col6", TajoDataTypes.Type.INT8);
- schema.addColumn("col7", TajoDataTypes.Type.FLOAT4);
- schema.addColumn("col8", TajoDataTypes.Type.FLOAT8);
- schema.addColumn("col9", TajoDataTypes.Type.TEXT);
- schema.addColumn("col10", TajoDataTypes.Type.BLOB);
- schema.addColumn("col11", TajoDataTypes.Type.INET4);
- schema.addColumn("col12", TajoDataTypes.Type.INT4);
- schema.addColumn("col13", TajoDataTypes.Type.NULL_TYPE);
+ schema = SchemaBuilder.builder()
+ .add("col1", TajoDataTypes.Type.BOOLEAN)
+ .add("col2", CatalogUtil.newDataTypeWithLen(TajoDataTypes.Type.CHAR, 7))
+ .add("col3", TajoDataTypes.Type.INT2)
+ .add("col4", TajoDataTypes.Type.INT4)
+ .add("col5", TajoDataTypes.Type.INT8)
+ .add("col6", TajoDataTypes.Type.FLOAT4)
+ .add("col7", TajoDataTypes.Type.FLOAT8)
+ .add("col8", TajoDataTypes.Type.TEXT)
+ .add("col9", TajoDataTypes.Type.BLOB)
+ .add("col10", TajoDataTypes.Type.INET4)
+ .add("col11", TajoDataTypes.Type.INT4)
+ .add("col12", TajoDataTypes.Type.NULL_TYPE)
+ .build();
StringBuilder sb = new StringBuilder();
sb.append(DatumFactory.createBool(true)).append('|');
- sb.append(new String(DatumFactory.createBit((byte) 0x99).asTextBytes())).append('|');
sb.append(DatumFactory.createChar("str")).append('|');
sb.append(DatumFactory.createInt2((short) 17)).append('|');
sb.append(DatumFactory.createInt4(59)).append('|');
@@ -80,18 +80,17 @@ public class TestLazyTuple {
LazyTuple t1 = new LazyTuple(schema, textRow, -1, nullbytes, serde);
assertEquals(DatumFactory.createBool(true), t1.get(0));
- assertEquals(DatumFactory.createBit((byte) 0x99), t1.get(1));
- assertEquals(DatumFactory.createChar("str"), t1.get(2));
- assertEquals(DatumFactory.createInt2((short) 17), t1.get(3));
- assertEquals(DatumFactory.createInt4(59), t1.get(4));
- assertEquals(DatumFactory.createInt8(23l), t1.get(5));
- assertEquals(DatumFactory.createFloat4(77.9f), t1.get(6));
- assertEquals(DatumFactory.createFloat8(271.9f), t1.get(7));
- assertEquals(DatumFactory.createText("str2"), t1.get(8));
- assertEquals(DatumFactory.createBlob("jinho".getBytes()), t1.get(9));
- assertEquals(DatumFactory.createInet4("192.168.0.1"), t1.get(10));
+ assertEquals(DatumFactory.createChar("str"), t1.get(1));
+ assertEquals(DatumFactory.createInt2((short) 17), t1.get(2));
+ assertEquals(DatumFactory.createInt4(59), t1.get(3));
+ assertEquals(DatumFactory.createInt8(23l), t1.get(4));
+ assertEquals(DatumFactory.createFloat4(77.9f), t1.get(5));
+ assertEquals(DatumFactory.createFloat8(271.9f), t1.get(6));
+ assertEquals(DatumFactory.createText("str2"), t1.get(7));
+ assertEquals(DatumFactory.createBlob("jinho".getBytes()), t1.get(8));
+ assertEquals(DatumFactory.createInet4("192.168.0.1"), t1.get(9));
+ assertEquals(NullDatum.get(), t1.get(10));
assertEquals(NullDatum.get(), t1.get(11));
- assertEquals(NullDatum.get(), t1.get(12));
}
@Test
@@ -115,7 +114,6 @@ public class TestLazyTuple {
assertFalse(t1.contains(9));
assertFalse(t1.contains(10));
assertFalse(t1.contains(11));
- assertFalse(t1.contains(12));
}
@Test
@@ -198,12 +196,13 @@ public class TestLazyTuple {
@Test
public void testInvalidNumber() {
byte[][] bytes = BytesUtils.splitPreserveAllTokens(" 1| |2 ||".getBytes(), '|', 5);
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TajoDataTypes.Type.INT2);
- schema.addColumn("col2", TajoDataTypes.Type.INT4);
- schema.addColumn("col3", TajoDataTypes.Type.INT8);
- schema.addColumn("col4", TajoDataTypes.Type.FLOAT4);
- schema.addColumn("col5", TajoDataTypes.Type.FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TajoDataTypes.Type.INT2)
+ .add("col2", TajoDataTypes.Type.INT4)
+ .add("col3", TajoDataTypes.Type.INT8)
+ .add("col4", TajoDataTypes.Type.FLOAT4)
+ .add("col5", TajoDataTypes.Type.FLOAT8)
+ .build();
LazyTuple tuple = new LazyTuple(schema, bytes, 0);
assertEquals(bytes.length, tuple.size());
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-storage/tajo-storage-common/src/test/java/org/apache/tajo/storage/TestTupleComparator.java
----------------------------------------------------------------------
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 e5d8464..9f0764d 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,7 +19,7 @@
package org.apache.tajo.storage;
import org.apache.tajo.catalog.Schema;
-import org.apache.tajo.catalog.SchemaFactory;
+import org.apache.tajo.catalog.SchemaBuilder;
import org.apache.tajo.catalog.SortSpec;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.datum.*;
@@ -45,12 +45,13 @@ public class TestTupleComparator {
@Test
public final void testCompare() {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", Type.INT4);
- schema.addColumn("col2", Type.INT4);
- schema.addColumn("col3", Type.INT4);
- schema.addColumn("col4", Type.INT4);
- schema.addColumn("col5", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", Type.INT4)
+ .add("col2", Type.INT4)
+ .add("col3", Type.INT4)
+ .add("col4", Type.INT4)
+ .add("col5", Type.TEXT)
+ .build();
VTuple tuple1 = new VTuple(
new Datum[] {
@@ -78,9 +79,10 @@ public class TestTupleComparator {
@Test
public void testNullFirst() throws Exception {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4);
- schema.addColumn("name", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("name", Type.TEXT)
+ .build();
VTuple tuple1 = new VTuple(2);
tuple1.put(0, new Int4Datum(1));
@@ -118,9 +120,10 @@ public class TestTupleComparator {
@Test
public void testNullLast() throws Exception {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4);
- schema.addColumn("name", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("name", Type.TEXT)
+ .build();
VTuple tuple1 = new VTuple(2);
tuple1.put(0, new Int4Datum(1));
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-storage/tajo-storage-hbase/src/test/java/org/apache/tajo/storage/hbase/TestColumnMapping.java
----------------------------------------------------------------------
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 6713519..b607a33 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,7 +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.SchemaBuilder;
import org.apache.tajo.catalog.TableMeta;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.util.KeyValueSet;
@@ -36,11 +36,12 @@ public class TestColumnMapping {
keyValueSet.set(HBaseStorageConstants.META_TABLE_KEY, "test");
keyValueSet.set(HBaseStorageConstants.META_COLUMNS_KEY, ":key,col2:key:,col2:value:#b,col3:");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("c1", Type.TEXT);
- schema.addColumn("c2", Type.TEXT);
- schema.addColumn("c3", Type.TEXT);
- schema.addColumn("c4", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("c1", Type.TEXT)
+ .add("c2", Type.TEXT)
+ .add("c3", Type.TEXT)
+ .add("c4", Type.TEXT)
+ .build();
TableMeta tableMeta = new TableMeta("HBASE", keyValueSet);
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/parquet/ParquetScanner.java
----------------------------------------------------------------------
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 4bdb4f4..6e5c551 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,7 +20,7 @@ package org.apache.tajo.storage.parquet;
import org.apache.hadoop.conf.Configuration;
import org.apache.tajo.catalog.Schema;
-import org.apache.tajo.catalog.SchemaFactory;
+import org.apache.tajo.catalog.SchemaBuilder;
import org.apache.tajo.catalog.TableMeta;
import org.apache.tajo.exception.NotImplementedException;
import org.apache.tajo.exception.TajoRuntimeException;
@@ -64,7 +64,8 @@ public class ParquetScanner extends FileScanner {
if (targets == null) {
targets = schema.toArray();
}
- reader = new TajoParquetReader(conf, fragment.getPath(), schema, SchemaFactory.newV1(targets));
+ reader = new TajoParquetReader(conf, fragment.getPath(), schema,
+ SchemaBuilder.builder().addAll(targets).build());
totalRowCount = reader.getTotalRowCount();
currentRowCount = 0;
closed = false;
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/parquet/TajoSchemaConverter.java
----------------------------------------------------------------------
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 b2f3f34..0719699 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,7 +25,7 @@ import org.apache.parquet.schema.PrimitiveType.PrimitiveTypeName;
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.catalog.SchemaBuilder;
import org.apache.tajo.common.TajoDataTypes;
import java.util.ArrayList;
@@ -65,7 +65,7 @@ public class TajoSchemaConverter {
}
Column[] columnsArray = new Column[columns.size()];
columnsArray = columns.toArray(columnsArray);
- return SchemaFactory.newV1(columnsArray);
+ return SchemaBuilder.builder().addAll(columnsArray).build();
}
private Column convertField(final Type fieldType) {
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/thirdparty/orc/OrcRecordReader.java
----------------------------------------------------------------------
diff --git a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/thirdparty/orc/OrcRecordReader.java b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/thirdparty/orc/OrcRecordReader.java
index df9a7c7..4cfd19d 100644
--- a/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/thirdparty/orc/OrcRecordReader.java
+++ b/tajo-storage/tajo-storage-hdfs/src/main/java/org/apache/tajo/storage/thirdparty/orc/OrcRecordReader.java
@@ -26,13 +26,10 @@ import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hive.common.io.DiskRange;
import org.apache.hadoop.hive.common.io.DiskRangeList;
import org.apache.orc.*;
-import org.apache.orc.OrcProto;
import org.apache.orc.impl.*;
-import org.apache.orc.impl.StreamName;
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.SchemaBuilder;
import org.apache.tajo.storage.Tuple;
import org.apache.tajo.storage.VTuple;
import org.apache.tajo.storage.fragment.FileFragment;
@@ -73,7 +70,7 @@ public class OrcRecordReader implements Closeable {
public OrcRecordReader(List<StripeInformation> stripes,
FileSystem fileSystem,
Schema schema,
- Column[] target,
+ Column[] targets,
FileFragment fragment,
List<OrcProto.Type> types,
CompressionCodec codec,
@@ -83,7 +80,7 @@ public class OrcRecordReader implements Closeable {
Configuration conf,
TimeZone timeZone) throws IOException {
- result = new VTuple(target.length);
+ result = new VTuple(targets.length);
this.conf = conf;
this.path = fragment.getPath();
@@ -91,8 +88,8 @@ public class OrcRecordReader implements Closeable {
this.types = types;
this.bufferSize = bufferSize;
this.included = new boolean[schema.size() + 1];
- included[0] = target.length > 0; // always include root column except when target schema size is 0
- Schema targetSchema = SchemaFactory.newV1(target);
+ included[0] = targets.length > 0; // always include root column except when target schema size is 0
+ Schema targetSchema = SchemaBuilder.builder().addAll(targets).build();
for (int i = 1; i < included.length; i++) {
included[i] = targetSchema.contains(schema.getColumn(i - 1));
}
@@ -120,9 +117,9 @@ public class OrcRecordReader implements Closeable {
firstRow = skippedRows;
totalRowCount = rows;
- reader = new DatumTreeReader[target.length];
+ reader = new DatumTreeReader[targets.length];
for (int i = 0; i < reader.length; i++) {
- reader[i] = TreeReaderFactory.createTreeReader(timeZone, schema.getColumnId(target[i].getQualifiedName()), target[i],
+ reader[i] = TreeReaderFactory.createTreeReader(timeZone, schema.getColumnId(targets[i].getQualifiedName()), targets[i],
options.getSkipCorruptRecords());
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestCompressionStorages.java
----------------------------------------------------------------------
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 d18961f..f1f1320 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
@@ -31,7 +31,7 @@ import org.apache.orc.OrcConf;
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.SchemaBuilder;
import org.apache.tajo.catalog.TableMeta;
import org.apache.tajo.catalog.statistics.TableStats;
import org.apache.tajo.common.TajoDataTypes.Type;
@@ -113,10 +113,11 @@ public class TestCompressionStorages {
}
private void storageCompressionTest(String dataFormat, Class<? extends CompressionCodec> codec) throws IOException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4);
- schema.addColumn("age", Type.FLOAT4);
- schema.addColumn("name", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("age", Type.FLOAT4)
+ .add("name", Type.TEXT)
+ .build();
TableMeta meta = CatalogUtil.newTableMeta(dataFormat);
meta.putProperty("compression.codec", codec.getCanonicalName());
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestDelimitedTextFile.java
----------------------------------------------------------------------
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 523a0d0..29d8197 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,7 +25,7 @@ import org.apache.hadoop.fs.FileSystem;
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.SchemaBuilder;
import org.apache.tajo.catalog.TableMeta;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.conf.TajoConf;
@@ -42,21 +42,23 @@ import static org.junit.Assert.*;
public class TestDelimitedTextFile {
private static final Log LOG = LogFactory.getLog(TestDelimitedTextFile.class);
- private static Schema schema = SchemaFactory.newV1();
+ private static Schema schema;
private static Tuple baseTuple;
static {
- schema.addColumn("col1", Type.BOOLEAN);
- schema.addColumn("col2", Type.CHAR, 7);
- schema.addColumn("col3", Type.INT2);
- schema.addColumn("col4", Type.INT4);
- schema.addColumn("col5", Type.INT8);
- schema.addColumn("col6", Type.FLOAT4);
- schema.addColumn("col7", Type.FLOAT8);
- schema.addColumn("col8", Type.TEXT);
- schema.addColumn("col9", Type.BLOB);
- schema.addColumn("col10", Type.INET4);
+ schema = SchemaBuilder.builder()
+ .add("col1", Type.BOOLEAN)
+ .add("col2", CatalogUtil.newDataTypeWithLen(Type.CHAR, 7))
+ .add("col3", Type.INT2)
+ .add("col4", Type.INT4)
+ .add("col5", Type.INT8)
+ .add("col6", Type.FLOAT4)
+ .add("col7", Type.FLOAT8)
+ .add("col8", Type.TEXT)
+ .add("col9", Type.BLOB)
+ .add("col10", Type.INET4)
+ .build();
baseTuple = new VTuple(new Datum[] {
DatumFactory.createBool(true), // 0
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestFileSystems.java
----------------------------------------------------------------------
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 59ff6f6..48740fb 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,7 +24,7 @@ import org.apache.hadoop.fs.LocalFileSystem;
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.SchemaBuilder;
import org.apache.tajo.catalog.TableMeta;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.conf.TajoConf;
@@ -98,10 +98,11 @@ public class TestFileSystems {
@Test
public void testBlockSplit() throws IOException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4);
- schema.addColumn("age", Type.INT4);
- schema.addColumn("name", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("age", Type.INT4)
+ .add("name", Type.TEXT)
+ .build();
TableMeta meta = CatalogUtil.newTableMeta("TEXT");
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestFileTablespace.java
----------------------------------------------------------------------
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 b8f9893..65453dd 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,7 +27,7 @@ import org.apache.hadoop.hdfs.*;
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.SchemaBuilder;
import org.apache.tajo.catalog.TableMeta;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.conf.TajoConf;
@@ -82,10 +82,11 @@ public class TestFileTablespace {
@Test
public final void testGetScannerAndAppender() throws IOException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4);
- schema.addColumn("age",Type.INT4);
- schema.addColumn("name",Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("age", Type.INT4)
+ .add("name", Type.TEXT)
+ .build();
TableMeta meta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT);
@@ -145,10 +146,11 @@ public class TestFileTablespace {
TablespaceManager.addTableSpaceForTest(space);
assertEquals(fs.getUri(), space.getUri());
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4);
- schema.addColumn("age",Type.INT4);
- schema.addColumn("name",Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("age", Type.INT4)
+ .add("name", Type.TEXT)
+ .build();
TableMeta meta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT);
List<Fragment> splits = Lists.newArrayList();
@@ -199,10 +201,11 @@ public class TestFileTablespace {
TablespaceManager.addTableSpaceForTest(space);
assertEquals(fs.getUri(), space.getUri());
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4);
- schema.addColumn("age",Type.INT4);
- schema.addColumn("name",Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("age", Type.INT4)
+ .add("name", Type.TEXT)
+ .build();
TableMeta meta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT);
List<Fragment> splits = Lists.newArrayList();
@@ -242,10 +245,11 @@ public class TestFileTablespace {
TablespaceManager.addTableSpaceForTest(sm);
assertEquals(fs.getUri(), sm.getUri());
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4);
- schema.addColumn("age", Type.INT4);
- schema.addColumn("name", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("age", Type.INT4)
+ .add("name", Type.TEXT)
+ .build();
TableMeta meta = CatalogUtil.newTableMeta(BuiltinStorages.TEXT);
List<Fragment> splits = Lists.newArrayList();
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestLineReader.java
----------------------------------------------------------------------
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 e47741c..b72c98a 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,7 +27,7 @@ import org.apache.hadoop.io.IOUtils;
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.SchemaBuilder;
import org.apache.tajo.catalog.TableMeta;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.conf.TajoConf;
@@ -59,11 +59,12 @@ public class TestLineReader {
Path testDir = CommonTestingUtil.getTestDir(TEST_PATH);
FileSystem fs = testDir.getFileSystem(conf);
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4);
- schema.addColumn("age", Type.INT8);
- schema.addColumn("comment", Type.TEXT);
- schema.addColumn("comment2", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("age", Type.INT8)
+ .add("comment", Type.TEXT)
+ .add("comment2", Type.TEXT)
+ .build();
TableMeta meta = CatalogUtil.newTableMeta("TEXT");
Path tablePath = new Path(testDir, "line.data");
@@ -111,11 +112,12 @@ public class TestLineReader {
Path testDir = CommonTestingUtil.getTestDir(TEST_PATH);
FileSystem fs = testDir.getFileSystem(conf);
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4);
- schema.addColumn("age", Type.INT8);
- schema.addColumn("comment", Type.TEXT);
- schema.addColumn("comment2", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("age", Type.INT8)
+ .add("comment", Type.TEXT)
+ .add("comment2", Type.TEXT)
+ .build();
TableMeta meta = CatalogUtil.newTableMeta("TEXT");
meta.putProperty("compression.codec", DeflateCodec.class.getCanonicalName());
@@ -170,11 +172,12 @@ public class TestLineReader {
Path testDir = CommonTestingUtil.getTestDir(TEST_PATH);
FileSystem fs = testDir.getFileSystem(conf);
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4);
- schema.addColumn("age", Type.INT8);
- schema.addColumn("comment", Type.TEXT);
- schema.addColumn("comment2", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("age", Type.INT8)
+ .add("comment", Type.TEXT)
+ .add("comment2", Type.TEXT)
+ .build();
TableMeta meta = CatalogUtil.newTableMeta("TEXT");
@@ -276,11 +279,12 @@ public class TestLineReader {
Path testDir = CommonTestingUtil.getTestDir(TEST_PATH);
FileSystem fs = testDir.getFileSystem(conf);
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4);
- schema.addColumn("age", Type.INT8);
- schema.addColumn("comment", Type.TEXT);
- schema.addColumn("comment2", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("age", Type.INT8)
+ .add("comment", Type.TEXT)
+ .add("comment2", Type.TEXT)
+ .build();
TableMeta meta = CatalogUtil.newTableMeta("TEXT");
Path tablePath = new Path(testDir, "testSeekableByteBufLineReader.data");
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestMergeScanner.java
----------------------------------------------------------------------
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 a04867e..ef264e9 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,7 +23,7 @@ import org.apache.hadoop.fs.FileSystem;
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.SchemaBuilder;
import org.apache.tajo.catalog.TableMeta;
import org.apache.tajo.catalog.statistics.TableStats;
import org.apache.tajo.common.TajoDataTypes.Type;
@@ -99,11 +99,12 @@ public class TestMergeScanner {
@Test
public void testMultipleFiles() throws IOException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4);
- schema.addColumn("file", Type.TEXT);
- schema.addColumn("name", Type.TEXT);
- schema.addColumn("age", Type.INT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("file", Type.TEXT)
+ .add("name", Type.TEXT)
+ .add("age", Type.INT8)
+ .build();
KeyValueSet options = new KeyValueSet();
TableMeta meta = CatalogUtil.newTableMeta(dataFormat, options);
@@ -161,9 +162,10 @@ public class TestMergeScanner {
fragment[0] = new FileFragment("tablet1", table1Path, 0, status1.getLen());
fragment[1] = new FileFragment("tablet1", table2Path, 0, status2.getLen());
- Schema targetSchema = SchemaFactory.newV1();
- targetSchema.addColumn(schema.getColumn(0));
- targetSchema.addColumn(schema.getColumn(2));
+ Schema targetSchema = SchemaBuilder.builder()
+ .add(schema.getColumn(0))
+ .add(schema.getColumn(2))
+ .build();
Scanner scanner = new MergeScanner(conf, schema, meta, Arrays.asList(fragment), targetSchema);
assertEquals(isProjectableStorage(meta.getDataFormat()), scanner.isProjectable());
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/TestStorages.java
----------------------------------------------------------------------
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 2e88398..eb07034 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,7 +31,7 @@ import org.apache.tajo.QueryId;
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.SchemaBuilder;
import org.apache.tajo.catalog.TableMeta;
import org.apache.tajo.catalog.statistics.TableStats;
import org.apache.tajo.common.TajoDataTypes.Type;
@@ -186,9 +186,10 @@ public class TestStorages {
@Test
public void testSplitable() throws IOException {
if (splitable) {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4);
- schema.addColumn("age", Type.INT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("age", Type.INT8)
+ .build();
TableMeta meta = CatalogUtil.newTableMeta(dataFormat);
Path tablePath = new Path(testDir, "Splitable.data");
@@ -240,10 +241,11 @@ public class TestStorages {
@Test
public void testZeroRows() throws IOException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4);
- schema.addColumn("age", Type.INT8);
- schema.addColumn("score", Type.FLOAT4);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("age", Type.INT8)
+ .add("score", Type.FLOAT4)
+ .build();
TableMeta meta = CatalogUtil.newTableMeta(dataFormat);
meta.setPropertySet(CatalogUtil.newDefaultProperty(dataFormat));
@@ -284,9 +286,10 @@ public class TestStorages {
@Test
public void testRCFileSplitable() throws IOException {
if (dataFormat.equalsIgnoreCase(BuiltinStorages.RCFILE)) {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4);
- schema.addColumn("age", Type.INT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("age", Type.INT8)
+ .build();
TableMeta meta = CatalogUtil.newTableMeta(dataFormat);
Path tablePath = new Path(testDir, "Splitable.data");
@@ -338,10 +341,11 @@ public class TestStorages {
@Test
public void testProjection() throws IOException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4);
- schema.addColumn("age", Type.INT8);
- schema.addColumn("score", Type.FLOAT4);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("age", Type.INT8)
+ .add("score", Type.FLOAT4)
+ .build();
TableMeta meta = CatalogUtil.newTableMeta(dataFormat);
meta.setPropertySet(CatalogUtil.newDefaultProperty(dataFormat));
@@ -369,9 +373,10 @@ public class TestStorages {
FileStatus status = fs.getFileStatus(tablePath);
FileFragment fragment = new FileFragment("testReadAndWrite", tablePath, 0, status.getLen());
- Schema target = SchemaFactory.newV1();
- target.addColumn("age", Type.INT8);
- target.addColumn("score", Type.FLOAT4);
+ Schema target = SchemaBuilder.builder()
+ .add("age", Type.INT8)
+ .add("score", Type.FLOAT4)
+ .build();
Scanner scanner = sm.getScanner(meta, schema, fragment, target);
scanner.init();
int tupleCnt = 0;
@@ -401,21 +406,23 @@ public class TestStorages {
@Test
public void testVariousTypes() throws IOException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", Type.BOOLEAN);
- schema.addColumn("col2", Type.CHAR, 7);
- schema.addColumn("col3", Type.INT2);
- schema.addColumn("col4", Type.INT4);
- schema.addColumn("col5", Type.INT8);
- schema.addColumn("col6", Type.FLOAT4);
- schema.addColumn("col7", Type.FLOAT8);
- schema.addColumn("col8", Type.TEXT);
- schema.addColumn("col9", Type.BLOB);
- schema.addColumn("col10", Type.INET4);
+ SchemaBuilder schemaBld = SchemaBuilder.builder()
+ .add("col1", Type.BOOLEAN)
+ .add("col2", CatalogUtil.newDataTypeWithLen(Type.CHAR, 7))
+ .add("col3", Type.INT2)
+ .add("col4", Type.INT4)
+ .add("col5", Type.INT8)
+ .add("col6", Type.FLOAT4)
+ .add("col7", Type.FLOAT8)
+ .add("col8", Type.TEXT)
+ .add("col9", Type.BLOB)
+ .add("col10", Type.INET4);
if (protoTypeSupport()) {
- schema.addColumn("col11", CatalogUtil.newDataType(Type.PROTOBUF, TajoIdProtos.QueryIdProto.class.getName()));
+ schemaBld.add("col11", CatalogUtil.newDataType(Type.PROTOBUF, TajoIdProtos.QueryIdProto.class.getName()));
}
+ Schema schema = schemaBld.build();
+
KeyValueSet options = new KeyValueSet();
TableMeta meta = CatalogUtil.newTableMeta(dataFormat, options);
meta.setPropertySet(CatalogUtil.newDefaultProperty(dataFormat));
@@ -470,22 +477,24 @@ public class TestStorages {
@Test
public void testNullHandlingTypes() throws IOException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", Type.BOOLEAN);
- schema.addColumn("col2", Type.CHAR, 7);
- schema.addColumn("col3", Type.INT2);
- schema.addColumn("col4", Type.INT4);
- schema.addColumn("col5", Type.INT8);
- schema.addColumn("col6", Type.FLOAT4);
- schema.addColumn("col7", Type.FLOAT8);
- schema.addColumn("col8", Type.TEXT);
- schema.addColumn("col9", Type.BLOB);
- schema.addColumn("col10", Type.INET4);
+ SchemaBuilder schemaBld = SchemaBuilder.builder()
+ .add("col1", Type.BOOLEAN)
+ .add("col2", CatalogUtil.newDataTypeWithLen(Type.CHAR, 7))
+ .add("col3", Type.INT2)
+ .add("col4", Type.INT4)
+ .add("col5", Type.INT8)
+ .add("col6", Type.FLOAT4)
+ .add("col7", Type.FLOAT8)
+ .add("col8", Type.TEXT)
+ .add("col9", Type.BLOB)
+ .add("col10", Type.INET4);
if (protoTypeSupport()) {
- schema.addColumn("col11", CatalogUtil.newDataType(Type.PROTOBUF, TajoIdProtos.QueryIdProto.class.getName()));
+ schemaBld.add("col11", CatalogUtil.newDataType(Type.PROTOBUF, TajoIdProtos.QueryIdProto.class.getName()));
}
+ Schema schema = schemaBld.build();
+
KeyValueSet options = new KeyValueSet();
TableMeta meta = CatalogUtil.newTableMeta(dataFormat, options);
meta.setPropertySet(CatalogUtil.newDefaultProperty(dataFormat));
@@ -565,22 +574,24 @@ public class TestStorages {
public void testNullHandlingTypesWithProjection() throws IOException {
if (internalType) return;
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", Type.BOOLEAN);
- schema.addColumn("col2", Type.CHAR, 7);
- schema.addColumn("col3", Type.INT2);
- schema.addColumn("col4", Type.INT4);
- schema.addColumn("col5", Type.INT8);
- schema.addColumn("col6", Type.FLOAT4);
- schema.addColumn("col7", Type.FLOAT8);
- schema.addColumn("col8", Type.TEXT);
- schema.addColumn("col9", Type.BLOB);
- schema.addColumn("col10", Type.INET4);
+ SchemaBuilder schemaBld = SchemaBuilder.builder()
+ .add("col1", Type.BOOLEAN)
+ .add("col2", CatalogUtil.newDataTypeWithLen(Type.CHAR, 7))
+ .add("col3", Type.INT2)
+ .add("col4", Type.INT4)
+ .add("col5", Type.INT8)
+ .add("col6", Type.FLOAT4)
+ .add("col7", Type.FLOAT8)
+ .add("col8", Type.TEXT)
+ .add("col9", Type.BLOB)
+ .add("col10", Type.INET4);
if (protoTypeSupport()) {
- schema.addColumn("col11", CatalogUtil.newDataType(Type.PROTOBUF, TajoIdProtos.QueryIdProto.class.getName()));
+ schemaBld.add("col11", CatalogUtil.newDataType(Type.PROTOBUF, TajoIdProtos.QueryIdProto.class.getName()));
}
+ Schema schema = schemaBld.build();
+
KeyValueSet options = new KeyValueSet();
TableMeta meta = CatalogUtil.newTableMeta(dataFormat, options);
meta.setPropertySet(CatalogUtil.newDefaultProperty(dataFormat));
@@ -636,14 +647,15 @@ public class TestStorages {
// Making projection schema with different column positions
- Schema target = SchemaFactory.newV1();
+ SchemaBuilder targetBld = SchemaBuilder.builder();
Random random = new Random();
for (int i = 1; i < schema.size(); i++) {
int num = random.nextInt(schema.size() - 1) + 1;
if (i % num == 0) {
- target.addColumn(schema.getColumn(i));
+ targetBld.add(schema.getColumn(i));
}
}
+ Schema target = targetBld.build();
FileStatus status = fs.getFileStatus(tablePath);
FileFragment fragment = new FileFragment("table", tablePath, 0, status.getLen());
@@ -671,19 +683,19 @@ public class TestStorages {
public void testRCFileTextSerializeDeserialize() throws IOException {
if(!dataFormat.equalsIgnoreCase(BuiltinStorages.RCFILE)) return;
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", Type.BOOLEAN);
- schema.addColumn("col2", Type.BIT);
- schema.addColumn("col3", Type.CHAR, 7);
- schema.addColumn("col4", Type.INT2);
- schema.addColumn("col5", Type.INT4);
- schema.addColumn("col6", Type.INT8);
- schema.addColumn("col7", Type.FLOAT4);
- schema.addColumn("col8", Type.FLOAT8);
- schema.addColumn("col9", Type.TEXT);
- schema.addColumn("col10", Type.BLOB);
- schema.addColumn("col11", Type.INET4);
- schema.addColumn("col12", CatalogUtil.newDataType(Type.PROTOBUF, TajoIdProtos.QueryIdProto.class.getName()));
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", Type.BOOLEAN)
+ .add("col2", CatalogUtil.newDataTypeWithLen(Type.CHAR, 7))
+ .add("col3", Type.INT2)
+ .add("col4", Type.INT4)
+ .add("col5", Type.INT8)
+ .add("col6", Type.FLOAT4)
+ .add("col7", Type.FLOAT8)
+ .add("col8", Type.TEXT)
+ .add("col9", Type.BLOB)
+ .add("col10", Type.INET4)
+ .add("col11", CatalogUtil.newDataType(Type.PROTOBUF, TajoIdProtos.QueryIdProto.class.getName()))
+ .build();
KeyValueSet options = new KeyValueSet();
TableMeta meta = CatalogUtil.newTableMeta(dataFormat, options);
@@ -700,7 +712,6 @@ public class TestStorages {
VTuple tuple = new VTuple(new Datum[] {
DatumFactory.createBool(true),
- DatumFactory.createBit((byte) 0x99),
DatumFactory.createChar("jinho"),
DatumFactory.createInt2((short) 17),
DatumFactory.createInt4(59),
@@ -738,19 +749,19 @@ public class TestStorages {
public void testRCFileBinarySerializeDeserialize() throws IOException {
if(!dataFormat.equalsIgnoreCase(BuiltinStorages.RCFILE)) return;
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", Type.BOOLEAN);
- schema.addColumn("col2", Type.BIT);
- schema.addColumn("col3", Type.CHAR, 7);
- schema.addColumn("col4", Type.INT2);
- schema.addColumn("col5", Type.INT4);
- schema.addColumn("col6", Type.INT8);
- schema.addColumn("col7", Type.FLOAT4);
- schema.addColumn("col8", Type.FLOAT8);
- schema.addColumn("col9", Type.TEXT);
- schema.addColumn("col10", Type.BLOB);
- schema.addColumn("col11", Type.INET4);
- schema.addColumn("col12", CatalogUtil.newDataType(Type.PROTOBUF, TajoIdProtos.QueryIdProto.class.getName()));
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", Type.BOOLEAN)
+ .add("col2", CatalogUtil.newDataTypeWithLen(Type.CHAR, 7))
+ .add("col3", Type.INT2)
+ .add("col4", Type.INT4)
+ .add("col5", Type.INT8)
+ .add("col6", Type.FLOAT4)
+ .add("col7", Type.FLOAT8)
+ .add("col8", Type.TEXT)
+ .add("col9", Type.BLOB)
+ .add("col10", Type.INET4)
+ .add("col11", CatalogUtil.newDataType(Type.PROTOBUF, TajoIdProtos.QueryIdProto.class.getName()))
+ .build();
KeyValueSet options = new KeyValueSet();
TableMeta meta = CatalogUtil.newTableMeta(dataFormat, options);
@@ -767,7 +778,6 @@ public class TestStorages {
VTuple tuple = new VTuple(new Datum[] {
DatumFactory.createBool(true),
- DatumFactory.createBit((byte) 0x99),
DatumFactory.createChar("jinho"),
DatumFactory.createInt2((short) 17),
DatumFactory.createInt4(59),
@@ -805,19 +815,18 @@ public class TestStorages {
public void testSequenceFileTextSerializeDeserialize() throws IOException {
if(!dataFormat.equalsIgnoreCase(BuiltinStorages.SEQUENCE_FILE)) return;
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", Type.BOOLEAN);
- schema.addColumn("col2", Type.BIT);
- schema.addColumn("col3", Type.CHAR, 7);
- schema.addColumn("col4", Type.INT2);
- schema.addColumn("col5", Type.INT4);
- schema.addColumn("col6", Type.INT8);
- schema.addColumn("col7", Type.FLOAT4);
- schema.addColumn("col8", Type.FLOAT8);
- schema.addColumn("col9", Type.TEXT);
- schema.addColumn("col10", Type.BLOB);
- schema.addColumn("col11", Type.INET4);
- schema.addColumn("col12", CatalogUtil.newDataType(Type.PROTOBUF, TajoIdProtos.QueryIdProto.class.getName()));
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", Type.BOOLEAN)
+ .add("col2", CatalogUtil.newDataTypeWithLen(Type.CHAR, 7))
+ .add("col3", Type.INT2)
+ .add("col4", Type.INT4)
+ .add("col5", Type.INT8)
+ .add("col6", Type.FLOAT4)
+ .add("col7", Type.FLOAT8)
+ .add("col8", Type.TEXT)
+ .add("col9", Type.BLOB)
+ .add("col10", Type.INET4)
+ .add("col11", CatalogUtil.newDataType(Type.PROTOBUF, TajoIdProtos.QueryIdProto.class.getName())).build();
KeyValueSet options = new KeyValueSet();
TableMeta meta = CatalogUtil.newTableMeta(dataFormat, options);
@@ -833,7 +842,6 @@ public class TestStorages {
VTuple tuple = new VTuple(new Datum[] {
DatumFactory.createBool(true),
- DatumFactory.createBit((byte) 0x99),
DatumFactory.createChar("jinho"),
DatumFactory.createInt2((short) 17),
DatumFactory.createInt4(59),
@@ -875,19 +883,19 @@ public class TestStorages {
public void testSequenceFileBinarySerializeDeserialize() throws IOException {
if(!dataFormat.equalsIgnoreCase(BuiltinStorages.SEQUENCE_FILE)) return;
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", Type.BOOLEAN);
- schema.addColumn("col2", Type.BIT);
- schema.addColumn("col3", Type.CHAR, 7);
- schema.addColumn("col4", Type.INT2);
- schema.addColumn("col5", Type.INT4);
- schema.addColumn("col6", Type.INT8);
- schema.addColumn("col7", Type.FLOAT4);
- schema.addColumn("col8", Type.FLOAT8);
- schema.addColumn("col9", Type.TEXT);
- schema.addColumn("col10", Type.BLOB);
- schema.addColumn("col11", Type.INET4);
- schema.addColumn("col12", CatalogUtil.newDataType(Type.PROTOBUF, TajoIdProtos.QueryIdProto.class.getName()));
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", Type.BOOLEAN)
+ .add("col2", CatalogUtil.newDataTypeWithLen(Type.CHAR, 7))
+ .add("col3", Type.INT2)
+ .add("col4", Type.INT4)
+ .add("col5", Type.INT8)
+ .add("col6", Type.FLOAT4)
+ .add("col7", Type.FLOAT8)
+ .add("col8", Type.TEXT)
+ .add("col9", Type.BLOB)
+ .add("col10", Type.INET4)
+ .add("col11", CatalogUtil.newDataType(Type.PROTOBUF, TajoIdProtos.QueryIdProto.class.getName()))
+ .build();
KeyValueSet options = new KeyValueSet();
TableMeta meta = CatalogUtil.newTableMeta(dataFormat, options);
@@ -903,7 +911,6 @@ public class TestStorages {
VTuple tuple = new VTuple(new Datum[] {
DatumFactory.createBool(true),
- DatumFactory.createBit((byte) 0x99),
DatumFactory.createChar("jinho"),
DatumFactory.createInt2((short) 17),
DatumFactory.createInt4(59),
@@ -946,13 +953,13 @@ public class TestStorages {
if (dateTypeSupport() || timeTypeSupport()) {
int index = 2;
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", Type.TIMESTAMP);
+ SchemaBuilder schema = SchemaBuilder.builder()
+ .add("col1", Type.TIMESTAMP);
if (dateTypeSupport()) {
- schema.addColumn("col" + index++, Type.DATE);
+ schema.add("col" + index++, Type.DATE);
}
if (timeTypeSupport()) {
- schema.addColumn("col" + index++, Type.TIME);
+ schema.add("col" + index++, Type.TIME);
}
KeyValueSet options = new KeyValueSet();
@@ -960,7 +967,7 @@ public class TestStorages {
Path tablePath = new Path(testDir, "testTime.data");
FileTablespace sm = TablespaceManager.getLocalFs();
- Appender appender = sm.getAppender(meta, schema, tablePath);
+ Appender appender = sm.getAppender(meta, schema.build(), tablePath);
appender.init();
VTuple tuple = new VTuple(index - 1);
@@ -978,7 +985,7 @@ public class TestStorages {
FileStatus status = fs.getFileStatus(tablePath);
FileFragment fragment = new FileFragment("table", tablePath, 0, status.getLen());
- Scanner scanner = TablespaceManager.getLocalFs().getScanner(meta, schema, fragment, null);
+ Scanner scanner = TablespaceManager.getLocalFs().getScanner(meta, schema.build(), fragment, null);
scanner.init();
Tuple retrieved;
@@ -997,10 +1004,11 @@ public class TestStorages {
return;
}
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4);
- schema.addColumn("age", Type.INT8);
- schema.addColumn("comment", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("age", Type.INT8)
+ .add("comment", Type.TEXT)
+ .build();
TableMeta meta = CatalogUtil.newTableMeta(dataFormat);
Path tablePath = new Path(testDir, "Seekable.data");
@@ -1072,12 +1080,13 @@ public class TestStorages {
@Test
public void testMaxValue() throws IOException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", Type.FLOAT4);
- schema.addColumn("col2", Type.FLOAT8);
- schema.addColumn("col3", Type.INT2);
- schema.addColumn("col4", Type.INT4);
- schema.addColumn("col5", Type.INT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", Type.FLOAT4)
+ .add("col2", Type.FLOAT8)
+ .add("col3", Type.INT2)
+ .add("col4", Type.INT4)
+ .add("col5", Type.INT8)
+ .build();
KeyValueSet options = new KeyValueSet();
TableMeta meta = CatalogUtil.newTableMeta(dataFormat, options);
@@ -1139,10 +1148,11 @@ public class TestStorages {
return;
}
- Schema dataSchema = SchemaFactory.newV1();
- dataSchema.addColumn("col1", Type.FLOAT4);
- dataSchema.addColumn("col2", Type.FLOAT8);
- dataSchema.addColumn("col3", Type.INT2);
+ Schema dataSchema = SchemaBuilder.builder()
+ .add("col1", Type.FLOAT4)
+ .add("col2", Type.FLOAT8)
+ .add("col3", Type.INT2)
+ .build();
KeyValueSet options = new KeyValueSet();
TableMeta meta = CatalogUtil.newTableMeta(dataFormat, options);
@@ -1167,20 +1177,21 @@ public class TestStorages {
assertTrue(fs.exists(tablePath));
FileStatus status = fs.getFileStatus(tablePath);
- Schema inSchema = SchemaFactory.newV1();
- inSchema.addColumn("col1", Type.FLOAT4);
- inSchema.addColumn("col2", Type.FLOAT8);
- inSchema.addColumn("col3", Type.INT2);
- inSchema.addColumn("col4", Type.INT4);
- inSchema.addColumn("col5", Type.INT8);
+ Schema inSchema = SchemaBuilder.builder()
+ .add("col1", Type.FLOAT4)
+ .add("col2", Type.FLOAT8)
+ .add("col3", Type.INT2)
+ .add("col4", Type.INT4)
+ .add("col5", Type.INT8)
+ .build();
FileFragment fragment = new FileFragment("table", tablePath, 0, status.getLen());
Scanner scanner = TablespaceManager.getLocalFs().getScanner(meta, inSchema, fragment, null);
- Schema target = SchemaFactory.newV1();
-
- target.addColumn("col2", Type.FLOAT8);
- target.addColumn("col5", Type.INT8);
+ Schema target = SchemaBuilder.builder()
+ .add("col2", Type.FLOAT8)
+ .add("col5", Type.INT8)
+ .build();
scanner.setTarget(target.toArray());
scanner.init();
@@ -1205,8 +1216,9 @@ public class TestStorages {
return;
}
- Schema dataSchema = SchemaFactory.newV1();
- dataSchema.addColumn("col1", Type.CHAR);
+ Schema dataSchema = SchemaBuilder.builder()
+ .add("col1", Type.CHAR)
+ .build();
KeyValueSet options = new KeyValueSet();
TableMeta meta = CatalogUtil.newTableMeta(dataFormat, options);
@@ -1248,8 +1260,7 @@ public class TestStorages {
return;
}
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", Type.TEXT);
+ Schema schema = SchemaBuilder.builder().add("col1", Type.TEXT).build();
KeyValueSet options = new KeyValueSet();
TableMeta meta = CatalogUtil.newTableMeta(dataFormat, options);
@@ -1289,10 +1300,11 @@ public class TestStorages {
if (internalType) return;
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4);
- schema.addColumn("age", Type.INT8);
- schema.addColumn("score", Type.FLOAT4);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("age", Type.INT8)
+ .add("score", Type.FLOAT4)
+ .build();
TableMeta meta = CatalogUtil.newTableMeta(dataFormat);
meta.setPropertySet(CatalogUtil.newDefaultProperty(dataFormat));
@@ -1324,12 +1336,13 @@ public class TestStorages {
@Test
public void testProgress() throws IOException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", Type.FLOAT4);
- schema.addColumn("col2", Type.FLOAT8);
- schema.addColumn("col3", Type.INT2);
- schema.addColumn("col4", Type.INT4);
- schema.addColumn("col5", Type.INT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", Type.FLOAT4)
+ .add("col2", Type.FLOAT8)
+ .add("col3", Type.INT2)
+ .add("col4", Type.INT4)
+ .add("col5", Type.INT8)
+ .build();
KeyValueSet options = new KeyValueSet();
TableMeta meta = CatalogUtil.newTableMeta(dataFormat, options);
@@ -1372,10 +1385,11 @@ public class TestStorages {
public void testEmptySchema() throws IOException {
if (internalType) return;
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4);
- schema.addColumn("age", Type.INT8);
- schema.addColumn("score", Type.FLOAT4);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("age", Type.INT8)
+ .add("score", Type.FLOAT4)
+ .build();
TableMeta meta = CatalogUtil.newTableMeta(dataFormat);
meta.setPropertySet(CatalogUtil.newDefaultProperty(dataFormat));
@@ -1410,7 +1424,7 @@ public class TestStorages {
}
//e,g select count(*) from table
- Schema target = SchemaFactory.newV1();
+ Schema target = SchemaBuilder.builder().build();
assertEquals(0, target.size());
FileFragment fragment = new FileFragment("table", tablePath, 0, status.getLen());
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/index/TestBSTIndex.java
----------------------------------------------------------------------
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 18d5012..1eb28b6 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,12 +60,13 @@ public class TestBSTIndex {
this.dataFormat = type;
conf = new TajoConf();
conf.setVar(TajoConf.ConfVars.ROOT_DIR, TEST_PATH);
- schema = SchemaFactory.newV1();
- schema.addColumn(new Column("int", Type.INT4));
- schema.addColumn(new Column("long", Type.INT8));
- schema.addColumn(new Column("double", Type.FLOAT8));
- schema.addColumn(new Column("float", Type.FLOAT4));
- schema.addColumn(new Column("string", Type.TEXT));
+ schema = SchemaBuilder.builder()
+ .add(new Column("int", Type.INT4))
+ .add(new Column("long", Type.INT8))
+ .add(new Column("double", Type.FLOAT8))
+ .add(new Column("float", Type.FLOAT4))
+ .add(new Column("string", Type.TEXT))
+ .build();
}
@@ -111,9 +112,10 @@ public class TestBSTIndex {
sortKeys[0] = new SortSpec(schema.getColumn("long"), true, false);
sortKeys[1] = new SortSpec(schema.getColumn("double"), true, false);
- Schema keySchema = SchemaFactory.newV1();
- keySchema.addColumn(new Column("long", Type.INT8));
- keySchema.addColumn(new Column("double", Type.FLOAT8));
+ Schema keySchema = SchemaBuilder.builder()
+ .add(new Column("long", Type.INT8))
+ .add(new Column("double", Type.FLOAT8))
+ .build();
BaseTupleComparator comp = new BaseTupleComparator(keySchema, sortKeys);
@@ -187,9 +189,10 @@ public class TestBSTIndex {
sortKeys[0] = new SortSpec(schema.getColumn("long"), true, false);
sortKeys[1] = new SortSpec(schema.getColumn("double"), true, false);
- Schema keySchema = SchemaFactory.newV1();
- keySchema.addColumn(new Column("long", Type.INT8));
- keySchema.addColumn(new Column("double", Type.FLOAT8));
+ Schema keySchema = SchemaBuilder.builder()
+ .add(new Column("long", Type.INT8))
+ .add(new Column("double", Type.FLOAT8))
+ .build();
BaseTupleComparator comp = new BaseTupleComparator(keySchema, sortKeys);
@@ -280,9 +283,10 @@ public class TestBSTIndex {
sortKeys[0] = new SortSpec(schema.getColumn("long"), true, false);
sortKeys[1] = new SortSpec(schema.getColumn("double"), true, false);
- Schema keySchema = SchemaFactory.newV1();
- keySchema.addColumn(new Column("long", Type.INT8));
- keySchema.addColumn(new Column("double", Type.FLOAT8));
+ Schema keySchema = SchemaBuilder.builder()
+ .add(new Column("long", Type.INT8))
+ .add(new Column("double", Type.FLOAT8))
+ .build();
BaseTupleComparator comp = new BaseTupleComparator(keySchema, sortKeys);
@@ -353,9 +357,10 @@ public class TestBSTIndex {
sortKeys[0] = new SortSpec(schema.getColumn("int"), true, false);
sortKeys[1] = new SortSpec(schema.getColumn("long"), true, false);
- Schema keySchema = SchemaFactory.newV1();
- keySchema.addColumn(new Column("int", Type.INT4));
- keySchema.addColumn(new Column("long", Type.INT8));
+ Schema keySchema = SchemaBuilder.builder()
+ .add(new Column("int", Type.INT4))
+ .add(new Column("long", Type.INT8))
+ .build();
BaseTupleComparator comp = new BaseTupleComparator(keySchema, sortKeys);
@@ -446,9 +451,10 @@ public class TestBSTIndex {
sortKeys[0] = new SortSpec(schema.getColumn("int"), true, false);
sortKeys[1] = new SortSpec(schema.getColumn("long"), true, false);
- Schema keySchema = SchemaFactory.newV1();
- keySchema.addColumn(new Column("int", Type.INT4));
- keySchema.addColumn(new Column("long", Type.INT8));
+ Schema keySchema = SchemaBuilder.builder()
+ .add(new Column("int", Type.INT4))
+ .add(new Column("long", Type.INT8))
+ .build();
BaseTupleComparator comp = new BaseTupleComparator(keySchema, sortKeys);
@@ -529,9 +535,10 @@ public class TestBSTIndex {
sortKeys[0] = new SortSpec(schema.getColumn("long"), true, false);
sortKeys[1] = new SortSpec(schema.getColumn("double"), true, false);
- Schema keySchema = SchemaFactory.newV1();
- keySchema.addColumn(new Column("long", Type.INT8));
- keySchema.addColumn(new Column("double", Type.FLOAT8));
+ Schema keySchema = SchemaBuilder.builder()
+ .add(new Column("long", Type.INT8))
+ .add(new Column("double", Type.FLOAT8))
+ .build();
BaseTupleComparator comp = new BaseTupleComparator(keySchema, sortKeys);
BSTIndex bst = new BSTIndex(conf);
@@ -614,9 +621,10 @@ public class TestBSTIndex {
sortKeys[0] = new SortSpec(schema.getColumn("int"), true, false);
sortKeys[1] = new SortSpec(schema.getColumn("long"), true, false);
- Schema keySchema = SchemaFactory.newV1();
- keySchema.addColumn(new Column("int", Type.INT4));
- keySchema.addColumn(new Column("long", Type.INT8));
+ Schema keySchema = SchemaBuilder.builder()
+ .add(new Column("int", Type.INT4))
+ .add(new Column("long", Type.INT8))
+ .build();
BaseTupleComparator comp = new BaseTupleComparator(keySchema, sortKeys);
@@ -721,9 +729,10 @@ public class TestBSTIndex {
sortKeys[0] = new SortSpec(schema.getColumn("int"), true, false);
sortKeys[1] = new SortSpec(schema.getColumn("long"), true, false);
- Schema keySchema = SchemaFactory.newV1();
- keySchema.addColumn(new Column("int", Type.INT4));
- keySchema.addColumn(new Column("long", Type.INT8));
+ Schema keySchema = SchemaBuilder.builder()
+ .add(new Column("int", Type.INT4))
+ .add(new Column("long", Type.INT8))
+ .build();
BaseTupleComparator comp = new BaseTupleComparator(keySchema, sortKeys);
@@ -803,9 +812,10 @@ public class TestBSTIndex {
sortKeys[0] = new SortSpec(schema.getColumn("long"), false, false);
sortKeys[1] = new SortSpec(schema.getColumn("double"), false, false);
- Schema keySchema = SchemaFactory.newV1();
- keySchema.addColumn(new Column("long", Type.INT8));
- keySchema.addColumn(new Column("double", Type.FLOAT8));
+ Schema keySchema = SchemaBuilder.builder()
+ .add(new Column("long", Type.INT8))
+ .add(new Column("double", Type.FLOAT8))
+ .build();
BaseTupleComparator comp = new BaseTupleComparator(keySchema, sortKeys);
@@ -896,9 +906,10 @@ public class TestBSTIndex {
sortKeys[0] = new SortSpec(schema.getColumn("int"), false, false);
sortKeys[1] = new SortSpec(schema.getColumn("long"), false, false);
- Schema keySchema = SchemaFactory.newV1();
- keySchema.addColumn(new Column("int", Type.INT4));
- keySchema.addColumn(new Column("long", Type.INT8));
+ Schema keySchema = SchemaBuilder.builder()
+ .add(new Column("int", Type.INT4))
+ .add(new Column("long", Type.INT8))
+ .build();
BaseTupleComparator comp = new BaseTupleComparator(keySchema, sortKeys);
@@ -996,9 +1007,10 @@ public class TestBSTIndex {
sortKeys[0] = new SortSpec(schema.getColumn("long"), true, false);
sortKeys[1] = new SortSpec(schema.getColumn("double"), true, false);
- Schema keySchema = SchemaFactory.newV1();
- keySchema.addColumn(new Column("long", Type.INT8));
- keySchema.addColumn(new Column("double", Type.FLOAT8));
+ Schema keySchema = SchemaBuilder.builder()
+ .add(new Column("long", Type.INT8))
+ .add(new Column("double", Type.FLOAT8))
+ .build();
BaseTupleComparator comp = new BaseTupleComparator(keySchema, sortKeys);
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/index/TestSingleCSVFileBSTIndex.java
----------------------------------------------------------------------
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 1053853..358be38 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,12 +56,13 @@ public class TestSingleCSVFileBSTIndex {
public TestSingleCSVFileBSTIndex() {
conf = new TajoConf();
conf.setVar(ConfVars.ROOT_DIR, TEST_PATH);
- schema = SchemaFactory.newV1();
- schema.addColumn(new Column("int", Type.INT4));
- schema.addColumn(new Column("long", Type.INT8));
- schema.addColumn(new Column("double", Type.FLOAT8));
- schema.addColumn(new Column("float", Type.FLOAT4));
- schema.addColumn(new Column("string", Type.TEXT));
+ schema = SchemaBuilder.builder()
+ .add(new Column("int", Type.INT4))
+ .add(new Column("long", Type.INT8))
+ .add(new Column("double", Type.FLOAT8))
+ .add(new Column("float", Type.FLOAT4))
+ .add(new Column("string", Type.TEXT))
+ .build();
}
@Before
@@ -99,9 +100,10 @@ public class TestSingleCSVFileBSTIndex {
sortKeys[0] = new SortSpec(schema.getColumn("long"), true, false);
sortKeys[1] = new SortSpec(schema.getColumn("double"), true, false);
- Schema keySchema = SchemaFactory.newV1();
- keySchema.addColumn(new Column("long", Type.INT8));
- keySchema.addColumn(new Column("double", Type.FLOAT8));
+ Schema keySchema = SchemaBuilder.builder()
+ .add(new Column("long", Type.INT8))
+ .add(new Column("double", Type.FLOAT8))
+ .build();
BaseTupleComparator comp = new BaseTupleComparator(keySchema, sortKeys);
@@ -190,9 +192,10 @@ public class TestSingleCSVFileBSTIndex {
sortKeys[0] = new SortSpec(schema.getColumn("int"), true, false);
sortKeys[1] = new SortSpec(schema.getColumn("long"), true, false);
- Schema keySchema = SchemaFactory.newV1();
- keySchema.addColumn(new Column("int", Type.INT4));
- keySchema.addColumn(new Column("long", Type.INT8));
+ Schema keySchema = SchemaBuilder.builder()
+ .add(new Column("int", Type.INT4))
+ .add(new Column("long", Type.INT8))
+ .build();
BaseTupleComparator comp = new BaseTupleComparator(keySchema, sortKeys);
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/json/TestJsonSerDe.java
----------------------------------------------------------------------
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 c2ce9e7..30367c2 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,14 +23,17 @@ import org.apache.hadoop.fs.FileSystem;
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.SchemaBuilder;
import org.apache.tajo.catalog.TableMeta;
import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.conf.TajoConf;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
import org.apache.tajo.datum.NullDatum;
-import org.apache.tajo.storage.*;
+import org.apache.tajo.storage.Scanner;
+import org.apache.tajo.storage.TablespaceManager;
+import org.apache.tajo.storage.Tuple;
+import org.apache.tajo.storage.VTuple;
import org.apache.tajo.storage.fragment.FileFragment;
import org.junit.Test;
@@ -40,20 +43,22 @@ import java.net.URL;
import static org.junit.Assert.*;
public class TestJsonSerDe {
- private static Schema schema = SchemaFactory.newV1();
+ private static Schema schema;
static {
- schema.addColumn("col1", TajoDataTypes.Type.BOOLEAN);
- schema.addColumn("col2", TajoDataTypes.Type.CHAR, 7);
- schema.addColumn("col3", TajoDataTypes.Type.INT2);
- schema.addColumn("col4", TajoDataTypes.Type.INT4);
- schema.addColumn("col5", TajoDataTypes.Type.INT8);
- schema.addColumn("col6", TajoDataTypes.Type.FLOAT4);
- schema.addColumn("col7", TajoDataTypes.Type.FLOAT8);
- schema.addColumn("col8", TajoDataTypes.Type.TEXT);
- schema.addColumn("col9", TajoDataTypes.Type.BLOB);
- schema.addColumn("col10", TajoDataTypes.Type.INET4);
- schema.addColumn("col11", TajoDataTypes.Type.NULL_TYPE);
+ schema = SchemaBuilder.builder()
+ .add("col1", TajoDataTypes.Type.BOOLEAN)
+ .add("col2", CatalogUtil.newDataTypeWithLen(TajoDataTypes.Type.CHAR, 7))
+ .add("col3", TajoDataTypes.Type.INT2)
+ .add("col4", TajoDataTypes.Type.INT4)
+ .add("col5", TajoDataTypes.Type.INT8)
+ .add("col6", TajoDataTypes.Type.FLOAT4)
+ .add("col7", TajoDataTypes.Type.FLOAT8)
+ .add("col8", TajoDataTypes.Type.TEXT)
+ .add("col9", TajoDataTypes.Type.BLOB)
+ .add("col10", TajoDataTypes.Type.INET4)
+ .add("col11", TajoDataTypes.Type.NULL_TYPE)
+ .build();
}
public static Path getResourcePath(String path, String suffix) {
@@ -105,10 +110,11 @@ public class TestJsonSerDe {
FileStatus status = fs.getFileStatus(tablePath);
FileFragment fragment = new FileFragment("table", tablePath, 0, status.getLen());
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TajoDataTypes.Type.TEXT);
- schema.addColumn("col2", TajoDataTypes.Type.TEXT);
- schema.addColumn("col3", TajoDataTypes.Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TajoDataTypes.Type.TEXT)
+ .add("col2", TajoDataTypes.Type.TEXT)
+ .add("col3", TajoDataTypes.Type.TEXT)
+ .build();
Scanner scanner = TablespaceManager.getLocalFs().getScanner(meta, schema, fragment, null);
scanner.init();
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/parquet/TestReadWrite.java
----------------------------------------------------------------------
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 b39bfce..eb6238b 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,7 +24,7 @@ import org.apache.hadoop.fs.LocalFileSystem;
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.catalog.SchemaBuilder;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.conf.TajoConf;
import org.apache.tajo.datum.DatumFactory;
@@ -56,7 +56,6 @@ public class TestReadWrite {
private Schema createAllTypesSchema() {
List<Column> columns = new ArrayList<>();
columns.add(new Column("myboolean", Type.BOOLEAN));
- columns.add(new Column("mybit", Type.BIT));
columns.add(new Column("mychar", Type.CHAR));
columns.add(new Column("myint2", Type.INT2));
columns.add(new Column("myint4", Type.INT4));
@@ -68,7 +67,7 @@ public class TestReadWrite {
columns.add(new Column("mynull", Type.NULL_TYPE));
Column[] columnsArray = new Column[columns.size()];
columnsArray = columns.toArray(columnsArray);
- return SchemaFactory.newV1(columnsArray);
+ return SchemaBuilder.builder().addAll(columnsArray).build();
}
@Test
@@ -77,16 +76,15 @@ public class TestReadWrite {
Schema schema = createAllTypesSchema();
Tuple tuple = new VTuple(schema.size());
tuple.put(0, DatumFactory.createBool(true));
- tuple.put(1, DatumFactory.createBit((byte)128));
- tuple.put(2, DatumFactory.createChar('t'));
- tuple.put(3, DatumFactory.createInt2((short)2048));
- tuple.put(4, DatumFactory.createInt4(4096));
- tuple.put(5, DatumFactory.createInt8(8192L));
- tuple.put(6, DatumFactory.createFloat4(0.2f));
- tuple.put(7, DatumFactory.createFloat8(4.1));
- tuple.put(8, DatumFactory.createText(HELLO));
- tuple.put(9, DatumFactory.createBlob(HELLO.getBytes(Charsets.UTF_8)));
- tuple.put(10, NullDatum.get());
+ tuple.put(1, DatumFactory.createChar('t'));
+ tuple.put(2, DatumFactory.createInt2((short)2048));
+ tuple.put(3, DatumFactory.createInt4(4096));
+ tuple.put(4, DatumFactory.createInt8(8192L));
+ tuple.put(5, DatumFactory.createFloat4(0.2f));
+ tuple.put(6, DatumFactory.createFloat8(4.1));
+ tuple.put(7, DatumFactory.createText(HELLO));
+ tuple.put(8, DatumFactory.createBlob(HELLO.getBytes(Charsets.UTF_8)));
+ tuple.put(9, NullDatum.get());
TajoParquetWriter writer = new TajoParquetWriter(file, schema);
writer.write(tuple);
@@ -97,15 +95,14 @@ public class TestReadWrite {
assertNotNull(tuple);
assertEquals(true, tuple.getBool(0));
- assertEquals((byte)128, tuple.getByte(1));
- assertTrue(String.valueOf('t').equals(String.valueOf(tuple.getChar(2))));
- assertEquals((short)2048, tuple.getInt2(3));
- assertEquals(4096, tuple.getInt4(4));
- assertEquals(8192L, tuple.getInt8(5));
- assertEquals(new Float(0.2f), new Float(tuple.getFloat4(6)));
- assertEquals(new Double(4.1), new Double(tuple.getFloat8(7)));
- assertTrue(HELLO.equals(tuple.getText(8)));
- assertArrayEquals(HELLO.getBytes(Charsets.UTF_8), tuple.getBytes(9));
- assertTrue(tuple.isBlankOrNull(10));
+ assertTrue(String.valueOf('t').equals(String.valueOf(tuple.getChar(1))));
+ assertEquals((short)2048, tuple.getInt2(2));
+ assertEquals(4096, tuple.getInt4(3));
+ assertEquals(8192L, tuple.getInt8(4));
+ assertEquals(new Float(0.2f), new Float(tuple.getFloat4(5)));
+ assertEquals(new Double(4.1), new Double(tuple.getFloat8(6)));
+ assertTrue(HELLO.equals(tuple.getText(7)));
+ assertArrayEquals(HELLO.getBytes(Charsets.UTF_8), tuple.getBytes(8));
+ assertTrue(tuple.isBlankOrNull(9));
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/parquet/TestSchemaConverter.java
----------------------------------------------------------------------
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 87b5c34..77b5894 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,13 +22,10 @@ import org.apache.parquet.schema.MessageType;
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.catalog.SchemaBuilder;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.junit.Test;
-import java.util.ArrayList;
-import java.util.List;
-
import static org.junit.Assert.assertEquals;
/**
@@ -50,7 +47,6 @@ public class TestSchemaConverter {
private static final String CONVERTED_ALL_PARQUET_SCHEMA =
"message table_schema {\n" +
" optional boolean myboolean;\n" +
- " optional int32 mybit;\n" +
" optional binary mychar (UTF8);\n" +
" optional int32 myint2;\n" +
" optional int32 myint4;\n" +
@@ -65,38 +61,33 @@ public class TestSchemaConverter {
"}\n";
private Schema createAllTypesSchema() {
- List<Column> columns = new ArrayList<>();
- columns.add(new Column("myboolean", Type.BOOLEAN));
- columns.add(new Column("mybit", Type.BIT));
- columns.add(new Column("mychar", Type.CHAR));
- columns.add(new Column("myint2", Type.INT2));
- columns.add(new Column("myint4", Type.INT4));
- columns.add(new Column("myint8", Type.INT8));
- columns.add(new Column("myfloat4", Type.FLOAT4));
- columns.add(new Column("myfloat8", Type.FLOAT8));
- columns.add(new Column("mytext", Type.TEXT));
- columns.add(new Column("myblob", Type.BLOB));
- columns.add(new Column("mynull", Type.NULL_TYPE));
- columns.add(new Column("myinet4", Type.INET4));
- columns.add(new Column("myprotobuf", Type.PROTOBUF));
- Column[] columnsArray = new Column[columns.size()];
- columnsArray = columns.toArray(columnsArray);
- return SchemaFactory.newV1(columnsArray);
+ return SchemaBuilder.builder()
+ .add(new Column("myboolean", Type.BOOLEAN))
+ .add(new Column("mychar", Type.CHAR))
+ .add(new Column("myint2", Type.INT2))
+ .add(new Column("myint4", Type.INT4))
+ .add(new Column("myint8", Type.INT8))
+ .add(new Column("myfloat4", Type.FLOAT4))
+ .add(new Column("myfloat8", Type.FLOAT8))
+ .add(new Column("mytext", Type.TEXT))
+ .add(new Column("myblob", Type.BLOB))
+ .add(new Column("mynull", Type.NULL_TYPE))
+ .add(new Column("myinet4", Type.INET4))
+ .add(new Column("myprotobuf", Type.PROTOBUF))
+ .build();
}
private Schema createAllTypesConvertedSchema() {
- List<Column> columns = new ArrayList<>();
- columns.add(new Column("myboolean", Type.BOOLEAN));
- columns.add(new Column("myint", Type.INT4));
- columns.add(new Column("mylong", Type.INT8));
- columns.add(new Column("myfloat", Type.FLOAT4));
- columns.add(new Column("mydouble", Type.FLOAT8));
- columns.add(new Column("mybytes", Type.BLOB));
- columns.add(new Column("mystring", Type.TEXT));
- columns.add(new Column("myfixed", Type.BLOB));
- Column[] columnsArray = new Column[columns.size()];
- columnsArray = columns.toArray(columnsArray);
- return SchemaFactory.newV1(columnsArray);
+ return SchemaBuilder.builder()
+ .add(new Column("myboolean", Type.BOOLEAN))
+ .add(new Column("myint", Type.INT4))
+ .add(new Column("mylong", Type.INT8))
+ .add(new Column("myfloat", Type.FLOAT4))
+ .add(new Column("mydouble", Type.FLOAT8))
+ .add(new Column("mybytes", Type.BLOB))
+ .add(new Column("mystring", Type.TEXT))
+ .add(new Column("myfixed", Type.BLOB))
+ .build();
}
private void testTajoToParquetConversion(
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-storage/tajo-storage-hdfs/src/test/java/org/apache/tajo/storage/raw/TestDirectRawFile.java
----------------------------------------------------------------------
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 1a5a41e..01fbc67 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
@@ -127,21 +127,22 @@ public class TestDirectRawFile {
}
static {
- schema = SchemaFactory.newV1();
- schema.addColumn("col0", TajoDataTypes.Type.BOOLEAN);
- schema.addColumn("col1", TajoDataTypes.Type.INT2);
- schema.addColumn("col2", TajoDataTypes.Type.INT4);
- schema.addColumn("col3", TajoDataTypes.Type.INT8);
- schema.addColumn("col4", TajoDataTypes.Type.FLOAT4);
- schema.addColumn("col5", TajoDataTypes.Type.FLOAT8);
- schema.addColumn("col6", TajoDataTypes.Type.TEXT);
- schema.addColumn("col7", TajoDataTypes.Type.TIMESTAMP);
- schema.addColumn("col8", TajoDataTypes.Type.DATE);
- schema.addColumn("col9", TajoDataTypes.Type.TIME);
- schema.addColumn("col10", TajoDataTypes.Type.INTERVAL);
- schema.addColumn("col11", TajoDataTypes.Type.INET4);
- schema.addColumn("col12",
- CatalogUtil.newDataType(TajoDataTypes.Type.PROTOBUF, PrimitiveProtos.StringProto.class.getName()));
+ schema = SchemaBuilder.builder()
+ .add("col0", TajoDataTypes.Type.BOOLEAN)
+ .add("col1", TajoDataTypes.Type.INT2)
+ .add("col2", TajoDataTypes.Type.INT4)
+ .add("col3", TajoDataTypes.Type.INT8)
+ .add("col4", TajoDataTypes.Type.FLOAT4)
+ .add("col5", TajoDataTypes.Type.FLOAT8)
+ .add("col6", TajoDataTypes.Type.TEXT)
+ .add("col7", TajoDataTypes.Type.TIMESTAMP)
+ .add("col8", TajoDataTypes.Type.DATE)
+ .add("col9", TajoDataTypes.Type.TIME)
+ .add("col10", TajoDataTypes.Type.INTERVAL)
+ .add("col11", TajoDataTypes.Type.INET4)
+ .add("col12",
+ CatalogUtil.newDataType(TajoDataTypes.Type.PROTOBUF, PrimitiveProtos.StringProto.class.getName()))
+ .build();
}
public FileStatus writeRowBlock(TajoConf conf, TableMeta meta, MemoryRowBlock rowBlock, Path outputFile)
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-storage/tajo-storage-jdbc/src/main/java/org/apache/tajo/storage/jdbc/JdbcMetadataProviderBase.java
----------------------------------------------------------------------
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 f53c3ed..8f5e7a8 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
@@ -26,7 +26,10 @@ import org.apache.commons.logging.LogFactory;
import org.apache.tajo.catalog.*;
import org.apache.tajo.catalog.statistics.TableStats;
import org.apache.tajo.common.TajoDataTypes.Type;
-import org.apache.tajo.exception.*;
+import org.apache.tajo.exception.SQLExceptionUtil;
+import org.apache.tajo.exception.TajoInternalError;
+import org.apache.tajo.exception.UndefinedTablespaceException;
+import org.apache.tajo.exception.UnsupportedDataTypeException;
import org.apache.tajo.util.KeyValueSet;
import org.apache.tajo.util.Pair;
@@ -208,12 +211,12 @@ public abstract class JdbcMetadataProviderBase implements MetadataProvider {
});
// transform the pair list into collection for columns
- final Schema schema = SchemaFactory.newV1(Collections2.transform(columns, new Function<Pair<Integer,Column>, Column>() {
+ final Schema schema = SchemaBuilder.builder().addAll(Collections2.transform(columns, new Function<Pair<Integer,Column>, Column>() {
@Override
public Column apply(@Nullable Pair<Integer, Column> columnPair) {
return columnPair.getSecond();
}
- }));
+ })).build();
// fill the table stats
[6/6] tajo git commit: TAJO-2108: Refactor Schema to be immutable.
Posted by hy...@apache.org.
TAJO-2108: Refactor Schema to be immutable.
Closes #1000
Project: http://git-wip-us.apache.org/repos/asf/tajo/repo
Commit: http://git-wip-us.apache.org/repos/asf/tajo/commit/4aef83a3
Tree: http://git-wip-us.apache.org/repos/asf/tajo/tree/4aef83a3
Diff: http://git-wip-us.apache.org/repos/asf/tajo/diff/4aef83a3
Branch: refs/heads/master
Commit: 4aef83a39adf1055c212df5fac8b9451e24315b4
Parents: 71d2825
Author: Hyunsik Choi <hy...@apache.org>
Authored: Wed Apr 20 13:37:12 2016 -0700
Committer: Hyunsik Choi <hy...@apache.org>
Committed: Wed Apr 20 13:37:12 2016 -0700
----------------------------------------------------------------------
CHANGES | 2 +
.../org/apache/tajo/catalog/FieldConverter.java | 99 ++++++
.../apache/tajo/catalog/ListSchemaBuilder.java | 49 +++
.../java/org/apache/tajo/catalog/Schema.java | 14 -
.../org/apache/tajo/catalog/SchemaBuilder.java | 190 +++++++++++
.../org/apache/tajo/catalog/SchemaFactory.java | 21 --
.../org/apache/tajo/catalog/SchemaLegacy.java | 30 +-
.../org/apache/tajo/catalog/SchemaUtil.java | 35 +-
.../apache/tajo/catalog/SetSchemaBuilder.java | 66 ++++
.../java/org/apache/tajo/catalog/TableDesc.java | 3 +-
.../org/apache/tajo/catalog/TypeConverter.java | 101 ++++++
.../org/apache/tajo/catalog/TestIndexDesc.java | 4 +-
.../org/apache/tajo/catalog/TestSchema.java | 172 +++++-----
.../org/apache/tajo/catalog/TestTableDesc.java | 14 +-
.../org/apache/tajo/catalog/TestTableMeta.java | 21 +-
.../tajo/catalog/store/HiveCatalogStore.java | 30 +-
.../catalog/store/TestHiveCatalogStore.java | 150 +++++----
.../tajo/catalog/store/AbstractDBStore.java | 9 +-
.../apache/tajo/catalog/CatalogTestingUtil.java | 16 +-
.../org/apache/tajo/catalog/TestCatalog.java | 169 +++++-----
.../TestCatalogAgainstCaseSensitivity.java | 32 +-
.../tajo/catalog/TestCatalogExceptions.java | 9 +-
.../tajo/catalog/TestLinkedMetadataManager.java | 10 +-
.../org/apache/tajo/client/TajoClientUtil.java | 6 +-
.../apache/tajo/jdbc/TajoMetaDataResultSet.java | 9 +-
.../org/apache/tajo/BackendTestingUtil.java | 9 +-
.../java/org/apache/tajo/schema/Identifier.java | 16 +
.../apache/tajo/schema/QualifiedIdentifier.java | 15 +
.../java/org/apache/tajo/schema/Schema.java | 85 ++++-
.../src/main/java/org/apache/tajo/type/Any.java | 33 ++
.../main/java/org/apache/tajo/type/Array.java | 5 +
.../main/java/org/apache/tajo/type/Char.java | 5 +
.../main/java/org/apache/tajo/type/Inet4.java | 28 ++
.../java/org/apache/tajo/type/Interval.java | 28 ++
.../main/java/org/apache/tajo/type/Null.java | 28 ++
.../java/org/apache/tajo/type/Protobuf.java | 42 +++
.../main/java/org/apache/tajo/type/Type.java | 25 ++
.../main/java/org/apache/tajo/type/Varchar.java | 5 +
.../apache/tajo/cli/tools/TestDDLBuilder.java | 34 +-
.../tajo/cli/tsql/TestTajoCliNegatives.java | 2 +-
.../TestCatalogAdminClientExceptions.java | 9 +-
.../engine/codegen/TestEvalCodeGenerator.java | 99 +++---
.../apache/tajo/engine/eval/TestEvalTree.java | 11 +-
.../tajo/engine/eval/TestEvalTreeUtil.java | 11 +-
.../apache/tajo/engine/eval/TestPredicates.java | 150 ++++-----
.../tajo/engine/eval/TestSQLExpression.java | 121 ++-----
.../engine/function/TestBuiltinFunctions.java | 241 +++++++------
.../function/TestConditionalExpressions.java | 52 +--
.../engine/function/TestDateTimeFunctions.java | 31 +-
.../tajo/engine/function/TestMathFunctions.java | 260 +++++++-------
.../function/TestPatternMatchingPredicates.java | 7 +-
.../TestStringOperatorsAndFunctions.java | 220 ++++++------
.../function/TestUserDefinedFunctions.java | 7 +-
.../engine/planner/TestJoinOrderAlgorithm.java | 42 ++-
.../engine/planner/TestLogicalOptimizer.java | 31 +-
.../tajo/engine/planner/TestLogicalPlanner.java | 69 ++--
.../tajo/engine/planner/TestPlannerUtil.java | 60 ++--
.../planner/TestUniformRangePartition.java | 203 ++++++-----
.../planner/physical/TestExternalSortExec.java | 8 +-
.../physical/TestFullOuterHashJoinExec.java | 40 ++-
.../physical/TestFullOuterMergeJoinExec.java | 49 +--
.../planner/physical/TestHashAntiJoinExec.java | 24 +-
.../planner/physical/TestHashJoinExec.java | 24 +-
.../planner/physical/TestHashSemiJoinExec.java | 24 +-
.../physical/TestLeftOuterHashJoinExec.java | 40 ++-
.../planner/physical/TestMergeJoinExec.java | 24 +-
.../planner/physical/TestPhysicalPlanner.java | 22 +-
.../physical/TestProgressExternalSortExec.java | 9 +-
.../engine/planner/physical/TestRadixSort.java | 6 +-
.../physical/TestRightOuterHashJoinExec.java | 33 +-
.../physical/TestRightOuterMergeJoinExec.java | 50 +--
.../engine/planner/physical/TestSortExec.java | 14 +-
.../planner/physical/TestSortIntersectExec.java | 24 +-
.../planner/physical/TestTupleSorter.java | 4 +-
.../planner/physical/TestUnSafeTuple.java | 4 +-
.../tajo/engine/query/TestGroupByQuery.java | 36 +-
.../tajo/engine/query/TestHBaseTable.java | 79 +++--
.../apache/tajo/engine/query/TestJoinQuery.java | 42 ++-
.../tajo/engine/query/TestNullValues.java | 75 +++--
.../tajo/engine/query/TestSelectQuery.java | 9 +-
.../apache/tajo/engine/query/TestSortQuery.java | 58 ++--
.../tajo/engine/query/TestTablePartitions.java | 16 +-
.../tajo/engine/query/TestWindowQuery.java | 39 ++-
.../apache/tajo/engine/util/BenchmarkSort.java | 4 +-
.../apache/tajo/engine/util/TestTupleUtil.java | 95 +++---
.../org/apache/tajo/storage/TestRowFile.java | 11 +-
.../create_table_various_types.sql | 24 +-
.../java/org/apache/tajo/benchmark/TPCH.java | 218 ++++++------
.../global/builder/DistinctGroupbyBuilder.java | 10 +-
.../planner/physical/BSTIndexScanExec.java | 46 +--
.../planner/physical/ColPartitionStoreExec.java | 12 +-
.../engine/planner/physical/SeqScanExec.java | 35 +-
.../engine/planner/physical/WindowAggExec.java | 10 +-
.../exec/ExplainPlanPreprocessorForTest.java | 7 +-
.../apache/tajo/master/exec/QueryExecutor.java | 4 +-
.../apache/tajo/querymaster/Repartitioner.java | 2 +-
.../apache/tajo/jdbc/TajoDatabaseMetaData.java | 31 +-
.../org/apache/tajo/jdbc/TestResultSet.java | 18 +-
.../apache/tajo/jdbc/TestTajoJdbcNegative.java | 2 +-
.../org/apache/tajo/plan/LogicalPlanner.java | 67 ++--
.../org/apache/tajo/plan/expr/EvalTreeUtil.java | 23 +-
.../function/python/PythonScriptEngine.java | 24 +-
.../tajo/plan/logical/CreateTableNode.java | 5 +-
.../apache/tajo/plan/logical/InsertNode.java | 8 +-
.../org/apache/tajo/plan/logical/ScanNode.java | 2 +-
.../plan/rewrite/SelfDescSchemaBuildPhase.java | 26 +-
.../tajo/plan/rewrite/rules/IndexScanInfo.java | 17 +-
.../rewrite/rules/PartitionedTableRewriter.java | 7 +-
.../org/apache/tajo/plan/util/PlannerUtil.java | 33 +-
.../org/apache/tajo/plan/TestLogicalNode.java | 11 +-
.../org/apache/tajo/storage/MergeScanner.java | 4 +-
.../org/apache/tajo/storage/TupleRange.java | 19 +-
.../org/apache/tajo/storage/TestLazyTuple.java | 67 ++--
.../tajo/storage/TestTupleComparator.java | 29 +-
.../tajo/storage/hbase/TestColumnMapping.java | 13 +-
.../tajo/storage/parquet/ParquetScanner.java | 5 +-
.../storage/parquet/TajoSchemaConverter.java | 4 +-
.../storage/thirdparty/orc/OrcRecordReader.java | 17 +-
.../tajo/storage/TestCompressionStorages.java | 11 +-
.../tajo/storage/TestDelimitedTextFile.java | 26 +-
.../apache/tajo/storage/TestFileSystems.java | 11 +-
.../apache/tajo/storage/TestFileTablespace.java | 38 ++-
.../org/apache/tajo/storage/TestLineReader.java | 46 +--
.../apache/tajo/storage/TestMergeScanner.java | 20 +-
.../org/apache/tajo/storage/TestStorages.java | 336 ++++++++++---------
.../apache/tajo/storage/index/TestBSTIndex.java | 90 ++---
.../index/TestSingleCSVFileBSTIndex.java | 27 +-
.../apache/tajo/storage/json/TestJsonSerDe.java | 42 ++-
.../tajo/storage/parquet/TestReadWrite.java | 43 ++-
.../storage/parquet/TestSchemaConverter.java | 59 ++--
.../tajo/storage/raw/TestDirectRawFile.java | 31 +-
.../storage/jdbc/JdbcMetadataProviderBase.java | 9 +-
132 files changed, 3333 insertions(+), 2364 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index ce8994d..244c261 100644
--- a/CHANGES
+++ b/CHANGES
@@ -10,6 +10,8 @@ Release 0.12.0 - unreleased
IMPROVEMENT
+ TAJO-2108: Refactor Schema to be immutable. (hyunsik)
+
TAJO-2112: Improve disk load, when queries run simultaneously. (jinho)
TAJO-2104: Implement Identifier which supports quotation information.
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/FieldConverter.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/FieldConverter.java b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/FieldConverter.java
new file mode 100644
index 0000000..616b44e
--- /dev/null
+++ b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/FieldConverter.java
@@ -0,0 +1,99 @@
+/**
+ * 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.Function;
+import com.google.common.collect.Collections2;
+import com.google.common.collect.ImmutableList;
+import org.apache.tajo.common.TajoDataTypes;
+import org.apache.tajo.exception.NotImplementedException;
+import org.apache.tajo.exception.TajoRuntimeException;
+import org.apache.tajo.schema.Identifier;
+import org.apache.tajo.schema.IdentifierPolicy;
+import org.apache.tajo.schema.QualifiedIdentifier;
+import org.apache.tajo.schema.Schema;
+import org.apache.tajo.schema.Schema.NamedPrimitiveType;
+import org.apache.tajo.schema.Schema.NamedStructType;
+import org.apache.tajo.type.*;
+
+import javax.annotation.Nullable;
+import java.util.Collection;
+
+public class FieldConverter {
+
+ public static QualifiedIdentifier toQualifiedIdentifier(String name) {
+ final Collection<String> elems = ImmutableList.copyOf(name.split("\\."));
+ final Collection<Identifier> identifiers = Collections2.transform(elems, new Function<String, Identifier>() {
+ @Override
+ public Identifier apply(@Nullable String input) {
+ boolean needQuote = CatalogUtil.isShouldBeQuoted(input);
+ return Identifier._(input, needQuote);
+ }
+ });
+ return QualifiedIdentifier.$(identifiers);
+ }
+
+ public static TypeDesc convert(Schema.NamedType src) {
+ if (src instanceof NamedStructType) {
+ NamedStructType structType = (NamedStructType) src;
+
+ ImmutableList.Builder<Column> fields = ImmutableList.builder();
+ for (Schema.NamedType t: structType.fields()) {
+ fields.add(new Column(t.name().raw(IdentifierPolicy.DefaultPolicy()), convert(t)));
+ }
+
+ return new TypeDesc(SchemaBuilder.builder().addAll(fields.build()).build());
+ } else {
+ final NamedPrimitiveType namedType = (NamedPrimitiveType) src;
+ final Type type = namedType.type();
+ if (type instanceof Char) {
+ Char charType = (Char) type;
+ return new TypeDesc(CatalogUtil.newDataTypeWithLen(TajoDataTypes.Type.CHAR, charType.length()));
+ } else if (type instanceof Varchar) {
+ Varchar varcharType = (Varchar) type;
+ return new TypeDesc(CatalogUtil.newDataTypeWithLen(TajoDataTypes.Type.VARCHAR, varcharType.length()));
+ } else if (type instanceof Numeric) {
+ Numeric numericType = (Numeric) type;
+ return new TypeDesc(CatalogUtil.newDataTypeWithLen(TajoDataTypes.Type.NUMERIC, numericType.precision()));
+ } else if (type instanceof Protobuf) {
+ Protobuf protobuf = (Protobuf) type;
+ return new TypeDesc(CatalogUtil.newDataType(TajoDataTypes.Type.PROTOBUF, protobuf.getMessageName()));
+ } else {
+ return new TypeDesc(TypeConverter.convert(namedType.type()));
+ }
+ }
+ }
+
+ public static Schema.NamedType convert(Column column) {
+ if (column.getTypeDesc().getDataType().getType() == TajoDataTypes.Type.RECORD) {
+
+ if (column.getTypeDesc().getNestedSchema() == null) {
+ throw new TajoRuntimeException(new NotImplementedException("record type projection"));
+ }
+
+ return new NamedStructType(toQualifiedIdentifier(column.getQualifiedName()),
+ TypeConverter.convert(column.getTypeDesc()));
+
+ } else {
+ return new NamedPrimitiveType(toQualifiedIdentifier(column.getQualifiedName()),
+ TypeConverter.convert(column.getDataType())
+ );
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/ListSchemaBuilder.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/ListSchemaBuilder.java b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/ListSchemaBuilder.java
new file mode 100644
index 0000000..e0c9d9e
--- /dev/null
+++ b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/ListSchemaBuilder.java
@@ -0,0 +1,49 @@
+/**
+ * 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.collect.ImmutableCollection;
+import com.google.common.collect.ImmutableList;
+import org.apache.tajo.schema.Schema.NamedType;
+
+import java.util.Iterator;
+
+public class ListSchemaBuilder implements SchemaBuilder.SchemaCollector {
+ private final ImmutableList.Builder<NamedType> fields = new ImmutableList.Builder();
+
+ @Override
+ public void add(NamedType namedType) {
+ fields.add(namedType);
+ }
+
+ @Override
+ public void addAll(Iterator<NamedType> fields) {
+ this.fields.addAll(fields);
+ }
+
+ @Override
+ public void addAll(Iterable<NamedType> fields) {
+ this.fields.addAll(fields);
+ }
+
+ @Override
+ public ImmutableCollection<NamedType> build() {
+ return fields.build();
+ }
+}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/Schema.java
----------------------------------------------------------------------
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 1b4c1eb..ec6af2c 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
@@ -20,8 +20,6 @@ package org.apache.tajo.catalog;
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.json.GsonObject;
import java.util.Collection;
@@ -90,18 +88,6 @@ public interface Schema extends ProtoObject<SchemaProto>, Cloneable, GsonObject
*/
boolean containsAny(Collection<Column> columns);
- Schema addColumn(String name, TypeDesc typeDesc);
-
- Schema addColumn(String name, Type type);
-
- Schema addColumn(String name, Type type, int length);
-
- Schema addColumn(String name, DataType dataType);
-
- void addColumn(Column column);
-
- void addColumns(Schema schema);
-
@Override
boolean equals(Object o);
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/SchemaBuilder.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/SchemaBuilder.java b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/SchemaBuilder.java
new file mode 100644
index 0000000..35e38b5
--- /dev/null
+++ b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/SchemaBuilder.java
@@ -0,0 +1,190 @@
+/**
+ * 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.Function;
+import com.google.common.collect.ImmutableCollection;
+import com.google.common.collect.ImmutableList;
+import org.apache.tajo.common.TajoDataTypes;
+import org.apache.tajo.schema.QualifiedIdentifier;
+import org.apache.tajo.schema.Schema.NamedPrimitiveType;
+import org.apache.tajo.schema.Schema.NamedStructType;
+import org.apache.tajo.schema.Schema.NamedType;
+import org.apache.tajo.type.Type;
+
+import javax.annotation.Nullable;
+import java.util.Collection;
+import java.util.Iterator;
+
+import static org.apache.tajo.catalog.FieldConverter.toQualifiedIdentifier;
+import static org.apache.tajo.schema.IdentifierPolicy.DefaultPolicy;
+
+/**
+ * Builder for Schema
+ */
+public class SchemaBuilder {
+ private final SchemaCollector fields;
+
+ public interface SchemaCollector {
+ void add(NamedType field);
+ void addAll(Iterator<NamedType> fields);
+ void addAll(Iterable<NamedType> fields);
+ ImmutableCollection<NamedType> build();
+ }
+
+ public static SchemaLegacy empty() {
+ return builder().build();
+ }
+
+ public static SchemaBuilder builder() {
+ return new SchemaBuilder(new ListSchemaBuilder());
+ }
+
+ public static SchemaBuilder uniqueNameBuilder() {
+ return new SchemaBuilder(new SetSchemaBuilder());
+ }
+
+ SchemaBuilder(SchemaCollector collector) {
+ this.fields = collector;
+ }
+
+ public SchemaBuilder add(NamedType namedType) {
+ fields.add(namedType);
+ return this;
+ }
+
+ public SchemaBuilder add(QualifiedIdentifier id, Type type) {
+ add(new NamedPrimitiveType(id, type));
+ return this;
+ }
+
+ public SchemaBuilder addStruct(QualifiedIdentifier id, Collection<NamedType> fields) {
+ add(new NamedStructType(id, fields));
+ return this;
+ }
+
+ @Deprecated
+ public SchemaBuilder add(String name, TypeDesc legacyType) {
+ if (legacyType.getDataType().getType() == TajoDataTypes.Type.RECORD) {
+ addStruct(toQualifiedIdentifier(name), TypeConverter.convert(legacyType));
+ } else {
+ add(toQualifiedIdentifier(name), TypeConverter.convert(legacyType.getDataType()));
+ }
+ return this;
+ }
+
+ @Deprecated
+ public SchemaBuilder add(String name, TajoDataTypes.DataType dataType) {
+ add(name, new TypeDesc(dataType));
+ return this;
+ }
+
+ @Deprecated
+ public SchemaBuilder add(String name, TajoDataTypes.Type baseType) {
+ add(name, new TypeDesc(CatalogUtil.newSimpleDataType(baseType)));
+ return this;
+ }
+
+ @Deprecated
+ public SchemaBuilder add(Column column) {
+ add(FieldConverter.convert(column));
+ return this;
+ }
+
+ @Deprecated
+ public SchemaBuilder addAll(Iterable<Column> columns) {
+ return addAll2(columns, new Function<Column, NamedType>() {
+ @Override
+ public NamedType apply(@Nullable Column input) {
+ return FieldConverter.convert(input);
+ }
+ });
+ }
+
+ @Deprecated
+ public SchemaBuilder addAll(Column [] columns) {
+ return addAll2(columns, new Function<Column, NamedType>() {
+ @Override
+ public NamedType apply(@Nullable Column input) {
+ return FieldConverter.convert(input);
+ }
+ });
+ }
+
+ @Deprecated
+ public <T> SchemaBuilder addAll(T [] fields, Function<T, Column> fn) {
+ for (T t : fields) {
+ add(fn.apply(t));
+ }
+ return this;
+ }
+
+ @Deprecated
+ public <T> SchemaBuilder addAll(Iterable<T> fields, Function<T, Column> fn) {
+ for (T t : fields) {
+ add(fn.apply(t));
+ }
+ return this;
+ }
+
+ @Deprecated
+ public <T> SchemaBuilder addAll(Iterator<T> fields, Function<T, Column> fn) {
+ while(fields.hasNext()) {
+ T t = fields.next();
+ add(fn.apply(t));
+ }
+ return this;
+ }
+
+ public <T> SchemaBuilder addAll2(T [] fields, Function<T, NamedType> fn) {
+ for (T t : fields) {
+ add(fn.apply(t));
+ }
+ return this;
+ }
+
+ public <T> SchemaBuilder addAll2(Iterable<T> fields, Function<T, NamedType> fn) {
+ for (T t : fields) {
+ add(fn.apply(t));
+ }
+ return this;
+ }
+
+ public <T> SchemaBuilder addAll2(Iterator<T> fields, Function<T, NamedType> fn) {
+ while(fields.hasNext()) {
+ T t = fields.next();
+ add(fn.apply(t));
+ }
+ return this;
+ }
+
+ @Deprecated
+ public SchemaLegacy build() {
+ ImmutableList.Builder<Column> columns = new ImmutableList.Builder();
+ for (NamedType namedType : fields.build()) {
+ columns.add(new Column(namedType.name().raw(DefaultPolicy()), FieldConverter.convert(namedType)));
+ }
+
+ return new SchemaLegacy(columns.build());
+ }
+
+ public org.apache.tajo.schema.Schema buildV2() {
+ return new org.apache.tajo.schema.Schema(fields.build());
+ }
+}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/SchemaFactory.java
----------------------------------------------------------------------
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
index fb6910b..d2a5a06 100644
--- 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
@@ -19,30 +19,9 @@
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<Column> columns) {
- return new SchemaLegacy(columns);
- }
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/SchemaLegacy.java
----------------------------------------------------------------------
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
index f23d519..2a16fa6 100644
--- 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
@@ -424,8 +424,7 @@ public class SchemaLegacy implements Schema, ProtoObject<SchemaProto>, Cloneable
return false;
}
- @Override
- public synchronized SchemaLegacy addColumn(String name, TypeDesc typeDesc) {
+ private SchemaLegacy addColumn(String name, TypeDesc typeDesc) {
String normalized = name;
if(fieldsByQualifiedName.containsKey(normalized)) {
throw new TajoRuntimeException(new DuplicateColumnException(normalized));
@@ -441,36 +440,11 @@ public class SchemaLegacy implements Schema, ProtoObject<SchemaProto>, Cloneable
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) {
+ private 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);
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/SchemaUtil.java
----------------------------------------------------------------------
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 0c62ae5..c0b60a3 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
@@ -23,9 +23,7 @@ import com.google.common.collect.Lists;
import org.apache.tajo.exception.TajoRuntimeException;
import org.apache.tajo.exception.UnsupportedDataTypeException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
+import java.util.*;
import static org.apache.tajo.common.TajoDataTypes.DataType;
import static org.apache.tajo.common.TajoDataTypes.Type;
@@ -42,17 +40,19 @@ 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 = SchemaFactory.newV1();
+ SchemaBuilder merged = SchemaBuilder.builder();
+ Set<String> nameSet = new HashSet<>();
+
for(Column col : left.getRootColumns()) {
- if (!merged.containsByQualifiedName(col.getQualifiedName())) {
- merged.addColumn(col);
- }
+ merged.add(col);
+ nameSet.add(col.getQualifiedName());
}
for(Column col : right.getRootColumns()) {
- if (merged.containsByQualifiedName(col.getQualifiedName())) {
- merged.addColumn("?fake" + (tmpColumnSeq++), col.getDataType());
+ if (nameSet.contains(col.getQualifiedName())) {
+ merged.add("?fake" + (tmpColumnSeq++), col.getDataType());
} else {
- merged.addColumn(col);
+ merged.add(col);
+ nameSet.add(col.getQualifiedName());
}
}
@@ -60,25 +60,28 @@ public class SchemaUtil {
if (tmpColumnSeq < 0) {
tmpColumnSeq = 0;
}
- return merged;
+ return merged.build();
}
/**
* Get common columns to be used as join keys of natural joins.
*/
public static Schema getNaturalJoinColumns(Schema left, Schema right) {
- Schema common = SchemaFactory.newV1();
+
+ SchemaBuilder common = SchemaBuilder.builder();
+ Set<String> commonNames = new HashSet<>();
for (Column outer : left.getRootColumns()) {
- if (!common.containsByName(outer.getSimpleName()) && right.containsByName(outer.getSimpleName())) {
- common.addColumn(new Column(outer.getSimpleName(), outer.getDataType()));
+ if (!commonNames.contains(outer.getSimpleName()) && right.containsByName(outer.getSimpleName())) {
+ common.add(new Column(outer.getSimpleName(), outer.getDataType()));
+ commonNames.add(outer.getSimpleName());
}
}
- return common;
+ return common.build();
}
public static Schema getQualifiedLogicalSchema(TableDesc tableDesc, String tableName) {
- Schema logicalSchema = SchemaFactory.newV1(tableDesc.getLogicalSchema());
+ Schema logicalSchema = SchemaBuilder.builder().addAll(tableDesc.getLogicalSchema().getRootColumns()).build();
if (tableName != null) {
logicalSchema.setQualifier(tableName);
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/SetSchemaBuilder.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/SetSchemaBuilder.java b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/SetSchemaBuilder.java
new file mode 100644
index 0000000..b66aac2
--- /dev/null
+++ b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/SetSchemaBuilder.java
@@ -0,0 +1,66 @@
+/**
+ * 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.collect.ImmutableCollection;
+import com.google.common.collect.ImmutableList;
+import org.apache.commons.collections.collection.UnmodifiableCollection;
+import org.apache.tajo.common.TajoDataTypes;
+import org.apache.tajo.schema.QualifiedIdentifier;
+import org.apache.tajo.schema.Schema.NamedPrimitiveType;
+import org.apache.tajo.schema.Schema.NamedStructType;
+import org.apache.tajo.schema.Schema.NamedType;
+import org.apache.tajo.type.Type;
+
+import java.util.*;
+
+import static org.apache.tajo.catalog.FieldConverter.toQualifiedIdentifier;
+import static org.apache.tajo.schema.IdentifierPolicy.DefaultPolicy;
+
+public class SetSchemaBuilder implements SchemaBuilder.SchemaCollector {
+ private final Set<QualifiedIdentifier> nameSet = new HashSet<>();
+ private final ImmutableList.Builder<NamedType> fields = new ImmutableList.Builder();
+
+ @Override
+ public void add(NamedType namedType) {
+ if (!nameSet.contains(namedType.name())) {
+ fields.add(namedType);
+ nameSet.add(namedType.name());
+ }
+ }
+
+ @Override
+ public void addAll(Iterator<NamedType> fields) {
+ while (fields.hasNext()) {
+ add(fields.next());
+ }
+ }
+
+ @Override
+ public void addAll(Iterable<NamedType> fields) {
+ for (NamedType n : fields) {
+ add(n);
+ }
+ }
+
+ @Override
+ public ImmutableCollection<NamedType> build() {
+ return fields.build();
+ }
+}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/TableDesc.java
----------------------------------------------------------------------
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 392a83d..8122bd5 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
@@ -122,8 +122,7 @@ public class TableDesc implements ProtoObject<TableDescProto>, GsonObject, Clone
public Schema getLogicalSchema() {
if (hasPartition()) {
- Schema logicalSchema = SchemaFactory.newV1(schema);
- logicalSchema.addColumns(getPartitionMethod().getExpressionSchema());
+ Schema logicalSchema = SchemaUtil.merge(schema, getPartitionMethod().getExpressionSchema());
logicalSchema.setQualifier(tableName);
return logicalSchema;
} else {
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/TypeConverter.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/TypeConverter.java b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/TypeConverter.java
new file mode 100644
index 0000000..f82cc03
--- /dev/null
+++ b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/TypeConverter.java
@@ -0,0 +1,101 @@
+/**
+ * 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.collect.ImmutableList;
+import org.apache.tajo.common.TajoDataTypes;
+import org.apache.tajo.exception.TajoRuntimeException;
+import org.apache.tajo.exception.UnsupportedException;
+import org.apache.tajo.schema.Schema;
+import org.apache.tajo.type.Protobuf;
+import org.apache.tajo.type.Type;
+
+import java.util.Collection;
+
+import static org.apache.tajo.type.Type.*;
+
+public class TypeConverter {
+
+ public static Collection<Schema.NamedType> convert(TypeDesc type) {
+ ImmutableList.Builder<Schema.NamedType> fields = ImmutableList.builder();
+ for (Column c : type.getNestedSchema().getRootColumns()) {
+ fields.add(FieldConverter.convert(c));
+ }
+ return fields.build();
+ }
+
+ public static Type convert(TajoDataTypes.Type legacyBaseType) {
+ switch (legacyBaseType) {
+ case BOOLEAN:
+ return Bool();
+ case INT1:
+ case INT2:
+ return Int2();
+ case INT4:
+ return Int4();
+ case INT8:
+ return Int8();
+ case FLOAT4:
+ return Float4();
+ case FLOAT8:
+ return Float8();
+ case DATE:
+ return Date();
+ case TIME:
+ return Time();
+ case TIMESTAMP:
+ return Timestamp();
+ case INTERVAL:
+ return Interval();
+ case TEXT:
+ return Text();
+ case BLOB:
+ return Blob();
+ case INET4:
+ return Inet4();
+ case NULL_TYPE:
+ return Null();
+ case ANY:
+ return Any();
+ default:
+ throw new TajoRuntimeException(new UnsupportedException(legacyBaseType.name()));
+ }
+ }
+
+ public static Type convert(TajoDataTypes.DataType legacyType) {
+ switch (legacyType.getType()) {
+ case NCHAR:
+ case CHAR:
+ return Char(legacyType.getLength());
+ case NVARCHAR:
+ case VARCHAR:
+ return Varchar(legacyType.getLength());
+ case NUMERIC:
+ return Numeric(legacyType.getLength());
+ case PROTOBUF:
+ return new Protobuf(legacyType.getCode());
+ default:
+ return convert(legacyType.getType());
+ }
+ }
+
+ public static TajoDataTypes.DataType convert(Type type) {
+ return CatalogUtil.newSimpleDataType(type.baseType());
+ }
+}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-catalog/tajo-catalog-common/src/test/java/org/apache/tajo/catalog/TestIndexDesc.java
----------------------------------------------------------------------
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 0b7516e..52c68f0 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,8 +40,8 @@ public class TestIndexDesc {
@BeforeClass
public static void setUp() throws Exception {
- relationSchema = SchemaFactory.newV1(new Column[]{new Column("id", Type.INT4),
- new Column("score", Type.FLOAT8), new Column("name", Type.TEXT)});
+ relationSchema = SchemaBuilder.builder().addAll(new Column[]{new Column("id", Type.INT4),
+ new Column("score", Type.FLOAT8), new Column("name", Type.TEXT)}).build();
SortSpec[] colSpecs1 = new SortSpec[1];
colSpecs1[0] = new SortSpec(new Column("id", Type.INT4), true, true);
desc1 = new IndexDesc(DEFAULT_DATABASE_NAME, "indexed",
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-catalog/tajo-catalog-common/src/test/java/org/apache/tajo/catalog/TestSchema.java
----------------------------------------------------------------------
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 6235945..a474730 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,18 +40,19 @@ public class TestSchema {
static {
// simple nested schema
- nestedSchema1 = SchemaFactory.newV1();
- nestedSchema1.addColumn("s1", Type.INT8);
+ SchemaBuilder builder1 = SchemaBuilder.builder();
+ builder1.add(new Column("s1", Type.INT8));
- Schema nestedRecordSchema = SchemaFactory.newV1();
- nestedRecordSchema.addColumn("s2", Type.FLOAT4);
- nestedRecordSchema.addColumn("s3", Type.TEXT);
+ Schema nestedRecordSchema = SchemaBuilder.builder()
+ .add("s2", Type.FLOAT4)
+ .add("s3", Type.TEXT)
+ .build();
Column nestedField = new Column("s4", new TypeDesc(nestedRecordSchema));
- nestedSchema1.addColumn(nestedField);
-
- nestedSchema1.addColumn("s5", Type.FLOAT8);
+ builder1.add(nestedField);
+ builder1.add(new Column("s5", Type.FLOAT8));
+ nestedSchema1 = builder1.build();
// two level nested schema
//
// s1
@@ -63,25 +64,27 @@ public class TestSchema {
// |- s8
// |- s6
// |- s7
- nestedSchema2 = SchemaFactory.newV1();
- nestedSchema2.addColumn("s1", Type.INT8);
+ SchemaBuilder builder2 = SchemaBuilder.builder();
+ builder2.add(new Column("s1", Type.INT8));
- Schema nestedRecordSchema1 = SchemaFactory.newV1();
- nestedRecordSchema1.addColumn("s2", Type.FLOAT4);
- nestedRecordSchema1.addColumn("s3", Type.TEXT);
+ Schema nestedRecordSchema1 = SchemaBuilder.builder()
+ .add("s2", Type.FLOAT4)
+ .add("s3", Type.TEXT)
+ .build();
Column nestedField1 = new Column("s4", new TypeDesc(nestedRecordSchema1));
- nestedSchema2.addColumn(nestedField1);
+ builder2.add(nestedField1);
- nestedSchema2.addColumn("s5", Type.FLOAT8);
+ builder2.add(new Column("s5", Type.FLOAT8));
- Schema nestedRecordSchema2 = SchemaFactory.newV1();
- nestedRecordSchema2.addColumn("s6", Type.FLOAT4);
- nestedRecordSchema2.addColumn("s7", Type.TEXT);
+ Schema nestedRecordSchema2 = SchemaBuilder.builder()
+ .add("s6", Type.FLOAT4)
+ .add("s7", Type.TEXT)
+ .build();
Column nestedField2 = new Column("s8", new TypeDesc(nestedRecordSchema2));
- nestedSchema2.addColumn(nestedField2);
-
+ builder2.add(nestedField2);
+ nestedSchema2 = builder2.build();
// three level nested schema
//
@@ -95,41 +98,42 @@ public class TestSchema {
// |- s8
// |- s9
- nestedSchema3 = SchemaFactory.newV1();
- nestedSchema3.addColumn("s1", Type.INT8);
+ SchemaBuilder builder3 = SchemaBuilder.builder();
- nestedSchema3.addColumn("s2", Type.INT8);
+ builder3.add("s1", Type.INT8);
+ builder3.add("s2", Type.INT8);
- Schema s5 = SchemaFactory.newV1();
- s5.addColumn("s6", Type.INT8);
+ SchemaBuilder s5 = SchemaBuilder.builder();
+ s5.add("s6", Type.INT8);
- Schema s7 = SchemaFactory.newV1();
- s7.addColumn("s5", new TypeDesc(s5));
+ SchemaBuilder s7 = SchemaBuilder.builder();
+ s7.add("s5", new TypeDesc(s5.build()));
- Schema s3 = SchemaFactory.newV1();
- s3.addColumn("s4", Type.INT8);
- s3.addColumn("s7", new TypeDesc(s7));
- s3.addColumn("s8", Type.INT8);
+ SchemaBuilder s3 = SchemaBuilder.builder();
+ s3.add("s4", Type.INT8);
+ s3.add("s7", new TypeDesc(s7.build()));
+ s3.add("s8", Type.INT8);
- nestedSchema3.addColumn("s3", new TypeDesc(s3));
- nestedSchema3.addColumn("s9", Type.INT8);
+ builder3.add(new Column("s3", new TypeDesc(s3.build())));
+ builder3.add(new Column("s9", Type.INT8));
+ nestedSchema3 = builder3.build();
}
@Before
public void setUp() throws Exception {
- schema = SchemaFactory.newV1();
+ SchemaBuilder schemaBld = SchemaBuilder.builder();
col1 = new Column("name", Type.TEXT);
- schema.addColumn(col1);
+ schemaBld.add(col1);
col2 = new Column("age", Type.INT4);
- schema.addColumn(col2);
+ schemaBld.add(col2);
col3 = new Column("addr", Type.TEXT);
- schema.addColumn(col3);
+ schemaBld.add(col3);
+ schema = schemaBld.build();
}
@Test
public final void testSchemaSchema() {
- Schema schema2 = SchemaFactory.newV1(schema);
-
+ Schema schema2 = SchemaBuilder.builder().addAll(schema.getRootColumns()).build();
assertEquals(schema, schema2);
}
@@ -149,20 +153,21 @@ public class TestSchema {
@Test
public final void testAddField() {
- Schema schema = SchemaFactory.newV1();
+ Schema schema = SchemaBuilder.builder().build();
assertFalse(schema.containsByQualifiedName("studentId"));
- schema.addColumn("studentId", Type.INT4);
- assertTrue(schema.containsByQualifiedName("studentId"));
+ Schema schema2 = SchemaBuilder.builder().addAll(schema.getRootColumns()).add("studentId", Type.INT4).build();
+ assertTrue(schema2.containsByQualifiedName("studentId"));
}
@Test
public final void testEqualsObject() {
- Schema schema2 = SchemaFactory.newV1();
- schema2.addColumn("name", Type.TEXT);
- schema2.addColumn("age", Type.INT4);
- schema2.addColumn("addr", Type.TEXT);
-
- assertEquals(schema, schema2);
+ Schema schema2 = SchemaBuilder.builder()
+ .add("name", Type.TEXT)
+ .add("age", Type.INT4)
+ .add("addr", Type.TEXT)
+ .build();
+
+ assertEquals(schema, schema2);
}
@Test
@@ -176,11 +181,12 @@ public class TestSchema {
@Test
public final void testClone() throws CloneNotSupportedException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("abc", Type.FLOAT8);
- schema.addColumn("bbc", Type.FLOAT8);
-
- Schema schema2 = SchemaFactory.newV1(schema.getProto());
+ Schema schema = SchemaBuilder.builder()
+ .add("abc", Type.FLOAT8)
+ .add("bbc", Type.FLOAT8)
+ .build();
+
+ Schema schema2 = SchemaFactory.newV1(schema.getProto());
assertEquals(schema.getProto(), schema2.getProto());
assertEquals(schema.getColumn(0), schema2.getColumn(0));
assertEquals(schema.size(), schema2.size());
@@ -193,11 +199,12 @@ public class TestSchema {
@Test(expected = TajoRuntimeException.class)
public final void testAddExistColumn() {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("abc", Type.FLOAT8);
- schema.addColumn("bbc", Type.FLOAT8);
- schema.addColumn("abc", Type.INT4);
- }
+ SchemaBuilder.builder()
+ .add("abc", Type.FLOAT8)
+ .add("bbc", Type.FLOAT8)
+ .add("abc", Type.INT4)
+ .build();
+ }
@Test
public final void testJson() {
@@ -225,9 +232,10 @@ public class TestSchema {
assertEquals(column, schema2.getColumn("age"));
assertEquals(column, schema2.getColumn("test1.age"));
- Schema schema3 = SchemaFactory.newV1();
- schema3.addColumn("tb1.col1", Type.INT4);
- schema3.addColumn("col2", Type.INT4);
+ Schema schema3 = SchemaBuilder.builder()
+ .add("tb1.col1", Type.INT4)
+ .add("col2", Type.INT4)
+ .build();
assertEquals("tb1", schema3.getColumn(0).getQualifier());
assertEquals("tb1.col1", schema3.getColumn(0).getQualifiedName());
assertEquals("col1", schema3.getColumn(0).getSimpleName());
@@ -267,26 +275,28 @@ public class TestSchema {
@Test
public void testNestedRecord4() {
- Schema root = SchemaFactory.newV1();
-
- Schema nf2DotNf1 = SchemaFactory.newV1();
- nf2DotNf1.addColumn("f1", Type.INT8);
- nf2DotNf1.addColumn("f2", Type.INT8);
-
- Schema nf2DotNf2 = SchemaFactory.newV1();
- nf2DotNf2.addColumn("f1", Type.INT8);
- nf2DotNf2.addColumn("f2", Type.INT8);
-
- Schema nf2 = SchemaFactory.newV1();
- nf2.addColumn("f1", Type.INT8);
- nf2.addColumn("nf1", new TypeDesc(nf2DotNf1));
- nf2.addColumn("nf2", new TypeDesc(nf2DotNf2));
- nf2.addColumn("f2", Type.INT8);
-
- root.addColumn("f1", Type.INT8);
- root.addColumn("nf1", Type.INT8);
- root.addColumn("nf2", new TypeDesc(nf2));
- root.addColumn("f2", Type.INT8);
+
+ Schema nf2DotNf1 = SchemaBuilder.builder()
+ .add("f1", Type.INT8)
+ .add("f2", Type.INT8)
+ .build();
+
+ Schema nf2DotNf2 = SchemaBuilder.builder()
+ .add("f1", Type.INT8)
+ .add("f2", Type.INT8)
+ .build();
+
+ Schema nf2 = SchemaBuilder.builder()
+ .add("f1", Type.INT8)
+ .add("nf1", new TypeDesc(nf2DotNf1))
+ .add("nf2", new TypeDesc(nf2DotNf2))
+ .add("f2", Type.INT8).build();
+
+ Schema root = SchemaBuilder.builder()
+ .add("f1", Type.INT8)
+ .add("nf1", Type.INT8)
+ .add("nf2", new TypeDesc(nf2))
+ .add("f2", Type.INT8).build();
verifySchema(root);
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-catalog/tajo-catalog-common/src/test/java/org/apache/tajo/catalog/TestTableDesc.java
----------------------------------------------------------------------
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 f334738..085975b 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,9 +41,10 @@ public class TestTableDesc {
@Before
public void setup() throws IOException {
- schema = SchemaFactory.newV1();
- schema.addColumn("name", Type.BLOB);
- schema.addColumn("addr", Type.TEXT);
+ schema = SchemaBuilder.builder()
+ .add("name", Type.BLOB)
+ .add("addr", Type.TEXT)
+ .build();
info = CatalogUtil.newTableMeta("TEXT");
path = new Path(CommonTestingUtil.getTestDir(), "table1");
desc = new TableDesc("table1", schema, info, path.toUri());
@@ -67,9 +68,10 @@ public class TestTableDesc {
@Test
public void test() throws CloneNotSupportedException, IOException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("name", Type.BLOB);
- schema.addColumn("addr", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("name", Type.BLOB)
+ .add("addr", Type.TEXT)
+ .build();
TableMeta info = CatalogUtil.newTableMeta("TEXT");
testClone(info);
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-catalog/tajo-catalog-common/src/test/java/org/apache/tajo/catalog/TestTableMeta.java
----------------------------------------------------------------------
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 2e4c6a9..c6f4d1a 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
@@ -21,7 +21,6 @@ package org.apache.tajo.catalog;
import org.apache.tajo.BuiltinStorages;
import org.apache.tajo.catalog.json.CatalogGsonHelper;
import org.apache.tajo.catalog.proto.CatalogProtos.TableProto;
-import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos;
import org.junit.Before;
import org.junit.Test;
@@ -37,10 +36,7 @@ public class TestTableMeta {
}
@Test
- public void testTableMetaTableProto() {
- Schema schema1 = SchemaFactory.newV1();
- schema1.addColumn("name", Type.BLOB);
- schema1.addColumn("addr", Type.TEXT);
+ public void testTableMetaTableProto() {
TableMeta meta1 = CatalogUtil.newTableMeta("TEXT");
TableMeta meta2 = new TableMeta(meta1.getProto());
@@ -49,9 +45,6 @@ public class TestTableMeta {
@Test
public final void testClone() throws CloneNotSupportedException {
- Schema schema1 = SchemaFactory.newV1();
- schema1.addColumn("name", Type.BLOB);
- schema1.addColumn("addr", Type.TEXT);
TableMeta meta1 = CatalogUtil.newTableMeta("TEXT");
TableMeta meta2 = (TableMeta) meta1.clone();
@@ -61,13 +54,8 @@ public class TestTableMeta {
@Test
public void testSchema() throws CloneNotSupportedException {
- Schema schema1 = SchemaFactory.newV1();
- schema1.addColumn("name", Type.BLOB);
- schema1.addColumn("addr", Type.TEXT);
TableMeta meta1 = CatalogUtil.newTableMeta("TEXT");
-
TableMeta meta2 = (TableMeta) meta1.clone();
-
assertEquals(meta1, meta2);
}
@@ -77,13 +65,8 @@ public class TestTableMeta {
}
@Test
- public void testEqualsObject() {
- Schema schema2 = SchemaFactory.newV1();
- schema2.addColumn("name", Type.BLOB);
- schema2.addColumn("addr", Type.TEXT);
+ public void testEqualsObject() {
TableMeta meta2 = CatalogUtil.newTableMeta("TEXT");
-
-
assertTrue(meta.equals(meta2));
assertNotSame(meta, meta2);
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-catalog/tajo-catalog-drivers/tajo-hive/src/main/java/org/apache/tajo/catalog/store/HiveCatalogStore.java
----------------------------------------------------------------------
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 954817c..6aa0585 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
@@ -46,6 +46,7 @@ import org.apache.tajo.algebra.Expr;
import org.apache.tajo.algebra.IsNullPredicate;
import org.apache.tajo.algebra.JsonHelper;
import org.apache.tajo.catalog.*;
+import org.apache.tajo.catalog.Schema;
import org.apache.tajo.catalog.TableMeta;
import org.apache.tajo.catalog.partition.PartitionMethodDesc;
import org.apache.tajo.catalog.proto.CatalogProtos;
@@ -134,7 +135,7 @@ public class HiveCatalogStore extends CatalogConstants implements CatalogStore {
org.apache.hadoop.hive.ql.metadata.Table table = null;
Path path = null;
String dataFormat = null;
- org.apache.tajo.catalog.Schema schema = null;
+ Schema schema = null;
KeyValueSet options = null;
TableStats stats = null;
PartitionMethodDesc partitions = null;
@@ -148,7 +149,7 @@ public class HiveCatalogStore extends CatalogConstants implements CatalogStore {
path = table.getPath();
// convert HiveCatalogStore field schema into tajo field schema.
- schema = SchemaFactory.newV1();
+ SchemaBuilder schemaBuilder = SchemaBuilder.builder();
List<FieldSchema> fieldSchemaList = table.getCols();
boolean isPartitionKey;
@@ -167,9 +168,10 @@ public class HiveCatalogStore extends CatalogConstants implements CatalogStore {
String fieldName = databaseName + CatalogConstants.IDENTIFIER_DELIMITER + tableName +
CatalogConstants.IDENTIFIER_DELIMITER + eachField.getName();
TajoDataTypes.Type dataType = HiveCatalogUtil.getTajoFieldType(eachField.getType());
- schema.addColumn(fieldName, dataType);
+ schemaBuilder.add(fieldName, dataType);
}
}
+ schema = schemaBuilder.build();
// validate field schema.
HiveCatalogUtil.validateSchema(table);
@@ -238,7 +240,7 @@ public class HiveCatalogStore extends CatalogConstants implements CatalogStore {
List<FieldSchema> partitionKeys = table.getPartitionKeys();
if (null != partitionKeys) {
- org.apache.tajo.catalog.Schema expressionSchema = SchemaFactory.newV1();
+ SchemaBuilder expressionSchema = SchemaBuilder.builder();
StringBuilder sb = new StringBuilder();
if (partitionKeys.size() > 0) {
for (int i = 0; i < partitionKeys.size(); i++) {
@@ -246,7 +248,7 @@ public class HiveCatalogStore extends CatalogConstants implements CatalogStore {
TajoDataTypes.Type dataType = HiveCatalogUtil.getTajoFieldType(fieldSchema.getType());
String fieldName = databaseName + CatalogConstants.IDENTIFIER_DELIMITER + tableName +
CatalogConstants.IDENTIFIER_DELIMITER + fieldSchema.getName();
- expressionSchema.addColumn(new Column(fieldName, dataType));
+ expressionSchema.add(new Column(fieldName, dataType));
if (i > 0) {
sb.append(",");
}
@@ -257,7 +259,7 @@ public class HiveCatalogStore extends CatalogConstants implements CatalogStore {
tableName,
PartitionType.COLUMN,
sb.toString(),
- expressionSchema);
+ expressionSchema.build());
}
}
} catch (Throwable t) {
@@ -278,16 +280,6 @@ public class HiveCatalogStore extends CatalogConstants implements CatalogStore {
return tableDesc.getProto();
}
-
- private TajoDataTypes.Type getDataType(final String typeStr) {
- try {
- return Enum.valueOf(TajoDataTypes.Type.class, typeStr);
- } catch (IllegalArgumentException iae) {
- LOG.error("Cannot find a matched type against from '" + typeStr + "'");
- return null;
- }
- }
-
@Override
public final List<String> getAllTableNames(String databaseName) {
HiveCatalogStoreClientPool.HiveCatalogStoreClient client = null;
@@ -814,7 +806,7 @@ public class HiveCatalogStore extends CatalogConstants implements CatalogStore {
List<FieldSchema> partitionKeys = table.getPartitionKeys();
if (partitionKeys != null && partitionKeys.size() > 0) {
- org.apache.tajo.catalog.Schema expressionSchema = SchemaFactory.newV1();
+ SchemaBuilder expressionSchema = SchemaBuilder.builder();
StringBuilder sb = new StringBuilder();
if (partitionKeys.size() > 0) {
for (int i = 0; i < partitionKeys.size(); i++) {
@@ -822,7 +814,7 @@ public class HiveCatalogStore extends CatalogConstants implements CatalogStore {
TajoDataTypes.Type dataType = HiveCatalogUtil.getTajoFieldType(fieldSchema.getType());
String fieldName = databaseName + CatalogConstants.IDENTIFIER_DELIMITER + tableName +
CatalogConstants.IDENTIFIER_DELIMITER + fieldSchema.getName();
- expressionSchema.addColumn(new Column(fieldName, dataType));
+ expressionSchema.add(new Column(fieldName, dataType));
if (i > 0) {
sb.append(",");
}
@@ -833,7 +825,7 @@ public class HiveCatalogStore extends CatalogConstants implements CatalogStore {
tableName,
PartitionType.COLUMN,
sb.toString(),
- expressionSchema);
+ expressionSchema.build());
}
} else {
throw new UndefinedPartitionMethodException(tableName);
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-catalog/tajo-catalog-drivers/tajo-hive/src/test/java/org/apache/tajo/catalog/store/TestHiveCatalogStore.java
----------------------------------------------------------------------
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 e8d60cf..fdb1853 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
@@ -95,15 +95,16 @@ public class TestHiveCatalogStore {
public void testTableUsingTextFile() throws Exception {
TableMeta meta = new TableMeta(BuiltinStorages.TEXT, new KeyValueSet());
- 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);
- schema.addColumn("c_nationkey", TajoDataTypes.Type.INT4);
- schema.addColumn("c_phone", TajoDataTypes.Type.TEXT);
- schema.addColumn("c_acctbal", TajoDataTypes.Type.FLOAT8);
- schema.addColumn("c_mktsegment", TajoDataTypes.Type.TEXT);
- schema.addColumn("c_comment", TajoDataTypes.Type.TEXT);
+ org.apache.tajo.catalog.Schema schema = SchemaBuilder.builder()
+ .add("c_custkey", TajoDataTypes.Type.INT4)
+ .add("c_name", TajoDataTypes.Type.TEXT)
+ .add("c_address", TajoDataTypes.Type.TEXT)
+ .add("c_nationkey", TajoDataTypes.Type.INT4)
+ .add("c_phone", TajoDataTypes.Type.TEXT)
+ .add("c_acctbal", TajoDataTypes.Type.FLOAT8)
+ .add("c_mktsegment", TajoDataTypes.Type.TEXT)
+ .add("c_comment", TajoDataTypes.Type.TEXT)
+ .build();
TableDesc table = new TableDesc(CatalogUtil.buildFQName(DB_NAME, CUSTOMER), schema, meta,
new Path(warehousePath, new Path(DB_NAME, CUSTOMER)).toUri());
@@ -135,10 +136,11 @@ public class TestHiveCatalogStore {
options.set(StorageConstants.RCFILE_SERDE, StorageConstants.DEFAULT_BINARY_SERDE);
TableMeta meta = new TableMeta(BuiltinStorages.RCFILE, options);
- 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);
+ org.apache.tajo.catalog.Schema schema = SchemaBuilder.builder()
+ .add("r_regionkey", TajoDataTypes.Type.INT4)
+ .add("r_name", TajoDataTypes.Type.TEXT)
+ .add("r_comment", TajoDataTypes.Type.TEXT)
+ .build();
TableDesc table = new TableDesc(CatalogUtil.buildFQName(DB_NAME, REGION), schema, meta,
new Path(warehousePath, new Path(DB_NAME, REGION)).toUri());
@@ -169,10 +171,11 @@ public class TestHiveCatalogStore {
options.set(StorageConstants.RCFILE_SERDE, StorageConstants.DEFAULT_TEXT_SERDE);
TableMeta meta = new TableMeta(BuiltinStorages.RCFILE, options);
- 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);
+ org.apache.tajo.catalog.Schema schema = SchemaBuilder.builder()
+ .add("r_regionkey", TajoDataTypes.Type.INT4)
+ .add("r_name", TajoDataTypes.Type.TEXT)
+ .add("r_comment", TajoDataTypes.Type.TEXT)
+ .build();
TableDesc table = new TableDesc(CatalogUtil.buildFQName(DB_NAME, REGION), schema, meta,
new Path(warehousePath, new Path(DB_NAME, REGION)).toUri());
@@ -203,14 +206,15 @@ public class TestHiveCatalogStore {
options.set(StorageConstants.TEXT_NULL, StringEscapeUtils.escapeJava("\u0003"));
TableMeta meta = new TableMeta(BuiltinStorages.TEXT, options);
- 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);
- schema.addColumn("s_nationkey", TajoDataTypes.Type.INT4);
- schema.addColumn("s_phone", TajoDataTypes.Type.TEXT);
- schema.addColumn("s_acctbal", TajoDataTypes.Type.FLOAT8);
- schema.addColumn("s_comment", TajoDataTypes.Type.TEXT);
+ org.apache.tajo.catalog.Schema schema = SchemaBuilder.builder()
+ .add("s_suppkey", TajoDataTypes.Type.INT4)
+ .add("s_name", TajoDataTypes.Type.TEXT)
+ .add("s_address", TajoDataTypes.Type.TEXT)
+ .add("s_nationkey", TajoDataTypes.Type.INT4)
+ .add("s_phone", TajoDataTypes.Type.TEXT)
+ .add("s_acctbal", TajoDataTypes.Type.FLOAT8)
+ .add("s_comment", TajoDataTypes.Type.TEXT)
+ .build();
TableDesc table = new TableDesc(CatalogUtil.buildFQName(DB_NAME, SUPPLIER), schema, meta,
new Path(warehousePath, new Path(DB_NAME, SUPPLIER)).toUri());
@@ -252,18 +256,20 @@ public class TestHiveCatalogStore {
public void testAddTableByPartition() throws Exception {
TableMeta meta = new TableMeta("TEXT", new KeyValueSet());
- 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);
+ org.apache.tajo.catalog.Schema schema = SchemaBuilder.builder()
+ .add("n_name", TajoDataTypes.Type.TEXT)
+ .add("n_regionkey", TajoDataTypes.Type.INT4)
+ .add("n_comment", TajoDataTypes.Type.TEXT)
+ .build();
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 = SchemaFactory.newV1();
- expressionSchema.addColumn("n_nationkey", TajoDataTypes.Type.INT4);
- expressionSchema.addColumn("n_date", TajoDataTypes.Type.TEXT);
+ org.apache.tajo.catalog.Schema expressionSchema = SchemaBuilder.builder()
+ .add("n_nationkey", TajoDataTypes.Type.INT4)
+ .add("n_date", TajoDataTypes.Type.TEXT)
+ .build();
PartitionMethodDesc partitions = new PartitionMethodDesc(
DB_NAME,
@@ -500,10 +506,11 @@ public class TestHiveCatalogStore {
@Test
public void testGetAllTableNames() throws Exception{
TableMeta meta = new TableMeta(BuiltinStorages.TEXT, new KeyValueSet());
- 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);
+ org.apache.tajo.catalog.Schema schema = SchemaBuilder.builder()
+ .add("n_name", TajoDataTypes.Type.TEXT)
+ .add("n_regionkey", TajoDataTypes.Type.INT4)
+ .add("n_comment", TajoDataTypes.Type.TEXT)
+ .build();
String[] tableNames = new String[]{"table1", "table2", "table3"};
@@ -528,10 +535,11 @@ public class TestHiveCatalogStore {
@Test
public void testDeleteTable() throws Exception {
TableMeta meta = new TableMeta(BuiltinStorages.TEXT, new KeyValueSet());
- 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);
+ org.apache.tajo.catalog.Schema schema = SchemaBuilder.builder()
+ .add("n_name", TajoDataTypes.Type.TEXT)
+ .add("n_regionkey", TajoDataTypes.Type.INT4)
+ .add("n_comment", TajoDataTypes.Type.TEXT)
+ .build();
String tableName = "table1";
TableDesc table = new TableDesc(DB_NAME + "." + tableName, schema, meta, warehousePath.toUri());
@@ -553,10 +561,11 @@ public class TestHiveCatalogStore {
options.set(StorageConstants.SEQUENCEFILE_SERDE, StorageConstants.DEFAULT_BINARY_SERDE);
TableMeta meta = new TableMeta(BuiltinStorages.SEQUENCE_FILE, options);
- 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);
+ org.apache.tajo.catalog.Schema schema = SchemaBuilder.builder()
+ .add("r_regionkey", TajoDataTypes.Type.INT4)
+ .add("r_name", TajoDataTypes.Type.TEXT)
+ .add("r_comment", TajoDataTypes.Type.TEXT)
+ .build();
TableDesc table = new TableDesc(CatalogUtil.buildFQName(DB_NAME, REGION), schema, meta,
new Path(warehousePath, new Path(DB_NAME, REGION)).toUri());
@@ -587,10 +596,11 @@ public class TestHiveCatalogStore {
options.set(StorageConstants.SEQUENCEFILE_SERDE, StorageConstants.DEFAULT_TEXT_SERDE);
TableMeta meta = new TableMeta(BuiltinStorages.SEQUENCE_FILE, options);
- 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);
+ org.apache.tajo.catalog.Schema schema = SchemaBuilder.builder()
+ .add("r_regionkey", TajoDataTypes.Type.INT4)
+ .add("r_name", TajoDataTypes.Type.TEXT)
+ .add("r_comment", TajoDataTypes.Type.TEXT)
+ .build();
TableDesc table = new TableDesc(CatalogUtil.buildFQName(DB_NAME, REGION), schema, meta,
new Path(warehousePath, new Path(DB_NAME, REGION)).toUri());
@@ -619,15 +629,16 @@ public class TestHiveCatalogStore {
public void testTableUsingParquet() throws Exception {
TableMeta meta = new TableMeta("PARQUET", new KeyValueSet());
- 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);
- schema.addColumn("c_nationkey", TajoDataTypes.Type.INT4);
- schema.addColumn("c_phone", TajoDataTypes.Type.TEXT);
- schema.addColumn("c_acctbal", TajoDataTypes.Type.FLOAT8);
- schema.addColumn("c_mktsegment", TajoDataTypes.Type.TEXT);
- schema.addColumn("c_comment", TajoDataTypes.Type.TEXT);
+ org.apache.tajo.catalog.Schema schema = SchemaBuilder.builder()
+ .add("c_custkey", TajoDataTypes.Type.INT4)
+ .add("c_name", TajoDataTypes.Type.TEXT)
+ .add("c_address", TajoDataTypes.Type.TEXT)
+ .add("c_nationkey", TajoDataTypes.Type.INT4)
+ .add("c_phone", TajoDataTypes.Type.TEXT)
+ .add("c_acctbal", TajoDataTypes.Type.FLOAT8)
+ .add("c_mktsegment", TajoDataTypes.Type.TEXT)
+ .add("c_comment", TajoDataTypes.Type.TEXT)
+ .build();
TableDesc table = new TableDesc(CatalogUtil.buildFQName(DB_NAME, CUSTOMER), schema, meta,
new Path(warehousePath, new Path(DB_NAME, CUSTOMER)).toUri());
@@ -656,18 +667,19 @@ public class TestHiveCatalogStore {
TableMeta meta = new TableMeta(BuiltinStorages.TEXT, new KeyValueSet());
- 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);
- schema.addColumn("col4", TajoDataTypes.Type.INT8);
- schema.addColumn("col5", TajoDataTypes.Type.BOOLEAN);
- schema.addColumn("col6", TajoDataTypes.Type.FLOAT4);
- schema.addColumn("col7", TajoDataTypes.Type.FLOAT8);
- schema.addColumn("col8", TajoDataTypes.Type.TEXT);
- schema.addColumn("col9", TajoDataTypes.Type.BLOB);
- schema.addColumn("col10", TajoDataTypes.Type.TIMESTAMP);
- schema.addColumn("col11", TajoDataTypes.Type.DATE);
+ org.apache.tajo.catalog.Schema schema = SchemaBuilder.builder()
+ .add("col1", TajoDataTypes.Type.INT4)
+ .add("col2", TajoDataTypes.Type.INT1)
+ .add("col3", TajoDataTypes.Type.INT2)
+ .add("col4", TajoDataTypes.Type.INT8)
+ .add("col5", TajoDataTypes.Type.BOOLEAN)
+ .add("col6", TajoDataTypes.Type.FLOAT4)
+ .add("col7", TajoDataTypes.Type.FLOAT8)
+ .add("col8", TajoDataTypes.Type.TEXT)
+ .add("col9", TajoDataTypes.Type.BLOB)
+ .add("col10", TajoDataTypes.Type.TIMESTAMP)
+ .add("col11", TajoDataTypes.Type.DATE)
+ .build();
TableDesc table = new TableDesc(CatalogUtil.buildFQName(DB_NAME, tableName), schema, meta,
new Path(warehousePath, new Path(DB_NAME, tableName)).toUri());
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/AbstractDBStore.java
----------------------------------------------------------------------
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 1c93d08..88fabe2 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
@@ -32,12 +32,12 @@ import org.apache.tajo.catalog.*;
import org.apache.tajo.catalog.proto.CatalogProtos;
import org.apache.tajo.catalog.proto.CatalogProtos.*;
import org.apache.tajo.common.TajoDataTypes;
-import org.apache.tajo.common.TajoDataTypes.*;
+import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.conf.TajoConf;
import org.apache.tajo.exception.*;
-import org.apache.tajo.util.JavaResourceUtil;
-import org.apache.tajo.plan.expr.*;
+import org.apache.tajo.plan.expr.AlgebraicUtil;
import org.apache.tajo.plan.util.PartitionFilterAlgebraVisitor;
+import org.apache.tajo.util.JavaResourceUtil;
import org.apache.tajo.util.Pair;
import java.io.IOException;
@@ -2789,7 +2789,8 @@ public abstract class AbstractDBStore extends CatalogConstants implements Catalo
// 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(SchemaFactory.newV1(relationSchema), columnNames);
+ String unifiedName = CatalogUtil.getUnifiedSimpleColumnName(
+ SchemaBuilder.builder().addAll(relationSchema.getRootColumns()).build(), columnNames);
pstmt.setInt(1, databaseId);
pstmt.setInt(2, tableId);
pstmt.setString(3, unifiedName);
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/CatalogTestingUtil.java
----------------------------------------------------------------------
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 51461d1..3305801 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,10 +197,11 @@ public class CatalogTestingUtil {
}
public static TableDesc buildTableDesc(String databaseName, String tableName, String testDir) throws IOException {
- 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);
+ Schema schema = SchemaBuilder.builder()
+ .add(CatalogUtil.buildFQName(tableName, "Column"), Type.BLOB)
+ .add(CatalogUtil.buildFQName(tableName, "column"), Type.INT4)
+ .add(CatalogUtil.buildFQName(tableName, "cOlumn"), Type.INT8)
+ .build();
Path path = new Path(testDir + "/" + UUID.randomUUID().toString(), tableName);
TableDesc desc = new TableDesc(
CatalogUtil.buildFQName(databaseName, tableName),
@@ -213,9 +214,10 @@ public class CatalogTestingUtil {
}
public static TableDesc buildPartitionTableDesc(String databaseName, String tableName, String testDir) throws Exception {
- Schema partSchema = SchemaFactory.newV1();
- partSchema.addColumn(CatalogUtil.buildFQName(tableName, "DaTe"), Type.TEXT);
- partSchema.addColumn(CatalogUtil.buildFQName(tableName, "dAtE"), Type.TEXT);
+ Schema partSchema = SchemaBuilder.builder()
+ .add(CatalogUtil.buildFQName(tableName, "DaTe"), Type.TEXT)
+ .add(CatalogUtil.buildFQName(tableName, "dAtE"), Type.TEXT)
+ .build();
PartitionMethodDesc partitionMethodDesc =
new PartitionMethodDesc(DEFAULT_DATABASE_NAME, tableName,
CatalogProtos.PartitionType.COLUMN, "id,name", partSchema);
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalog.java
----------------------------------------------------------------------
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 c64fe43..9c1e430 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,10 +181,11 @@ public class TestCatalog {
}
private TableDesc createMockupTable(String databaseName, String tableName) throws IOException {
- schema1 = SchemaFactory.newV1();
- schema1.addColumn(FieldName1, Type.BLOB);
- schema1.addColumn(FieldName2, Type.INT4);
- schema1.addColumn(FieldName3, Type.INT8);
+ schema1 = SchemaBuilder.builder()
+ .add(FieldName1, Type.BLOB)
+ .add(FieldName2, Type.INT4)
+ .add(FieldName3, Type.INT8)
+ .build();
Path path = new Path(CommonTestingUtil.getTestDir(), tableName);
TableDesc table = new TableDesc(
CatalogUtil.buildFQName(databaseName, tableName),
@@ -299,10 +300,11 @@ public class TestCatalog {
@Test
public void testGetTable() throws Exception {
- schema1 = SchemaFactory.newV1();
- schema1.addColumn(FieldName1, Type.BLOB);
- schema1.addColumn(FieldName2, Type.INT4);
- schema1.addColumn(FieldName3, Type.INT8);
+ schema1 = SchemaBuilder.builder()
+ .add(FieldName1, Type.BLOB)
+ .add(FieldName2, Type.INT4)
+ .add(FieldName3, Type.INT8)
+ .build();
Path path = new Path(CommonTestingUtil.getTestDir(), "table1");
TableDesc meta = new TableDesc(
CatalogUtil.buildFQName(DEFAULT_DATABASE_NAME, "getTable"),
@@ -361,26 +363,22 @@ public class TestCatalog {
// |- s8
// |- s9
- Schema nestedSchema = SchemaFactory.newV1();
- nestedSchema.addColumn("s1", Type.INT8);
+ SchemaBuilder nestedSchema = SchemaBuilder.builder();
+ nestedSchema.add("s1", Type.INT8);
+ nestedSchema.add("s2", Type.INT8);
- nestedSchema.addColumn("s2", Type.INT8);
+ Schema s5 = SchemaBuilder.builder().add("s6", Type.INT8).build();
+ Schema s7 = SchemaBuilder.builder().add("s5", new TypeDesc(s5)).build();
- Schema s5 = SchemaFactory.newV1();
- s5.addColumn("s6", Type.INT8);
+ Schema s3 = SchemaBuilder.builder()
+ .add("s4", Type.INT8)
+ .add("s7", new TypeDesc(s7))
+ .add("s8", Type.INT8).build();
- Schema s7 = SchemaFactory.newV1();
- s7.addColumn("s5", new TypeDesc(s5));
+ nestedSchema.add("s3", new TypeDesc(s3));
+ nestedSchema.add("s9", Type.INT8);
- Schema s3 = SchemaFactory.newV1();
- s3.addColumn("s4", Type.INT8);
- s3.addColumn("s7", new TypeDesc(s7));
- s3.addColumn("s8", Type.INT8);
-
- nestedSchema.addColumn("s3", new TypeDesc(s3));
- nestedSchema.addColumn("s9", Type.INT8);
-
- assertSchemaEquality("nested_schema1", nestedSchema);
+ assertSchemaEquality("nested_schema1", nestedSchema.build());
}
@Test
@@ -398,26 +396,26 @@ public class TestCatalog {
// |- s3
// |- s4
- Schema nestedSchema = SchemaFactory.newV1();
- nestedSchema.addColumn("s1", Type.INT8);
-
- nestedSchema.addColumn("s2", Type.INT8);
+ SchemaBuilder nestedSchema = SchemaBuilder.builder();
+ nestedSchema.add("s1", Type.INT8);
+ nestedSchema.add("s2", Type.INT8);
- Schema s5 = SchemaFactory.newV1();
- s5.addColumn("s6", Type.INT8);
+ Schema s5 = SchemaBuilder.builder()
+ .add("s6", Type.INT8)
+ .build();
- Schema s7 = SchemaFactory.newV1();
- s7.addColumn("s5", new TypeDesc(s5));
+ SchemaBuilder s7 = SchemaBuilder.builder();
+ s7.add("s5", new TypeDesc(s5));
- Schema s3 = SchemaFactory.newV1();
- s3.addColumn("s4", Type.INT8);
- s3.addColumn("s7", new TypeDesc(s7));
- s3.addColumn("s8", Type.INT8);
+ SchemaBuilder s3 = SchemaBuilder.builder();
+ s3.add("s4", Type.INT8);
+ s3.add("s7", new TypeDesc(s7.build()));
+ s3.add("s8", Type.INT8);
- nestedSchema.addColumn("s3", new TypeDesc(s3));
- nestedSchema.addColumn("s9", Type.INT8);
+ nestedSchema.add("s3", new TypeDesc(s3.build()));
+ nestedSchema.add("s9", Type.INT8);
- assertSchemaEquality("nested_schema2", nestedSchema);
+ assertSchemaEquality("nested_schema2", nestedSchema.build());
}
static IndexDesc desc1;
@@ -426,11 +424,12 @@ public class TestCatalog {
static Schema relationSchema;
public static TableDesc prepareTable() throws IOException {
- 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)
- .addColumn(DEFAULT_DATABASE_NAME + ".indexed.score", Type.FLOAT8);
+ relationSchema = SchemaBuilder.builder()
+ .add(DEFAULT_DATABASE_NAME + ".indexed.id", Type.INT4)
+ .add(DEFAULT_DATABASE_NAME + ".indexed.name", Type.TEXT)
+ .add(DEFAULT_DATABASE_NAME + ".indexed.age", Type.INT4)
+ .add(DEFAULT_DATABASE_NAME + ".indexed.score", Type.FLOAT8)
+ .build();
String tableName = "indexed";
@@ -625,11 +624,12 @@ public class TestCatalog {
@Test
public final void testAddAndDeleteTablePartitionByHash1() throws Exception {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4)
- .addColumn("name", Type.TEXT)
- .addColumn("age", Type.INT4)
- .addColumn("score", Type.FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("name", Type.TEXT)
+ .add("age", Type.INT4)
+ .add("score", Type.FLOAT8)
+ .build();
String tableName = CatalogUtil.buildFQName(DEFAULT_DATABASE_NAME, "addedtable");
KeyValueSet opts = new KeyValueSet();
@@ -637,8 +637,9 @@ public class TestCatalog {
TableMeta meta = CatalogUtil.newTableMeta("TEXT", opts);
- Schema partSchema = SchemaFactory.newV1();
- partSchema.addColumn("id", Type.INT4);
+ Schema partSchema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .build();
PartitionMethodDesc partitionDesc =
new PartitionMethodDesc(DEFAULT_DATABASE_NAME, tableName,
@@ -665,19 +666,21 @@ public class TestCatalog {
@Test
public final void testAddAndDeleteTablePartitionByHash2() throws Exception {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4)
- .addColumn("name", Type.TEXT)
- .addColumn("age", Type.INT4)
- .addColumn("score", Type.FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("name", Type.TEXT)
+ .add("age", Type.INT4)
+ .add("score", Type.FLOAT8)
+ .build();
String tableName = CatalogUtil.buildFQName(DEFAULT_DATABASE_NAME, "addedtable");
KeyValueSet opts = new KeyValueSet();
opts.set("file.delimiter", ",");
TableMeta meta = CatalogUtil.newTableMeta("TEXT", opts);
- Schema partSchema = SchemaFactory.newV1();
- partSchema.addColumn("id", Type.INT4);
+ Schema partSchema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .build();
PartitionMethodDesc partitionDesc =
new PartitionMethodDesc(DEFAULT_DATABASE_NAME, tableName,
CatalogProtos.PartitionType.HASH, "id", partSchema);
@@ -703,19 +706,21 @@ public class TestCatalog {
@Test
public final void testAddAndDeleteTablePartitionByList() throws Exception {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4)
- .addColumn("name", Type.TEXT)
- .addColumn("age", Type.INT4)
- .addColumn("score", Type.FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("name", Type.TEXT)
+ .add("age", Type.INT4)
+ .add("score", Type.FLOAT8)
+ .build();
String tableName = CatalogUtil.buildFQName(TajoConstants.DEFAULT_DATABASE_NAME, "addedtable");
KeyValueSet opts = new KeyValueSet();
opts.set("file.delimiter", ",");
TableMeta meta = CatalogUtil.newTableMeta("TEXT", opts);
- Schema partSchema = SchemaFactory.newV1();
- partSchema.addColumn("id", Type.INT4);
+ Schema partSchema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .build();
PartitionMethodDesc partitionDesc =
new PartitionMethodDesc(DEFAULT_DATABASE_NAME, tableName,
CatalogProtos.PartitionType.LIST, "id", partSchema);
@@ -740,19 +745,21 @@ public class TestCatalog {
@Test
public final void testAddAndDeleteTablePartitionByRange() throws Exception {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4)
- .addColumn("name", Type.TEXT)
- .addColumn("age", Type.INT4)
- .addColumn("score", Type.FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("name", Type.TEXT)
+ .add("age", Type.INT4)
+ .add("score", Type.FLOAT8)
+ .build();
String tableName = CatalogUtil.buildFQName(TajoConstants.DEFAULT_DATABASE_NAME, "addedtable");
KeyValueSet opts = new KeyValueSet();
opts.set("file.delimiter", ",");
TableMeta meta = CatalogUtil.newTableMeta("TEXT", opts);
- Schema partSchema = SchemaFactory.newV1();
- partSchema.addColumn("id", Type.INT4);
+ Schema partSchema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .build();
PartitionMethodDesc partitionDesc =
new PartitionMethodDesc(DEFAULT_DATABASE_NAME, tableName, CatalogProtos.PartitionType.RANGE,
"id", partSchema);
@@ -777,11 +784,12 @@ public class TestCatalog {
// TODO: This should be added at TAJO-1891
public final void testAddAndDeleteTablePartitionByColumn() throws Exception {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4)
- .addColumn("name", Type.TEXT)
- .addColumn("age", Type.INT4)
- .addColumn("score", Type.FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("name", Type.TEXT)
+ .add("age", Type.INT4)
+ .add("score", Type.FLOAT8)
+ .build();
String simpleTableName = "addedtable";
String tableName = CatalogUtil.buildFQName(DEFAULT_DATABASE_NAME, simpleTableName);
@@ -789,9 +797,10 @@ public class TestCatalog {
opts.set("file.delimiter", ",");
TableMeta meta = CatalogUtil.newTableMeta("TEXT", opts);
- Schema partSchema = SchemaFactory.newV1();
- partSchema.addColumn("id", Type.INT4);
- partSchema.addColumn("name", Type.TEXT);
+ Schema partSchema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("name", Type.TEXT)
+ .build();
PartitionMethodDesc partitionMethodDesc =
new PartitionMethodDesc(DEFAULT_DATABASE_NAME, tableName,
[3/6] tajo git commit: TAJO-2108: Refactor Schema to be immutable.
Posted by hy...@apache.org.
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestUniformRangePartition.java
----------------------------------------------------------------------
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 ece17c7..f57f5f2 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,7 +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.SchemaBuilder;
import org.apache.tajo.catalog.SortSpec;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.datum.DatumFactory;
@@ -39,8 +39,9 @@ public class TestUniformRangePartition {
@Test
public void testPartitionForINT2Asc() {
- Schema schema = SchemaFactory.newV1()
- .addColumn("col1", Type.INT2);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", Type.INT2)
+ .build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
@@ -69,8 +70,9 @@ public class TestUniformRangePartition {
@Test
public void testPartitionForINT2Desc() {
- Schema schema = SchemaFactory.newV1()
- .addColumn("col1", Type.INT2);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", Type.INT2)
+ .build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
sortSpecs[0].setDescOrder();
@@ -100,8 +102,9 @@ public class TestUniformRangePartition {
@Test
public void testPartitionForINT4Asc() {
- Schema schema = SchemaFactory.newV1()
- .addColumn("col1", Type.INT4);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", Type.INT4)
+ .build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
@@ -130,8 +133,7 @@ public class TestUniformRangePartition {
@Test
public void testPartitionForINT4Desc() {
- Schema schema = SchemaFactory.newV1()
- .addColumn("col1", Type.INT4);
+ Schema schema = SchemaBuilder.builder().add("col1", Type.INT4).build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
sortSpecs[0].setDescOrder();
@@ -161,8 +163,8 @@ public class TestUniformRangePartition {
@Test
public void testPartitionForINT8Asc() {
- Schema schema = SchemaFactory.newV1()
- .addColumn("col1", Type.INT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", Type.INT8).build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
@@ -191,8 +193,9 @@ public class TestUniformRangePartition {
@Test
public void testPartitionForInt8Desc() {
- Schema schema = SchemaFactory.newV1()
- .addColumn("col1", Type.INT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", Type.INT8)
+ .build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
sortSpecs[0].setDescOrder();
@@ -222,8 +225,9 @@ public class TestUniformRangePartition {
@Test
public void testPartitionForFloat4Asc() {
- Schema schema = SchemaFactory.newV1()
- .addColumn("col1", Type.FLOAT4);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", Type.FLOAT4)
+ .build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
@@ -252,8 +256,9 @@ public class TestUniformRangePartition {
@Test
public void testPartitionForFloat4Desc() {
- Schema schema = SchemaFactory.newV1()
- .addColumn("col1", Type.FLOAT4);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", Type.FLOAT4)
+ .build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
sortSpecs[0].setDescOrder();
@@ -283,8 +288,7 @@ public class TestUniformRangePartition {
@Test
public void testPartitionForFloat8Asc() {
- Schema schema = SchemaFactory.newV1()
- .addColumn("col1", Type.FLOAT8);
+ Schema schema = SchemaBuilder.builder().add("col1", Type.FLOAT8).build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
@@ -313,8 +317,9 @@ public class TestUniformRangePartition {
@Test
public void testPartitionForFloat8Desc() {
- Schema schema = SchemaFactory.newV1()
- .addColumn("col1", Type.FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", Type.FLOAT8)
+ .build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
sortSpecs[0].setDescOrder();
@@ -347,9 +352,10 @@ public class TestUniformRangePartition {
*/
@Test
public void testIncrementOfText() {
- Schema schema = SchemaFactory.newV1()
- .addColumn("l_returnflag", Type.TEXT)
- .addColumn("l_linestatus", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("l_returnflag", Type.TEXT)
+ .add("l_linestatus", Type.TEXT)
+ .build();
SortSpec[] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
@@ -394,9 +400,10 @@ public class TestUniformRangePartition {
*/
@Test
public void testIncrementOfText2() {
- Schema schema = SchemaFactory.newV1()
- .addColumn("l_returnflag", Type.TEXT)
- .addColumn("l_linestatus", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("l_returnflag", Type.TEXT)
+ .add("l_linestatus", Type.TEXT)
+ .build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
@@ -439,10 +446,11 @@ public class TestUniformRangePartition {
*/
@Test
public void testIncrementOfText3() {
- Schema schema = SchemaFactory.newV1()
- .addColumn("l_returnflag", Type.TEXT)
- .addColumn("l_linestatus", Type.TEXT)
- .addColumn("final", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("l_returnflag", Type.TEXT)
+ .add("l_linestatus", Type.TEXT)
+ .add("final", Type.TEXT)
+ .build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
@@ -472,8 +480,9 @@ public class TestUniformRangePartition {
@Test
public void testIncrementOfUnicode() {
- Schema schema = SchemaFactory.newV1()
- .addColumn("col1", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", Type.TEXT)
+ .build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
@@ -500,8 +509,9 @@ public class TestUniformRangePartition {
@Test
public void testIncrementOfUnicodeOneCharSinglePartition() {
- Schema schema = SchemaFactory.newV1()
- .addColumn("col1", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", Type.TEXT)
+ .build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
@@ -530,8 +540,8 @@ public class TestUniformRangePartition {
@Test
public void testIncrementOfUnicodeOneCharMultiPartition() {
- Schema schema = SchemaFactory.newV1()
- .addColumn("col1", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", Type.TEXT).build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
@@ -560,8 +570,9 @@ public class TestUniformRangePartition {
@Test
public void testPartitionForUnicodeTextAsc() {
- Schema schema = SchemaFactory.newV1()
- .addColumn("col1", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", Type.TEXT)
+ .build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
@@ -590,9 +601,7 @@ public class TestUniformRangePartition {
@Test
public void testPartitionForUnicodeDiffLenBeginTextAsc() {
- Schema schema = SchemaFactory.newV1()
- .addColumn("col1", Type.TEXT);
-
+ Schema schema = SchemaBuilder.builder().add("col1", Type.TEXT).build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
VTuple s = new VTuple(1);
@@ -620,8 +629,7 @@ public class TestUniformRangePartition {
@Test
public void testPartitionForUnicodeDiffLenEndTextAsc() {
- Schema schema = SchemaFactory.newV1()
- .addColumn("col1", Type.TEXT);
+ Schema schema = SchemaBuilder.builder().add("col1", Type.TEXT).build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
@@ -650,8 +658,7 @@ public class TestUniformRangePartition {
@Test
public void testPartitionForUnicodeTextDesc() {
- Schema schema = SchemaFactory.newV1()
- .addColumn("col1", Type.TEXT);
+ Schema schema = SchemaBuilder.builder().add("col1", Type.TEXT).build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
sortSpecs[0].setDescOrder();
@@ -681,8 +688,7 @@ public class TestUniformRangePartition {
@Test
public void testPartitionForUnicodeDiffLenBeginTextDesc() {
- Schema schema = SchemaFactory.newV1()
- .addColumn("col1", Type.TEXT);
+ Schema schema = SchemaBuilder.builder().add("col1", Type.TEXT).build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
sortSpecs[0].setDescOrder();
@@ -712,8 +718,9 @@ public class TestUniformRangePartition {
@Test
public void testPartitionForUnicodeDiffLenEndTextDesc() {
- Schema schema = SchemaFactory.newV1()
- .addColumn("col1", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", Type.TEXT)
+ .build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
sortSpecs[0].setDescOrder();
@@ -743,9 +750,10 @@ public class TestUniformRangePartition {
@Test
public void testIncrementOfInt8() {
- Schema schema = SchemaFactory.newV1()
- .addColumn("l_orderkey", Type.INT8)
- .addColumn("l_linenumber", Type.INT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("l_orderkey", Type.INT8)
+ .add("l_linenumber", Type.INT8)
+ .build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
@@ -770,10 +778,11 @@ public class TestUniformRangePartition {
}
@Test public void testIncrementOfInt8AndFinal() {
- Schema schema = SchemaFactory.newV1()
- .addColumn("l_orderkey", Type.INT8)
- .addColumn("l_linenumber", Type.INT8)
- .addColumn("final", Type.INT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("l_orderkey", Type.INT8)
+ .add("l_linenumber", Type.INT8)
+ .add("final", Type.INT8)
+ .build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
@@ -803,10 +812,11 @@ public class TestUniformRangePartition {
@Test
public void testIncrementOfFloat8() {
- Schema schema = SchemaFactory.newV1()
- .addColumn("l_orderkey", Type.FLOAT8)
- .addColumn("l_linenumber", Type.FLOAT8)
- .addColumn("final", Type.FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("l_orderkey", Type.FLOAT8)
+ .add("l_linenumber", Type.FLOAT8)
+ .add("final", Type.FLOAT8)
+ .build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
@@ -836,10 +846,11 @@ public class TestUniformRangePartition {
@Test
public void testIncrementOfInet4() {
- Schema schema = SchemaFactory.newV1()
- .addColumn("l_orderkey", Type.INET4)
- .addColumn("l_linenumber", Type.INET4)
- .addColumn("final", Type.INET4);
+ Schema schema = SchemaBuilder.builder()
+ .add("l_orderkey", Type.INET4)
+ .add("l_linenumber", Type.INET4)
+ .add("final", Type.INET4)
+ .build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
@@ -869,9 +880,10 @@ public class TestUniformRangePartition {
@Test
public void testPartition() {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("l_returnflag", Type.TEXT);
- schema.addColumn("l_linestatus", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("l_returnflag", Type.TEXT)
+ .add("l_linestatus", Type.TEXT)
+ .build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
@@ -898,9 +910,10 @@ public class TestUniformRangePartition {
@Test
public void testPartitionForOnePartNum() {
- Schema schema = SchemaFactory.newV1()
- .addColumn("l_returnflag", Type.TEXT)
- .addColumn("l_linestatus", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("l_returnflag", Type.TEXT)
+ .add("l_linestatus", Type.TEXT)
+ .build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
@@ -920,9 +933,10 @@ public class TestUniformRangePartition {
@Test
public void testPartitionForOnePartNumWithOneOfTheValueNull() {
- Schema schema = SchemaFactory.newV1()
- .addColumn("l_returnflag", Type.TEXT)
- .addColumn("l_linestatus", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("l_returnflag", Type.TEXT)
+ .add("l_linestatus", Type.TEXT)
+ .build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
@@ -942,8 +956,8 @@ public class TestUniformRangePartition {
@Test
public void testPartitionForMultipleChars() {
- Schema schema = SchemaFactory.newV1()
- .addColumn("KEY1", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("KEY1", Type.TEXT).build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
@@ -971,8 +985,10 @@ public class TestUniformRangePartition {
@Test
public void testPartitionForMultipleChars2() {
- Schema schema = SchemaFactory.newV1()
- .addColumn("KEY1", Type.TEXT);
+ Schema schema = SchemaBuilder
+ .builder()
+ .add("KEY1", Type.TEXT)
+ .build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
@@ -1002,8 +1018,9 @@ public class TestUniformRangePartition {
@Test
public void testPartitionForMultipleChars2Desc() {
- Schema schema = SchemaFactory.newV1()
- .addColumn("KEY1", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("KEY1", Type.TEXT)
+ .build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
sortSpecs[0].setDescOrder();
@@ -1034,8 +1051,9 @@ public class TestUniformRangePartition {
@Test
public void testPartitionForMultipleCharsWithSameFirstChar() {
- Schema schema = SchemaFactory.newV1()
- .addColumn("KEY1", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("KEY1", Type.TEXT)
+ .build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
@@ -1065,9 +1083,10 @@ public class TestUniformRangePartition {
@Test
public void testPartitionForOnePartNumWithBothValueNull() {
- Schema schema = SchemaFactory.newV1()
- .addColumn("l_returnflag", Type.TEXT)
- .addColumn("l_linestatus", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("l_returnflag", Type.TEXT)
+ .add("l_linestatus", Type.TEXT)
+ .build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
@@ -1087,9 +1106,10 @@ public class TestUniformRangePartition {
@Test
public void testPartitionWithNull() {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("l_returnflag", Type.TEXT);
- schema.addColumn("l_linestatus", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("l_returnflag", Type.TEXT)
+ .add("l_linestatus", Type.TEXT)
+ .build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
@@ -1116,9 +1136,10 @@ public class TestUniformRangePartition {
@Test
public void testPartitionWithINET4() {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("l_returnflag", Type.INET4);
- schema.addColumn("l_linestatus", Type.INET4);
+ Schema schema = SchemaBuilder.builder()
+ .add("l_returnflag", Type.INET4)
+ .add("l_linestatus", Type.INET4)
+ .build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestExternalSortExec.java
----------------------------------------------------------------------
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 788ebeb..d2d7810 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
@@ -103,7 +103,7 @@ public class TestExternalSortExec {
catalog.createDatabase(TajoConstants.DEFAULT_DATABASE_NAME, DEFAULT_TABLESPACE_NAME);
conf.setVar(TajoConf.ConfVars.WORKER_TEMPORAL_DIR, testDir.toString());
- tableSchema = SchemaFactory.newV1(new Column[] {
+ tableSchema = SchemaBuilder.builder().addAll(new Column[] {
new Column("managerid", Type.INT8),
new Column("empid", Type.INT4),
new Column("deptname", Type.TEXT),
@@ -119,7 +119,7 @@ public class TestExternalSortExec {
new Column("col10", Type.INT8),
new Column("col11", Type.INT8),
new Column("col12", Type.INT8)
- });
+ }).build();
TableMeta employeeMeta = CatalogUtil.newTableMeta("TEXT");
Path employeePath = new Path(testDir, "employee.csv");
@@ -215,10 +215,10 @@ public class TestExternalSortExec {
Tuple curVal;
int cnt = 0;
exec.init();
- Schema sortSchema = SchemaFactory.newV1(new Column[] {
+ Schema sortSchema = SchemaBuilder.builder().addAll(new Column[] {
new Column("managerid", Type.INT8),
new Column("empid", Type.INT4),
- });
+ }).build();
BaseTupleComparator comparator = new BaseTupleComparator(sortSchema,
new SortSpec[]{
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestFullOuterHashJoinExec.java
----------------------------------------------------------------------
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 40dc373..1d2e6b5 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
@@ -27,12 +27,12 @@ import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.conf.TajoConf;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
-import org.apache.tajo.parser.sql.SQLAnalyzer;
import org.apache.tajo.engine.planner.PhysicalPlanner;
import org.apache.tajo.engine.planner.PhysicalPlannerImpl;
import org.apache.tajo.engine.planner.enforce.Enforcer;
import org.apache.tajo.engine.query.QueryContext;
import org.apache.tajo.exception.TajoException;
+import org.apache.tajo.parser.sql.SQLAnalyzer;
import org.apache.tajo.plan.LogicalPlanner;
import org.apache.tajo.plan.logical.JoinNode;
import org.apache.tajo.plan.logical.LogicalNode;
@@ -101,10 +101,11 @@ public class TestFullOuterHashJoinExec {
// 7 | dep_7 | 1007
// 8 | dep_8 | 1008
// 9 | dep_9 | 1009
- Schema dep3Schema = SchemaFactory.newV1();
- dep3Schema.addColumn("dep_id", Type.INT4);
- dep3Schema.addColumn("dep_name", Type.TEXT);
- dep3Schema.addColumn("loc_id", Type.INT4);
+ Schema dep3Schema = SchemaBuilder.builder()
+ .add("dep_id", Type.INT4)
+ .add("dep_name", Type.TEXT)
+ .add("loc_id", Type.INT4)
+ .build();
TableMeta dep3Meta = CatalogUtil.newTableMeta("TEXT");
@@ -131,9 +132,10 @@ public class TestFullOuterHashJoinExec {
// 102 | job_102
// 103 | job_103
- Schema job3Schema = SchemaFactory.newV1();
- job3Schema.addColumn("job_id", Type.INT4);
- job3Schema.addColumn("job_title", Type.TEXT);
+ Schema job3Schema = SchemaBuilder.builder()
+ .add("job_id", Type.INT4)
+ .add("job_title", Type.TEXT)
+ .build();
TableMeta job3Meta = CatalogUtil.newTableMeta("TEXT");
@@ -166,13 +168,14 @@ public class TestFullOuterHashJoinExec {
// 21 | fn_21 | ln_21 | 1 | 123 | 101
// 23 | fn_23 | ln_23 | 3 | 369 | 103
- Schema emp3Schema = SchemaFactory.newV1();
- emp3Schema.addColumn("emp_id", Type.INT4);
- emp3Schema.addColumn("first_name", Type.TEXT);
- emp3Schema.addColumn("last_name", Type.TEXT);
- emp3Schema.addColumn("dep_id", Type.INT4);
- emp3Schema.addColumn("salary", Type.FLOAT4);
- emp3Schema.addColumn("job_id", Type.INT4);
+ Schema emp3Schema = SchemaBuilder.builder()
+ .add("emp_id", Type.INT4)
+ .add("first_name", Type.TEXT)
+ .add("last_name", Type.TEXT)
+ .add("dep_id", Type.INT4)
+ .add("salary", Type.FLOAT4)
+ .add("job_id", Type.INT4)
+ .build();
TableMeta emp3Meta = CatalogUtil.newTableMeta("TEXT");
@@ -222,9 +225,10 @@ public class TestFullOuterHashJoinExec {
// -----------------------------------------------
// this table is empty, no rows
- Schema phone3Schema = SchemaFactory.newV1();
- phone3Schema.addColumn("emp_id", Type.INT4);
- phone3Schema.addColumn("phone_number", Type.TEXT);
+ Schema phone3Schema = SchemaBuilder.builder()
+ .add("emp_id", Type.INT4)
+ .add("phone_number", Type.TEXT)
+ .build();
TableMeta phone3Meta = CatalogUtil.newTableMeta("TEXT");
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestFullOuterMergeJoinExec.java
----------------------------------------------------------------------
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 9c426ad..0fb7bbb 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
@@ -28,12 +28,12 @@ import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.conf.TajoConf;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
-import org.apache.tajo.parser.sql.SQLAnalyzer;
import org.apache.tajo.engine.planner.PhysicalPlanner;
import org.apache.tajo.engine.planner.PhysicalPlannerImpl;
import org.apache.tajo.engine.planner.enforce.Enforcer;
import org.apache.tajo.engine.query.QueryContext;
import org.apache.tajo.exception.TajoException;
+import org.apache.tajo.parser.sql.SQLAnalyzer;
import org.apache.tajo.plan.LogicalPlanner;
import org.apache.tajo.plan.logical.JoinNode;
import org.apache.tajo.plan.logical.LogicalNode;
@@ -105,10 +105,11 @@ public class TestFullOuterMergeJoinExec {
// 7 | dep_7 | 1007
// 8 | dep_8 | 1008
// 9 | dep_9 | 1009
- Schema dep3Schema = SchemaFactory.newV1();
- dep3Schema.addColumn("dep_id", Type.INT4);
- dep3Schema.addColumn("dep_name", Type.TEXT);
- dep3Schema.addColumn("loc_id", Type.INT4);
+ Schema dep3Schema = SchemaBuilder.builder()
+ .add("dep_id", Type.INT4)
+ .add("dep_name", Type.TEXT)
+ .add("loc_id", Type.INT4)
+ .build();
TableMeta dep3Meta = CatalogUtil.newTableMeta("TEXT");
@@ -143,10 +144,11 @@ public class TestFullOuterMergeJoinExec {
// 8 | dep_8 | 1008
// 9 | dep_9 | 1009
// 10 | dep_10 | 1010
- Schema dep4Schema = SchemaFactory.newV1();
- dep4Schema.addColumn("dep_id", Type.INT4);
- dep4Schema.addColumn("dep_name", Type.TEXT);
- dep4Schema.addColumn("loc_id", Type.INT4);
+ Schema dep4Schema = SchemaBuilder.builder()
+ .add("dep_id", Type.INT4)
+ .add("dep_name", Type.TEXT)
+ .add("loc_id", Type.INT4)
+ .build();
TableMeta dep4Meta = CatalogUtil.newTableMeta("TEXT");
@@ -175,9 +177,10 @@ public class TestFullOuterMergeJoinExec {
// 102 | job_102
// 103 | job_103
- Schema job3Schema = SchemaFactory.newV1();
- job3Schema.addColumn("job_id", Type.INT4);
- job3Schema.addColumn("job_title", Type.TEXT);
+ Schema job3Schema = SchemaBuilder.builder()
+ .add("job_id", Type.INT4)
+ .add("job_title", Type.TEXT)
+ .build();
TableMeta job3Meta = CatalogUtil.newTableMeta("TEXT");
@@ -210,13 +213,14 @@ public class TestFullOuterMergeJoinExec {
// 21 | fn_21 | ln_21 | 1 | 123 | 101
// 23 | fn_23 | ln_23 | 3 | 369 | 103
- Schema emp3Schema = SchemaFactory.newV1();
- emp3Schema.addColumn("emp_id", Type.INT4);
- emp3Schema.addColumn("first_name", Type.TEXT);
- emp3Schema.addColumn("last_name", Type.TEXT);
- emp3Schema.addColumn("dep_id", Type.INT4);
- emp3Schema.addColumn("salary", Type.FLOAT4);
- emp3Schema.addColumn("job_id", Type.INT4);
+ Schema emp3Schema = SchemaBuilder.builder()
+ .add("emp_id", Type.INT4)
+ .add("first_name", Type.TEXT)
+ .add("last_name", Type.TEXT)
+ .add("dep_id", Type.INT4)
+ .add("salary", Type.FLOAT4)
+ .add("job_id", Type.INT4)
+ .build();
TableMeta emp3Meta = CatalogUtil.newTableMeta("TEXT");
@@ -266,9 +270,10 @@ public class TestFullOuterMergeJoinExec {
// -----------------------------------------------
// this table is empty, no rows
- Schema phone3Schema = SchemaFactory.newV1();
- phone3Schema.addColumn("emp_id", Type.INT4);
- phone3Schema.addColumn("phone_number", Type.TEXT);
+ Schema phone3Schema = SchemaBuilder.builder()
+ .add("emp_id", Type.INT4)
+ .add("phone_number", Type.TEXT)
+ .build();
TableMeta phone3Meta = CatalogUtil.newTableMeta("TEXT");
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashAntiJoinExec.java
----------------------------------------------------------------------
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 f4257f1..cd04ea0 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
@@ -27,12 +27,12 @@ import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.conf.TajoConf;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
-import org.apache.tajo.parser.sql.SQLAnalyzer;
import org.apache.tajo.engine.planner.PhysicalPlanner;
import org.apache.tajo.engine.planner.PhysicalPlannerImpl;
import org.apache.tajo.engine.planner.enforce.Enforcer;
import org.apache.tajo.engine.query.QueryContext;
import org.apache.tajo.exception.TajoException;
+import org.apache.tajo.parser.sql.SQLAnalyzer;
import org.apache.tajo.plan.LogicalOptimizer;
import org.apache.tajo.plan.LogicalPlan;
import org.apache.tajo.plan.LogicalPlanner;
@@ -78,11 +78,12 @@ public class TestHashAntiJoinExec {
catalog.createDatabase(DEFAULT_DATABASE_NAME, DEFAULT_TABLESPACE_NAME);
conf = util.getConfiguration();
- Schema employeeSchema = SchemaFactory.newV1();
- employeeSchema.addColumn("managerid", Type.INT4);
- employeeSchema.addColumn("empid", Type.INT4);
- employeeSchema.addColumn("memid", Type.INT4);
- employeeSchema.addColumn("deptname", Type.TEXT);
+ Schema employeeSchema = SchemaBuilder.builder()
+ .add("managerid", Type.INT4)
+ .add("empid", Type.INT4)
+ .add("memid", Type.INT4)
+ .add("deptname", Type.TEXT)
+ .build();
TableMeta employeeMeta = CatalogUtil.newTableMeta("TEXT");
Path employeePath = new Path(testDir, "employee.csv");
@@ -105,11 +106,12 @@ public class TestHashAntiJoinExec {
employee = CatalogUtil.newTableDesc("default.employee", employeeSchema, employeeMeta, employeePath);
catalog.createTable(employee);
- Schema peopleSchema = SchemaFactory.newV1();
- peopleSchema.addColumn("empid", Type.INT4);
- peopleSchema.addColumn("fk_memid", Type.INT4);
- peopleSchema.addColumn("name", Type.TEXT);
- peopleSchema.addColumn("age", Type.INT4);
+ Schema peopleSchema = SchemaBuilder.builder()
+ .add("empid", Type.INT4)
+ .add("fk_memid", Type.INT4)
+ .add("name", Type.TEXT)
+ .add("age", Type.INT4)
+ .build();
TableMeta peopleMeta = CatalogUtil.newTableMeta("TEXT");
Path peoplePath = new Path(testDir, "people.csv");
appender = ((FileTablespace) TablespaceManager.getLocalFs())
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashJoinExec.java
----------------------------------------------------------------------
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 0731d9c..cdf9068 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
@@ -29,12 +29,12 @@ import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.conf.TajoConf;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
-import org.apache.tajo.parser.sql.SQLAnalyzer;
import org.apache.tajo.engine.planner.PhysicalPlanner;
import org.apache.tajo.engine.planner.PhysicalPlannerImpl;
import org.apache.tajo.engine.planner.enforce.Enforcer;
import org.apache.tajo.engine.query.QueryContext;
import org.apache.tajo.exception.TajoException;
+import org.apache.tajo.parser.sql.SQLAnalyzer;
import org.apache.tajo.plan.LogicalPlanner;
import org.apache.tajo.plan.logical.JoinNode;
import org.apache.tajo.plan.logical.LogicalNode;
@@ -80,11 +80,12 @@ public class TestHashJoinExec {
catalog.createDatabase(TajoConstants.DEFAULT_DATABASE_NAME, DEFAULT_TABLESPACE_NAME);
conf = util.getConfiguration();
- Schema employeeSchema = SchemaFactory.newV1();
- employeeSchema.addColumn("managerid", Type.INT4);
- employeeSchema.addColumn("empid", Type.INT4);
- employeeSchema.addColumn("memid", Type.INT4);
- employeeSchema.addColumn("deptname", Type.TEXT);
+ Schema employeeSchema = SchemaBuilder.builder()
+ .add("managerid", Type.INT4)
+ .add("empid", Type.INT4)
+ .add("memid", Type.INT4)
+ .add("deptname", Type.TEXT)
+ .build();
TableMeta employeeMeta = CatalogUtil.newTableMeta("TEXT");
Path employeePath = new Path(testDir, "employee.csv");
@@ -104,11 +105,12 @@ public class TestHashJoinExec {
employee = CatalogUtil.newTableDesc("default.employee", employeeSchema, employeeMeta, employeePath);
catalog.createTable(employee);
- Schema peopleSchema = SchemaFactory.newV1();
- peopleSchema.addColumn("empid", Type.INT4);
- peopleSchema.addColumn("fk_memid", Type.INT4);
- peopleSchema.addColumn("name", Type.TEXT);
- peopleSchema.addColumn("age", Type.INT4);
+ Schema peopleSchema = SchemaBuilder.builder()
+ .add("empid", Type.INT4)
+ .add("fk_memid", Type.INT4)
+ .add("name", Type.TEXT)
+ .add("age", Type.INT4)
+ .build();
TableMeta peopleMeta = CatalogUtil.newTableMeta("TEXT");
Path peoplePath = new Path(testDir, "people.csv");
appender = ((FileTablespace) TablespaceManager.getLocalFs())
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestHashSemiJoinExec.java
----------------------------------------------------------------------
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 5244652..026bbe2 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
@@ -27,12 +27,12 @@ import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.conf.TajoConf;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
-import org.apache.tajo.parser.sql.SQLAnalyzer;
import org.apache.tajo.engine.planner.PhysicalPlanner;
import org.apache.tajo.engine.planner.PhysicalPlannerImpl;
import org.apache.tajo.engine.planner.enforce.Enforcer;
import org.apache.tajo.engine.query.QueryContext;
import org.apache.tajo.exception.TajoException;
+import org.apache.tajo.parser.sql.SQLAnalyzer;
import org.apache.tajo.plan.LogicalOptimizer;
import org.apache.tajo.plan.LogicalPlan;
import org.apache.tajo.plan.LogicalPlanner;
@@ -78,11 +78,12 @@ public class TestHashSemiJoinExec {
catalog.createDatabase(DEFAULT_DATABASE_NAME, DEFAULT_TABLESPACE_NAME);
conf = util.getConfiguration();
- Schema employeeSchema = SchemaFactory.newV1();
- employeeSchema.addColumn("managerid", Type.INT4);
- employeeSchema.addColumn("empid", Type.INT4);
- employeeSchema.addColumn("memid", Type.INT4);
- employeeSchema.addColumn("deptname", Type.TEXT);
+ Schema employeeSchema = SchemaBuilder.builder()
+ .add("managerid", Type.INT4)
+ .add("empid", Type.INT4)
+ .add("memid", Type.INT4)
+ .add("deptname", Type.TEXT)
+ .build();
TableMeta employeeMeta = CatalogUtil.newTableMeta("TEXT");
Path employeePath = new Path(testDir, "employee.csv");
@@ -105,11 +106,12 @@ public class TestHashSemiJoinExec {
employee = CatalogUtil.newTableDesc("default.employee", employeeSchema, employeeMeta, employeePath);
catalog.createTable(employee);
- Schema peopleSchema = SchemaFactory.newV1();
- peopleSchema.addColumn("empid", Type.INT4);
- peopleSchema.addColumn("fk_memid", Type.INT4);
- peopleSchema.addColumn("name", Type.TEXT);
- peopleSchema.addColumn("age", Type.INT4);
+ Schema peopleSchema = SchemaBuilder.builder()
+ .add("empid", Type.INT4)
+ .add("fk_memid", Type.INT4)
+ .add("name", Type.TEXT)
+ .add("age", Type.INT4)
+ .build();
TableMeta peopleMeta = CatalogUtil.newTableMeta("TEXT");
Path peoplePath = new Path(testDir, "people.csv");
appender = ((FileTablespace) TablespaceManager.getLocalFs())
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestLeftOuterHashJoinExec.java
----------------------------------------------------------------------
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 61ccd00..c308065 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
@@ -27,12 +27,12 @@ import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.conf.TajoConf;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
-import org.apache.tajo.parser.sql.SQLAnalyzer;
import org.apache.tajo.engine.planner.PhysicalPlanner;
import org.apache.tajo.engine.planner.PhysicalPlannerImpl;
import org.apache.tajo.engine.planner.enforce.Enforcer;
import org.apache.tajo.engine.query.QueryContext;
import org.apache.tajo.exception.TajoException;
+import org.apache.tajo.parser.sql.SQLAnalyzer;
import org.apache.tajo.plan.LogicalPlanner;
import org.apache.tajo.plan.logical.JoinNode;
import org.apache.tajo.plan.logical.LogicalNode;
@@ -99,10 +99,11 @@ public class TestLeftOuterHashJoinExec {
// 7 | dep_7 | 1007
// 8 | dep_8 | 1008
// 9 | dep_9 | 1009
- Schema dep3Schema = SchemaFactory.newV1();
- dep3Schema.addColumn("dep_id", Type.INT4);
- dep3Schema.addColumn("dep_name", Type.TEXT);
- dep3Schema.addColumn("loc_id", Type.INT4);
+ Schema dep3Schema = SchemaBuilder.builder()
+ .add("dep_id", Type.INT4)
+ .add("dep_name", Type.TEXT)
+ .add("loc_id", Type.INT4)
+ .build();
TableMeta dep3Meta = CatalogUtil.newTableMeta("TEXT");
@@ -129,9 +130,10 @@ public class TestLeftOuterHashJoinExec {
// 102 | job_102
// 103 | job_103
- Schema job3Schema = SchemaFactory.newV1();
- job3Schema.addColumn("job_id", Type.INT4);
- job3Schema.addColumn("job_title", Type.TEXT);
+ Schema job3Schema = SchemaBuilder.builder()
+ .add("job_id", Type.INT4)
+ .add("job_title", Type.TEXT)
+ .build();
TableMeta job3Meta = CatalogUtil.newTableMeta("TEXT");
@@ -165,13 +167,14 @@ public class TestLeftOuterHashJoinExec {
// 21 | fn_21 | ln_21 | 1 | 123 | 101
// 23 | fn_23 | ln_23 | 3 | 369 | 103
- Schema emp3Schema = SchemaFactory.newV1();
- emp3Schema.addColumn("emp_id", Type.INT4);
- emp3Schema.addColumn("first_name", Type.TEXT);
- emp3Schema.addColumn("last_name", Type.TEXT);
- emp3Schema.addColumn("dep_id", Type.INT4);
- emp3Schema.addColumn("salary", Type.FLOAT4);
- emp3Schema.addColumn("job_id", Type.INT4);
+ Schema emp3Schema = SchemaBuilder.builder()
+ .add("emp_id", Type.INT4)
+ .add("first_name", Type.TEXT)
+ .add("last_name", Type.TEXT)
+ .add("dep_id", Type.INT4)
+ .add("salary", Type.FLOAT4)
+ .add("job_id", Type.INT4)
+ .build();
TableMeta emp3Meta = CatalogUtil.newTableMeta("TEXT");
@@ -222,9 +225,10 @@ public class TestLeftOuterHashJoinExec {
// -----------------------------------------------
// this table is empty, no rows
- Schema phone3Schema = SchemaFactory.newV1();
- phone3Schema.addColumn("emp_id", Type.INT4);
- phone3Schema.addColumn("phone_number", Type.TEXT);
+ Schema phone3Schema = SchemaBuilder.builder()
+ .add("emp_id", Type.INT4)
+ .add("phone_number", Type.TEXT)
+ .build();
TableMeta phone3Meta = CatalogUtil.newTableMeta("TEXT");
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestMergeJoinExec.java
----------------------------------------------------------------------
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 88018e9..5819003 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
@@ -28,12 +28,12 @@ import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.conf.TajoConf;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
-import org.apache.tajo.parser.sql.SQLAnalyzer;
import org.apache.tajo.engine.planner.PhysicalPlanner;
import org.apache.tajo.engine.planner.PhysicalPlannerImpl;
import org.apache.tajo.engine.planner.enforce.Enforcer;
import org.apache.tajo.engine.query.QueryContext;
import org.apache.tajo.exception.TajoException;
+import org.apache.tajo.parser.sql.SQLAnalyzer;
import org.apache.tajo.plan.LogicalPlan;
import org.apache.tajo.plan.LogicalPlanner;
import org.apache.tajo.plan.logical.JoinNode;
@@ -78,11 +78,12 @@ public class TestMergeJoinExec {
catalog.createDatabase(TajoConstants.DEFAULT_DATABASE_NAME, DEFAULT_TABLESPACE_NAME);
conf = util.getConfiguration();
- Schema employeeSchema = SchemaFactory.newV1();
- employeeSchema.addColumn("managerid", Type.INT4);
- employeeSchema.addColumn("empid", Type.INT4);
- employeeSchema.addColumn("memid", Type.INT4);
- employeeSchema.addColumn("deptname", Type.TEXT);
+ Schema employeeSchema = SchemaBuilder.builder()
+ .add("managerid", Type.INT4)
+ .add("empid", Type.INT4)
+ .add("memid", Type.INT4)
+ .add("deptname", Type.TEXT)
+ .build();
TableMeta employeeMeta = CatalogUtil.newTableMeta("TEXT");
Path employeePath = new Path(testDir, "employee.csv");
@@ -108,11 +109,12 @@ public class TestMergeJoinExec {
employee = CatalogUtil.newTableDesc("default.employee", employeeSchema, employeeMeta, employeePath);
catalog.createTable(employee);
- Schema peopleSchema = SchemaFactory.newV1();
- peopleSchema.addColumn("empid", Type.INT4);
- peopleSchema.addColumn("fk_memid", Type.INT4);
- peopleSchema.addColumn("name", Type.TEXT);
- peopleSchema.addColumn("age", Type.INT4);
+ Schema peopleSchema = SchemaBuilder.builder()
+ .add("empid", Type.INT4)
+ .add("fk_memid", Type.INT4)
+ .add("name", Type.TEXT)
+ .add("age", Type.INT4)
+ .build();
TableMeta peopleMeta = CatalogUtil.newTableMeta("TEXT");
Path peoplePath = new Path(testDir, "people.csv");
appender = ((FileTablespace) TablespaceManager.getLocalFs())
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestPhysicalPlanner.java
----------------------------------------------------------------------
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 28d99b1..694193d 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,16 +104,18 @@ public class TestPhysicalPlanner {
catalog.createFunction(funcDesc);
}
- Schema employeeSchema = SchemaFactory.newV1();
- employeeSchema.addColumn("name", Type.TEXT);
- employeeSchema.addColumn("empid", Type.INT4);
- employeeSchema.addColumn("deptname", Type.TEXT);
-
- Schema scoreSchema = SchemaFactory.newV1();
- scoreSchema.addColumn("deptname", Type.TEXT);
- scoreSchema.addColumn("class", Type.TEXT);
- scoreSchema.addColumn("score", Type.INT4);
- scoreSchema.addColumn("nullable", Type.TEXT);
+ Schema employeeSchema = SchemaBuilder.builder()
+ .add("name", Type.TEXT)
+ .add("empid", Type.INT4)
+ .add("deptname", Type.TEXT)
+ .build();
+
+ Schema scoreSchema = SchemaBuilder.builder()
+ .add("deptname", Type.TEXT)
+ .add("class", Type.TEXT)
+ .add("score", Type.INT4)
+ .add("nullable", Type.TEXT)
+ .build();
TableMeta employeeMeta = CatalogUtil.newTableMeta("TEXT");
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestProgressExternalSortExec.java
----------------------------------------------------------------------
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 21a08bd..eeb179f 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,10 +80,11 @@ public class TestProgressExternalSortExec {
catalog.createDatabase(DEFAULT_DATABASE_NAME, DEFAULT_TABLESPACE_NAME);
conf.setVar(TajoConf.ConfVars.WORKER_TEMPORAL_DIR, testDir.toString());
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("managerid", TajoDataTypes.Type.INT4);
- schema.addColumn("empid", TajoDataTypes.Type.INT4);
- schema.addColumn("deptname", TajoDataTypes.Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("managerid", TajoDataTypes.Type.INT4)
+ .add("empid", TajoDataTypes.Type.INT4)
+ .add("deptname", TajoDataTypes.Type.TEXT)
+ .build();
TableMeta employeeMeta = CatalogUtil.newTableMeta(BuiltinStorages.RAW);
Path employeePath = new Path(testDir, "employee.raw");
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestRadixSort.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestRadixSort.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestRadixSort.java
index 8246834..f357379 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestRadixSort.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestRadixSort.java
@@ -21,7 +21,7 @@ package org.apache.tajo.engine.planner.physical;
import org.apache.tajo.SessionVars;
import org.apache.tajo.catalog.Column;
import org.apache.tajo.catalog.Schema;
-import org.apache.tajo.catalog.SchemaFactory;
+import org.apache.tajo.catalog.SchemaBuilder;
import org.apache.tajo.catalog.SortSpec;
import org.apache.tajo.common.TajoDataTypes.DataType;
import org.apache.tajo.common.TajoDataTypes.Type;
@@ -63,7 +63,7 @@ public class TestRadixSort {
queryContext = new QueryContext(new TajoConf());
queryContext.setInt(SessionVars.TEST_TIM_SORT_THRESHOLD_FOR_RADIX_SORT, 0);
- schema = SchemaFactory.newV1(new Column[]{
+ schema = SchemaBuilder.builder().addAll(new Column[]{
new Column("col0", Type.INT8),
new Column("col1", Type.INT4),
new Column("col2", Type.INT2),
@@ -73,7 +73,7 @@ public class TestRadixSort {
new Column("col6", Type.INET4),
new Column("col7", Type.FLOAT4),
new Column("col8", Type.FLOAT8)
- });
+ }).build();
}
private static class Param {
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestRightOuterHashJoinExec.java
----------------------------------------------------------------------
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 a5c54b8..83d26c7 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
@@ -27,12 +27,12 @@ import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.conf.TajoConf;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
-import org.apache.tajo.parser.sql.SQLAnalyzer;
import org.apache.tajo.engine.planner.PhysicalPlanner;
import org.apache.tajo.engine.planner.PhysicalPlannerImpl;
import org.apache.tajo.engine.planner.enforce.Enforcer;
import org.apache.tajo.engine.query.QueryContext;
import org.apache.tajo.exception.TajoException;
+import org.apache.tajo.parser.sql.SQLAnalyzer;
import org.apache.tajo.plan.LogicalPlanner;
import org.apache.tajo.plan.logical.LogicalNode;
import org.apache.tajo.storage.*;
@@ -93,10 +93,11 @@ public class TestRightOuterHashJoinExec {
// 7 | dep_7 | 1007
// 8 | dep_8 | 1008
// 9 | dep_9 | 1009
- Schema dep3Schema = SchemaFactory.newV1();
- dep3Schema.addColumn("dep_id", Type.INT4);
- dep3Schema.addColumn("dep_name", Type.TEXT);
- dep3Schema.addColumn("loc_id", Type.INT4);
+ Schema dep3Schema = SchemaBuilder.builder()
+ .add("dep_id", Type.INT4)
+ .add("dep_name", Type.TEXT)
+ .add("loc_id", Type.INT4)
+ .build();
TableMeta dep3Meta = CatalogUtil.newTableMeta("TEXT");
@@ -124,9 +125,10 @@ public class TestRightOuterHashJoinExec {
// 102 | job_102
// 103 | job_103
- Schema job3Schema = SchemaFactory.newV1();
- job3Schema.addColumn("job_id", Type.INT4);
- job3Schema.addColumn("job_title", Type.TEXT);
+ Schema job3Schema = SchemaBuilder.builder()
+ .add("job_id", Type.INT4)
+ .add("job_title", Type.TEXT)
+ .build();
TableMeta job3Meta = CatalogUtil.newTableMeta("TEXT");
@@ -160,13 +162,14 @@ public class TestRightOuterHashJoinExec {
// 21 | fn_21 | ln_21 | 1 | 123 | 101
// 23 | fn_23 | ln_23 | 3 | 369 | 103
- Schema emp3Schema = SchemaFactory.newV1();
- emp3Schema.addColumn("emp_id", Type.INT4);
- emp3Schema.addColumn("first_name", Type.TEXT);
- emp3Schema.addColumn("last_name", Type.TEXT);
- emp3Schema.addColumn("dep_id", Type.INT4);
- emp3Schema.addColumn("salary", Type.FLOAT4);
- emp3Schema.addColumn("job_id", Type.INT4);
+ Schema emp3Schema = SchemaBuilder.builder()
+ .add("emp_id", Type.INT4)
+ .add("first_name", Type.TEXT)
+ .add("last_name", Type.TEXT)
+ .add("dep_id", Type.INT4)
+ .add("salary", Type.FLOAT4)
+ .add("job_id", Type.INT4)
+ .build();
TableMeta emp3Meta = CatalogUtil.newTableMeta("TEXT");
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestRightOuterMergeJoinExec.java
----------------------------------------------------------------------
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 22946e9..4bfe0f7 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
@@ -27,12 +27,12 @@ import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.conf.TajoConf;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
-import org.apache.tajo.parser.sql.SQLAnalyzer;
import org.apache.tajo.engine.planner.PhysicalPlanner;
import org.apache.tajo.engine.planner.PhysicalPlannerImpl;
import org.apache.tajo.engine.planner.enforce.Enforcer;
import org.apache.tajo.engine.query.QueryContext;
import org.apache.tajo.exception.TajoException;
+import org.apache.tajo.parser.sql.SQLAnalyzer;
import org.apache.tajo.plan.LogicalPlanner;
import org.apache.tajo.plan.logical.JoinNode;
import org.apache.tajo.plan.logical.LogicalNode;
@@ -104,10 +104,11 @@ public class TestRightOuterMergeJoinExec {
// 7 | dep_7 | 1007
// 8 | dep_8 | 1008
// 9 | dep_9 | 1009
- Schema dep3Schema = SchemaFactory.newV1();
- dep3Schema.addColumn("dep_id", Type.INT4);
- dep3Schema.addColumn("dep_name", Type.TEXT);
- dep3Schema.addColumn("loc_id", Type.INT4);
+ Schema dep3Schema = SchemaBuilder.builder()
+ .add("dep_id", Type.INT4)
+ .add("dep_name", Type.TEXT)
+ .add("loc_id", Type.INT4)
+ .build();
TableMeta dep3Meta = CatalogUtil.newTableMeta("TEXT");
@@ -143,10 +144,11 @@ public class TestRightOuterMergeJoinExec {
// 8 | dep_8 | 1008
// 9 | dep_9 | 1009
// 10 | dep_10 | 1010
- Schema dep4Schema = SchemaFactory.newV1();
- dep4Schema.addColumn("dep_id", Type.INT4);
- dep4Schema.addColumn("dep_name", Type.TEXT);
- dep4Schema.addColumn("loc_id", Type.INT4);
+ Schema dep4Schema = SchemaBuilder.builder()
+ .add("dep_id", Type.INT4)
+ .add("dep_name", Type.TEXT)
+ .add("loc_id", Type.INT4)
+ .build();
TableMeta dep4Meta = CatalogUtil.newTableMeta("TEXT");
@@ -176,9 +178,10 @@ public class TestRightOuterMergeJoinExec {
// 102 | job_102
// 103 | job_103
- Schema job3Schema = SchemaFactory.newV1();
- job3Schema.addColumn("job_id", Type.INT4);
- job3Schema.addColumn("job_title", Type.TEXT);
+ Schema job3Schema = SchemaBuilder.builder()
+ .add("job_id", Type.INT4)
+ .add("job_title", Type.TEXT)
+ .build();
TableMeta job3Meta = CatalogUtil.newTableMeta("TEXT");
@@ -212,13 +215,14 @@ public class TestRightOuterMergeJoinExec {
// 21 | fn_21 | ln_21 | 1 | 123 | 101
// 23 | fn_23 | ln_23 | 3 | 369 | 103
- Schema emp3Schema = SchemaFactory.newV1();
- emp3Schema.addColumn("emp_id", Type.INT4);
- emp3Schema.addColumn("first_name", Type.TEXT);
- emp3Schema.addColumn("last_name", Type.TEXT);
- emp3Schema.addColumn("dep_id", Type.INT4);
- emp3Schema.addColumn("salary", Type.FLOAT4);
- emp3Schema.addColumn("job_id", Type.INT4);
+ Schema emp3Schema = SchemaBuilder.builder()
+ .add("emp_id", Type.INT4)
+ .add("first_name", Type.TEXT)
+ .add("last_name", Type.TEXT)
+ .add("dep_id", Type.INT4)
+ .add("salary", Type.FLOAT4)
+ .add("job_id", Type.INT4)
+ .build();
TableMeta emp3Meta = CatalogUtil.newTableMeta("TEXT");
@@ -269,10 +273,10 @@ public class TestRightOuterMergeJoinExec {
// -----------------------------------------------
// this table is empty, no rows
- Schema phone3Schema = SchemaFactory.newV1();
- phone3Schema.addColumn("emp_id", Type.INT4);
- phone3Schema.addColumn("phone_number", Type.TEXT);
-
+ Schema phone3Schema = SchemaBuilder.builder()
+ .add("emp_id", Type.INT4)
+ .add("phone_number", Type.TEXT)
+ .build();
TableMeta phone3Meta = CatalogUtil.newTableMeta("TEXT");
Path phone3Path = new Path(testDir, "phone3.csv");
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestSortExec.java
----------------------------------------------------------------------
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 43cc719..07b392a 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
@@ -30,7 +30,6 @@ import org.apache.tajo.conf.TajoConf;
import org.apache.tajo.conf.TajoConf.ConfVars;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
-import org.apache.tajo.parser.sql.SQLAnalyzer;
import org.apache.tajo.engine.planner.PhysicalPlanner;
import org.apache.tajo.engine.planner.PhysicalPlannerImpl;
import org.apache.tajo.engine.planner.RangePartitionAlgorithm;
@@ -38,6 +37,7 @@ import org.apache.tajo.engine.planner.UniformRangePartition;
import org.apache.tajo.engine.planner.enforce.Enforcer;
import org.apache.tajo.engine.query.QueryContext;
import org.apache.tajo.exception.TajoException;
+import org.apache.tajo.parser.sql.SQLAnalyzer;
import org.apache.tajo.plan.LogicalOptimizer;
import org.apache.tajo.plan.LogicalPlan;
import org.apache.tajo.plan.LogicalPlanner;
@@ -81,10 +81,11 @@ public class TestSortExec {
workDir = CommonTestingUtil.getTestDir(TEST_PATH);
sm = TablespaceManager.getLocalFs();
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("managerid", Type.INT4);
- schema.addColumn("empid", Type.INT4);
- schema.addColumn("deptname", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("managerid", Type.INT4)
+ .add("empid", Type.INT4)
+ .add("deptname", Type.TEXT)
+ .build();
employeeMeta = CatalogUtil.newTableMeta("TEXT");
@@ -156,8 +157,7 @@ public class TestSortExec {
* Later it should be moved TestUniformPartitions.
*/
public void testTAJO_946() {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("l_orderkey", Type.INT8);
+ Schema schema = SchemaBuilder.builder().add("l_orderkey", Type.INT8).build();
SortSpec [] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
VTuple s = new VTuple(1);
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestSortIntersectExec.java
----------------------------------------------------------------------
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 2012362..7a9385b 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
@@ -27,12 +27,12 @@ import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.conf.TajoConf;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
-import org.apache.tajo.parser.sql.SQLAnalyzer;
import org.apache.tajo.engine.planner.PhysicalPlanner;
import org.apache.tajo.engine.planner.PhysicalPlannerImpl;
import org.apache.tajo.engine.planner.enforce.Enforcer;
import org.apache.tajo.engine.query.QueryContext;
import org.apache.tajo.exception.TajoException;
+import org.apache.tajo.parser.sql.SQLAnalyzer;
import org.apache.tajo.plan.LogicalOptimizer;
import org.apache.tajo.plan.LogicalPlan;
import org.apache.tajo.plan.LogicalPlanner;
@@ -84,11 +84,12 @@ public class TestSortIntersectExec {
catalog.createDatabase(DEFAULT_DATABASE_NAME, DEFAULT_TABLESPACE_NAME);
conf = util.getConfiguration();
- Schema employeeSchema1 = SchemaFactory.newV1();
- employeeSchema1.addColumn("managerid", TajoDataTypes.Type.INT4);
- employeeSchema1.addColumn("empid", TajoDataTypes.Type.INT4);
- employeeSchema1.addColumn("memid", TajoDataTypes.Type.INT4);
- employeeSchema1.addColumn("deptname", TajoDataTypes.Type.TEXT);
+ Schema employeeSchema1 = SchemaBuilder.builder()
+ .add("managerid", TajoDataTypes.Type.INT4)
+ .add("empid", TajoDataTypes.Type.INT4)
+ .add("memid", TajoDataTypes.Type.INT4)
+ .add("deptname", TajoDataTypes.Type.TEXT)
+ .build();
TableMeta employeeMeta1 = CatalogUtil.newTableMeta("TEXT");
Path employeePath1 = new Path(testDir, "employee1.csv");
@@ -111,11 +112,12 @@ public class TestSortIntersectExec {
employee1 = CatalogUtil.newTableDesc("default.employee1", employeeSchema1, employeeMeta1, employeePath1);
catalog.createTable(employee1);
- Schema employeeSchema2 = SchemaFactory.newV1();
- employeeSchema2.addColumn("managerid", TajoDataTypes.Type.INT4);
- employeeSchema2.addColumn("empid", TajoDataTypes.Type.INT4);
- employeeSchema2.addColumn("memid", TajoDataTypes.Type.INT4);
- employeeSchema2.addColumn("deptname", TajoDataTypes.Type.TEXT);
+ Schema employeeSchema2 = SchemaBuilder.builder()
+ .add("managerid", TajoDataTypes.Type.INT4)
+ .add("empid", TajoDataTypes.Type.INT4)
+ .add("memid", TajoDataTypes.Type.INT4)
+ .add("deptname", TajoDataTypes.Type.TEXT)
+ .build();
TableMeta employeeMeta2 = CatalogUtil.newTableMeta("TEXT");
Path employeePath2 = new Path(testDir, "employee2.csv");
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestTupleSorter.java
----------------------------------------------------------------------
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 3485df4..45546d2 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,7 +24,7 @@ import org.apache.commons.logging.Log;
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.SchemaBuilder;
import org.apache.tajo.catalog.SortSpec;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.datum.Datum;
@@ -70,7 +70,7 @@ public class TestTupleSorter {
Column col4 = new Column("col4", Type.INT8);
Column col5 = new Column("col5", Type.INTERVAL);
- Schema schema = SchemaFactory.newV1(new Column[] {col0, col1, col2, col3, col4, col5});
+ Schema schema = SchemaBuilder.builder().addAll(new Column[] {col0, col1, col2, col3, col4, col5}).build();
long[] time1 = new long[ITERATION];
long[] time2 = new long[ITERATION];
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/physical/TestUnSafeTuple.java
----------------------------------------------------------------------
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 e2b865e..996c7d7 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,7 +20,7 @@ package org.apache.tajo.engine.planner.physical;
import org.apache.tajo.catalog.Column;
import org.apache.tajo.catalog.Schema;
-import org.apache.tajo.catalog.SchemaFactory;
+import org.apache.tajo.catalog.SchemaBuilder;
import org.apache.tajo.catalog.SchemaUtil;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.datum.Datum;
@@ -49,7 +49,7 @@ public class TestUnSafeTuple {
Column col3 = new Column("col3", Type.FLOAT4);
Column col4 = new Column("col4", Type.FLOAT8);
- schema = SchemaFactory.newV1(new Column[]{col0, col1, col2, col3, col4});
+ schema = SchemaBuilder.builder().addAll(new Column[]{col0, col1, col2, col3, col4}).build();
}
@Test
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestGroupByQuery.java
----------------------------------------------------------------------
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 b346d08..7f7b01f 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,7 +20,7 @@ package org.apache.tajo.engine.query;
import org.apache.tajo.*;
import org.apache.tajo.catalog.Schema;
-import org.apache.tajo.catalog.SchemaFactory;
+import org.apache.tajo.catalog.SchemaBuilder;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.conf.TajoConf.ConfVars;
import org.apache.tajo.storage.StorageConstants;
@@ -421,11 +421,12 @@ public class TestGroupByQuery extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.TEXT);
- schema.addColumn("code", Type.TEXT);
- schema.addColumn("qty", Type.INT4);
- schema.addColumn("qty2", Type.FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.TEXT)
+ .add("code", Type.TEXT)
+ .add("qty", Type.INT4)
+ .add("qty2", Type.FLOAT8)
+ .build();
String[] data = new String[]{"1|a|3|3.0", "1|a|4|4.0", "1|b|5|5.0", "2|a|1|6.0", "2|c|2|7.0", "2|d|3|8.0"};
TajoTestingCluster.createTable("table10", schema, tableOptions, data);
@@ -475,10 +476,11 @@ public class TestGroupByQuery extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", Type.TEXT);
- schema.addColumn("col2", Type.TEXT);
- schema.addColumn("col3", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", Type.TEXT)
+ .add("col2", Type.TEXT)
+ .add("col3", Type.TEXT)
+ .build();
String[] data = new String[]{
"a|b-1|\\N",
@@ -505,9 +507,10 @@ public class TestGroupByQuery extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", Type.TEXT);
- schema.addColumn("col2", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", Type.TEXT)
+ .add("col2", Type.TEXT)
+ .build();
String[] data = new String[]{
"a|\\N",
@@ -692,9 +695,10 @@ public class TestGroupByQuery extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", Type.TEXT);
- schema.addColumn("col2", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", Type.TEXT)
+ .add("col2", Type.TEXT)
+ .build();
List<String> data = new ArrayList<>();
int totalBytes = 0;
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestHBaseTable.java
----------------------------------------------------------------------
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 a179f88..bc4628f 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
@@ -23,11 +23,7 @@ import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.hbase.HColumnDescriptor;
-import org.apache.hadoop.hbase.HConstants;
-import org.apache.hadoop.hbase.HTableDescriptor;
-import org.apache.hadoop.hbase.MiniHBaseCluster;
-import org.apache.hadoop.hbase.TableName;
+import org.apache.hadoop.hbase.*;
import org.apache.hadoop.hbase.client.*;
import org.apache.hadoop.hbase.filter.Filter;
import org.apache.hadoop.hbase.filter.InclusiveStopFilter;
@@ -37,7 +33,7 @@ import org.apache.tajo.IntegrationTest;
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.SchemaBuilder;
import org.apache.tajo.catalog.TableDesc;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.conf.TajoConf;
@@ -822,9 +818,10 @@ public class TestHBaseTable extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.TEXT);
- schema.addColumn("name", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.TEXT)
+ .add("name", Type.TEXT)
+ .build();
List<String> datas = new ArrayList<>();
DecimalFormat df = new DecimalFormat("000");
for (int i = 99; i >= 0; i--) {
@@ -878,9 +875,10 @@ public class TestHBaseTable extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.TEXT);
- schema.addColumn("name", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.TEXT)
+ .add("name", Type.TEXT)
+ .build();
List<String> datas = new ArrayList<>();
for (int i = 99; i >= 0; i--) {
datas.add(i + "|value" + i);
@@ -936,9 +934,10 @@ public class TestHBaseTable extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.TEXT);
- schema.addColumn("name", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.TEXT)
+ .add("name", Type.TEXT)
+ .build();
List<String> datas = new ArrayList<>();
DecimalFormat df = new DecimalFormat("000");
for (int i = 99; i >= 0; i--) {
@@ -994,10 +993,11 @@ public class TestHBaseTable extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id1", Type.TEXT);
- schema.addColumn("id2", Type.TEXT);
- schema.addColumn("name", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("id1", Type.TEXT)
+ .add("id2", Type.TEXT)
+ .add("name", Type.TEXT)
+ .build();
DecimalFormat df = new DecimalFormat("000");
List<String> datas = new ArrayList<>();
for (int i = 99; i >= 0; i--) {
@@ -1051,9 +1051,10 @@ public class TestHBaseTable extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4);
- schema.addColumn("name", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("name", Type.TEXT)
+ .build();
List<String> datas = new ArrayList<>();
for (int i = 99; i >= 0; i--) {
datas.add(i + "|value" + i);
@@ -1107,11 +1108,12 @@ public class TestHBaseTable extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("rk", Type.TEXT);
- schema.addColumn("col2_key", Type.TEXT);
- schema.addColumn("col2_value", Type.TEXT);
- schema.addColumn("col3", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("rk", Type.TEXT)
+ .add("col2_key", Type.TEXT)
+ .add("col2_value", Type.TEXT)
+ .add("col3", Type.TEXT)
+ .build();
List<String> datas = new ArrayList<>();
for (int i = 20; i >= 0; i--) {
for (int j = 0; j < 3; j++) {
@@ -1196,9 +1198,10 @@ public class TestHBaseTable extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4);
- schema.addColumn("name", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("name", Type.TEXT)
+ .build();
List<String> datas = new ArrayList<>();
for (int i = 99; i >= 0; i--) {
datas.add(i + "|value" + i);
@@ -1268,9 +1271,10 @@ public class TestHBaseTable extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.TEXT);
- schema.addColumn("name", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.TEXT)
+ .add("name", Type.TEXT)
+ .build();
List<String> datas = new ArrayList<>();
DecimalFormat df = new DecimalFormat("000");
for (int i = 99; i >= 0; i--) {
@@ -1389,10 +1393,11 @@ public class TestHBaseTable extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.TEXT);
- schema.addColumn("name", Type.TEXT);
- schema.addColumn("comment", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.TEXT)
+ .add("name", Type.TEXT)
+ .add("comment", Type.TEXT)
+ .build();
List<String> datas = new ArrayList<>();
DecimalFormat df = new DecimalFormat("000");
for (int i = 99; i >= 0; i--) {
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestJoinQuery.java
----------------------------------------------------------------------
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 34f26a6..4aaca65 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
@@ -146,39 +146,45 @@ public class TestJoinQuery extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", TajoDataTypes.Type.INT4);
- schema.addColumn("name", TajoDataTypes.Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", TajoDataTypes.Type.INT4)
+ .add("name", TajoDataTypes.Type.TEXT)
+ .build();
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 = SchemaFactory.newV1();
- schema.addColumn("id", TajoDataTypes.Type.INT4);
- schema.addColumn("name", TajoDataTypes.Type.TEXT);
+ schema = SchemaBuilder.builder()
+ .add("id", TajoDataTypes.Type.INT4)
+ .add("name", TajoDataTypes.Type.TEXT)
+ .build();
data = new String[]{"1|table12-1", "2|table12-2"};
TajoTestingCluster.createTable("jointable12", schema, tableOptions, data, 2);
- schema = SchemaFactory.newV1();
- schema.addColumn("id", TajoDataTypes.Type.INT4);
- schema.addColumn("name", TajoDataTypes.Type.TEXT);
+ schema = SchemaBuilder.builder()
+ .add("id", TajoDataTypes.Type.INT4)
+ .add("name", TajoDataTypes.Type.TEXT)
+ .build();
data = new String[]{"2|table13-2", "3|table13-3"};
TajoTestingCluster.createTable("jointable13", schema, tableOptions, data);
- schema = SchemaFactory.newV1();
- schema.addColumn("id", TajoDataTypes.Type.INT4);
- schema.addColumn("name", TajoDataTypes.Type.TEXT);
+ schema = SchemaBuilder.builder()
+ .add("id", TajoDataTypes.Type.INT4)
+ .add("name", TajoDataTypes.Type.TEXT)
+ .build();
data = new String[]{"1|table14-1", "2|table14-2", "3|table14-3", "4|table14-4"};
TajoTestingCluster.createTable("jointable14", schema, tableOptions, data);
- schema = SchemaFactory.newV1();
- schema.addColumn("id", TajoDataTypes.Type.INT4);
- schema.addColumn("name", TajoDataTypes.Type.TEXT);
+ schema = SchemaBuilder.builder()
+ .add("id", TajoDataTypes.Type.INT4)
+ .add("name", TajoDataTypes.Type.TEXT)
+ .build();
data = new String[]{};
TajoTestingCluster.createTable("jointable15", schema, tableOptions, data);
- schema = SchemaFactory.newV1();
- schema.addColumn("id", TajoDataTypes.Type.INT4);
- schema.addColumn("name", TajoDataTypes.Type.TEXT);
+ schema = SchemaBuilder.builder()
+ .add("id", TajoDataTypes.Type.INT4)
+ .add("name", TajoDataTypes.Type.TEXT)
+ .build();
data = new String[]{"1000000|a", "1000001|b", "2|c", "3|d", "4|e"};
TajoTestingCluster.createTable("jointable1", schema, tableOptions, data, 1);
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestNullValues.java
----------------------------------------------------------------------
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 2bca027..1966332 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,7 +22,7 @@ import org.apache.tajo.IntegrationTest;
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.SchemaBuilder;
import org.apache.tajo.client.TajoClient;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.storage.StorageConstants;
@@ -59,10 +59,11 @@ public class TestNullValues {
@Test
public final void testIsNull() throws Exception {
String [] table = new String[] {"nulltable1"};
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", Type.INT4);
- schema.addColumn("col2", Type.TEXT);
- schema.addColumn("col3", Type.FLOAT4);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", Type.INT4)
+ .add("col2", Type.TEXT)
+ .add("col3", Type.FLOAT4)
+ .build();
Schema [] schemas = new Schema[] {schema};
String [] data = {
"1|filled|0.1",
@@ -84,9 +85,10 @@ public class TestNullValues {
@Test
public final void testIsNotNull() throws Exception {
String [] table = new String[] {"nulltable2"};
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", Type.INT4);
- schema.addColumn("col2", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", Type.INT4)
+ .add("col2", Type.TEXT)
+ .build();
Schema [] schemas = new Schema[] {schema};
String [] data = {
"1|filled|",
@@ -109,17 +111,18 @@ public class TestNullValues {
@Test
public final void testIsNotNull2() throws Exception {
String [] table = new String[] {"nulltable3"};
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", Type.INT8);
- schema.addColumn("col2", Type.INT8);
- schema.addColumn("col3", Type.INT8);
- schema.addColumn("col4", Type.INT8);
- schema.addColumn("col5", Type.INT8);
- schema.addColumn("col6", Type.INT8);
- schema.addColumn("col7", Type.INT8);
- schema.addColumn("col8", Type.INT8);
- schema.addColumn("col9", Type.INT8);
- schema.addColumn("col10", Type.INT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", Type.INT8)
+ .add("col2", Type.INT8)
+ .add("col3", Type.INT8)
+ .add("col4", Type.INT8)
+ .add("col5", Type.INT8)
+ .add("col6", Type.INT8)
+ .add("col7", Type.INT8)
+ .add("col8", Type.INT8)
+ .add("col9", Type.INT8)
+ .add("col10", Type.INT8)
+ .build();
Schema [] schemas = new Schema[] {schema};
String [] data = {
",,,,672287821,1301460,1,313895860387,126288907,1024",
@@ -139,17 +142,18 @@ public class TestNullValues {
@Test
public final void testIsNotNull3() throws Exception {
String [] table = new String[] {"nulltable4"};
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", Type.INT8);
- schema.addColumn("col2", Type.INT8);
- schema.addColumn("col3", Type.INT8);
- schema.addColumn("col4", Type.INT8);
- schema.addColumn("col5", Type.INT8);
- schema.addColumn("col6", Type.INT8);
- schema.addColumn("col7", Type.INT8);
- schema.addColumn("col8", Type.INT8);
- schema.addColumn("col9", Type.INT8);
- schema.addColumn("col10", Type.INT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", Type.INT8)
+ .add("col2", Type.INT8)
+ .add("col3", Type.INT8)
+ .add("col4", Type.INT8)
+ .add("col5", Type.INT8)
+ .add("col6", Type.INT8)
+ .add("col7", Type.INT8)
+ .add("col8", Type.INT8)
+ .add("col9", Type.INT8)
+ .add("col10", Type.INT8)
+ .build();
Schema [] schemas = new Schema[] {schema};
String [] data = {
"\\N,,,,672287821,",
@@ -252,11 +256,12 @@ public class TestNullValues {
private ResultSet runNullTableQuery(String tableName, String query, TajoClient client) throws Exception {
String [] table = new String[] {tableName};
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", Type.INT4);
- schema.addColumn("col2", Type.TEXT);
- schema.addColumn("col3", Type.FLOAT4);
- schema.addColumn("col4", Type.BOOLEAN);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", Type.INT4)
+ .add("col2", Type.TEXT)
+ .add("col3", Type.FLOAT4)
+ .add("col4", Type.BOOLEAN)
+ .build();
Schema [] schemas = new Schema[] {schema};
String [] data = {
"\\N|a|1.0|t",
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestSelectQuery.java
----------------------------------------------------------------------
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 f206e20..61b5551 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,7 +23,7 @@ import org.apache.tajo.*;
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.SchemaBuilder;
import org.apache.tajo.catalog.TableDesc;
import org.apache.tajo.client.QueryStatus;
import org.apache.tajo.common.TajoDataTypes.Type;
@@ -499,9 +499,10 @@ public class TestSelectQuery extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4);
- schema.addColumn("name", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("name", Type.TEXT)
+ .build();
String[] data = new String[]{ "1|table11-1", "2|table11-2", "3|table11-3", "4|table11-4", "5|table11-5" };
TajoTestingCluster.createTable("testNowInMultipleTasks".toLowerCase(), schema, tableOptions, data, 2);
[4/6] tajo git commit: TAJO-2108: Refactor Schema to be immutable.
Posted by hy...@apache.org.
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestBuiltinFunctions.java
----------------------------------------------------------------------
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 ae2de77..62cbd9e 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,7 +23,7 @@ import org.apache.tajo.QueryTestCaseBase;
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.catalog.SchemaBuilder;
import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.storage.StorageConstants;
import org.apache.tajo.util.KeyValueSet;
@@ -54,9 +54,10 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", TajoDataTypes.Type.INT4);
- schema.addColumn("value", TajoDataTypes.Type.INT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", TajoDataTypes.Type.INT4)
+ .add("value", TajoDataTypes.Type.INT8)
+ .build();
String[] data = new String[]{ "1|-111", "2|\\N", "3|-333" };
TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
@@ -80,8 +81,9 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("value", TajoDataTypes.Type.DATE);
+ Schema schema = SchemaBuilder.builder()
+ .add("value", TajoDataTypes.Type.DATE)
+ .build();
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);
@@ -104,8 +106,9 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("value", TajoDataTypes.Type.DATE);
+ Schema schema = SchemaBuilder.builder()
+ .add("value", TajoDataTypes.Type.DATE)
+ .build();
String[] data = new String[]{ "2014-01-02", "2014-12-01", "\\N", "\\N", "2000-03-01" };
TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
@@ -128,8 +131,9 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("value", TajoDataTypes.Type.TIME);
+ Schema schema = SchemaBuilder.builder()
+ .add("value", TajoDataTypes.Type.TIME)
+ .build();
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);
@@ -152,8 +156,9 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("value", TajoDataTypes.Type.TIME);
+ Schema schema = SchemaBuilder.builder()
+ .add("value", TajoDataTypes.Type.TIME)
+ .build();
String[] data = new String[]{ "11:11:11", "\\N", "\\N", "09:59:59", "12:13:14" };
TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
@@ -176,8 +181,9 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("value", TajoDataTypes.Type.TIMESTAMP);
+ Schema schema = SchemaBuilder.builder()
+ .add("value", TajoDataTypes.Type.TIMESTAMP)
+ .build();
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" };
TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
@@ -201,8 +207,7 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("value", TajoDataTypes.Type.TIMESTAMP);
+ Schema schema = SchemaBuilder.builder().add("value", TajoDataTypes.Type.TIMESTAMP).build();
String[] data = new String[]{ "1999-01-01 11:11:11", "2015-01-01 23:12:50", "\\N",
"\\N", "2002-11-21 12:13:14" };
TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
@@ -233,9 +238,10 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", TajoDataTypes.Type.INT4);
- schema.addColumn("value", TajoDataTypes.Type.INT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", TajoDataTypes.Type.INT4)
+ .add("value", TajoDataTypes.Type.INT8)
+ .build();
String[] data = new String[]{ "1|111", "2|\\N", "3|333" };
TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
@@ -266,9 +272,10 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", TajoDataTypes.Type.INT4);
- schema.addColumn("name", TajoDataTypes.Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", TajoDataTypes.Type.INT4)
+ .add("name", TajoDataTypes.Type.TEXT)
+ .build();
String[] data = new String[]{ "1|\\N", "2|\\N", "3|\\N" };
TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
@@ -299,9 +306,10 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", TajoDataTypes.Type.INT4);
- schema.addColumn("name", TajoDataTypes.Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", TajoDataTypes.Type.INT4)
+ .add("name", TajoDataTypes.Type.TEXT)
+ .build();
String[] data = new String[]{ "1|def", "2|\\N", "3|abc" };
TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
@@ -360,12 +368,13 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", TajoDataTypes.Type.INT4);
- schema.addColumn("value_int", TajoDataTypes.Type.INT4);
- schema.addColumn("value_long", TajoDataTypes.Type.INT8);
- schema.addColumn("value_float", TajoDataTypes.Type.FLOAT4);
- schema.addColumn("value_double", TajoDataTypes.Type.FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", TajoDataTypes.Type.INT4)
+ .add("value_int", TajoDataTypes.Type.INT4)
+ .add("value_long", TajoDataTypes.Type.INT8)
+ .add("value_float", TajoDataTypes.Type.FLOAT4)
+ .add("value_double", TajoDataTypes.Type.FLOAT8)
+ .build();
String[] data = new String[]{ "1|\\N|-111|1.2|-50.5", "2|1|\\N|\\N|52.5", "3|2|-333|2.8|\\N" };
TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
@@ -389,12 +398,13 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", TajoDataTypes.Type.INT4);
- schema.addColumn("value_int", TajoDataTypes.Type.INT4);
- schema.addColumn("value_long", TajoDataTypes.Type.INT8);
- schema.addColumn("value_float", TajoDataTypes.Type.FLOAT4);
- schema.addColumn("value_double", TajoDataTypes.Type.FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", TajoDataTypes.Type.INT4)
+ .add("value_int", TajoDataTypes.Type.INT4)
+ .add("value_long", TajoDataTypes.Type.INT8)
+ .add("value_float", TajoDataTypes.Type.FLOAT4)
+ .add("value_double", TajoDataTypes.Type.FLOAT8)
+ .build();
String[] data = new String[]{ "1|\\N|\\N|\\N|\\N", "2|\\N|\\N|\\N|\\N", "3|\\N|\\N|\\N|\\N" };
TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
@@ -418,12 +428,13 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", TajoDataTypes.Type.INT4);
- schema.addColumn("value_int", TajoDataTypes.Type.INT4);
- schema.addColumn("value_long", TajoDataTypes.Type.INT8);
- schema.addColumn("value_float", TajoDataTypes.Type.FLOAT4);
- schema.addColumn("value_double", TajoDataTypes.Type.FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", TajoDataTypes.Type.INT4)
+ .add("value_int", TajoDataTypes.Type.INT4)
+ .add("value_long", TajoDataTypes.Type.INT8)
+ .add("value_float", TajoDataTypes.Type.FLOAT4)
+ .add("value_double", TajoDataTypes.Type.FLOAT8)
+ .build();
String[] data = new String[]{ "1|\\N|-111|1.2|-50.5", "2|1|\\N|\\N|52.5", "3|2|-333|2.8|\\N" };
TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
@@ -447,12 +458,13 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", TajoDataTypes.Type.INT4);
- schema.addColumn("value_int", TajoDataTypes.Type.INT4);
- schema.addColumn("value_long", TajoDataTypes.Type.INT8);
- schema.addColumn("value_float", TajoDataTypes.Type.FLOAT4);
- schema.addColumn("value_double", TajoDataTypes.Type.FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", TajoDataTypes.Type.INT4)
+ .add("value_int", TajoDataTypes.Type.INT4)
+ .add("value_long", TajoDataTypes.Type.INT8)
+ .add("value_float", TajoDataTypes.Type.FLOAT4)
+ .add("value_double", TajoDataTypes.Type.FLOAT8)
+ .build();
String[] data = new String[]{ "1|\\N|\\N|\\N|\\N", "2|\\N|\\N|\\N|\\N", "3|\\N|\\N|\\N|\\N" };
TajoTestingCluster.createTable("testbuiltin11", schema, tableOptions, data, 1);
@@ -476,12 +488,13 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", TajoDataTypes.Type.INT4);
- schema.addColumn("value_int", TajoDataTypes.Type.INT4);
- schema.addColumn("value_long", TajoDataTypes.Type.INT8);
- schema.addColumn("value_float", TajoDataTypes.Type.FLOAT4);
- schema.addColumn("value_double", TajoDataTypes.Type.FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", TajoDataTypes.Type.INT4)
+ .add("value_int", TajoDataTypes.Type.INT4)
+ .add("value_long", TajoDataTypes.Type.INT8)
+ .add("value_float", TajoDataTypes.Type.FLOAT4)
+ .add("value_double", TajoDataTypes.Type.FLOAT8)
+ .build();
String[] data = new String[]{
"1|\\N|-111|1.2|-50.5",
"2|1|\\N|\\N|52.5",
@@ -508,12 +521,13 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", TajoDataTypes.Type.INT4);
- schema.addColumn("value_int", TajoDataTypes.Type.INT4);
- schema.addColumn("value_long", TajoDataTypes.Type.INT8);
- schema.addColumn("value_float", TajoDataTypes.Type.FLOAT4);
- schema.addColumn("value_double", TajoDataTypes.Type.FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", TajoDataTypes.Type.INT4)
+ .add("value_int", TajoDataTypes.Type.INT4)
+ .add("value_long", TajoDataTypes.Type.INT8)
+ .add("value_float", TajoDataTypes.Type.FLOAT4)
+ .add("value_double", TajoDataTypes.Type.FLOAT8)
+ .build();
String[] data = new String[]{
"1|\\N|\\N|\\N|-50.5",
"2|1|\\N|\\N|\\N",
@@ -540,12 +554,13 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", TajoDataTypes.Type.INT4);
- schema.addColumn("value_int", TajoDataTypes.Type.INT4);
- schema.addColumn("value_long", TajoDataTypes.Type.INT8);
- schema.addColumn("value_float", TajoDataTypes.Type.FLOAT4);
- schema.addColumn("value_double", TajoDataTypes.Type.FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", TajoDataTypes.Type.INT4)
+ .add("value_int", TajoDataTypes.Type.INT4)
+ .add("value_long", TajoDataTypes.Type.INT8)
+ .add("value_float", TajoDataTypes.Type.FLOAT4)
+ .add("value_double", TajoDataTypes.Type.FLOAT8)
+ .build();
String[] data = new String[]{
"1|\\N|-111|1.2|-50.5",
"2|1|\\N|\\N|52.5",
@@ -572,12 +587,13 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", TajoDataTypes.Type.INT4);
- schema.addColumn("value_int", TajoDataTypes.Type.INT4);
- schema.addColumn("value_long", TajoDataTypes.Type.INT8);
- schema.addColumn("value_float", TajoDataTypes.Type.FLOAT4);
- schema.addColumn("value_double", TajoDataTypes.Type.FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", TajoDataTypes.Type.INT4)
+ .add("value_int", TajoDataTypes.Type.INT4)
+ .add("value_long", TajoDataTypes.Type.INT8)
+ .add("value_float", TajoDataTypes.Type.FLOAT4)
+ .add("value_double", TajoDataTypes.Type.FLOAT8)
+ .build();
String[] data = new String[]{
"1|\\N|\\N|\\N|-50.5",
"2|1|\\N|\\N|\\N",
@@ -604,12 +620,13 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", TajoDataTypes.Type.INT4);
- schema.addColumn("value_int", TajoDataTypes.Type.INT4);
- schema.addColumn("value_long", TajoDataTypes.Type.INT8);
- schema.addColumn("value_float", TajoDataTypes.Type.FLOAT4);
- schema.addColumn("value_double", TajoDataTypes.Type.FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", TajoDataTypes.Type.INT4)
+ .add("value_int", TajoDataTypes.Type.INT4)
+ .add("value_long", TajoDataTypes.Type.INT8)
+ .add("value_float", TajoDataTypes.Type.FLOAT4)
+ .add("value_double", TajoDataTypes.Type.FLOAT8)
+ .build();
String[] data = new String[]{
"1|\\N|-111|1.2|-50.5",
"2|1|\\N|\\N|52.5",
@@ -635,12 +652,13 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", TajoDataTypes.Type.INT4);
- schema.addColumn("value_int", TajoDataTypes.Type.INT4);
- schema.addColumn("value_long", TajoDataTypes.Type.INT8);
- schema.addColumn("value_float", TajoDataTypes.Type.FLOAT4);
- schema.addColumn("value_double", TajoDataTypes.Type.FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", TajoDataTypes.Type.INT4)
+ .add("value_int", TajoDataTypes.Type.INT4)
+ .add("value_long", TajoDataTypes.Type.INT8)
+ .add("value_float", TajoDataTypes.Type.FLOAT4)
+ .add("value_double", TajoDataTypes.Type.FLOAT8)
+ .build();
String[] data = new String[]{
"1|\\N|\\N|\\N|-50.5",
"2|1|\\N|\\N|\\N",
@@ -666,12 +684,13 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", TajoDataTypes.Type.INT4);
- schema.addColumn("value_int", TajoDataTypes.Type.INT4);
- schema.addColumn("value_long", TajoDataTypes.Type.INT8);
- schema.addColumn("value_float", TajoDataTypes.Type.FLOAT4);
- schema.addColumn("value_double", TajoDataTypes.Type.FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", TajoDataTypes.Type.INT4)
+ .add("value_int", TajoDataTypes.Type.INT4)
+ .add("value_long", TajoDataTypes.Type.INT8)
+ .add("value_float", TajoDataTypes.Type.FLOAT4)
+ .add("value_double", TajoDataTypes.Type.FLOAT8)
+ .build();
String[] data = new String[]{
"1|\\N|-111|1.2|-50.5",
"2|1|\\N|\\N|52.5",
@@ -697,12 +716,13 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", TajoDataTypes.Type.INT4);
- schema.addColumn("value_int", TajoDataTypes.Type.INT4);
- schema.addColumn("value_long", TajoDataTypes.Type.INT8);
- schema.addColumn("value_float", TajoDataTypes.Type.FLOAT4);
- schema.addColumn("value_double", TajoDataTypes.Type.FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", TajoDataTypes.Type.INT4)
+ .add("value_int", TajoDataTypes.Type.INT4)
+ .add("value_long", TajoDataTypes.Type.INT8)
+ .add("value_float", TajoDataTypes.Type.FLOAT4)
+ .add("value_double", TajoDataTypes.Type.FLOAT8)
+ .build();
String[] data = new String[]{
"1|\\N|\\N|\\N|-50.5",
"2|1|\\N|\\N|\\N",
@@ -757,14 +777,16 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
KeyValueSet tableOptions = new KeyValueSet();
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
-
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", TajoDataTypes.Type.INT4);
+
+ Schema schema = SchemaBuilder.builder()
+ .add("id", TajoDataTypes.Type.INT4)
+ .build();
String[] data = new String[] {"1", "3", "2", "4"};
TajoTestingCluster.createTable("rank_table1", schema, tableOptions, data, 1);
- schema = SchemaFactory.newV1();
- schema.addColumn("refid", TajoDataTypes.Type.INT4);
- schema.addColumn("value", TajoDataTypes.Type.TEXT);
+ schema = SchemaBuilder.builder()
+ .add("refid", TajoDataTypes.Type.INT4)
+ .add("value", TajoDataTypes.Type.TEXT)
+ .build();
data = new String[] {"1|efgh", "2|abcd", "4|erjk", "8|dfef"};
TajoTestingCluster.createTable("rank_table2", schema, tableOptions, data, 1);
ResultSet res = null;
@@ -796,12 +818,13 @@ public class TestBuiltinFunctions extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", TajoDataTypes.Type.INT4);
- schema.addColumn("value_int", TajoDataTypes.Type.INT4);
- schema.addColumn("value_long", TajoDataTypes.Type.INT8);
- schema.addColumn("value_float", TajoDataTypes.Type.FLOAT4);
- schema.addColumn("value_double", TajoDataTypes.Type.FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", TajoDataTypes.Type.INT4)
+ .add("value_int", TajoDataTypes.Type.INT4)
+ .add("value_long", TajoDataTypes.Type.INT8)
+ .add("value_float", TajoDataTypes.Type.FLOAT4)
+ .add("value_double", TajoDataTypes.Type.FLOAT8)
+ .build();
String[] data = new String[]{
"1|\\N|-111|1.2|-50.5",
"2|1|\\N|\\N|52.5",
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestConditionalExpressions.java
----------------------------------------------------------------------
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 9a072ef..20045ad 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,12 +20,12 @@ package org.apache.tajo.engine.function;
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.catalog.SchemaBuilder;
import org.apache.tajo.common.TajoDataTypes;
+import org.apache.tajo.datum.NullDatum;
import org.apache.tajo.engine.eval.ExprTestBase;
import org.apache.tajo.exception.TajoException;
+import org.apache.tajo.exception.UndefinedFunctionException;
import org.junit.Test;
import static org.junit.Assert.fail;
@@ -33,16 +33,17 @@ import static org.junit.Assert.fail;
public class TestConditionalExpressions extends ExprTestBase {
@Test
public void testCaseWhens1() throws TajoException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TajoDataTypes.Type.INT1);
- schema.addColumn("col2", TajoDataTypes.Type.INT2);
- schema.addColumn("col3", TajoDataTypes.Type.INT4);
- schema.addColumn("col4", TajoDataTypes.Type.INT8);
- schema.addColumn("col5", TajoDataTypes.Type.FLOAT4);
- schema.addColumn("col6", TajoDataTypes.Type.FLOAT8);
- schema.addColumn("col7", TajoDataTypes.Type.TEXT);
- schema.addColumn("col8", CatalogUtil.newDataType(TajoDataTypes.Type.CHAR, "", 3));
- schema.addColumn("col9", TajoDataTypes.Type.INT4);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TajoDataTypes.Type.INT1)
+ .add("col2", TajoDataTypes.Type.INT2)
+ .add("col3", TajoDataTypes.Type.INT4)
+ .add("col4", TajoDataTypes.Type.INT8)
+ .add("col5", TajoDataTypes.Type.FLOAT4)
+ .add("col6", TajoDataTypes.Type.FLOAT8)
+ .add("col7", TajoDataTypes.Type.TEXT)
+ .add("col8", CatalogUtil.newDataType(TajoDataTypes.Type.CHAR, "", 3))
+ .add("col9", TajoDataTypes.Type.INT4)
+ .build();
testEval(schema, "table1", "1,2,3,4,5.0,6.0,text,abc,",
"select case when col1 between 1 and 3 then 10 else 100 end from table1;",
@@ -60,9 +61,10 @@ public class TestConditionalExpressions extends ExprTestBase {
@Test
public void testCaseWhensWithNullReturn() throws TajoException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TajoDataTypes.Type.TEXT);
- schema.addColumn("col2", TajoDataTypes.Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TajoDataTypes.Type.TEXT)
+ .add("col2", TajoDataTypes.Type.TEXT)
+ .build();
testEval(schema, "table1", "str1,str2",
"SELECT CASE WHEN col1 IS NOT NULL THEN col2 ELSE NULL END FROM table1",
@@ -74,10 +76,11 @@ public class TestConditionalExpressions extends ExprTestBase {
@Test
public void testCaseWhensWithCommonExpression() throws TajoException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TajoDataTypes.Type.INT4);
- schema.addColumn("col2", TajoDataTypes.Type.INT4);
- schema.addColumn("col3", TajoDataTypes.Type.INT4);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TajoDataTypes.Type.INT4)
+ .add("col2", TajoDataTypes.Type.INT4)
+ .add("col3", TajoDataTypes.Type.INT4)
+ .build();
testEval(schema, "table1", "1,2,3",
"SELECT CASE WHEN col1 = 1 THEN 1 WHEN col1 = 2 THEN 2 ELSE 3 END FROM table1",
@@ -112,10 +115,11 @@ public class TestConditionalExpressions extends ExprTestBase {
@Test
public void testCaseWhensWithCommonExpressionAndNull() throws TajoException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TajoDataTypes.Type.INT4);
- schema.addColumn("col2", TajoDataTypes.Type.INT4);
- schema.addColumn("col3", TajoDataTypes.Type.INT4);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TajoDataTypes.Type.INT4)
+ .add("col2", TajoDataTypes.Type.INT4)
+ .add("col3", TajoDataTypes.Type.INT4)
+ .build();
testEval(schema, "table1", "1,2,3",
"SELECT CASE col1 WHEN 1 THEN NULL WHEN 2 THEN 2 ELSE 3 END FROM table1",
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestDateTimeFunctions.java
----------------------------------------------------------------------
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 36a4a60..3682006 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,7 +21,7 @@ package org.apache.tajo.engine.function;
import org.apache.tajo.SessionVars;
import org.apache.tajo.catalog.Schema;
-import org.apache.tajo.catalog.SchemaFactory;
+import org.apache.tajo.catalog.SchemaBuilder;
import org.apache.tajo.datum.DatumFactory;
import org.apache.tajo.datum.TimestampDatum;
import org.apache.tajo.engine.eval.ExprTestBase;
@@ -120,8 +120,9 @@ public class TestDateTimeFunctions extends ExprTestBase {
TimeZone GMT = TimeZone.getTimeZone("GMT");
TimeZone PST = TimeZone.getTimeZone("PST");
- Schema schema2 = SchemaFactory.newV1();
- schema2.addColumn("col1", TIMESTAMP);
+ Schema schema2 = SchemaBuilder.builder()
+ .add("col1", TIMESTAMP)
+ .build();
testEval(schema2, "table1",
"1970-01-17 10:09:37",
"select extract(year from col1), extract(month from col1), extract(day from col1) from table1;",
@@ -136,8 +137,9 @@ public class TestDateTimeFunctions extends ExprTestBase {
new String[]{"1970.0", "1.0", "17.0"});
// Currently TIME type can be loaded with INT8 type.
- Schema schema3 = SchemaFactory.newV1();
- schema3.addColumn("col1", TIME);
+ Schema schema3 = SchemaBuilder.builder()
+ .add("col1", TIME)
+ .build();
testEval(schema3, "table1",
"10:09:37.5",
"select extract(hour from col1), extract(minute from col1), extract(second from col1) from table1;",
@@ -151,8 +153,9 @@ public class TestDateTimeFunctions extends ExprTestBase {
"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 = SchemaFactory.newV1();
- schema4.addColumn("col1", DATE);
+ Schema schema4 = SchemaBuilder.builder()
+ .add("col1", DATE)
+ .build();
testEval(schema4, "table1",
"1970-01-17",
"select extract(year from col1), extract(month from col1), extract(day from col1) from table1;",
@@ -236,8 +239,8 @@ public class TestDateTimeFunctions extends ExprTestBase {
TimeZone GMT = TimeZone.getTimeZone("GMT");
TimeZone PST = TimeZone.getTimeZone("PST");
- Schema schema2 = SchemaFactory.newV1();
- schema2.addColumn("col1", TIMESTAMP);
+ Schema schema2 = SchemaBuilder.builder()
+ .add("col1", TIMESTAMP).build();
testEval(schema2, "table1",
"1970-01-17 22:09:37",
@@ -252,8 +255,9 @@ public class TestDateTimeFunctions extends ExprTestBase {
"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 = SchemaFactory.newV1();
- schema3.addColumn("col1", TIME);
+ Schema schema3 = SchemaBuilder.builder()
+ .add("col1", TIME)
+ .build();
testEval(schema3, "table1", "10:09:37.5",
"select date_part('hour', col1), date_part('minute', col1), date_part('second', col1) from table1;",
new String[]{"10.0", "9.0", "37.5"});
@@ -264,8 +268,9 @@ public class TestDateTimeFunctions extends ExprTestBase {
"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 = SchemaFactory.newV1();
- schema4.addColumn("col1", DATE);
+ Schema schema4 = SchemaBuilder.builder()
+ .add("col1", DATE)
+ .build();
testEval(schema4, "table1",
"1970-01-17",
"select date_part('year', col1), date_part('month', col1), date_part('day', col1) from table1;",
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestMathFunctions.java
----------------------------------------------------------------------
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 1c07388..40d51ed 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
@@ -6,9 +6,9 @@
* 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
- *
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
* 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.
@@ -19,7 +19,7 @@
package org.apache.tajo.engine.function;
import org.apache.tajo.catalog.Schema;
-import org.apache.tajo.catalog.SchemaFactory;
+import org.apache.tajo.catalog.SchemaBuilder;
import org.apache.tajo.datum.NullDatum;
import org.apache.tajo.engine.eval.ExprTestBase;
import org.apache.tajo.exception.TajoException;
@@ -38,23 +38,25 @@ public class TestMathFunctions extends ExprTestBase {
testSimpleEval("select round(-5.5) as col1 ", new String[]{"-6"});
testSimpleEval("select round(-5.6) as col1 ", new String[]{"-6"});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", FLOAT8);
- schema.addColumn("col2", FLOAT8);
- schema.addColumn("col3", FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", FLOAT8)
+ .add("col2", FLOAT8)
+ .add("col3", FLOAT8)
+ .build();
testEval(schema, "table1", "1.0, 0.2, 0.4", "select round(col1 + col2 + col3) from table1",
new String[]{"2"});
- Schema schema2 = SchemaFactory.newV1();
- schema2.addColumn("col1", INT4);
- schema2.addColumn("col2", INT8);
- schema2.addColumn("col3", FLOAT4);
- schema2.addColumn("col4", FLOAT8);
+ Schema schema2 = SchemaBuilder.builder()
+ .add("col1", INT4)
+ .add("col2", INT8)
+ .add("col3", FLOAT4)
+ .add("col4", FLOAT8)
+ .build();
testEval(schema2, "table1", "9,9,9.5,9.5",
"select round(col1), round (col2), round(col3), round(col4) from table1",
- new String [] {"9", "9", "10", "10"});
+ new String[]{"9", "9", "10", "10"});
}
@Test
@@ -66,10 +68,11 @@ public class TestMathFunctions extends ExprTestBase {
testSimpleEval("select floor(-5.1) as col1 ", new String[]{"-6"});
testSimpleEval("select floor(-5.6) as col1 ", new String[]{"-6"});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", FLOAT8);
- schema.addColumn("col2", FLOAT8);
- schema.addColumn("col3", FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", FLOAT8)
+ .add("col2", FLOAT8)
+ .add("col3", FLOAT8)
+ .build();
testEval(schema, "table1", "1.0, 0.2, 0.4", "select floor(col1 + col2 + col3) from table1",
new String[]{"1"});
@@ -85,10 +88,11 @@ public class TestMathFunctions extends ExprTestBase {
testSimpleEval("select ceil(-5.1) as col1 ", new String[]{"-5"});
testSimpleEval("select ceil(-5.6) as col1 ", new String[]{"-5"});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", FLOAT8);
- schema.addColumn("col2", FLOAT8);
- schema.addColumn("col3", FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", FLOAT8)
+ .add("col2", FLOAT8)
+ .add("col3", FLOAT8)
+ .build();
testEval(schema, "table1", "1.0, 0.2, 0.1", "select ceil(col1 + col2 + col3) from table1",
new String[]{"2"});
@@ -104,10 +108,11 @@ public class TestMathFunctions extends ExprTestBase {
testSimpleEval("select ceiling(-5.1) as col1 ", new String[]{"-5"});
testSimpleEval("select ceiling(-5.6) as col1 ", new String[]{"-5"});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", FLOAT8);
- schema.addColumn("col2", FLOAT8);
- schema.addColumn("col3", FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", FLOAT8)
+ .add("col2", FLOAT8)
+ .add("col3", FLOAT8)
+ .build();
testEval(schema, "table1", "1.0, 0.2, 0.1", "select ceiling(col1 + col2 + col3) from table1",
new String[]{"2"});
@@ -120,10 +125,11 @@ public class TestMathFunctions extends ExprTestBase {
testSimpleEval("select sin(1.2) as col1 ", new String[]{"0.9320390859672263"});
testSimpleEval("select sin(-0.5) as col1 ", new String[]{"-0.479425538604203"});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", FLOAT8);
- schema.addColumn("col2", FLOAT8);
- schema.addColumn("col3", FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", FLOAT8)
+ .add("col2", FLOAT8)
+ .add("col3", FLOAT8)
+ .build();
testEval(schema, "table1", "1.0, 0.2, 0.1", "select sin(col1 + col2 + col3) from table1",
new String[]{"0.963558185417193"});
@@ -137,10 +143,11 @@ public class TestMathFunctions extends ExprTestBase {
testSimpleEval("select cos(1.2) as col1 ", new String[]{"0.3623577544766736"});
testSimpleEval("select cos(-0.5) as col1 ", new String[]{"0.8775825618903728"});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", FLOAT8);
- schema.addColumn("col2", FLOAT8);
- schema.addColumn("col3", FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", FLOAT8)
+ .add("col2", FLOAT8)
+ .add("col3", FLOAT8)
+ .build();
testEval(schema, "table1", "1.0, 0.2, 0.1", "select cos(col1 + col2 + col3) from table1",
new String[]{"0.26749882862458735"});
@@ -153,10 +160,11 @@ public class TestMathFunctions extends ExprTestBase {
testSimpleEval("select tan(0.8) as col1 ", new String[]{"1.0296385570503641"});
testSimpleEval("select tan(-0.5) as col1 ", new String[]{"-0.5463024898437905"});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", FLOAT8);
- schema.addColumn("col2", FLOAT8);
- schema.addColumn("col3", FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", FLOAT8)
+ .add("col2", FLOAT8)
+ .add("col3", FLOAT8)
+ .build();
testEval(schema, "table1", "1.0, 0.2, 0.1", "select tan(col1 - col2 - col3) from table1",
new String[]{"0.8422883804630795"});
@@ -169,10 +177,11 @@ public class TestMathFunctions extends ExprTestBase {
testSimpleEval("select asin(0.8) as col1 ", new String[]{"0.9272952180016123"});
testSimpleEval("select asin(-0.5) as col1 ", new String[]{"-0.5235987755982989"});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", FLOAT8);
- schema.addColumn("col2", FLOAT8);
- schema.addColumn("col3", FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", FLOAT8)
+ .add("col2", FLOAT8)
+ .add("col3", FLOAT8)
+ .build();
testEval(schema, "table1", "1.0, 0.2, 0.1", "select asin(col1 - col2 - col3) from table1",
new String[]{"0.7753974966107532"});
@@ -185,10 +194,11 @@ public class TestMathFunctions extends ExprTestBase {
testSimpleEval("select acos(0.8) as col1 ", new String[]{"0.6435011087932843"});
testSimpleEval("select acos(-0.5) as col1 ", new String[]{"2.0943951023931957"});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", FLOAT8);
- schema.addColumn("col2", FLOAT8);
- schema.addColumn("col3", FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", FLOAT8)
+ .add("col2", FLOAT8)
+ .add("col3", FLOAT8)
+ .build();
testEval(schema, "table1", "1.0, 0.2, 0.1", "select acos(col1 - col2 - col3) from table1",
new String[]{"0.7953988301841435"});
@@ -201,10 +211,11 @@ public class TestMathFunctions extends ExprTestBase {
testSimpleEval("select atan(1.2) as col1 ", new String[]{"0.8760580505981934"});
testSimpleEval("select atan(-0.5) as col1 ", new String[]{"-0.4636476090008061"});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", FLOAT8);
- schema.addColumn("col2", FLOAT8);
- schema.addColumn("col3", FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", FLOAT8)
+ .add("col2", FLOAT8)
+ .add("col3", FLOAT8)
+ .build();
testEval(schema, "table1", "1.0, 0.2, 0.1", "select atan(col1 + col2 + col3) from table1",
new String[]{"0.9151007005533605"});
@@ -218,10 +229,11 @@ public class TestMathFunctions extends ExprTestBase {
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 = SchemaFactory.newV1();
- schema.addColumn("col1", FLOAT8);
- schema.addColumn("col2", FLOAT8);
- schema.addColumn("col3", FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", FLOAT8)
+ .add("col2", FLOAT8)
+ .add("col3", FLOAT8)
+ .build();
testEval(schema, "table1", "1.0, 0.2, 0.1", "select atan2(col1 + col2, col3) from table1",
new String[]{"1.4876550949064553"});
@@ -234,12 +246,13 @@ public class TestMathFunctions extends ExprTestBase {
testSimpleEval("select mod(200000000000,2) as col1 ", new String[]{"0"});
testSimpleEval("select mod(2,200000000000) as col1 ", new String[]{"2"});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", INT8);
- schema.addColumn("col2", INT8);
- schema.addColumn("col3", INT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", INT8)
+ .add("col2", INT8)
+ .add("col3", INT8)
+ .build();
- testEval(schema, "table1", "9,2,3", "select mod(col1 + col2, col3) from table1",
+ testEval(schema, "table1", "9,2,3", "select mod(col1 + col2, col3) from table1",
new String[]{"2"});
}
@@ -250,12 +263,13 @@ public class TestMathFunctions extends ExprTestBase {
testSimpleEval("select div(200000000000,2) as col1 ", new String[]{"100000000000"});
testSimpleEval("select div(2,200000000000) as col1 ", new String[]{"0"});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", INT8);
- schema.addColumn("col2", INT8);
- schema.addColumn("col3", INT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", INT8)
+ .add("col2", INT8)
+ .add("col3", INT8)
+ .build();
- testEval(schema, "table1", "9,2,3", "select div(col1 + col2, col3) from table1",
+ testEval(schema, "table1", "9,2,3", "select div(col1 + col2, col3) from table1",
new String[]{"3"});
}
@@ -266,19 +280,21 @@ public class TestMathFunctions extends ExprTestBase {
testSimpleEval("select sign(0.3) as col1 ", new String[]{"1.0"});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", FLOAT4);
- schema.addColumn("col2", FLOAT4);
- schema.addColumn("col3", FLOAT4);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", FLOAT4)
+ .add("col2", FLOAT4)
+ .add("col3", FLOAT4)
+ .build();
testEval(schema, "table1", "1.0, 0.2, 0.1", "select sign(col1 + col2 + col3) from table1",
new String[]{"1.0"});
- Schema schema2 = SchemaFactory.newV1();
- schema2.addColumn("col1", FLOAT8);
- schema2.addColumn("col2", FLOAT8);
- schema2.addColumn("col3", FLOAT8);
+ Schema schema2 = SchemaBuilder.builder()
+ .add("col1", FLOAT8)
+ .add("col2", FLOAT8)
+ .add("col3", FLOAT8)
+ .build();
testEval(schema2, "table1", "1.0, 0.2, 0.1", "select sign(col1 + col2 + col3) from table1",
new String[]{"1.0"});
@@ -291,19 +307,21 @@ public class TestMathFunctions extends ExprTestBase {
testSimpleEval("select sqrt(8.0) as col1 ", new String[]{"2.8284271247461903"});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", FLOAT4);
- schema.addColumn("col2", FLOAT4);
- schema.addColumn("col3", FLOAT4);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", FLOAT4)
+ .add("col2", FLOAT4)
+ .add("col3", FLOAT4)
+ .build();
testEval(schema, "table1", "1.0, 0.2, 0.1", "select sqrt(col1 + col2 + col3) from table1",
new String[]{"1.1401754564651765"});
- Schema schema2 = SchemaFactory.newV1();
- schema2.addColumn("col1", FLOAT8);
- schema2.addColumn("col2", FLOAT8);
- schema2.addColumn("col3", FLOAT8);
+ Schema schema2 = SchemaBuilder.builder()
+ .add("col1", FLOAT8)
+ .add("col2", FLOAT8)
+ .add("col3", FLOAT8)
+ .build();
testEval(schema2, "table1", "1.0, 0.2, 0.1", "select sqrt(col1 + col2 + col3) from table1",
new String[]{"1.140175425099138"});
@@ -316,14 +334,16 @@ public class TestMathFunctions extends ExprTestBase {
testSimpleEval("select exp(1.2) as col1 ", new String[]{String.valueOf(Math.exp(1.2d))});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", FLOAT4);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", FLOAT4)
+ .build();
testEval(schema, "table1", "1.123", "select exp(col1) from table1",
new String[]{String.valueOf(Math.exp(1.123f))});
- Schema schema2 = SchemaFactory.newV1();
- schema2.addColumn("col1", FLOAT8);
+ Schema schema2 = SchemaBuilder.builder()
+ .add("col1", FLOAT8)
+ .build();
testEval(schema2, "table1", "1.123", "select exp(col1) from table1",
new String[]{String.valueOf(Math.exp(1.123d))});
@@ -339,14 +359,16 @@ public class TestMathFunctions extends ExprTestBase {
testSimpleEval("select abs(2.0) as col1 ", new String[]{"2.0"});
testSimpleEval("select abs(-2.0) as col1 ", new String[]{"2.0"});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", FLOAT4);
- schema.addColumn("col2", FLOAT4);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", FLOAT4)
+ .add("col2", FLOAT4)
+ .build();
testEval(schema, "table1", "0.39,-0.39", "select abs(col1), abs(col2) from table1", new String[]{"0.39", "0.39"});
- Schema schema2 = SchemaFactory.newV1();
- schema2.addColumn("col1", FLOAT8);
- schema2.addColumn("col2", FLOAT8);
+ Schema schema2 = SchemaBuilder.builder()
+ .add("col1", FLOAT8)
+ .add("col2", FLOAT8)
+ .build();
testEval(schema2, "table1", "0.033312347,-0.033312347", "select abs(col1), abs(col2) from table1",
new String[]{"0.033312347", "0.033312347"});
}
@@ -358,17 +380,19 @@ public class TestMathFunctions extends ExprTestBase {
testSimpleEval("select cbrt(8.0) as col1 ", new String[]{"2.0"});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", FLOAT4);
- schema.addColumn("col2", FLOAT4);
- schema.addColumn("col3", FLOAT4);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", FLOAT4)
+ .add("col2", FLOAT4)
+ .add("col3", FLOAT4)
+ .build();
testEval(schema, "table1", "1.0, 0.2, 0.1", "select cbrt(col1 + col2 + col3) from table1",
new String[]{"1.0913929030771317"});
- Schema schema2 = SchemaFactory.newV1();
- schema2.addColumn("col1", FLOAT8);
- schema2.addColumn("col2", FLOAT8);
- schema2.addColumn("col3", FLOAT8);
+ Schema schema2 = SchemaBuilder.builder()
+ .add("col1", FLOAT8)
+ .add("col2", FLOAT8)
+ .add("col3", FLOAT8)
+ .build();
testEval(schema2, "table1", "1.0, 0.2, 0.1", "select cbrt(col1 + col2 + col3) from table1",
new String[]{"1.091392883061106"});
}
@@ -380,14 +404,15 @@ public class TestMathFunctions extends ExprTestBase {
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 = SchemaFactory.newV1();
- schema.addColumn("col1", FLOAT4);
- schema.addColumn("col2", FLOAT8);
- schema.addColumn("col3", FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", FLOAT4)
+ .add("col2", FLOAT8)
+ .add("col3", FLOAT8)
+ .build();
testEval(schema, "table1", "0.8,2.7,-0.8", "select degrees(col1), degrees(col2), degrees(col3) from table1",
new String[]{
- String.valueOf(Math.toDegrees((float)0.8)),
+ String.valueOf(Math.toDegrees((float) 0.8)),
String.valueOf(Math.toDegrees(2.7)),
String.valueOf(Math.toDegrees(-0.8))
});
@@ -401,11 +426,12 @@ public class TestMathFunctions extends ExprTestBase {
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 = SchemaFactory.newV1();
- schema.addColumn("col1", FLOAT4);
- schema.addColumn("col2", FLOAT8);
- schema.addColumn("col3", INT4);
- schema.addColumn("col4", INT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", FLOAT4)
+ .add("col2", FLOAT8)
+ .add("col3", INT4)
+ .add("col4", INT8)
+ .build();
testEval(schema, "table1", "0.4,2.7,3,2", "select pow(col1, col2), pow(col3, col4) from table1",
new String[]{
@@ -421,14 +447,15 @@ public class TestMathFunctions extends ExprTestBase {
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 = SchemaFactory.newV1();
- schema.addColumn("col1", FLOAT4);
- schema.addColumn("col2", FLOAT8);
- schema.addColumn("col3", FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", FLOAT4)
+ .add("col2", FLOAT8)
+ .add("col3", FLOAT8)
+ .build();
testEval(schema, "table1", "0.8,2.7,-0.8", "select radians(col1), radians(col2), radians(col3) from table1",
new String[]{
- String.valueOf(Math.toRadians((float)0.8)),
+ String.valueOf(Math.toRadians((float) 0.8)),
String.valueOf(Math.toRadians(2.7)),
String.valueOf(Math.toRadians(-0.8))
});
@@ -463,9 +490,10 @@ public class TestMathFunctions extends ExprTestBase {
testSimpleEval("select round(1234567890.1234567,3) ", new String[]{"1.234567890123E9"});
testSimpleEval("select round(1234567890.1234567,5) ", new String[]{"1.23456789012346E9"});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", FLOAT8);
- schema.addColumn("col2", INT4);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", FLOAT8)
+ .add("col2", INT4)
+ .build();
testEval(schema, "table1", ",", "select round(col1, col2) from table1", new String[]{NullDatum.get().toString()});
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestPatternMatchingPredicates.java
----------------------------------------------------------------------
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 0cfbe1c..54907fc 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,7 +19,7 @@
package org.apache.tajo.engine.function;
import org.apache.tajo.catalog.Schema;
-import org.apache.tajo.catalog.SchemaFactory;
+import org.apache.tajo.catalog.SchemaBuilder;
import org.apache.tajo.datum.NullDatum;
import org.apache.tajo.engine.eval.ExprTestBase;
import org.apache.tajo.exception.TajoException;
@@ -31,8 +31,9 @@ public class TestPatternMatchingPredicates extends ExprTestBase {
@Test
public void testLike() throws TajoException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TEXT)
+ .build();
// test for null values
testEval(schema, "table1", ",", "select col1 like 'a%' from table1", new String[]{NullDatum.get().toString()});
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestStringOperatorsAndFunctions.java
----------------------------------------------------------------------
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 dd40822..203af8f 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,7 +21,7 @@ package org.apache.tajo.engine.function;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.tajo.catalog.Schema;
-import org.apache.tajo.catalog.SchemaFactory;
+import org.apache.tajo.catalog.SchemaBuilder;
import org.apache.tajo.datum.NullDatum;
import org.apache.tajo.engine.eval.ExprTestBase;
import org.apache.tajo.exception.TajoException;
@@ -41,10 +41,11 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
@Test
public void testConcatenateOnExpressions() throws TajoException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TEXT);
- schema.addColumn("col2", INT4);
- schema.addColumn("col3", FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TEXT)
+ .add("col2", INT4)
+ .add("col3", FLOAT8)
+ .build();
testSimpleEval("select (1+3) || 2 as col1 ", new String[]{"42"});
@@ -62,9 +63,10 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
@Test
public void testLTrim() throws TajoException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TEXT);
- schema.addColumn("col2", TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TEXT)
+ .add("col2", TEXT)
+ .build();
testSimpleEval("select ltrim(' trim') ", new String[]{"trim"});
testSimpleEval("select ltrim('xxtrim', 'xx') ", new String[]{"trim"});
@@ -83,9 +85,10 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
@Test
public void testRTrim() throws TajoException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TEXT);
- schema.addColumn("col2", TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TEXT)
+ .add("col2", TEXT)
+ .build();
testSimpleEval("select rtrim('trim ') ", new String[]{"trim"});
testSimpleEval("select rtrim('trimxx', 'xx') ", new String[]{"trim"});
@@ -104,9 +107,10 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
@Test
public void testTrim() throws TajoException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TEXT);
- schema.addColumn("col2", TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TEXT)
+ .add("col2", TEXT)
+ .build();
testSimpleEval("select trim(' trim ') ", new String[]{"trim"});
testSimpleEval("select btrim('xxtrimxx', 'xx') ", new String[]{"trim"});
@@ -132,10 +136,11 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
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 = SchemaFactory.newV1();
- schema.addColumn("col1", TEXT);
- schema.addColumn("col2", TEXT);
- schema.addColumn("col3", TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TEXT)
+ .add("col2", TEXT)
+ .add("col3", TEXT)
+ .build();
// find matches and replace from column values
testEval(schema, "table1", "------,(^--|--$),ab", "select regexp_replace(col1, col2, col3) as str from table1",
@@ -165,10 +170,11 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
testSimpleEval("select left('abcdef',-5) as col1 ", new String[]{"a"});
testSimpleEval("select left('abcdef',-6) as col1 ", new String[]{""});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TEXT);
- schema.addColumn("col2", INT4);
- schema.addColumn("col3", TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TEXT)
+ .add("col2", INT4)
+ .add("col3", TEXT)
+ .build();
// for null tests
testEval(schema, "table1", ",1,ghi", "select left(col1,1) is null from table1", new String[]{"t"});
@@ -194,10 +200,11 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
testSimpleEval("select right('abcdef',-5) as col1 ", new String[]{"f"});
testSimpleEval("select right('abcdef',-6) as col1 ", new String[]{""});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TEXT);
- schema.addColumn("col2", INT4);
- schema.addColumn("col3", TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TEXT)
+ .add("col2", INT4)
+ .add("col3", TEXT)
+ .build();
// for null tests
testEval(schema, "table1", ",1,ghi", "select right(col1,1) is null from table1", new String[]{"t"});
@@ -211,10 +218,11 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
testSimpleEval("select reverse('abcdef') as col1 ", new String[]{"fedcba"});
testSimpleEval("select reverse('가') as col1 ", new String[]{"가"});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TEXT);
- schema.addColumn("col2", TEXT);
- schema.addColumn("col3", TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TEXT)
+ .add("col2", TEXT)
+ .add("col3", TEXT)
+ .build();
testEval(schema, "table1", "abc,efg,3.14", "select reverse(col1) || reverse(col2) from table1",
new String[]{"cbagfe"});
}
@@ -225,10 +233,11 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
testSimpleEval("select repeat('가',3) as col1 ", new String[]{"가가가"});
testSimpleEval("select repeat('a',2) as col1 ", new String[]{"aa"});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TEXT);
- schema.addColumn("col2", TEXT);
- schema.addColumn("col3", TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TEXT)
+ .add("col2", TEXT)
+ .add("col3", TEXT)
+ .build();
testEval(schema, "table1", "abc,efg,3.14", "select repeat(col1,2) from table1", new String[]{"abcabc"});
}
@@ -237,10 +246,11 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
public void testUpper() throws TajoException {
testSimpleEval("select upper('abcdef') as col1 ", new String[]{"ABCDEF"});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TEXT);
- schema.addColumn("col2", TEXT);
- schema.addColumn("col3", TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TEXT)
+ .add("col2", TEXT)
+ .add("col3", TEXT)
+ .build();
testEval(schema, "table1", "abc,efg,3.14", "select upper(col1), upper(col2) from table1",
new String[]{"ABC", "EFG"});
testEval(schema, "table1", "abc,efg,3.14", "select upper(col1) || upper(col2) from table1", new String[]{"ABCEFG"});
@@ -250,10 +260,12 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
public void testLower() throws TajoException {
testSimpleEval("select lower('ABCdEF') as col1 ", new String[]{"abcdef"});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TEXT);
- schema.addColumn("col2", TEXT);
- schema.addColumn("col3", TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TEXT)
+ .add("col2", TEXT)
+ .add("col3", TEXT)
+ .build();
+
testEval(schema, "table1", "ABC,DEF,3.14", "select lower(col1), lower(col2) from table1",
new String[]{"abc", "def"});
testEval(schema, "table1", "ABC,DEF,3.14", "select lower(col1) || lower(col2) from table1", new String[]{"abcdef"});
@@ -263,10 +275,11 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
public void testCharLength() throws TajoException {
testSimpleEval("select char_length('123456') as col1 ", new String[]{"6"});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TEXT);
- schema.addColumn("col2", TEXT);
- schema.addColumn("col3", TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TEXT)
+ .add("col2", TEXT)
+ .add("col3", TEXT)
+ .build();
testEval(schema, "table1", "ABC,DEF,3.14", "select character_length(lower(col1) || lower(col2)) from table1",
new String[]{"6"});
}
@@ -275,10 +288,11 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
public void testLength() throws TajoException {
testSimpleEval("select length('123456') as col1 ", new String[]{"6"});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TEXT);
- schema.addColumn("col2", TEXT);
- schema.addColumn("col3", TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TEXT)
+ .add("col2", TEXT)
+ .add("col3", TEXT)
+ .build();
testEval(schema, "table1", "ABC,DEF,3.14", "select length(lower(col1) || lower(col2)) from table1",
new String[]{"6"});
}
@@ -288,10 +302,11 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
testSimpleEval("select md5('1') as col1 ", new String[]{"c4ca4238a0b923820dcc509a6f75849b"});
testSimpleEval("select md5('tajo') as col1 ", new String[]{"742721b3a79f71a9491681b8e8a7ce85"});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TEXT);
- schema.addColumn("col2", TEXT);
- schema.addColumn("col3", TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TEXT)
+ .add("col2", TEXT)
+ .add("col3", TEXT)
+ .build();
testEval(schema, "table1", "abc,efg,3.14", "select md5(col1) from table1",
new String[]{"900150983cd24fb0d6963f7d28e17f72"});
}
@@ -317,10 +332,11 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
testSimpleEval("select to_hex(1234) as col1 ", new String[]{"4d2"});
testSimpleEval("select to_hex(1023456788888888) as col1 ", new String[]{"3a2d41a583d38"});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TEXT);
- schema.addColumn("col2", TEXT);
- schema.addColumn("col3", TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TEXT)
+ .add("col2", TEXT)
+ .add("col3", TEXT)
+ .build();
testEval(schema, "table1", ",abcdef,3.14", "select to_hex(10) from table1",
new String[]{"a"});
}
@@ -331,10 +347,11 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
testSimpleEval("select to_bin(10) as col1 ", new String[]{"1010"});
testSimpleEval("select to_bin(1234) as col1 ", new String[]{"10011010010"});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TEXT);
- schema.addColumn("col2", TEXT);
- schema.addColumn("col3", TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TEXT)
+ .add("col2", TEXT)
+ .add("col3", TEXT)
+ .build();
testEval(schema, "table1", ",abcdef,3.14", "select to_bin(20) from table1",
new String[]{"10100"});
}
@@ -345,10 +362,11 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
testSimpleEval("select octet_length('1') as col1 ", new String[]{"1"});
testSimpleEval("select octet_length('가') as col1 ", new String[]{"3"});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TEXT);
- schema.addColumn("col2", TEXT);
- schema.addColumn("col3", TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TEXT)
+ .add("col2", TEXT)
+ .add("col3", TEXT)
+ .build();
testEval(schema, "table1", "ABC,DEF,3.14", "select octet_length(lower(col1) || lower(col2)) from table1",
new String[]{"6"});
}
@@ -361,10 +379,11 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
testSimpleEval("select split_part('1386577650.123', '.', 3) is null", new String[]{"t"});
// null handling tests
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TEXT);
- schema.addColumn("col2", TEXT);
- schema.addColumn("col3", TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TEXT)
+ .add("col2", TEXT)
+ .add("col3", TEXT)
+ .build();
testEval(schema, "t1", ",.,1", "select split_part(col1, col2, col3::int) is null from t1", new String[]{"t"});
testEval(schema, "t1", "1386577650.123,,1", "select split_part(col1, col2, col3::int) from t1",
new String[]{"1386577650.123"});
@@ -390,10 +409,11 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
testSimpleEval("select substr('abcdef', -1, 3) as col1 ", new String[]{"a"});
testSimpleEval("select substr('abcdef', -1, 1) as col1 ", new String[]{""});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TEXT);
- schema.addColumn("col2", TEXT);
- schema.addColumn("col3", TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TEXT)
+ .add("col2", TEXT)
+ .add("col3", TEXT)
+ .build();
testEval(schema, "table1", ",abcdef,3.14", "select substr(lower(col2), 2, 3) from table1",
new String[]{"bcd"});
}
@@ -433,10 +453,11 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
testSimpleEval("select locate('abcdef', 'a', -1) as col1 ", new String[]{"0"});
testSimpleEval("select locate('abcdef', 'a', -5) as col1 ", new String[]{"0"});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TEXT);
- schema.addColumn("col2", TEXT);
- schema.addColumn("col3", TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TEXT)
+ .add("col2", TEXT)
+ .add("col3", TEXT)
+ .build();
testEval(schema, "table1", ",abcdef,3.14", "select locate(col2, 'cd') from table1", new String[]{"3"});
testEval(schema, "table1", ",abcdef,3.14", "select locate(col2, 'cd', 1) from table1", new String[]{"3"});
testEval(schema, "table1", ",abcdef,3.14", "select locate(col2, 'cd', 4) from table1", new String[]{"0"});
@@ -451,10 +472,11 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
public void testBitLength() throws TajoException {
testSimpleEval("select bit_length('123456') as col1 ", new String[]{"48"});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TEXT);
- schema.addColumn("col2", TEXT);
- schema.addColumn("col3", TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TEXT)
+ .add("col2", TEXT)
+ .add("col3", TEXT)
+ .build();
testEval(schema, "table1", "ABC,DEF,3.14", "select bit_length(lower(col1) || lower(col2)) from table1",
new String[]{"48"});
}
@@ -467,10 +489,11 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
testSimpleEval("select strpos('일이삼사오육','삼사') as col1 ", new String[]{"3"});
testSimpleEval("select strpos('일이삼사오육','일이삼') as col1 ", new String[]{"1"});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TEXT);
- schema.addColumn("col2", TEXT);
- schema.addColumn("col3", TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TEXT)
+ .add("col2", TEXT)
+ .add("col3", TEXT)
+ .build();
testEval(schema, "table1", "ABCDEF,HIJKLMN,3.14", "select strpos(lower(col1) || lower(col2), 'fh') from table1",
new String[]{"6"});
}
@@ -483,10 +506,11 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
testSimpleEval("select strposb('일이삼사오육','삼사') as col1 ", new String[]{"7"}); //utf8 1 korean word = 3 chars
testSimpleEval("select strposb('일이삼사오육','삼사일') as col1 ", new String[]{"0"});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TEXT);
- schema.addColumn("col2", TEXT);
- schema.addColumn("col3", TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TEXT)
+ .add("col2", TEXT)
+ .add("col3", TEXT)
+ .build();
testEval(schema, "table1", "ABCDEF,HIJKLMN,3.14", "select strposb(lower(col1) || lower(col2), 'fh') from table1",
new String[]{"6"});
}
@@ -501,8 +525,9 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
public void testAscii() throws TajoException {
testSimpleEval("select ascii('abc') as col1 ", new String[]{"97"});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TEXT)
+ .build();
testEval(schema, "table1", "abc", "select ascii(col1) from table1",
new String[]{"97"});
testEval(schema, "table1", "12", "select ascii(col1) from table1",
@@ -517,8 +542,8 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
testSimpleEval("select chr(50) as col1 ", new String[]{"2"});
testSimpleEval("select chr(64) as col1 ", new String[]{"@"});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", INT4);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", INT4).build();
testEval(schema, "table1", "65", "select chr(col1) from table1", new String[]{"A"});
testEval(schema, "table1", "66", "select chr(col1) from table1", new String[]{"B"});
testEval(schema, "table1", "52512", "select chr(col1) from table1", new String[]{"촠"});
@@ -588,9 +613,10 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
testSimpleEval("select find_in_set('딸기','사과,배,옥수수,감자,딸기,수박') as col1 ", new String[]{"5"});
// null test
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TEXT);
- schema.addColumn("col2", TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TEXT)
+ .add("col2", TEXT)
+ .build();
testEval(schema, "table1", "|crt,c,cr,c,def", "select find_in_set(col1, col2) is null from table1",
new String[]{"t"}, '|', true);
testEval(schema, "table1", "cr|", "select find_in_set(col1, col2) is null from table1",
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/function/TestUserDefinedFunctions.java
----------------------------------------------------------------------
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 f66c6bb..4150289 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,7 +19,7 @@
package org.apache.tajo.engine.function;
import org.apache.tajo.catalog.Schema;
-import org.apache.tajo.catalog.SchemaFactory;
+import org.apache.tajo.catalog.SchemaBuilder;
import org.apache.tajo.datum.NullDatum;
import org.apache.tajo.engine.eval.ExprTestBase;
import org.apache.tajo.exception.TajoException;
@@ -36,8 +36,9 @@ public class TestUserDefinedFunctions extends ExprTestBase {
@Test
public void testNullHandling2() throws TajoException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", BOOLEAN);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", BOOLEAN)
+ .build();
testEval(schema, "table1", "", "select null_test() from table1", new String[]{NullDatum.get().toString()});
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestJoinOrderAlgorithm.java
----------------------------------------------------------------------
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 ce5a6ab..bd9c5f9 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
@@ -28,12 +28,15 @@ import org.apache.tajo.catalog.*;
import org.apache.tajo.catalog.statistics.TableStats;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.engine.function.FunctionLoader;
-import org.apache.tajo.parser.sql.SQLAnalyzer;
import org.apache.tajo.engine.query.QueryContext;
+import org.apache.tajo.parser.sql.SQLAnalyzer;
import org.apache.tajo.plan.LogicalOptimizer;
import org.apache.tajo.plan.LogicalPlan;
import org.apache.tajo.plan.LogicalPlanner;
-import org.apache.tajo.plan.logical.*;
+import org.apache.tajo.plan.logical.JoinNode;
+import org.apache.tajo.plan.logical.LogicalNode;
+import org.apache.tajo.plan.logical.NodeType;
+import org.apache.tajo.plan.logical.ScanNode;
import org.apache.tajo.plan.util.PlannerUtil;
import org.apache.tajo.storage.TablespaceManager;
import org.apache.tajo.unit.StorageUnit;
@@ -45,7 +48,8 @@ import org.junit.Test;
import static org.apache.tajo.TajoConstants.DEFAULT_DATABASE_NAME;
import static org.apache.tajo.TajoConstants.DEFAULT_TABLESPACE_NAME;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
public class TestJoinOrderAlgorithm {
@@ -67,19 +71,22 @@ public class TestJoinOrderAlgorithm {
catalog.createFunction(funcDesc);
}
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("name", Type.TEXT);
- schema.addColumn("empid", Type.INT4);
- schema.addColumn("deptname", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("name", Type.TEXT)
+ .add("empid", Type.INT4)
+ .add("deptname", Type.TEXT)
+ .build();
- Schema schema2 = SchemaFactory.newV1();
- schema2.addColumn("deptname", Type.TEXT);
- schema2.addColumn("manager", Type.TEXT);
+ Schema schema2 = SchemaBuilder.builder()
+ .add("deptname", Type.TEXT)
+ .add("manager", Type.TEXT)
+ .build();
- Schema schema3 = SchemaFactory.newV1();
- schema3.addColumn("deptname", Type.TEXT);
- schema3.addColumn("score", Type.INT4);
- schema3.addColumn("phone", Type.INT4);
+ Schema schema3 = SchemaBuilder.builder()
+ .add("deptname", Type.TEXT)
+ .add("score", Type.INT4)
+ .add("phone", Type.INT4)
+ .build();
TableMeta meta = CatalogUtil.newTableMeta("TEXT");
TableDesc people = new TableDesc(
@@ -101,9 +108,10 @@ public class TestJoinOrderAlgorithm {
///////////////////////////////////////////////////////////////////////////
// creating table for overflow in JoinOrderOptimizer.
- Schema schema4 = SchemaFactory.newV1();
- schema4.addColumn("deptname", Type.TEXT);
- schema4.addColumn("manager", Type.TEXT);
+ Schema schema4 = SchemaBuilder.builder()
+ .add("deptname", Type.TEXT)
+ .add("manager", Type.TEXT)
+ .build();
// Set store type as FAKEFILE to prevent auto update of physical information in LogicalPlanner.updatePhysicalInfo()
TableMeta largeTableMeta = CatalogUtil.newTableMeta("FAKEFILE");
TableDesc largeDept;
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestLogicalOptimizer.java
----------------------------------------------------------------------
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 56ef78b..e57921d 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
@@ -27,9 +27,9 @@ import org.apache.tajo.catalog.proto.CatalogProtos.FunctionType;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.engine.function.FunctionLoader;
import org.apache.tajo.engine.function.builtin.SumInt;
-import org.apache.tajo.parser.sql.SQLAnalyzer;
import org.apache.tajo.engine.query.QueryContext;
import org.apache.tajo.exception.TajoException;
+import org.apache.tajo.parser.sql.SQLAnalyzer;
import org.apache.tajo.plan.LogicalOptimizer;
import org.apache.tajo.plan.LogicalPlan;
import org.apache.tajo.plan.LogicalPlanner;
@@ -65,19 +65,22 @@ public class TestLogicalOptimizer {
catalog.createFunction(funcDesc);
}
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("name", Type.TEXT);
- schema.addColumn("empid", Type.INT4);
- schema.addColumn("deptname", Type.TEXT);
-
- Schema schema2 = SchemaFactory.newV1();
- schema2.addColumn("deptname", Type.TEXT);
- schema2.addColumn("manager", Type.TEXT);
-
- Schema schema3 = SchemaFactory.newV1();
- schema3.addColumn("deptname", Type.TEXT);
- schema3.addColumn("score", Type.INT4);
- schema3.addColumn("phone", Type.INT4);
+ Schema schema = SchemaBuilder.builder()
+ .add("name", Type.TEXT)
+ .add("empid", Type.INT4)
+ .add("deptname", Type.TEXT)
+ .build();
+
+ Schema schema2 = SchemaBuilder.builder()
+ .add("deptname", Type.TEXT)
+ .add("manager", Type.TEXT)
+ .build();
+
+ Schema schema3 = SchemaBuilder.builder()
+ .add("deptname", Type.TEXT)
+ .add("score", Type.INT4)
+ .add("phone", Type.INT4)
+ .build();
TableMeta meta = CatalogUtil.newTableMeta("TEXT");
TableDesc people = new TableDesc(
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestLogicalPlanner.java
----------------------------------------------------------------------
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 d09ef77..d1c8384 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,18 +86,21 @@ public class TestLogicalPlanner {
catalog.createFunction(funcDesc);
}
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("name", Type.TEXT);
- schema.addColumn("empid", Type.INT4);
- schema.addColumn("deptname", Type.TEXT);
-
- Schema schema2 = SchemaFactory.newV1();
- schema2.addColumn("deptname", Type.TEXT);
- schema2.addColumn("manager", Type.TEXT);
-
- Schema schema3 = SchemaFactory.newV1();
- schema3.addColumn("deptname", Type.TEXT);
- schema3.addColumn("score", Type.INT4);
+ Schema schema = SchemaBuilder.builder()
+ .add("name", Type.TEXT)
+ .add("empid", Type.INT4)
+ .add("deptname", Type.TEXT)
+ .build();
+
+ Schema schema2 = SchemaBuilder.builder()
+ .add("deptname", Type.TEXT)
+ .add("manager", Type.TEXT)
+ .build();
+
+ Schema schema3 = SchemaBuilder.builder()
+ .add("deptname", Type.TEXT)
+ .add("score", Type.INT4)
+ .build();
TableMeta meta = CatalogUtil.newTableMeta("TEXT");
TableDesc people = new TableDesc(
@@ -222,11 +225,12 @@ public class TestLogicalPlanner {
testJsonSerDerObject(root);
testCloneLogicalNode(root);
- Schema expectedSchema = SchemaFactory.newV1();
- expectedSchema.addColumn("name", Type.TEXT);
- expectedSchema.addColumn("empid", Type.INT4);
- expectedSchema.addColumn("deptname", Type.TEXT);
- expectedSchema.addColumn("manager", Type.TEXT);
+ Schema expectedSchema = SchemaBuilder.builder()
+ .add("name", Type.TEXT)
+ .add("empid", Type.INT4)
+ .add("deptname", Type.TEXT)
+ .add("manager", Type.TEXT)
+ .build();
for (int i = 0; i < expectedSchema.size(); i++) {
Column found = root.getOutSchema().getColumn(expectedSchema.getColumn(i).getSimpleName());
assertEquals(expectedSchema.getColumn(i).getDataType(), found.getDataType());
@@ -251,7 +255,9 @@ public class TestLogicalPlanner {
testJsonSerDerObject(plan);
testCloneLogicalNode(plan);
- expectedSchema.addColumn("score", Type.INT4);
+ expectedSchema = SchemaBuilder.builder().addAll(expectedSchema.getRootColumns())
+ .add("score", Type.INT4)
+ .build();
assertSchema(expectedSchema, plan.getOutSchema());
assertEquals(NodeType.ROOT, plan.getType());
@@ -291,10 +297,11 @@ public class TestLogicalPlanner {
static Schema expectedJoinSchema;
static {
- expectedJoinSchema = SchemaFactory.newV1();
- expectedJoinSchema.addColumn("name", Type.TEXT);
- expectedJoinSchema.addColumn("deptname", Type.TEXT);
- expectedJoinSchema.addColumn("score", Type.INT4);
+ expectedJoinSchema = SchemaBuilder.builder()
+ .add("name", Type.TEXT)
+ .add("deptname", Type.TEXT)
+ .add("score", Type.INT4)
+ .build();
}
@Test
@@ -1290,18 +1297,20 @@ public class TestLogicalPlanner {
String tableName = CatalogUtil.normalizeIdentifier("partitioned_table");
String qualifiedTableName = CatalogUtil.buildFQName(DEFAULT_DATABASE_NAME, tableName);
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4)
- .addColumn("name", Type.TEXT)
- .addColumn("age", Type.INT4)
- .addColumn("score", Type.FLOAT8);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("name", Type.TEXT)
+ .add("age", Type.INT4)
+ .add("score", Type.FLOAT8)
+ .build();
KeyValueSet opts = new KeyValueSet();
opts.set("file.delimiter", ",");
- Schema partSchema = SchemaFactory.newV1();
- partSchema.addColumn("id", Type.INT4);
- partSchema.addColumn("name", Type.TEXT);
+ Schema partSchema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("name", Type.TEXT)
+ .build();
PartitionMethodDesc partitionMethodDesc =
new PartitionMethodDesc(DEFAULT_DATABASE_NAME, tableName,
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestPlannerUtil.java
----------------------------------------------------------------------
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 6479124..92557f1 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,18 +72,18 @@ public class TestPlannerUtil {
catalog.createTablespace(DEFAULT_TABLESPACE_NAME, "hdfs://localhost:1234/warehouse");
catalog.createDatabase(DEFAULT_DATABASE_NAME, DEFAULT_TABLESPACE_NAME);
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("name", Type.TEXT);
- schema.addColumn("empid", CatalogUtil.newSimpleDataType(Type.INT4));
- schema.addColumn("deptname", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("name", Type.TEXT)
+ .add("empid", CatalogUtil.newSimpleDataType(Type.INT4))
+ .add("deptname", Type.TEXT).build();
- Schema schema2 = SchemaFactory.newV1();
- schema2.addColumn("deptname", Type.TEXT);
- schema2.addColumn("manager", Type.TEXT);
+ Schema schema2 = SchemaBuilder.builder()
+ .add("deptname", Type.TEXT)
+ .add("manager", Type.TEXT).build();
- Schema schema3 = SchemaFactory.newV1();
- schema3.addColumn("deptname", Type.TEXT);
- schema3.addColumn("score", CatalogUtil.newSimpleDataType(Type.INT4));
+ Schema schema3 = SchemaBuilder.builder()
+ .add("deptname", Type.TEXT)
+ .add("score", CatalogUtil.newSimpleDataType(Type.INT4)).build();
TableMeta meta = CatalogUtil.newTableMeta("TEXT");
TableDesc people = new TableDesc(
@@ -188,12 +188,12 @@ public class TestPlannerUtil {
@Test
public final void testGetJoinKeyPairs() {
- Schema outerSchema = SchemaFactory.newV1();
- outerSchema.addColumn("employee.id1", CatalogUtil.newSimpleDataType(Type.INT4));
- outerSchema.addColumn("employee.id2", CatalogUtil.newSimpleDataType(Type.INT4));
- Schema innerSchema = SchemaFactory.newV1();
- innerSchema.addColumn("people.fid1", CatalogUtil.newSimpleDataType(Type.INT4));
- innerSchema.addColumn("people.fid2", CatalogUtil.newSimpleDataType(Type.INT4));
+ Schema outerSchema = SchemaBuilder.builder()
+ .add("employee.id1", CatalogUtil.newSimpleDataType(Type.INT4))
+ .add("employee.id2", CatalogUtil.newSimpleDataType(Type.INT4)).build();
+ Schema innerSchema = SchemaBuilder.builder()
+ .add("people.fid1", CatalogUtil.newSimpleDataType(Type.INT4))
+ .add("people.fid2", CatalogUtil.newSimpleDataType(Type.INT4)).build();
FieldEval f1 = new FieldEval("employee.id1", CatalogUtil.newSimpleDataType(Type.INT4));
FieldEval f2 = new FieldEval("people.fid1", CatalogUtil.newSimpleDataType(Type.INT4));
@@ -250,12 +250,14 @@ public class TestPlannerUtil {
@Test
public final void testGetSortKeysFromJoinQual() {
- Schema outerSchema = SchemaFactory.newV1();
- outerSchema.addColumn("employee.id1", CatalogUtil.newSimpleDataType(Type.INT4));
- outerSchema.addColumn("employee.id2", CatalogUtil.newSimpleDataType(Type.INT4));
- Schema innerSchema = SchemaFactory.newV1();
- innerSchema.addColumn("people.fid1", CatalogUtil.newSimpleDataType(Type.INT4));
- innerSchema.addColumn("people.fid2", CatalogUtil.newSimpleDataType(Type.INT4));
+ Schema outerSchema = SchemaBuilder.builder()
+ .add("employee.id1", CatalogUtil.newSimpleDataType(Type.INT4))
+ .add("employee.id2", CatalogUtil.newSimpleDataType(Type.INT4))
+ .build();
+ Schema innerSchema = SchemaBuilder.builder()
+ .add("people.fid1", CatalogUtil.newSimpleDataType(Type.INT4))
+ .add("people.fid2", CatalogUtil.newSimpleDataType(Type.INT4))
+ .build();
FieldEval f1 = new FieldEval("employee.id1", CatalogUtil.newSimpleDataType(Type.INT4));
FieldEval f2 = new FieldEval("people.fid1", CatalogUtil.newSimpleDataType(Type.INT4));
@@ -286,12 +288,14 @@ public class TestPlannerUtil {
@Test
public final void testComparatorsFromJoinQual() {
- Schema outerSchema = SchemaFactory.newV1();
- outerSchema.addColumn("employee.id1", CatalogUtil.newSimpleDataType(Type.INT4));
- outerSchema.addColumn("employee.id2", CatalogUtil.newSimpleDataType(Type.INT4));
- Schema innerSchema = SchemaFactory.newV1();
- innerSchema.addColumn("people.fid1", CatalogUtil.newSimpleDataType(Type.INT4));
- innerSchema.addColumn("people.fid2", CatalogUtil.newSimpleDataType(Type.INT4));
+ Schema outerSchema = SchemaBuilder.builder()
+ .add("employee.id1", CatalogUtil.newSimpleDataType(Type.INT4))
+ .add("employee.id2", CatalogUtil.newSimpleDataType(Type.INT4))
+ .build();
+ Schema innerSchema = SchemaBuilder.builder()
+ .add("people.fid1", CatalogUtil.newSimpleDataType(Type.INT4))
+ .add("people.fid2", CatalogUtil.newSimpleDataType(Type.INT4))
+ .build();
FieldEval f1 = new FieldEval("employee.id1", CatalogUtil.newSimpleDataType(Type.INT4));
FieldEval f2 = new FieldEval("people.fid1", CatalogUtil.newSimpleDataType(Type.INT4));
[2/6] tajo git commit: TAJO-2108: Refactor Schema to be immutable.
Posted by hy...@apache.org.
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestSortQuery.java
----------------------------------------------------------------------
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 ef3336d..0cc93da 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,7 +20,7 @@ package org.apache.tajo.engine.query;
import org.apache.tajo.*;
import org.apache.tajo.catalog.Schema;
-import org.apache.tajo.catalog.SchemaFactory;
+import org.apache.tajo.catalog.SchemaBuilder;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.conf.TajoConf.ConfVars;
import org.apache.tajo.storage.StorageConstants;
@@ -133,9 +133,10 @@ public class TestSortQuery extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", Type.INT4);
- schema.addColumn("col2", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", Type.INT4)
+ .add("col2", Type.TEXT)
+ .build();
String[] data = new String[]{
"1|abc",
"3|dfa",
@@ -239,9 +240,10 @@ public class TestSortQuery extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4);
- schema.addColumn("name", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("name", Type.TEXT)
+ .build();
String[] data = new String[]{
"1|BRAZIL",
"2|ALGERIA",
@@ -265,9 +267,10 @@ public class TestSortQuery extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4);
- schema.addColumn("name", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("name", Type.TEXT)
+ .build();
String[] data = new String[]{ "1|111", "2|\\N", "3|333" };
TajoTestingCluster.createTable("testSortOnNullColumn2".toLowerCase(), schema, tableOptions, data, 1);
@@ -302,9 +305,10 @@ public class TestSortQuery extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4);
- schema.addColumn("name", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("name", Type.TEXT)
+ .build();
String[] data = new String[]{ "1|111", "2|\\N", "3|333" };
TajoTestingCluster.createTable("testSortOnNullColumn3".toLowerCase(), schema, tableOptions, data, 1);
@@ -330,9 +334,10 @@ public class TestSortQuery extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4);
- schema.addColumn("name", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("name", Type.TEXT)
+ .build();
String[] data = new String[]{ "1|111", "2|\\N", "3|333" };
TajoTestingCluster.createTable("testSortOnNullColumn4".toLowerCase(), schema, tableOptions, data, 1);
@@ -358,9 +363,10 @@ public class TestSortQuery extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4);
- schema.addColumn("name", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("name", Type.TEXT)
+ .build();
String[] data = new String[]{ "1|111", "2|\\N", "3|333" };
TajoTestingCluster.createTable("testSortOnNullColumn5".toLowerCase(), schema, tableOptions, data, 1);
@@ -388,9 +394,10 @@ public class TestSortQuery extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", Type.INT4);
- schema.addColumn("col2", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", Type.INT4)
+ .add("col2", Type.TEXT)
+ .build();
String[] data = new String[]{
"1|하하하",
"2|캬캬캬",
@@ -416,9 +423,10 @@ public class TestSortQuery extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", Type.INT4);
- schema.addColumn("col2", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", Type.INT4)
+ .add("col2", Type.TEXT)
+ .build();
String[] data = new String[]{
"1|하하하",
"2|캬캬캬",
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestTablePartitions.java
----------------------------------------------------------------------
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 3438759..196b488 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
@@ -23,16 +23,19 @@ import org.apache.hadoop.fs.*;
import org.apache.hadoop.io.compress.CompressionCodec;
import org.apache.hadoop.io.compress.CompressionCodecFactory;
import org.apache.hadoop.io.compress.DeflateCodec;
-import org.apache.tajo.*;
+import org.apache.tajo.QueryId;
+import org.apache.tajo.QueryTestCaseBase;
+import org.apache.tajo.TajoConstants;
+import org.apache.tajo.TajoTestingCluster;
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;
+import org.apache.tajo.client.TajoClientUtil;
import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.conf.TajoConf;
import org.apache.tajo.engine.planner.global.DataChannel;
import org.apache.tajo.engine.planner.global.ExecutionBlock;
import org.apache.tajo.engine.planner.global.MasterPlan;
+import org.apache.tajo.exception.ReturnStateUtil;
import org.apache.tajo.ipc.ClientProtos;
import org.apache.tajo.plan.logical.NodeType;
import org.apache.tajo.querymaster.QueryMasterTask;
@@ -1091,9 +1094,10 @@ public class TestTablePartitions extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TajoDataTypes.Type.TEXT);
- schema.addColumn("col2", TajoDataTypes.Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TajoDataTypes.Type.TEXT)
+ .add("col2", TajoDataTypes.Type.TEXT)
+ .build();
List<String> data = new ArrayList<>();
int totalBytes = 0;
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/query/TestWindowQuery.java
----------------------------------------------------------------------
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 19b8bbc..54aa41e 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,7 +23,7 @@ import org.apache.tajo.QueryTestCaseBase;
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.catalog.SchemaBuilder;
import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.storage.StorageConstants;
import org.apache.tajo.util.KeyValueSet;
@@ -266,9 +266,10 @@ public class TestWindowQuery extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", TajoDataTypes.Type.INT4);
- schema.addColumn("time", TajoDataTypes.Type.TIME);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", TajoDataTypes.Type.INT4)
+ .add("time", TajoDataTypes.Type.TIME)
+ .build();
String[] data = new String[]{ "1|12:11:12", "2|10:11:13", "2|05:42:41" };
TajoTestingCluster.createTable("firstvaluetime", schema, tableOptions, data, 1);
@@ -301,9 +302,10 @@ public class TestWindowQuery extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", TajoDataTypes.Type.INT4);
- schema.addColumn("time", TajoDataTypes.Type.TIME);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", TajoDataTypes.Type.INT4)
+ .add("time", TajoDataTypes.Type.TIME)
+ .build();
String[] data = new String[]{ "1|12:11:12", "2|10:11:13", "2|05:42:41" };
TajoTestingCluster.createTable("lastvaluetime", schema, tableOptions, data, 1);
@@ -336,9 +338,10 @@ public class TestWindowQuery extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", TajoDataTypes.Type.INT4);
- schema.addColumn("time", TajoDataTypes.Type.TIME);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", TajoDataTypes.Type.INT4)
+ .add("time", TajoDataTypes.Type.TIME)
+ .build();
String[] data = new String[]{ "1|12:11:12", "2|10:11:13", "2|05:42:41" };
TajoTestingCluster.createTable("lagtime", schema, tableOptions, data, 1);
@@ -385,9 +388,10 @@ public class TestWindowQuery extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", TajoDataTypes.Type.INT4);
- schema.addColumn("time", TajoDataTypes.Type.TIME);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", TajoDataTypes.Type.INT4)
+ .add("time", TajoDataTypes.Type.TIME)
+ .build();
String[] data = new String[]{ "1|12:11:12", "2|10:11:13", "2|05:42:41" };
TajoTestingCluster.createTable("leadtime", schema, tableOptions, data, 1);
@@ -441,10 +445,11 @@ public class TestWindowQuery extends QueryTestCaseBase {
tableOptions.set(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
tableOptions.set(StorageConstants.TEXT_NULL, "\\\\N");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", TajoDataTypes.Type.INT4);
- schema.addColumn("time", TajoDataTypes.Type.TIME);
- schema.addColumn("name", TajoDataTypes.Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", TajoDataTypes.Type.INT4)
+ .add("time", TajoDataTypes.Type.TIME)
+ .add("name", TajoDataTypes.Type.TEXT)
+ .build();
String[] data = new String[]{ "1|12:11:12|abc", "2|10:11:13|def", "2|05:42:41|ghi" };
TajoTestingCluster.createTable("multiwindow", schema, tableOptions, data, 1);
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/util/BenchmarkSort.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/util/BenchmarkSort.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/util/BenchmarkSort.java
index 1cc526f..d681d11 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/util/BenchmarkSort.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/util/BenchmarkSort.java
@@ -96,7 +96,7 @@ public class BenchmarkSort {
catalog.createDatabase(TajoConstants.DEFAULT_DATABASE_NAME, DEFAULT_TABLESPACE_NAME);
conf.setVar(TajoConf.ConfVars.WORKER_TEMPORAL_DIR, testDir.toString());
- Schema schema = SchemaFactory.newV1(new Column[] {
+ Schema schema = SchemaBuilder.builder().addAll(new Column[] {
new Column("col0", Type.INT8),
new Column("col1", Type.INT4),
new Column("col2", Type.INT2),
@@ -112,7 +112,7 @@ public class BenchmarkSort {
new Column("col12", Type.INT8),
new Column("col13", Type.INT8),
new Column("col14", Type.INT8),
- });
+ }).build();
TableMeta employeeMeta = CatalogUtil.newTableMeta("TEXT");
Path employeePath = new Path(testDir, "employee.csv");
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/util/TestTupleUtil.java
----------------------------------------------------------------------
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 5683c7a..dff63c4 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
@@ -19,16 +19,17 @@
package org.apache.tajo.engine.util;
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.SchemaBuilder;
import org.apache.tajo.catalog.SortSpec;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
-import org.apache.tajo.plan.util.PlannerUtil;
import org.apache.tajo.engine.planner.RangePartitionAlgorithm;
import org.apache.tajo.engine.planner.UniformRangePartition;
import org.apache.tajo.plan.rewrite.rules.PartitionedTableRewriter;
+import org.apache.tajo.plan.util.PlannerUtil;
import org.apache.tajo.storage.*;
import org.apache.tajo.storage.RowStoreUtil.RowStoreDecoder;
import org.apache.tajo.storage.RowStoreUtil.RowStoreEncoder;
@@ -39,8 +40,7 @@ import static org.junit.Assert.*;
public class TestTupleUtil {
@Test
public final void testFixedSizeChar() {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", Type.CHAR, 5);
+ Schema schema = SchemaBuilder.builder().add("col1", CatalogUtil.newDataTypeWithLen(Type.CHAR, 5)).build();
Tuple tuple = new VTuple(1);
tuple.put(new Datum[] {
@@ -57,23 +57,22 @@ public class TestTupleUtil {
@Test
public final void testToBytesAndToTuple() {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", Type.BOOLEAN);
- schema.addColumn("col2", Type.BIT);
- schema.addColumn("col3", Type.CHAR);
- schema.addColumn("col4", Type.INT2);
- schema.addColumn("col5", Type.INT4);
- schema.addColumn("col6", Type.INT8);
- schema.addColumn("col7", Type.FLOAT4);
- schema.addColumn("col8", Type.FLOAT8);
- schema.addColumn("col9", Type.TEXT);
- schema.addColumn("col10", Type.BLOB);
- schema.addColumn("col11", Type.INET4);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", Type.BOOLEAN)
+ .add("col2", Type.CHAR)
+ .add("col3", Type.INT2)
+ .add("col4", Type.INT4)
+ .add("col5", Type.INT8)
+ .add("col6", Type.FLOAT4)
+ .add("col7", Type.FLOAT8)
+ .add("col8", Type.TEXT)
+ .add("col9", Type.BLOB)
+ .add("col10", Type.INET4)
+ .build();
//schema.addColumn("col11", DataType.IPv6);
Tuple tuple = new VTuple(new Datum[] {
DatumFactory.createBool(true),
- DatumFactory.createBit((byte) 0x99),
DatumFactory.createChar('7'),
DatumFactory.createInt2((short) 17),
DatumFactory.createInt4(59),
@@ -95,41 +94,38 @@ public class TestTupleUtil {
@Test
public final void testGetPartitions() {
- VTuple sTuple = new VTuple(7);
- VTuple eTuple = new VTuple(7);
-
- Schema schema = SchemaFactory.newV1();
-
- schema.addColumn("numByte", Type.BIT);
- schema.addColumn("numChar", Type.CHAR);
- schema.addColumn("numShort", Type.INT2);
- schema.addColumn("numInt", Type.INT4);
- schema.addColumn("numLong", Type.INT8);
- schema.addColumn("numFloat", Type.FLOAT4);
- schema.addColumn("numDouble", Type.FLOAT4);
+ VTuple sTuple = new VTuple(6);
+ VTuple eTuple = new VTuple(6);
+
+ Schema schema = SchemaBuilder.builder()
+ .add("numChar", Type.CHAR)
+ .add("numShort", Type.INT2)
+ .add("numInt", Type.INT4)
+ .add("numLong", Type.INT8)
+ .add("numFloat", Type.FLOAT4)
+ .add("numDouble", Type.FLOAT4)
+ .build();
SortSpec[] sortSpecs = PlannerUtil.schemaToSortSpecs(schema);
- sTuple.put(0, DatumFactory.createBit((byte) 44));
- sTuple.put(1, DatumFactory.createChar('a'));
- sTuple.put(2, DatumFactory.createInt2((short) 10));
- sTuple.put(3, DatumFactory.createInt4(5));
- sTuple.put(4, DatumFactory.createInt8(100));
- sTuple.put(5, DatumFactory.createFloat4(100));
- sTuple.put(6, DatumFactory.createFloat8(100));
-
- eTuple.put(0, DatumFactory.createBit((byte) 99));
- eTuple.put(1, DatumFactory.createChar('p'));
- eTuple.put(2, DatumFactory.createInt2((short) 70));
- eTuple.put(3, DatumFactory.createInt4(70));
- eTuple.put(4, DatumFactory.createInt8(10000));
- eTuple.put(5, DatumFactory.createFloat4(150));
- eTuple.put(6, DatumFactory.createFloat8(170));
+ sTuple.put(0, DatumFactory.createChar('a'));
+ sTuple.put(1, DatumFactory.createInt2((short) 10));
+ sTuple.put(2, DatumFactory.createInt4(5));
+ sTuple.put(3, DatumFactory.createInt8(100));
+ sTuple.put(4, DatumFactory.createFloat4(100));
+ sTuple.put(5, DatumFactory.createFloat8(100));
+
+ eTuple.put(0, DatumFactory.createChar('p'));
+ eTuple.put(1, DatumFactory.createInt2((short) 70));
+ eTuple.put(2, DatumFactory.createInt4(70));
+ eTuple.put(3, DatumFactory.createInt8(10000));
+ eTuple.put(4, DatumFactory.createFloat4(150));
+ eTuple.put(5, DatumFactory.createFloat8(170));
RangePartitionAlgorithm partitioner = new UniformRangePartition(new TupleRange(sortSpecs, sTuple, eTuple),
sortSpecs);
- TupleRange [] ranges = partitioner.partition(5);
- assertTrue(5 <= ranges.length);
+ TupleRange [] ranges = partitioner.partition(4);
+ assertTrue(4 <= ranges.length);
BaseTupleComparator comp = new BaseTupleComparator(schema, PlannerUtil.schemaToSortSpecs(schema));
TupleRange prev = ranges[0];
for (int i = 1; i < ranges.length; i++) {
@@ -142,9 +138,10 @@ public class TestTupleUtil {
@Test
public void testBuildTupleFromPartitionPath() {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("key1", Type.INT8);
- schema.addColumn("key2", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("key1", Type.INT8)
+ .add("key2", Type.TEXT)
+ .build();
Path path = new Path("hdfs://tajo/warehouse/partition_test/");
Tuple tuple = PartitionedTableRewriter.buildTupleFromPartitionPath(schema, path, true);
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/storage/TestRowFile.java
----------------------------------------------------------------------
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 25f0e61..cce0f4c 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,7 +28,7 @@ import org.apache.tajo.TajoTestingCluster;
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.SchemaBuilder;
import org.apache.tajo.catalog.TableMeta;
import org.apache.tajo.catalog.statistics.TableStats;
import org.apache.tajo.common.TajoDataTypes.Type;
@@ -63,10 +63,11 @@ public class TestRowFile {
@Test
public void test() throws IOException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4);
- schema.addColumn("age", Type.INT8);
- schema.addColumn("description", Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("age", Type.INT8)
+ .add("description", Type.TEXT)
+ .build();
TableMeta meta = CatalogUtil.newTableMeta("ROWFILE");
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/resources/queries/TestCreateTable/create_table_various_types.sql
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/resources/queries/TestCreateTable/create_table_various_types.sql b/tajo-core-tests/src/test/resources/queries/TestCreateTable/create_table_various_types.sql
index 891a139..bfa5e97 100644
--- a/tajo-core-tests/src/test/resources/queries/TestCreateTable/create_table_various_types.sql
+++ b/tajo-core-tests/src/test/resources/queries/TestCreateTable/create_table_various_types.sql
@@ -1,10 +1,10 @@
-- Some types were commented out due to Hive meta test.
create table various_types (
- col0 bit,
- col1 BIT(10),
- col2 bit varying,
- col3 bit VARYING(10),
+ -- col0 bit,
+ -- col1 BIT(10),
+ -- col2 bit varying,
+ -- col3 bit VARYING(10),
col4 tinyint,
col5 smallInt,
col6 integer,
@@ -38,13 +38,13 @@ create table various_types (
col34 national character varying (255),
col35 date,
col36 time,
- col37 timetz,
- col38 time With time zone,
- col39 timesTamptz,
- col40 timestamp with time zone,
- col41 binary,
- col42 binary(10),
- col43 varbinary(10),
- col44 binary Varying(10),
+ -- col37 timetz,
+ -- col38 time With time zone,
+ -- col39 timesTamptz,
+ -- col40 timestamp with time zone,
+ -- col41 binary,
+ -- col42 binary(10),
+ -- col43 varbinary(10),
+ -- col44 binary Varying(10),
col45 blOb
);
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core/src/main/java/org/apache/tajo/benchmark/TPCH.java
----------------------------------------------------------------------
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 9ccfeb7..3ff773b 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,7 +24,7 @@ import org.apache.commons.logging.LogFactory;
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.SchemaBuilder;
import org.apache.tajo.catalog.TableMeta;
import org.apache.tajo.catalog.partition.PartitionMethodDesc;
import org.apache.tajo.catalog.proto.CatalogProtos;
@@ -70,117 +70,125 @@ public class TPCH extends BenchmarkSet {
@Override
public void loadSchemas() {
- Schema lineitem = SchemaFactory.newV1()
- .addColumn("l_orderkey", Type.INT4) // 0
- .addColumn("l_partkey", Type.INT4) // 1
- .addColumn("l_suppkey", Type.INT4) // 2
- .addColumn("l_linenumber", Type.INT4) // 3
- .addColumn("l_quantity", Type.FLOAT8) // 4
- .addColumn("l_extendedprice", Type.FLOAT8) // 5
- .addColumn("l_discount", Type.FLOAT8) // 6
- .addColumn("l_tax", Type.FLOAT8) // 7
+ schemas.put(LINEITEM, SchemaBuilder.builder()
+ .add("l_orderkey", Type.INT4) // 0
+ .add("l_partkey", Type.INT4) // 1
+ .add("l_suppkey", Type.INT4) // 2
+ .add("l_linenumber", Type.INT4) // 3
+ .add("l_quantity", Type.FLOAT8) // 4
+ .add("l_extendedprice", Type.FLOAT8) // 5
+ .add("l_discount", Type.FLOAT8) // 6
+ .add("l_tax", Type.FLOAT8) // 7
// TODO - This is temporal solution. 8 and 9 are actually Char type.
- .addColumn("l_returnflag", Type.TEXT) // 8
- .addColumn("l_linestatus", Type.TEXT) // 9
+ .add("l_returnflag", Type.TEXT) // 8
+ .add("l_linestatus", Type.TEXT) // 9
// TODO - This is temporal solution. 10,11, and 12 are actually Date type.
- .addColumn("l_shipdate", Type.TEXT) // 10
- .addColumn("l_commitdate", Type.TEXT) // 11
- .addColumn("l_receiptdate", Type.TEXT) // 12
- .addColumn("l_shipinstruct", Type.TEXT) // 13
- .addColumn("l_shipmode", Type.TEXT) // 14
- .addColumn("l_comment", Type.TEXT); // 15
- schemas.put(LINEITEM, lineitem);
-
- Schema customer = SchemaFactory.newV1()
- .addColumn("c_custkey", Type.INT4) // 0
- .addColumn("c_name", Type.TEXT) // 1
- .addColumn("c_address", Type.TEXT) // 2
- .addColumn("c_nationkey", Type.INT4) // 3
- .addColumn("c_phone", Type.TEXT) // 4
- .addColumn("c_acctbal", Type.FLOAT8) // 5
- .addColumn("c_mktsegment", Type.TEXT) // 6
- .addColumn("c_comment", Type.TEXT); // 7
- schemas.put(CUSTOMER, customer);
-
- Schema customerParts = SchemaFactory.newV1()
- .addColumn("c_custkey", Type.INT4) // 0
- .addColumn("c_name", Type.TEXT) // 1
- .addColumn("c_address", Type.TEXT) // 2
- .addColumn("c_phone", Type.TEXT) // 3
- .addColumn("c_acctbal", Type.FLOAT8) // 4
- .addColumn("c_mktsegment", Type.TEXT) // 5
- .addColumn("c_comment", Type.TEXT); // 6
- schemas.put(CUSTOMER_PARTS, customerParts);
-
- 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 = SchemaFactory.newV1()
- .addColumn("p_partkey", Type.INT4) // 0
- .addColumn("p_name", Type.TEXT) // 1
- .addColumn("p_mfgr", Type.TEXT) // 2
- .addColumn("p_brand", Type.TEXT) // 3
- .addColumn("p_type", Type.TEXT) // 4
- .addColumn("p_size", Type.INT4) // 5
- .addColumn("p_container", Type.TEXT) // 6
- .addColumn("p_retailprice", Type.FLOAT8) // 7
- .addColumn("p_comment", Type.TEXT); // 8
- schemas.put(PART, part);
-
- 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 = SchemaFactory.newV1()
- .addColumn("o_orderkey", Type.INT4) // 0
- .addColumn("o_custkey", Type.INT4) // 1
- .addColumn("o_orderstatus", Type.TEXT) // 2
- .addColumn("o_totalprice", Type.FLOAT8) // 3
- // TODO - This is temporal solution. o_orderdate is actually Date type.
- .addColumn("o_orderdate", Type.TEXT) // 4
- .addColumn("o_orderpriority", Type.TEXT) // 5
- .addColumn("o_clerk", Type.TEXT) // 6
- .addColumn("o_shippriority", Type.INT4) // 7
- .addColumn("o_comment", Type.TEXT); // 8
+ .add("l_shipdate", Type.TEXT) // 10
+ .add("l_commitdate", Type.TEXT) // 11
+ .add("l_receiptdate", Type.TEXT) // 12
+ .add("l_shipinstruct", Type.TEXT) // 13
+ .add("l_shipmode", Type.TEXT) // 14
+ .add("l_comment", Type.TEXT) // 15
+ .build());
+
+ schemas.put(CUSTOMER, SchemaBuilder.builder()
+ .add("c_custkey", Type.INT4) // 0
+ .add("c_name", Type.TEXT) // 1
+ .add("c_address", Type.TEXT) // 2
+ .add("c_nationkey", Type.INT4) // 3
+ .add("c_phone", Type.TEXT) // 4
+ .add("c_acctbal", Type.FLOAT8) // 5
+ .add("c_mktsegment", Type.TEXT) // 6
+ .add("c_comment", Type.TEXT) // 7
+ .build());
+
+
+ schemas.put(CUSTOMER_PARTS, SchemaBuilder.builder()
+ .add("c_custkey", Type.INT4) // 0
+ .add("c_name", Type.TEXT) // 1
+ .add("c_address", Type.TEXT) // 2
+ .add("c_phone", Type.TEXT) // 3
+ .add("c_acctbal", Type.FLOAT8) // 4
+ .add("c_mktsegment", Type.TEXT) // 5
+ .add("c_comment", Type.TEXT) // 6
+ .build());
+
+
+ schemas.put(NATION, SchemaBuilder.builder()
+ .add("n_nationkey", Type.INT4) // 0
+ .add("n_name", Type.TEXT) // 1
+ .add("n_regionkey", Type.INT4) // 2
+ .add("n_comment", Type.TEXT) // 3
+ .build());
+
+
+ schemas.put(PART, SchemaBuilder.builder()
+ .add("p_partkey", Type.INT4) // 0
+ .add("p_name", Type.TEXT) // 1
+ .add("p_mfgr", Type.TEXT) // 2
+ .add("p_brand", Type.TEXT) // 3
+ .add("p_type", Type.TEXT) // 4
+ .add("p_size", Type.INT4) // 5
+ .add("p_container", Type.TEXT) // 6
+ .add("p_retailprice", Type.FLOAT8) // 7
+ .add("p_comment", Type.TEXT) // 8
+ .build());
+
+
+ schemas.put(REGION, SchemaBuilder.builder()
+ .add("r_regionkey", Type.INT4) // 0
+ .add("r_name", Type.TEXT) // 1
+ .add("r_comment", Type.TEXT) // 2
+ .build());
+
+
+ Schema orders = SchemaBuilder.builder()
+ .add("o_orderkey", Type.INT4) // 0
+ .add("o_custkey", Type.INT4) // 1
+ .add("o_orderstatus", Type.TEXT) // 2
+ .add("o_totalprice", Type.FLOAT8) // 3
+ // TODO - This is temporal solution. o_orderdate is actually Date type.
+ .add("o_orderdate", Type.TEXT) // 4
+ .add("o_orderpriority", Type.TEXT) // 5
+ .add("o_clerk", Type.TEXT) // 6
+ .add("o_shippriority", Type.INT4) // 7
+ .add("o_comment", Type.TEXT) // 8
+ .build();
schemas.put(ORDERS, orders);
schemas.put(EMPTY_ORDERS, orders);
- Schema partsupp = SchemaFactory.newV1()
- .addColumn("ps_partkey", Type.INT4) // 0
- .addColumn("ps_suppkey", Type.INT4) // 1
- .addColumn("ps_availqty", Type.INT4) // 2
- .addColumn("ps_supplycost", Type.FLOAT8) // 3
- .addColumn("ps_comment", Type.TEXT); // 4
- schemas.put(PARTSUPP, partsupp);
-
- Schema supplier = SchemaFactory.newV1()
- .addColumn("s_suppkey", Type.INT4) // 0
- .addColumn("s_name", Type.TEXT) // 1
- .addColumn("s_address", Type.TEXT) // 2
- .addColumn("s_nationkey", Type.INT4) // 3
- .addColumn("s_phone", Type.TEXT) // 4
- .addColumn("s_acctbal", Type.FLOAT8) // 5
- .addColumn("s_comment", Type.TEXT); // 6
- schemas.put(SUPPLIER, supplier);
+ schemas.put(PARTSUPP, SchemaBuilder.builder()
+ .add("ps_partkey", Type.INT4) // 0
+ .add("ps_suppkey", Type.INT4) // 1
+ .add("ps_availqty", Type.INT4) // 2
+ .add("ps_supplycost", Type.FLOAT8) // 3
+ .add("ps_comment", Type.TEXT) // 4
+ .build());
+
+
+ schemas.put(SUPPLIER, SchemaBuilder.builder()
+ .add("s_suppkey", Type.INT4) // 0
+ .add("s_name", Type.TEXT) // 1
+ .add("s_address", Type.TEXT) // 2
+ .add("s_nationkey", Type.INT4) // 3
+ .add("s_phone", Type.TEXT) // 4
+ .add("s_acctbal", Type.FLOAT8) // 5
+ .add("s_comment", Type.TEXT) // 6
+ .build());
}
public void loadOutSchema() {
- Schema q2 = SchemaFactory.newV1()
- .addColumn("s_acctbal", Type.FLOAT8)
- .addColumn("s_name", Type.TEXT)
- .addColumn("n_name", Type.TEXT)
- .addColumn("p_partkey", Type.INT4)
- .addColumn("p_mfgr", Type.TEXT)
- .addColumn("s_address", Type.TEXT)
- .addColumn("s_phone", Type.TEXT)
- .addColumn("s_comment", Type.TEXT);
+ Schema q2 = SchemaBuilder.builder()
+ .add("s_acctbal", Type.FLOAT8)
+ .add("s_name", Type.TEXT)
+ .add("n_name", Type.TEXT)
+ .add("p_partkey", Type.INT4)
+ .add("p_mfgr", Type.TEXT)
+ .add("s_address", Type.TEXT)
+ .add("s_phone", Type.TEXT)
+ .add("s_comment", Type.TEXT)
+ .build();
outSchemas.put("q2", q2);
}
@@ -208,8 +216,8 @@ public class TPCH extends BenchmarkSet {
PartitionMethodDesc partitionMethodDesc = null;
if (tableName.equals(CUSTOMER_PARTS)) {
- Schema expressionSchema = SchemaFactory.newV1();
- expressionSchema.addColumn("c_nationkey", TajoDataTypes.Type.INT4);
+ Schema expressionSchema = SchemaBuilder.builder()
+ .add("c_nationkey", TajoDataTypes.Type.INT4).build();
partitionMethodDesc = new PartitionMethodDesc(
tajo.getCurrentDatabase(),
CUSTOMER_PARTS,
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core/src/main/java/org/apache/tajo/engine/planner/global/builder/DistinctGroupbyBuilder.java
----------------------------------------------------------------------
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 eb8f7ad..720c337 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.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.tajo.catalog.Column;
import org.apache.tajo.catalog.Schema;
+import org.apache.tajo.catalog.SchemaBuilder;
import org.apache.tajo.catalog.SchemaFactory;
import org.apache.tajo.catalog.proto.CatalogProtos.SortSpecProto;
import org.apache.tajo.common.TajoDataTypes.Type;
@@ -645,18 +646,17 @@ public class DistinctGroupbyBuilder {
//Set SecondStage ColumnId and Input schema
secondStageDistinctNode.setResultColumnIds(secondStageColumnIds);
- Schema secondStageInSchema = SchemaFactory.newV1();
+ SchemaBuilder secondStageInSchema = SchemaBuilder.uniqueNameBuilder();
+
//TODO merged tuple schema
int index = 0;
for(GroupbyNode eachNode: secondStageDistinctNode.getSubPlans()) {
eachNode.setInSchema(firstStageDistinctNode.getOutSchema());
for (Column column: eachNode.getOutSchema().getRootColumns()) {
- if (secondStageInSchema.getColumn(column) == null) {
- secondStageInSchema.addColumn(column);
- }
+ secondStageInSchema.add(column);
}
}
- secondStageDistinctNode.setInSchema(secondStageInSchema);
+ secondStageDistinctNode.setInSchema(secondStageInSchema.build());
return new DistinctGroupbyNode[]{firstStageDistinctNode, secondStageDistinctNode};
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/BSTIndexScanExec.java
----------------------------------------------------------------------
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 8002989..3be1d36 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
@@ -20,10 +20,7 @@ package org.apache.tajo.engine.planner.physical;
import org.apache.hadoop.fs.Path;
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.*;
import org.apache.tajo.catalog.proto.CatalogProtos;
import org.apache.tajo.catalog.proto.CatalogProtos.FragmentProto;
import org.apache.tajo.catalog.statistics.TableStats;
@@ -43,6 +40,7 @@ import java.io.IOException;
import java.net.URI;
import java.util.HashSet;
import java.util.List;
+import java.util.Optional;
import java.util.Set;
public class BSTIndexScanExec extends ScanExec {
@@ -94,18 +92,19 @@ public class BSTIndexScanExec extends ScanExec {
}
private static Schema mergeSubSchemas(Schema originalSchema, Schema subSchema, List<Target> targets, EvalNode qual) {
- Schema mergedSchema = SchemaFactory.newV1();
Set<Column> qualAndTargets = new HashSet<>();
qualAndTargets.addAll(EvalTreeUtil.findUniqueColumns(qual));
for (Target target : targets) {
qualAndTargets.addAll(EvalTreeUtil.findUniqueColumns(target.getEvalTree()));
}
+
+ SchemaBuilder mergedSchema = SchemaBuilder.builder();
for (Column column : originalSchema.getRootColumns()) {
if (subSchema.contains(column) || qualAndTargets.contains(column)) {
- mergedSchema.addColumn(column);
+ mergedSchema.add(column);
}
}
- return mergedSchema;
+ return mergedSchema.build();
}
@Override
@@ -127,33 +126,12 @@ public class BSTIndexScanExec extends ScanExec {
public void init() throws IOException {
reader.init();
- Schema projected;
-
- // in the case where projected column or expression are given
- // the target can be an empty list.
- if (plan.hasTargets()) {
- projected = SchemaFactory.newV1();
- Set<Column> columnSet = new HashSet<>();
-
- if (plan.hasQual()) {
- columnSet.addAll(EvalTreeUtil.findUniqueColumns(qual));
- }
-
- for (Target t : plan.getTargets()) {
- columnSet.addAll(EvalTreeUtil.findUniqueColumns(t.getEvalTree()));
- }
-
- for (Column column : inSchema.getAllColumns()) {
- if (columnSet.contains(column)) {
- projected.addColumn(column);
- }
- }
-
- } else {
- // no any projected columns, meaning that all columns should be projected.
- // TODO - this implicit rule makes code readability bad. So, we should remove it later
- projected = outSchema;
- }
+ final Schema projected = SeqScanExec.getProjectSchema(
+ plan.getInSchema(),
+ plan.getOutSchema(),
+ Optional.ofNullable(plan.getTargets()),
+ Optional.ofNullable(plan.getQual())
+ );
initScanner(projected);
super.init();
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/ColPartitionStoreExec.java
----------------------------------------------------------------------
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 1142095..83a9ff8 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,7 +25,10 @@ import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.tajo.SessionVars;
-import org.apache.tajo.catalog.*;
+import org.apache.tajo.catalog.CatalogUtil;
+import org.apache.tajo.catalog.Column;
+import org.apache.tajo.catalog.SchemaBuilder;
+import org.apache.tajo.catalog.TableMeta;
import org.apache.tajo.catalog.proto.CatalogProtos.PartitionDescProto;
import org.apache.tajo.catalog.proto.CatalogProtos.PartitionKeyProto;
import org.apache.tajo.catalog.statistics.TableStats;
@@ -33,7 +36,10 @@ import org.apache.tajo.plan.logical.CreateTableNode;
import org.apache.tajo.plan.logical.InsertNode;
import org.apache.tajo.plan.logical.NodeType;
import org.apache.tajo.plan.logical.StoreTableNode;
-import org.apache.tajo.storage.*;
+import org.apache.tajo.storage.Appender;
+import org.apache.tajo.storage.FileTablespace;
+import org.apache.tajo.storage.StorageUtil;
+import org.apache.tajo.storage.TablespaceManager;
import org.apache.tajo.unit.StorageUnit;
import org.apache.tajo.util.StringUtils;
import org.apache.tajo.worker.TaskAttemptContext;
@@ -84,7 +90,7 @@ public abstract class ColPartitionStoreExec extends UnaryPhysicalExec {
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 = SchemaFactory.newV1(removedPartitionColumns);
+ this.outSchema = SchemaBuilder.builder().addAll(removedPartitionColumns).build();
}
keyIds = new int[keyNum];
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/SeqScanExec.java
----------------------------------------------------------------------
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 04b23f8..dc48f3f 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
@@ -36,14 +36,13 @@ import org.apache.tajo.plan.logical.ScanNode;
import org.apache.tajo.plan.rewrite.rules.PartitionedTableRewriter;
import org.apache.tajo.plan.util.PlannerUtil;
import org.apache.tajo.storage.*;
+import org.apache.tajo.storage.Scanner;
import org.apache.tajo.storage.fragment.FileFragment;
import org.apache.tajo.storage.fragment.FragmentConvertor;
import org.apache.tajo.worker.TaskAttemptContext;
import java.io.IOException;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
public class SeqScanExec extends ScanExec {
@@ -136,36 +135,37 @@ public class SeqScanExec extends ScanExec {
}
}
- public Schema getProjectSchema() {
- Schema projected;
+ public static Schema getProjectSchema(Schema inSchema, Schema outSchema,
+ Optional<Collection<Target>> targets,
+ Optional<EvalNode> qual) {
+ SchemaBuilder projected = SchemaBuilder.builder();
// in the case where projected column or expression are given
// the target can be an empty list.
- if (plan.hasTargets()) {
- projected = SchemaFactory.newV1();
+ if (targets.isPresent()) {
Set<Column> columnSet = new HashSet<>();
- if (plan.hasQual()) {
- columnSet.addAll(EvalTreeUtil.findUniqueColumns(qual));
+ if (qual.isPresent()) {
+ columnSet.addAll(EvalTreeUtil.findUniqueColumns(qual.get()));
}
- for (Target t : plan.getTargets()) {
+ for (Target t : targets.get()) {
columnSet.addAll(EvalTreeUtil.findUniqueColumns(t.getEvalTree()));
}
for (Column column : inSchema.getAllColumns()) {
if (columnSet.contains(column)) {
- projected.addColumn(column);
+ projected.add(column);
}
}
+ return projected.build();
+
} else {
// no any projected columns, meaning that all columns should be projected.
// TODO - this implicit rule makes code readability bad. So, we should remove it later
- projected = outSchema;
+ return outSchema;
}
-
- return projected;
}
private void initScanIterator() {
@@ -187,7 +187,12 @@ public class SeqScanExec extends ScanExec {
scanIt = new EmptyScanIterator();
} else {
- Schema projectedFields = getProjectSchema();
+ Schema projectedFields = getProjectSchema(
+ plan.getInSchema(),
+ plan.getOutSchema(),
+ Optional.ofNullable(plan.getTargets()),
+ Optional.ofNullable(plan.getQual())
+ );
initScanner(projectedFields);
// See Scanner.isProjectable() method. Depending on the result of isProjectable(),
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core/src/main/java/org/apache/tajo/engine/planner/physical/WindowAggExec.java
----------------------------------------------------------------------
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 04a4a19..4b4bfeb 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,7 +21,7 @@ package org.apache.tajo.engine.planner.physical;
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.SchemaBuilder;
import org.apache.tajo.catalog.SortSpec;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.plan.expr.EvalNode;
@@ -120,7 +120,7 @@ public class WindowAggExec extends UnaryPhysicalExec {
endCurrentRowFlags = new boolean[functions.length];
List<Column> additionalSortKeyColumns = Lists.newArrayList();
- Schema rewrittenSchema = SchemaFactory.newV1(outSchema);
+ Schema rewrittenSchema = SchemaBuilder.builder().addAll(outSchema.getRootColumns()).build();
for (int i = 0; i < functions.length; i++) {
WindowSpec.WindowEndBound endBound = functions[i].getWindowFrame().getEndBound();
switch (endBound.getBoundType()) {
@@ -161,11 +161,13 @@ public class WindowAggExec extends UnaryPhysicalExec {
}
sortKeyColumns = new int[additionalSortKeyColumns.size()];
- schemaForOrderBy = SchemaFactory.newV1(outSchema);
+ SchemaBuilder schemaForOrderByBld = SchemaBuilder.builder();
+ schemaForOrderByBld.addAll(outSchema.getRootColumns());
for (int i = 0; i < additionalSortKeyColumns.size(); i++) {
sortKeyColumns[i] = i;
- schemaForOrderBy.addColumn(additionalSortKeyColumns.get(i));
+ schemaForOrderByBld.add(additionalSortKeyColumns.get(i));
}
+ schemaForOrderBy = schemaForOrderByBld.build();
} else {
functions = new WindowFunctionEval[0];
functionNum = 0;
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core/src/main/java/org/apache/tajo/master/exec/ExplainPlanPreprocessorForTest.java
----------------------------------------------------------------------
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 47d4b4f..c16e95b 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 @@ package org.apache.tajo.master.exec;
import org.apache.hadoop.fs.Path;
import org.apache.tajo.catalog.Column;
import org.apache.tajo.catalog.Schema;
+import org.apache.tajo.catalog.SchemaBuilder;
import org.apache.tajo.catalog.SchemaFactory;
import org.apache.tajo.exception.TajoException;
import org.apache.tajo.plan.LogicalPlan;
@@ -155,11 +156,7 @@ public class ExplainPlanPreprocessorForTest {
Column[] columns = schema.toArray();
Arrays.sort(columns, columnComparator);
- Schema sorted = SchemaFactory.newV1();
- for (Column col : columns) {
- sorted.addColumn(col);
- }
- return sorted;
+ return SchemaBuilder.builder().addAll(columns).build();
}
private EvalNode sortQual(EvalNode qual) {
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core/src/main/java/org/apache/tajo/master/exec/QueryExecutor.java
----------------------------------------------------------------------
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 da11bd8..1a51d98 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,8 +218,8 @@ public class QueryExecutor {
explainStr = PlannerUtil.buildExplainString(plan.getRootBlock().getRoot());
}
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("explain", TajoDataTypes.Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("explain", TajoDataTypes.Type.TEXT).build();
SerializedResultSet.Builder serializedResBuilder = SerializedResultSet.newBuilder();
MemoryRowBlock rowBlock = new MemoryRowBlock(SchemaUtil.toDataTypes(schema));
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core/src/main/java/org/apache/tajo/querymaster/Repartitioner.java
----------------------------------------------------------------------
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 8fdd6ce..2a688e5 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 class Repartitioner {
ExecutionBlock sampleChildBlock = masterPlan.getChild(stage.getId(), 0);
SortNode sortNode = PlannerUtil.findTopNode(sampleChildBlock.getPlan(), NodeType.SORT);
SortSpec [] sortSpecs = sortNode.getSortKeys();
- Schema sortSchema = SchemaFactory.newV1(channel.getShuffleKeys());
+ Schema sortSchema = SchemaBuilder.builder().addAll(channel.getShuffleKeys()).build();
TupleRange[] ranges;
int determinedTaskNum;
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-jdbc/src/main/java/org/apache/tajo/jdbc/TajoDatabaseMetaData.java
----------------------------------------------------------------------
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 f4bf2b0..e3cf73a 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,21 +605,22 @@ public class TajoDatabaseMetaData implements DatabaseMetaData {
, new ArrayList<MetaDataTuple>());
}
- 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
- .addColumn("PKCOLUMN_NAME", Type.VARCHAR) // 3
- .addColumn("FKTABLE_CAT", Type.VARCHAR) // 4
- .addColumn("FKTABLE_SCHEM", Type.VARCHAR) // 5
- .addColumn("FKTABLE_NAME", Type.VARCHAR) // 6
- .addColumn("FKCOLUMN_NAME", Type.VARCHAR) // 7
- .addColumn("KEY_SEQ", Type.INT2) // 8
- .addColumn("UPDATE_RULE", Type.INT2) // 9
- .addColumn("DELETE_RULE", Type.INT2) // 10
- .addColumn("FK_NAME", Type.VARCHAR) // 11
- .addColumn("PK_NAME", Type.VARCHAR) // 12
- .addColumn("DEFERRABILITY", Type.INT2); // 13
+ private final static Schema importedExportedSchema = SchemaBuilder.builder()
+ .add("PKTABLE_CAT", Type.VARCHAR) // 0
+ .add("PKTABLE_SCHEM", Type.VARCHAR) // 1
+ .add("PKTABLE_NAME", Type.VARCHAR) // 2
+ .add("PKCOLUMN_NAME", Type.VARCHAR) // 3
+ .add("FKTABLE_CAT", Type.VARCHAR) // 4
+ .add("FKTABLE_SCHEM", Type.VARCHAR) // 5
+ .add("FKTABLE_NAME", Type.VARCHAR) // 6
+ .add("FKCOLUMN_NAME", Type.VARCHAR) // 7
+ .add("KEY_SEQ", Type.INT2) // 8
+ .add("UPDATE_RULE", Type.INT2) // 9
+ .add("DELETE_RULE", Type.INT2) // 10
+ .add("FK_NAME", Type.VARCHAR) // 11
+ .add("PK_NAME", Type.VARCHAR) // 12
+ .add("DEFERRABILITY", Type.INT2) // 13
+ .build();
@Override
public ResultSet getImportedKeys(String catalog, String schema, String table) throws SQLException {
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-jdbc/src/test/java/org/apache/tajo/jdbc/TestResultSet.java
----------------------------------------------------------------------
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 0fbb9aa..0e9b2a7 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
@@ -25,12 +25,12 @@ import com.google.protobuf.ByteString;
import org.apache.hadoop.fs.Path;
import org.apache.tajo.IntegrationTest;
import org.apache.tajo.TajoConstants;
+import org.apache.tajo.TajoProtos.CodecType;
import org.apache.tajo.TajoTestingCluster;
import org.apache.tajo.TpchTestBase;
import org.apache.tajo.catalog.*;
import org.apache.tajo.catalog.statistics.TableStats;
import org.apache.tajo.client.TajoClient;
-import org.apache.tajo.TajoProtos.CodecType;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.conf.TajoConf;
import org.apache.tajo.datum.DatumFactory;
@@ -69,9 +69,10 @@ public class TestResultSet {
conf = util.getConfiguration();
sm = TablespaceManager.getDefault();
- scoreSchema = SchemaFactory.newV1();
- scoreSchema.addColumn("deptname", Type.TEXT);
- scoreSchema.addColumn("score", Type.INT4);
+ scoreSchema = SchemaBuilder.builder()
+ .add("deptname", Type.TEXT)
+ .add("score", Type.INT4)
+ .build();
scoreMeta = CatalogUtil.newTableMeta("TEXT");
rowBlock = new MemoryRowBlock(SchemaUtil.toDataTypes(scoreSchema));
TableStats stats = new TableStats();
@@ -197,10 +198,11 @@ public class TestResultSet {
String query = "select col1, col2, col3 from " + tableName;
String [] table = new String[] {tableName};
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", Type.DATE);
- schema.addColumn("col2", Type.TIME);
- schema.addColumn("col3", Type.TIMESTAMP);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", Type.DATE)
+ .add("col2", Type.TIME)
+ .add("col3", Type.TIMESTAMP)
+ .build();
Schema [] schemas = new Schema[] {schema};
String [] data = {
"2014-01-01|01:00:00|2014-01-01 01:00:00"
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-jdbc/src/test/java/org/apache/tajo/jdbc/TestTajoJdbcNegative.java
----------------------------------------------------------------------
diff --git a/tajo-jdbc/src/test/java/org/apache/tajo/jdbc/TestTajoJdbcNegative.java b/tajo-jdbc/src/test/java/org/apache/tajo/jdbc/TestTajoJdbcNegative.java
index 56755a5..07207dd 100644
--- a/tajo-jdbc/src/test/java/org/apache/tajo/jdbc/TestTajoJdbcNegative.java
+++ b/tajo-jdbc/src/test/java/org/apache/tajo/jdbc/TestTajoJdbcNegative.java
@@ -169,7 +169,7 @@ public class TestTajoJdbcNegative extends QueryTestCaseBase {
try (Statement stmt = conn.createStatement()) {
stmt.executeUpdate("CREATE DATABASE IF NOT EXISTS TestTajoJdbcNegative");
- stmt.executeUpdate("CREATE TABLE TestTajoJdbcNegative.table123u8sd ( name RECORD(last TEXT, first TEXT) )");
+ stmt.executeUpdate("CREATE TABLE TestTajoJdbcNegative.table123u8sd ( name RECORD (last TEXT, first TEXT) )");
try (ResultSet resultSet = stmt.executeQuery("select name FROM TestTajoJdbcNegative.table123u8sd")) {
fail("Getting a record type field must be failed");
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java
----------------------------------------------------------------------
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 f791a3d..9176c2f 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
@@ -19,6 +19,7 @@
package org.apache.tajo.plan;
import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Function;
import com.google.common.base.Joiner;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
@@ -32,13 +33,13 @@ import org.apache.tajo.SessionVars;
import org.apache.tajo.algebra.*;
import org.apache.tajo.algebra.WindowSpec;
import org.apache.tajo.catalog.*;
-import org.apache.tajo.exception.*;
import org.apache.tajo.catalog.partition.PartitionMethodDesc;
import org.apache.tajo.catalog.proto.CatalogProtos;
import org.apache.tajo.catalog.proto.CatalogProtos.IndexMethod;
import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.conf.TajoConf;
import org.apache.tajo.datum.NullDatum;
+import org.apache.tajo.exception.*;
import org.apache.tajo.plan.LogicalPlan.QueryBlock;
import org.apache.tajo.plan.algebra.BaseAlgebraVisitor;
import org.apache.tajo.plan.expr.*;
@@ -52,6 +53,7 @@ import org.apache.tajo.util.KeyValueSet;
import org.apache.tajo.util.Pair;
import org.apache.tajo.util.StringUtils;
+import javax.annotation.Nullable;
import java.net.URI;
import java.util.*;
@@ -1228,21 +1230,10 @@ public class LogicalPlanner extends BaseAlgebraVisitor<LogicalPlanner.PlanContex
}
private static Schema getNaturalJoinSchema(LogicalNode left, LogicalNode right) {
- Schema joinSchema = SchemaFactory.newV1();
- Schema commons = SchemaUtil.getNaturalJoinColumns(left.getOutSchema(), right.getOutSchema());
- joinSchema.addColumns(commons);
- for (Column c : left.getOutSchema().getRootColumns()) {
- if (!joinSchema.contains(c.getQualifiedName())) {
- joinSchema.addColumn(c);
- }
- }
-
- for (Column c : right.getOutSchema().getRootColumns()) {
- if (!joinSchema.contains(c.getQualifiedName())) {
- joinSchema.addColumn(c);
- }
- }
- return joinSchema;
+ SchemaBuilder joinSchema = SchemaBuilder.uniqueNameBuilder();
+ joinSchema.addAll(left.getOutSchema().getRootColumns());
+ joinSchema.addAll(right.getOutSchema().getRootColumns());
+ return joinSchema.build();
}
private static EvalNode getNaturalJoinCondition(JoinNode joinNode) {
@@ -1677,7 +1668,7 @@ public class LogicalPlanner extends BaseAlgebraVisitor<LogicalPlanner.PlanContex
// See PreLogicalPlanVerifier.visitInsert.
// It guarantees that the equivalence between the numbers of target and projected columns.
ColumnReferenceExpr [] targets = expr.getTargetColumns();
- Schema targetColumns = SchemaFactory.newV1();
+ final SchemaBuilder targetColumnsBld = SchemaBuilder.builder();
for (ColumnReferenceExpr target : targets) {
Column targetColumn = desc.getLogicalSchema().getColumn(target.getCanonicalName().replace(".", "/"));
@@ -1685,8 +1676,9 @@ public class LogicalPlanner extends BaseAlgebraVisitor<LogicalPlanner.PlanContex
throw makeSyntaxError("column '" + target + "' of relation '" + desc.getName() + "' does not exist");
}
- targetColumns.addColumn(targetColumn);
+ targetColumnsBld.add(targetColumn);
}
+ final Schema targetColumns = targetColumnsBld.build();
insertNode.setTargetSchema(targetColumns);
insertNode.setOutSchema(targetColumns);
buildProjectedInsert(context, insertNode);
@@ -1697,11 +1689,11 @@ public class LogicalPlanner extends BaseAlgebraVisitor<LogicalPlanner.PlanContex
Schema tableSchema = desc.getLogicalSchema();
Schema projectedSchema = insertNode.getChild().getOutSchema();
- Schema targetColumns = SchemaFactory.newV1();
+ SchemaBuilder targetColumns = SchemaBuilder.builder();
for (int i = 0; i < projectedSchema.size(); i++) {
- targetColumns.addColumn(tableSchema.getColumn(i));
+ targetColumns.add(tableSchema.getColumn(i));
}
- insertNode.setTargetSchema(targetColumns);
+ insertNode.setTargetSchema(targetColumns.build());
buildProjectedInsert(context, insertNode);
}
@@ -1956,15 +1948,16 @@ public class LogicalPlanner extends BaseAlgebraVisitor<LogicalPlanner.PlanContex
queryOutputSchema.size() < partitionExpressionSchema.size()) {
throw makeSyntaxError("Partition columns cannot be more than table columns.");
}
- Schema tableSchema = SchemaFactory.newV1();
+ SchemaBuilder tableSchemaBld = SchemaBuilder.builder();
for (int i = 0; i < queryOutputSchema.size() - partitionExpressionSchema.size(); i++) {
- tableSchema.addColumn(queryOutputSchema.getColumn(i));
+ tableSchemaBld.add(queryOutputSchema.getColumn(i));
}
+ Schema tableSchema = tableSchemaBld.build();
createTableNode.setOutSchema(tableSchema);
createTableNode.setTableSchema(tableSchema);
} else {
// Convert the schema of subquery into the target table's one.
- Schema schema = SchemaFactory.newV1(subQuery.getOutSchema());
+ Schema schema = SchemaBuilder.builder().addAll(subQuery.getOutSchema().getRootColumns()).build();
schema.setQualifier(createTableNode.getTableName());
createTableNode.setOutSchema(schema);
createTableNode.setTableSchema(schema);
@@ -2040,13 +2033,12 @@ public class LogicalPlanner extends BaseAlgebraVisitor<LogicalPlanner.PlanContex
* @return schema transformed from table definition elements
*/
private Schema convertColumnsToSchema(ColumnDefinition[] elements) {
- Schema schema = SchemaFactory.newV1();
-
- for (ColumnDefinition columnDefinition: elements) {
- schema.addColumn(convertColumn(columnDefinition));
- }
-
- return schema;
+ return SchemaBuilder.builder().addAll(elements, new Function<ColumnDefinition, Column>() {
+ @Override
+ public Column apply(@Nullable ColumnDefinition input) {
+ return convertColumn(input);
+ }
+ }).build();
}
/**
@@ -2056,13 +2048,12 @@ public class LogicalPlanner extends BaseAlgebraVisitor<LogicalPlanner.PlanContex
* @return schema transformed from table definition elements
*/
private static Schema convertTableElementsSchema(ColumnDefinition[] elements) {
- Schema schema = SchemaFactory.newV1();
-
- for (ColumnDefinition columnDefinition: elements) {
- schema.addColumn(convertColumn(columnDefinition));
- }
-
- return schema;
+ return SchemaBuilder.builder().addAll(elements, new Function<ColumnDefinition, Column>() {
+ @Override
+ public Column apply(@Nullable ColumnDefinition input) {
+ return convertColumn(input);
+ }
+ }).build();
}
/**
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-plan/src/main/java/org/apache/tajo/plan/expr/EvalTreeUtil.java
----------------------------------------------------------------------
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 31cd1c6..c71dba2 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
@@ -18,16 +18,14 @@
package org.apache.tajo.plan.expr;
+import com.google.common.base.Function;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import org.apache.tajo.algebra.ColumnReferenceExpr;
import org.apache.tajo.algebra.NamedExpr;
import org.apache.tajo.algebra.OpType;
import org.apache.tajo.annotation.Nullable;
-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.catalog.*;
import org.apache.tajo.common.TajoDataTypes.DataType;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.exception.TajoInternalError;
@@ -143,16 +141,15 @@ public class EvalTreeUtil {
node.postOrder(finder);
return finder.getColumnRefs();
}
-
+
public static Schema getSchemaByTargets(Schema inputSchema, List<Target> targets) {
- Schema schema = SchemaFactory.newV1();
- for (Target target : targets) {
- schema.addColumn(
- target.hasAlias() ? target.getAlias() : target.getEvalTree().getName(),
- getDomainByExpr(inputSchema, target.getEvalTree()));
- }
-
- return schema;
+ return SchemaBuilder.builder().addAll(targets, new Function<Target, Column>() {
+ @Override
+ public Column apply(@javax.annotation.Nullable Target target) {
+ return new Column(target.hasAlias() ? target.getAlias() : target.getEvalTree().getName(),
+ getDomainByExpr(inputSchema, target.getEvalTree()));
+ }
+ }).build();
}
public static String columnsToStr(Collection<Column> columns) {
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-plan/src/main/java/org/apache/tajo/plan/function/python/PythonScriptEngine.java
----------------------------------------------------------------------
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 8bccdc4..2e2e7b5 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 @@ public class PythonScriptEngine extends TajoScriptEngine {
private final TableMeta pipeMeta = CatalogUtil.newTableMeta("TEXT");
private final Tuple EMPTY_INPUT = new VTuple(0);
- private final Schema EMPTY_SCHEMA = SchemaFactory.newV1();
+ private final Schema EMPTY_SCHEMA = SchemaBuilder.builder().build();
public PythonScriptEngine(FunctionDesc functionDesc) {
if (!functionDesc.getInvocation().hasPython() && !functionDesc.getInvocation().hasPythonAggregation()) {
@@ -388,27 +388,31 @@ public class PythonScriptEngine extends TajoScriptEngine {
private void setSchema() {
if (invocationDesc.isScalarFunction()) {
TajoDataTypes.DataType[] paramTypes = functionSignature.getParamTypes();
- inSchema = SchemaFactory.newV1();
+ SchemaBuilder inSchemaBuilder = SchemaBuilder.builder();
for (int i = 0; i < paramTypes.length; i++) {
- inSchema.addColumn(new Column("in_" + i, paramTypes[i]));
+ inSchemaBuilder.add(new Column("in_" + i, paramTypes[i]));
}
- outSchema = SchemaFactory.newV1(new Column[]{new Column("out", functionSignature.getReturnType())});
+ inSchema = inSchemaBuilder.build();
+ outSchema = SchemaBuilder.builder()
+ .addAll(new Column[]{new Column("out", functionSignature.getReturnType())})
+ .build();
} else {
// UDAF
if (firstPhase) {
// first phase
TajoDataTypes.DataType[] paramTypes = functionSignature.getParamTypes();
- inSchema = SchemaFactory.newV1();
+ SchemaBuilder inSchemaBuilder = SchemaBuilder.builder();
for (int i = 0; i < paramTypes.length; i++) {
- inSchema.addColumn(new Column("in_" + i, paramTypes[i]));
+ inSchemaBuilder.add(new Column("in_" + i, paramTypes[i]));
}
- outSchema = SchemaFactory.newV1(new Column[]{new Column("json", TajoDataTypes.Type.TEXT)});
+ inSchema = inSchemaBuilder.build();
+ outSchema = SchemaBuilder.builder().add(new Column("json", TajoDataTypes.Type.TEXT)).build();
} else if (lastPhase) {
- inSchema = SchemaFactory.newV1(new Column[]{new Column("json", TajoDataTypes.Type.TEXT)});
- outSchema = SchemaFactory.newV1(new Column[]{new Column("out", functionSignature.getReturnType())});
+ inSchema = SchemaBuilder.builder().add(new Column("json", TajoDataTypes.Type.TEXT)).build();
+ outSchema = SchemaBuilder.builder().add(new Column("out", functionSignature.getReturnType())).build();
} else {
// intermediate phase
- inSchema = outSchema = SchemaFactory.newV1(new Column[]{new Column("json", TajoDataTypes.Type.TEXT)});
+ inSchema = outSchema = SchemaBuilder.builder().add(new Column("json", TajoDataTypes.Type.TEXT)).build();
}
}
projectionCols = new int[outSchema.size()];
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-plan/src/main/java/org/apache/tajo/plan/logical/CreateTableNode.java
----------------------------------------------------------------------
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 3fed563..bb24b22 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
@@ -22,6 +22,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.catalog.SchemaUtil;
import org.apache.tajo.plan.PlanString;
import org.apache.tajo.util.TUtil;
@@ -42,8 +43,8 @@ public class CreateTableNode extends StoreTableNode implements Cloneable {
public Schema getLogicalSchema() {
if (hasPartition()) {
- Schema logicalSchema = SchemaFactory.newV1(tableSchema);
- logicalSchema.addColumns(getPartitionMethod().getExpressionSchema());
+ Schema logicalSchema = SchemaUtil.merge(tableSchema, getPartitionMethod().getExpressionSchema());
+ logicalSchema.setQualifier(tableName);
return logicalSchema;
} else {
return tableSchema;
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-plan/src/main/java/org/apache/tajo/plan/logical/InsertNode.java
----------------------------------------------------------------------
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 a993d64..de99800 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
@@ -19,9 +19,7 @@
package org.apache.tajo.plan.logical;
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;
@@ -124,9 +122,9 @@ public class InsertNode extends StoreTableNode implements Cloneable {
public Object clone() throws CloneNotSupportedException {
InsertNode insertNode = (InsertNode) super.clone();
insertNode.overwrite = overwrite;
- insertNode.tableSchema = SchemaFactory.newV1(tableSchema);
- insertNode.targetSchema = targetSchema != null ? SchemaFactory.newV1(targetSchema) : null;
- insertNode.projectedSchema = projectedSchema != null ? SchemaFactory.newV1(projectedSchema) : null;
+ insertNode.tableSchema = (Schema) tableSchema.clone();
+ insertNode.targetSchema = targetSchema != null ? (Schema) targetSchema.clone() : null;
+ insertNode.projectedSchema = projectedSchema != null ? (Schema) projectedSchema.clone() : null;
insertNode.uri = uri != null ? uri : null;
return insertNode;
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-plan/src/main/java/org/apache/tajo/plan/logical/ScanNode.java
----------------------------------------------------------------------
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 5427ba6..0729d6e 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
@@ -81,7 +81,7 @@ public class ScanNode extends RelationNode implements Projectable, SelectableNod
String qualifiedAlias = CatalogUtil.buildFQName(databaseName, alias);
this.setInSchema(tableDesc.getSchema());
this.getInSchema().setQualifier(qualifiedAlias);
- this.setOutSchema(SchemaFactory.newV1(getInSchema()));
+ this.setOutSchema(SchemaBuilder.builder().addAll(getInSchema().getRootColumns()).build());
logicalSchema = SchemaUtil.getQualifiedLogicalSchema(tableDesc, qualifiedAlias);
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/SelfDescSchemaBuildPhase.java
----------------------------------------------------------------------
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 c5ca1ef..60187d9 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
@@ -18,6 +18,7 @@
package org.apache.tajo.plan.rewrite;
+import com.google.common.base.Function;
import com.google.common.base.Objects;
import org.apache.tajo.SessionVars;
import org.apache.tajo.algebra.*;
@@ -43,6 +44,7 @@ import org.apache.tajo.util.TUtil;
import org.apache.tajo.util.graph.DirectedGraphVisitor;
import org.apache.tajo.util.graph.SimpleDirectedGraph;
+import javax.annotation.Nullable;
import java.util.*;
/**
@@ -401,7 +403,6 @@ public class SelfDescSchemaBuildPhase extends LogicalPlanPreprocessPhase {
private Schema buildSchemaFromColumnSet(Set<Column> columns) throws TajoException {
SchemaGraph schemaGraph = new SchemaGraph();
Set<ColumnVertex> rootVertexes = new HashSet<>();
- Schema schema = SchemaFactory.newV1();
Set<Column> simpleColumns = new HashSet<>();
List<Column> columnList = new ArrayList<>(columns);
@@ -446,21 +447,20 @@ public class SelfDescSchemaBuildPhase extends LogicalPlanPreprocessPhase {
}
}
+ SchemaBuilder schema = SchemaBuilder.uniqueNameBuilder();
// Build record columns
RecordColumnBuilder builder = new RecordColumnBuilder(schemaGraph);
for (ColumnVertex eachRoot : rootVertexes) {
schemaGraph.accept(null, eachRoot, builder);
- schema.addColumn(eachRoot.column);
+ schema.add(eachRoot.column);
}
// Add simple columns
for (Column eachColumn : simpleColumns) {
- if (!schema.contains(eachColumn)) {
- schema.addColumn(eachColumn);
- }
+ schema.add(eachColumn);
}
- return schema;
+ return schema.build();
}
private static class ColumnVertex {
@@ -523,11 +523,15 @@ public class SelfDescSchemaBuildPhase extends LogicalPlanPreprocessPhase {
if (graph.isLeaf(schemaVertex)) {
schemaVertex.column = new Column(schemaVertex.name, schemaVertex.type);
} else {
- Schema schema = SchemaFactory.newV1();
- for (ColumnVertex eachChild : graph.getChilds(schemaVertex)) {
- schema.addColumn(eachChild.column);
- }
- schemaVertex.column = new Column(schemaVertex.name, new TypeDesc(schema));
+ SchemaBuilder schema = SchemaBuilder.builder()
+ .addAll(graph.getChilds(schemaVertex), new Function<ColumnVertex, Column>() {
+ @Override
+ public Column apply(@Nullable ColumnVertex input) {
+ return input.column;
+ }
+ });
+
+ schemaVertex.column = new Column(schemaVertex.name, new TypeDesc(schema.build()));
}
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/IndexScanInfo.java
----------------------------------------------------------------------
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 26c27b3..2c197c2 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
@@ -18,11 +18,9 @@
package org.apache.tajo.plan.rewrite.rules;
+import com.google.common.base.Function;
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.*;
import org.apache.tajo.catalog.statistics.TableStats;
import org.apache.tajo.common.ProtoObject;
import org.apache.tajo.datum.Datum;
@@ -30,6 +28,7 @@ import org.apache.tajo.plan.serder.EvalNodeDeserializer;
import org.apache.tajo.plan.serder.EvalNodeSerializer;
import org.apache.tajo.plan.serder.PlanProto.SimplePredicateProto;
+import javax.annotation.Nullable;
import java.net.URI;
public class IndexScanInfo extends AccessPathInfo {
@@ -93,11 +92,13 @@ public class IndexScanInfo extends AccessPathInfo {
public IndexScanInfo(TableStats tableStats, IndexDesc indexDesc, SimplePredicate[] predicates) {
super(ScanTypeControl.INDEX_SCAN, tableStats);
this.indexPath = indexDesc.getIndexPath();
- keySchema = SchemaFactory.newV1();
this.predicates = predicates;
- for (SimplePredicate predicate : predicates) {
- keySchema.addColumn(predicate.getKeySortSpec().getSortKey());
- }
+ keySchema = SchemaBuilder.builder().addAll(predicates, new Function<SimplePredicate, Column>() {
+ @Override
+ public Column apply(@Nullable SimplePredicate p) {
+ return p.getKeySortSpec().getSortKey();
+ }
+ }).build();
}
public URI getIndexPath() {
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-plan/src/main/java/org/apache/tajo/plan/rewrite/rules/PartitionedTableRewriter.java
----------------------------------------------------------------------
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 00580ae..cf92ea0 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,10 +334,9 @@ public class PartitionedTableRewriter implements LogicalPlanRewriteRule {
TableDesc table = scanNode.getTableDesc();
PartitionMethodDesc partitionDesc = scanNode.getTableDesc().getPartitionMethod();
- Schema paritionValuesSchema = SchemaFactory.newV1();
- for (Column column : partitionDesc.getExpressionSchema().getRootColumns()) {
- paritionValuesSchema.addColumn(column);
- }
+ Schema paritionValuesSchema = SchemaBuilder.builder()
+ .addAll(partitionDesc.getExpressionSchema().getRootColumns())
+ .build();
Set<EvalNode> indexablePredicateSet = Sets.newHashSet();
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-plan/src/main/java/org/apache/tajo/plan/util/PlannerUtil.java
----------------------------------------------------------------------
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 eccd37a..ff3e3c8 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
@@ -18,16 +18,16 @@
package org.apache.tajo.plan.util;
+import com.google.common.base.Function;
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import org.apache.tajo.algebra.*;
import org.apache.tajo.annotation.Nullable;
import org.apache.tajo.catalog.*;
+import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.common.TajoDataTypes.DataType;
-import org.apache.tajo.exception.TajoException;
-import org.apache.tajo.exception.TajoInternalError;
-import org.apache.tajo.exception.UndefinedTableException;
+import org.apache.tajo.exception.*;
import org.apache.tajo.plan.LogicalPlan;
import org.apache.tajo.plan.Target;
import org.apache.tajo.plan.expr.*;
@@ -565,12 +565,12 @@ public class PlannerUtil {
}
public static Schema sortSpecsToSchema(SortSpec[] sortSpecs) {
- Schema schema = SchemaFactory.newV1();
- for (SortSpec spec : sortSpecs) {
- schema.addColumn(spec.getSortKey());
- }
-
- return schema;
+ return SchemaBuilder.builder().addAll(sortSpecs, new Function<SortSpec, Column>() {
+ @Override
+ public Column apply(@javax.annotation.Nullable SortSpec s) {
+ return s.getSortKey();
+ }
+ }).build();
}
public static SortSpec[][] getSortKeysFromJoinQual(EvalNode joinQual, Schema outer, Schema inner) {
@@ -656,21 +656,26 @@ public class PlannerUtil {
}
public static Schema targetToSchema(List<Target> targets) {
- Schema schema = SchemaFactory.newV1();
+ SchemaBuilder schema = SchemaBuilder.uniqueNameBuilder();
for (Target t : targets) {
DataType type = t.getEvalTree().getValueType();
+
+ // hack to avoid projecting record type.
+ if (type.getType() == TajoDataTypes.Type.RECORD) {
+ throw new TajoRuntimeException(new NotImplementedException("record projection"));
+ }
+
String name;
if (t.hasAlias()) {
name = t.getAlias();
} else {
name = t.getEvalTree().getName();
}
- if (!schema.containsByQualifiedName(name)) {
- schema.addColumn(name, type);
- }
+
+ schema.add(name, type);
}
- return schema;
+ return schema.build();
}
/**
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-plan/src/test/java/org/apache/tajo/plan/TestLogicalNode.java
----------------------------------------------------------------------
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 f3acb00..3e44e3b 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,7 +22,7 @@ import org.apache.hadoop.fs.Path;
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.catalog.SchemaBuilder;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.plan.logical.GroupbyNode;
import org.apache.tajo.plan.logical.JoinNode;
@@ -36,10 +36,11 @@ public class TestLogicalNode {
@Test
public void testEquals() {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("id", Type.INT4);
- schema.addColumn("name", Type.TEXT);
- schema.addColumn("age", Type.INT2);
+ Schema schema = SchemaBuilder.builder()
+ .add("id", Type.INT4)
+ .add("name", Type.TEXT)
+ .add("age", Type.INT2)
+ .build();
GroupbyNode groupbyNode = new GroupbyNode(0);
groupbyNode.setGroupingColumns(new Column[]{schema.getColumn(1), schema.getColumn(2)});
ScanNode scanNode = new ScanNode(0);
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/MergeScanner.java
----------------------------------------------------------------------
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 ec20aca..1fa6214 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,7 +21,7 @@ package org.apache.tajo.storage;
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.SchemaBuilder;
import org.apache.tajo.catalog.TableMeta;
import org.apache.tajo.catalog.statistics.ColumnStats;
import org.apache.tajo.catalog.statistics.TableStats;
@@ -166,7 +166,7 @@ public class MergeScanner implements Scanner {
@Override
public void setTarget(Column[] targets) {
- this.target = SchemaFactory.newV1(targets);
+ this.target = SchemaBuilder.builder().addAll(targets).build();
}
@Override
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/TupleRange.java
----------------------------------------------------------------------
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 560e642..be30fe0 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
@@ -18,10 +18,11 @@
package org.apache.tajo.storage;
+import com.google.common.base.Function;
import com.google.common.base.Objects;
-import org.apache.tajo.catalog.Schema;
-import org.apache.tajo.catalog.SchemaFactory;
-import org.apache.tajo.catalog.SortSpec;
+import org.apache.tajo.catalog.*;
+
+import javax.annotation.Nullable;
/**
* It represents a pair of start and end tuples.
@@ -39,12 +40,12 @@ public class TupleRange implements Comparable<TupleRange>, Cloneable {
}
public static Schema sortSpecsToSchema(SortSpec[] sortSpecs) {
- Schema schema = SchemaFactory.newV1();
- for (SortSpec spec : sortSpecs) {
- schema.addColumn(spec.getSortKey());
- }
-
- return schema;
+ return SchemaBuilder.builder().addAll(sortSpecs, new Function<SortSpec, Column>() {
+ @Override
+ public Column apply(@Nullable SortSpec input) {
+ return input.getSortKey();
+ }
+ }).build();
}
public void setStart(Tuple tuple) {
[5/6] tajo git commit: TAJO-2108: Refactor Schema to be immutable.
Posted by hy...@apache.org.
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalogAgainstCaseSensitivity.java
----------------------------------------------------------------------
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 f3933ff..6af2798 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,24 +334,20 @@ public class TestCatalogAgainstCaseSensitivity {
String databaseName = "TestDatabase1";
String tableName = "nested_Table";
- 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 = 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(
- SchemaFactory.newV1(new Column[]{
- new Column("CoL1", CatalogUtil.newSimpleDataType(Type.INT4)),
- new Column("RecoRd1", new TypeDesc(schema)),
- })
- ));
+ Schema schema = SchemaBuilder.builder()
+ .add("CoL1", CatalogUtil.newSimpleDataType(Type.INT4))
+ .add("CoL2", CatalogUtil.newSimpleDataType(Type.FLOAT4))
+ .add("CoL3", CatalogUtil.newSimpleDataType(Type.TEXT)).build();
+
+ Schema tableSchema = SchemaBuilder.builder()
+ .add("RecoRd1", new TypeDesc(schema))
+ .add("CoL1", CatalogUtil.newSimpleDataType(Type.INT4))
+ .add("CoL3", CatalogUtil.newSimpleDataType(Type.TEXT))
+ .add("RecoRd2", new TypeDesc(schema))
+ .add("RecoRd3", new TypeDesc(
+ SchemaBuilder.builder()
+ .add("CoL1", CatalogUtil.newSimpleDataType(Type.INT4))
+ .add("RecoRd1", new TypeDesc(schema)).build())).build();
TableDesc tableDesc = new TableDesc(
CatalogUtil.buildFQName(databaseName, tableName),
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalogExceptions.java
----------------------------------------------------------------------
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 c151e3b..8ba3d59 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,10 +115,11 @@ public class TestCatalogExceptions {
public void testCreateTableWithWrongUri() throws Exception {
// TODO: currently, wrong uri does not occur any exception.
String tableName = "wrongUri";
- 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);
+ Schema schema = SchemaBuilder.builder()
+ .add(CatalogUtil.buildFQName(tableName, "Column"), Type.BLOB)
+ .add(CatalogUtil.buildFQName(tableName, "column"), Type.INT4)
+ .add(CatalogUtil.buildFQName(tableName, "cOlumn"), Type.INT8)
+ .build();
Path path = new Path(CommonTestingUtil.getTestDir(), tableName);
catalog.createTable(
new TableDesc(
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestLinkedMetadataManager.java
----------------------------------------------------------------------
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 d381ebd..dece380 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",
- SchemaFactory.newV1(new Column[]{new Column("c1", Type.INT8)}),
+ SchemaBuilder.builder().addAll(new Column[]{new Column("c1", Type.INT8)}).build(),
"TEXT", new KeyValueSet(), URI.create("http://space1/x/table1")
);
static TableDesc TABLE2 = new TableDesc(
"table2",
- SchemaFactory.newV1(new Column[]{new Column("c1", Type.INT8)}),
+ SchemaBuilder.builder().addAll(new Column[]{new Column("c1", Type.INT8)}).build(),
"TEXT", new KeyValueSet(), URI.create("http://space1/x/table2")
);
static TableDesc TABLE3 = new TableDesc(
"table3",
- SchemaFactory.newV1(new Column[]{new Column("c1", Type.INT8)}),
+ SchemaBuilder.builder().addAll(new Column[]{new Column("c1", Type.INT8)}).build(),
"TEXT", new KeyValueSet(), URI.create("http://space1/x/table3")
);
static TableDesc TABLE4 = new TableDesc(
"table4",
- SchemaFactory.newV1(new Column[]{new Column("c1", Type.INT8)}),
+ SchemaBuilder.builder().addAll(new Column[]{new Column("c1", Type.INT8)}).build(),
"TEXT", new KeyValueSet(), URI.create("http://space1/x/table4")
);
@@ -211,7 +211,7 @@ public class TestLinkedMetadataManager {
public void testCreateTable() throws Exception {
TableDesc tb = new TableDesc(
"space1.errortable",
- SchemaFactory.newV1(),
+ SchemaBuilder.empty(),
new TableMeta("x", new KeyValueSet()),
URI.create("file:///"));
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-client/src/main/java/org/apache/tajo/client/TajoClientUtil.java
----------------------------------------------------------------------
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 733bcec..2fe67ed 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
@@ -23,7 +23,7 @@ import org.apache.tajo.QueryIdFactory;
import org.apache.tajo.SessionVars;
import org.apache.tajo.TajoProtos;
import org.apache.tajo.catalog.CatalogUtil;
-import org.apache.tajo.catalog.Schema;
+import org.apache.tajo.catalog.SchemaBuilder;
import org.apache.tajo.catalog.SchemaFactory;
import org.apache.tajo.catalog.TableDesc;
import org.apache.tajo.exception.QueryNotFoundException;
@@ -107,9 +107,9 @@ public class TajoClientUtil {
}
public static final ResultSet NULL_RESULT_SET =
- new TajoMemoryResultSet(QueryIdFactory.NULL_QUERY_ID, SchemaFactory.newV1(), null, null);
+ new TajoMemoryResultSet(QueryIdFactory.NULL_QUERY_ID, SchemaBuilder.empty(), null, null);
public static TajoMemoryResultSet createNullResultSet(QueryId queryId) {
- return new TajoMemoryResultSet(queryId, SchemaFactory.newV1(), null, null);
+ return new TajoMemoryResultSet(queryId, SchemaBuilder.empty(), null, null);
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-client/src/main/java/org/apache/tajo/jdbc/TajoMetaDataResultSet.java
----------------------------------------------------------------------
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 6e7092b..d73a713 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,7 +19,7 @@
package org.apache.tajo.jdbc;
import org.apache.tajo.catalog.Schema;
-import org.apache.tajo.catalog.SchemaFactory;
+import org.apache.tajo.catalog.SchemaBuilder;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.storage.Tuple;
@@ -36,13 +36,16 @@ public class TajoMetaDataResultSet extends TajoResultSetBase {
}
public TajoMetaDataResultSet(List<String> columns, List<Type> types, List<MetaDataTuple> values) {
- super(null, SchemaFactory.newV1(), null);
+ super(null, SchemaBuilder.empty(), null);
+
+ SchemaBuilder builder = SchemaBuilder.builder();
int index = 0;
if(columns != null) {
for(String columnName: columns) {
- schema.addColumn(columnName, types.get(index++));
+ builder.add(columnName, types.get(index++));
}
}
+ this.schema = builder.build();
setDataTuples(values);
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-cluster-tests/src/test/java/org/apache/tajo/BackendTestingUtil.java
----------------------------------------------------------------------
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 062db47..28605d3 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,7 +22,7 @@ import org.apache.hadoop.fs.FileSystem;
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.SchemaBuilder;
import org.apache.tajo.catalog.TableMeta;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.conf.TajoConf;
@@ -36,9 +36,10 @@ public class BackendTestingUtil {
public final static TableMeta mockupMeta;
static {
- mockupSchema = SchemaFactory.newV1();
- mockupSchema.addColumn("deptname", Type.TEXT);
- mockupSchema.addColumn("score", Type.INT4);
+ mockupSchema = SchemaBuilder.builder()
+ .add("deptname", Type.TEXT)
+ .add("score", Type.INT4)
+ .build();
mockupMeta = CatalogUtil.newTableMeta("TEXT");
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-common/src/main/java/org/apache/tajo/schema/Identifier.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/schema/Identifier.java b/tajo-common/src/main/java/org/apache/tajo/schema/Identifier.java
index 99fe6ba..d71dbdc 100644
--- a/tajo-common/src/main/java/org/apache/tajo/schema/Identifier.java
+++ b/tajo-common/src/main/java/org/apache/tajo/schema/Identifier.java
@@ -55,6 +55,22 @@ public class Identifier {
return sb.toString();
}
+ /**
+ * Raw string of an identifier
+ * @param policy Identifier Policy
+ * @return raw string
+ */
+ public String raw(IdentifierPolicy policy) {
+ StringBuilder sb = new StringBuilder();
+ if (quoted) {
+ appendByCase(sb, policy.storesQuotedIdentifierAs());
+ } else {
+ appendByCase(sb, policy.storesUnquotedIdentifierAs());
+ }
+
+ return sb.toString();
+ }
+
private void appendByCase(StringBuilder sb, IdentifierCase c) {
switch (c) {
case LowerCase:
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-common/src/main/java/org/apache/tajo/schema/QualifiedIdentifier.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/schema/QualifiedIdentifier.java b/tajo-common/src/main/java/org/apache/tajo/schema/QualifiedIdentifier.java
index b252d82..57317b5 100644
--- a/tajo-common/src/main/java/org/apache/tajo/schema/QualifiedIdentifier.java
+++ b/tajo-common/src/main/java/org/apache/tajo/schema/QualifiedIdentifier.java
@@ -20,6 +20,7 @@ package org.apache.tajo.schema;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Function;
+import com.google.common.collect.Collections2;
import com.google.common.collect.ImmutableList;
import org.apache.tajo.util.StringUtils;
@@ -44,6 +45,20 @@ public class QualifiedIdentifier {
});
}
+ /**
+ * Raw string of qualified identifier
+ * @param policy Identifier Policy
+ * @return raw string
+ */
+ public String raw(final IdentifierPolicy policy) {
+ return StringUtils.join(names, policy.getIdentifierSeperator(), new Function<Identifier, String>() {
+ @Override
+ public String apply(@Nullable Identifier identifier) {
+ return identifier.raw(policy);
+ }
+ });
+ }
+
@Override
public String toString() {
return displayString(DefaultPolicy());
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-common/src/main/java/org/apache/tajo/schema/Schema.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/schema/Schema.java b/tajo-common/src/main/java/org/apache/tajo/schema/Schema.java
index b939f30..dfd0b72 100644
--- a/tajo-common/src/main/java/org/apache/tajo/schema/Schema.java
+++ b/tajo-common/src/main/java/org/apache/tajo/schema/Schema.java
@@ -25,13 +25,15 @@ import org.apache.tajo.util.StringUtils;
import java.util.Arrays;
import java.util.Collection;
+import java.util.Iterator;
+import java.util.Objects;
import static org.apache.tajo.common.TajoDataTypes.Type.RECORD;
/**
* A field is a pair of a name and a type. Schema is an ordered list of fields.
*/
-public class Schema {
+public class Schema implements Iterable<Schema.NamedType> {
private final ImmutableList<NamedType> namedTypes;
public Schema(Collection<NamedType> namedTypes) {
@@ -63,6 +65,11 @@ public class Schema {
return new NamedPrimitiveType(name, type);
}
+ @Override
+ public Iterator<NamedType> iterator() {
+ return namedTypes.iterator();
+ }
+
public static abstract class NamedType {
protected final QualifiedIdentifier name;
@@ -73,34 +80,100 @@ public class Schema {
public QualifiedIdentifier name() {
return this.name;
}
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+
+ if (this == obj) {
+ return true;
+ }
+
+ if (obj instanceof NamedType) {
+ NamedType other = (NamedType) obj;
+ return this.name.equals(other.name);
+ }
+
+ return false;
+ }
}
public static class NamedPrimitiveType extends NamedType {
private final Type type;
- NamedPrimitiveType(QualifiedIdentifier name, Type type) {
+ public NamedPrimitiveType(QualifiedIdentifier name, Type type) {
super(name);
Preconditions.checkArgument(type.baseType() != RECORD);
this.type = type;
}
+ public Type type() {
+ return type;
+ }
+
@Override
public String toString() {
return name + " " + type;
}
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name, type);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == this) {
+ return true;
+ }
+
+ if (obj instanceof NamedPrimitiveType) {
+ NamedPrimitiveType other = (NamedPrimitiveType) obj;
+ return super.equals(other) && this.type.equals(type);
+ }
+
+ return false;
+ }
}
public static class NamedStructType extends NamedType {
- private final ImmutableList<NamedType> namedTypes;
+ private final ImmutableList<NamedType> fields;
- public NamedStructType(QualifiedIdentifier name, Collection<NamedType> namedTypes) {
+ public NamedStructType(QualifiedIdentifier name, Collection<NamedType> fields) {
super(name);
- this.namedTypes = ImmutableList.copyOf(namedTypes);
+ this.fields = ImmutableList.copyOf(fields);
+ }
+
+ public Collection<NamedType> fields() {
+ return this.fields;
}
@Override
public String toString() {
- return name + " record (" + StringUtils.join(namedTypes, ",") + ")";
+ return name + " record (" + StringUtils.join(fields, ",") + ")";
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(name, fields);
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == this) {
+ return true;
+ }
+
+ if (obj instanceof NamedStructType) {
+ NamedStructType other = (NamedStructType) obj;
+ return super.equals(other) && fields.equals(other.fields);
+ }
+
+ return false;
}
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-common/src/main/java/org/apache/tajo/type/Any.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/type/Any.java b/tajo-common/src/main/java/org/apache/tajo/type/Any.java
new file mode 100644
index 0000000..d61afae
--- /dev/null
+++ b/tajo-common/src/main/java/org/apache/tajo/type/Any.java
@@ -0,0 +1,33 @@
+/**
+ * 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.type;
+
+import org.apache.tajo.common.TajoDataTypes;
+
+import java.util.Objects;
+
+public class Any extends Type {
+
+ public static Any INSTANCE = new Any();
+
+ @Override
+ public TajoDataTypes.Type baseType() {
+ return TajoDataTypes.Type.ANY;
+ }
+}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-common/src/main/java/org/apache/tajo/type/Array.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/type/Array.java b/tajo-common/src/main/java/org/apache/tajo/type/Array.java
index cd02d1e..9a595fd 100644
--- a/tajo-common/src/main/java/org/apache/tajo/type/Array.java
+++ b/tajo-common/src/main/java/org/apache/tajo/type/Array.java
@@ -34,6 +34,11 @@ public class Array extends Type {
}
@Override
+ public boolean hasParam() {
+ return true;
+ }
+
+ @Override
public TajoDataTypes.Type baseType() {
return TajoDataTypes.Type.ARRAY;
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-common/src/main/java/org/apache/tajo/type/Char.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/type/Char.java b/tajo-common/src/main/java/org/apache/tajo/type/Char.java
index 04857ec..348e041 100644
--- a/tajo-common/src/main/java/org/apache/tajo/type/Char.java
+++ b/tajo-common/src/main/java/org/apache/tajo/type/Char.java
@@ -34,6 +34,11 @@ public class Char extends Type {
}
@Override
+ public boolean hasParam() {
+ return true;
+ }
+
+ @Override
public TajoDataTypes.Type baseType() {
return TajoDataTypes.Type.CHAR;
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-common/src/main/java/org/apache/tajo/type/Inet4.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/type/Inet4.java b/tajo-common/src/main/java/org/apache/tajo/type/Inet4.java
new file mode 100644
index 0000000..05dc0cf
--- /dev/null
+++ b/tajo-common/src/main/java/org/apache/tajo/type/Inet4.java
@@ -0,0 +1,28 @@
+/**
+ * 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.type;
+
+import org.apache.tajo.common.TajoDataTypes;
+
+public class Inet4 extends Type {
+ @Override
+ public TajoDataTypes.Type baseType() {
+ return TajoDataTypes.Type.INET4;
+ }
+}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-common/src/main/java/org/apache/tajo/type/Interval.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/type/Interval.java b/tajo-common/src/main/java/org/apache/tajo/type/Interval.java
new file mode 100644
index 0000000..6c99526
--- /dev/null
+++ b/tajo-common/src/main/java/org/apache/tajo/type/Interval.java
@@ -0,0 +1,28 @@
+/**
+ * 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.type;
+
+import org.apache.tajo.common.TajoDataTypes;
+
+public class Interval extends Type {
+ @Override
+ public TajoDataTypes.Type baseType() {
+ return TajoDataTypes.Type.INTERVAL;
+ }
+}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-common/src/main/java/org/apache/tajo/type/Null.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/type/Null.java b/tajo-common/src/main/java/org/apache/tajo/type/Null.java
new file mode 100644
index 0000000..fe823e1
--- /dev/null
+++ b/tajo-common/src/main/java/org/apache/tajo/type/Null.java
@@ -0,0 +1,28 @@
+/**
+ * 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.type;
+
+import org.apache.tajo.common.TajoDataTypes;
+
+public class Null extends Type {
+ @Override
+ public TajoDataTypes.Type baseType() {
+ return TajoDataTypes.Type.NULL_TYPE;
+ }
+}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-common/src/main/java/org/apache/tajo/type/Protobuf.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/type/Protobuf.java b/tajo-common/src/main/java/org/apache/tajo/type/Protobuf.java
new file mode 100644
index 0000000..59d3c1a
--- /dev/null
+++ b/tajo-common/src/main/java/org/apache/tajo/type/Protobuf.java
@@ -0,0 +1,42 @@
+/**
+ * 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.type;
+
+import org.apache.tajo.common.TajoDataTypes;
+
+public class Protobuf extends Type {
+ private String msgName;
+
+ public Protobuf(String msgName) {
+ this.msgName = msgName;
+ }
+
+ public String getMessageName() {
+ return this.msgName;
+ }
+
+ @Override
+ public TajoDataTypes.Type baseType() {
+ return TajoDataTypes.Type.PROTOBUF;
+ }
+
+ public boolean hasParam() {
+ return true;
+ }
+}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-common/src/main/java/org/apache/tajo/type/Type.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/type/Type.java b/tajo-common/src/main/java/org/apache/tajo/type/Type.java
index 363ffc4..e1a7180 100644
--- a/tajo-common/src/main/java/org/apache/tajo/type/Type.java
+++ b/tajo-common/src/main/java/org/apache/tajo/type/Type.java
@@ -24,8 +24,13 @@ import java.util.Arrays;
import java.util.Collection;
public abstract class Type {
+
public abstract TajoDataTypes.Type baseType();
+ public boolean hasParam() {
+ return false;
+ }
+
protected static String typeName(TajoDataTypes.Type type) {
return type.name().toLowerCase();
}
@@ -48,6 +53,14 @@ public abstract class Type {
return typeName(baseType());
}
+ public boolean isStruct() {
+ return this.baseType() == TajoDataTypes.Type.RECORD;
+ }
+
+ public static Any Any() {
+ return Any.INSTANCE;
+ }
+
public static Bool Bool() {
return new Bool();
}
@@ -94,6 +107,10 @@ public abstract class Type {
return new Timestamp();
}
+ public static Interval Interval() {
+ return new Interval();
+ }
+
public static Char Char(int len) {
return new Char(len);
}
@@ -110,6 +127,10 @@ public abstract class Type {
return new Blob();
}
+ public static Inet4 Inet4() {
+ return new Inet4();
+ }
+
public static Struct Struct(Collection<Type> types) {
return new Struct(types);
}
@@ -125,4 +146,8 @@ public abstract class Type {
public static Map Map(Type keyType, Type valueType) {
return new Map(keyType, valueType);
}
+
+ public static Null Null() {
+ return new Null();
+ }
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-common/src/main/java/org/apache/tajo/type/Varchar.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/type/Varchar.java b/tajo-common/src/main/java/org/apache/tajo/type/Varchar.java
index 6dc2c50..fbfac17 100644
--- a/tajo-common/src/main/java/org/apache/tajo/type/Varchar.java
+++ b/tajo-common/src/main/java/org/apache/tajo/type/Varchar.java
@@ -39,6 +39,11 @@ public class Varchar extends Type {
}
@Override
+ public boolean hasParam() {
+ return true;
+ }
+
+ @Override
public String toString() {
return "varchar(" + length + ")";
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/cli/tools/TestDDLBuilder.java
----------------------------------------------------------------------
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 51a017e..8790a38 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,17 +37,19 @@ public class TestDDLBuilder {
private static final PartitionMethodDesc partitionMethod1;
static {
- schema1 = SchemaFactory.newV1();
- schema1.addColumn("name", TajoDataTypes.Type.BLOB);
- schema1.addColumn("addr", TajoDataTypes.Type.TEXT);
+ schema1 = SchemaBuilder.builder()
+ .add("name", TajoDataTypes.Type.BLOB)
+ .add("addr", TajoDataTypes.Type.TEXT)
+ .build();
meta1 = CatalogUtil.newTableMeta("TEXT");
meta1.putProperty(StorageConstants.TEXT_DELIMITER, StorageConstants.DEFAULT_FIELD_DELIMITER);
meta1.putProperty(StorageConstants.COMPRESSION_CODEC, GzipCodec.class.getName());
- Schema expressionSchema = SchemaFactory.newV1();
- expressionSchema.addColumn("key", TajoDataTypes.Type.INT4);
- expressionSchema.addColumn("key2", TajoDataTypes.Type.TEXT);
+ Schema expressionSchema = SchemaBuilder.builder()
+ .add("key", TajoDataTypes.Type.INT4)
+ .add("key2", TajoDataTypes.Type.TEXT)
+ .build();
partitionMethod1 = new PartitionMethodDesc(
"db1",
"table1",
@@ -67,15 +69,17 @@ public class TestDDLBuilder {
@Test
public void testBuildDDLQuotedTableName() throws Exception {
- 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 = SchemaFactory.newV1();
- expressionSchema2.addColumn("BirthYear", TajoDataTypes.Type.INT4);
+ Schema schema2 = SchemaBuilder.builder()
+ .add("name", TajoDataTypes.Type.BLOB)
+ .add("addr", TajoDataTypes.Type.TEXT)
+ .add("FirstName", TajoDataTypes.Type.TEXT)
+ .add("LastName", TajoDataTypes.Type.TEXT)
+ .add("with", TajoDataTypes.Type.TEXT)
+ .build();
+
+ Schema expressionSchema2 = SchemaBuilder.builder()
+ .add("BirthYear", TajoDataTypes.Type.INT4)
+ .build();
PartitionMethodDesc partitionMethod2 = new PartitionMethodDesc(
"db1",
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestTajoCliNegatives.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestTajoCliNegatives.java b/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestTajoCliNegatives.java
index aea82ab..0fd29d9 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestTajoCliNegatives.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/cli/tsql/TestTajoCliNegatives.java
@@ -124,7 +124,7 @@ public class TestTajoCliNegatives extends QueryTestCaseBase {
client.updateQuery("CREATE TABLE TestTajoCliNegatives.table12u79 ( name RECORD(last TEXT, first TEXT) )");
assertScriptFailure("select name FROM TestTajoCliNegatives.table12u79",
- "ERROR: not implemented feature: record field projection\n");
+ "ERROR: org.apache.tajo.exception.NotImplementedException: not implemented feature: record projection\n");
} finally {
client.updateQuery("DROP TABLE IF EXISTS TestTajoCliNegatives.table12u79");
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/client/TestCatalogAdminClientExceptions.java
----------------------------------------------------------------------
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 6abc3fb..d2b3a78 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
@@ -22,8 +22,7 @@ import org.apache.hadoop.fs.Path;
import org.apache.tajo.QueryTestCaseBase;
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.SchemaBuilder;
import org.apache.tajo.catalog.TableMeta;
import org.apache.tajo.conf.TajoConf;
import org.apache.tajo.exception.*;
@@ -68,20 +67,20 @@ public class TestCatalogAdminClientExceptions extends QueryTestCaseBase {
@Test(expected = UnavailableTableLocationException.class)
public final void testCreateExternalTableUnavailableLocation() throws TajoException {
- client.createExternalTable("table128237", SchemaFactory.newV1(), URI.create("/tajo/test1bcd"),
+ client.createExternalTable("table128237", SchemaBuilder.empty(), URI.create("/tajo/test1bcd"),
new TableMeta("TEXT", new KeyValueSet()));
}
@Test(expected = DuplicateTableException.class)
public final void testCreateExternalTableDuplicated() throws TajoException {
- client.createExternalTable("default.lineitem", SchemaFactory.newV1(), URI.create("/"),
+ client.createExternalTable("default.lineitem", SchemaBuilder.empty(), 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", SchemaFactory.newV1(), p.toUri(),
+ client.createExternalTable("information_schema.table1237891", SchemaBuilder.empty(), p.toUri(),
new TableMeta("TEXT", new KeyValueSet()));
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/codegen/TestEvalCodeGenerator.java
----------------------------------------------------------------------
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 cdb86a1..adbfd48 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,7 +21,7 @@ package org.apache.tajo.engine.codegen;
import org.apache.tajo.catalog.CatalogUtil;
import org.apache.tajo.catalog.Schema;
-import org.apache.tajo.catalog.SchemaFactory;
+import org.apache.tajo.catalog.SchemaBuilder;
import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.datum.NullDatum;
import org.apache.tajo.engine.eval.ExprTestBase;
@@ -30,18 +30,20 @@ import org.junit.Test;
public class TestEvalCodeGenerator extends ExprTestBase {
private static Schema schema;
+
static {
- schema = SchemaFactory.newV1();
- schema.addColumn("col0", TajoDataTypes.Type.INT1);
- schema.addColumn("col1", TajoDataTypes.Type.INT2);
- schema.addColumn("col2", TajoDataTypes.Type.INT4);
- schema.addColumn("col3", TajoDataTypes.Type.INT8);
- schema.addColumn("col4", TajoDataTypes.Type.FLOAT4);
- schema.addColumn("col5", TajoDataTypes.Type.FLOAT8);
- schema.addColumn("col6", TajoDataTypes.Type.TEXT);
- schema.addColumn("col7", CatalogUtil.newDataType(TajoDataTypes.Type.CHAR, "", 3));
- schema.addColumn("col8", TajoDataTypes.Type.BOOLEAN);
- schema.addColumn("nullable", TajoDataTypes.Type.NULL_TYPE);
+ schema = SchemaBuilder.builder()
+ .add("col0", TajoDataTypes.Type.INT1)
+ .add("col1", TajoDataTypes.Type.INT2)
+ .add("col2", TajoDataTypes.Type.INT4)
+ .add("col3", TajoDataTypes.Type.INT8)
+ .add("col4", TajoDataTypes.Type.FLOAT4)
+ .add("col5", TajoDataTypes.Type.FLOAT8)
+ .add("col6", TajoDataTypes.Type.TEXT)
+ .add("col7", CatalogUtil.newDataType(TajoDataTypes.Type.CHAR, "", 3))
+ .add("col8", TajoDataTypes.Type.BOOLEAN)
+ .add("nullable", TajoDataTypes.Type.NULL_TYPE)
+ .build();
}
@Test
@@ -66,18 +68,19 @@ public class TestEvalCodeGenerator extends ExprTestBase {
@Test
public void testNullHandling() throws TajoException {
- schema = SchemaFactory.newV1();
- schema.addColumn("col0", TajoDataTypes.Type.INT1);
- schema.addColumn("col1", TajoDataTypes.Type.INT2);
- schema.addColumn("col2", TajoDataTypes.Type.INT4);
- schema.addColumn("col3", TajoDataTypes.Type.INT8);
- schema.addColumn("col4", TajoDataTypes.Type.FLOAT4);
- schema.addColumn("col5", TajoDataTypes.Type.FLOAT8);
- schema.addColumn("col6", TajoDataTypes.Type.TEXT);
- schema.addColumn("col7", CatalogUtil.newDataType(TajoDataTypes.Type.CHAR, "", 1));
- schema.addColumn("col8", CatalogUtil.newDataType(TajoDataTypes.Type.CHAR, "", 3));
- schema.addColumn("col9", TajoDataTypes.Type.BOOLEAN);
- schema.addColumn("nullable", TajoDataTypes.Type.NULL_TYPE);
+ schema = SchemaBuilder.builder()
+ .add("col0", TajoDataTypes.Type.INT1)
+ .add("col1", TajoDataTypes.Type.INT2)
+ .add("col2", TajoDataTypes.Type.INT4)
+ .add("col3", TajoDataTypes.Type.INT8)
+ .add("col4", TajoDataTypes.Type.FLOAT4)
+ .add("col5", TajoDataTypes.Type.FLOAT8)
+ .add("col6", TajoDataTypes.Type.TEXT)
+ .add("col7", CatalogUtil.newDataType(TajoDataTypes.Type.CHAR, "", 1))
+ .add("col8", CatalogUtil.newDataType(TajoDataTypes.Type.CHAR, "", 3))
+ .add("col9", TajoDataTypes.Type.BOOLEAN)
+ .add("nullable", TajoDataTypes.Type.NULL_TYPE)
+ .build();
testEval(schema, "table1", ",1,2,3,4.5,6.5,F6,abc,abc,t", "select col0 is null from table1;", new String [] {"t"});
testEval(schema, "table1", "0,,2,3,4.5,6.5,F6,abc,abc,t,", "select col1 is null from table1;", new String [] {"t"});
@@ -106,9 +109,10 @@ public class TestEvalCodeGenerator extends ExprTestBase {
@Test
public void testComparison() throws TajoException {
- Schema inetSchema = SchemaFactory.newV1();
- inetSchema.addColumn("addr1", TajoDataTypes.Type.INET4);
- inetSchema.addColumn("addr2", TajoDataTypes.Type.INET4);
+ Schema inetSchema = SchemaBuilder.builder()
+ .add("addr1", TajoDataTypes.Type.INET4)
+ .add("addr2", TajoDataTypes.Type.INET4)
+ .build();
testSimpleEval("select (1 > null AND false)", new String[] {"f"}); // unknown - false -> false
testSimpleEval("select (1::int8 > null) is null", new String[] {"t"});
@@ -162,9 +166,10 @@ public class TestEvalCodeGenerator extends ExprTestBase {
@Test
public void testBetweenAsymmetric() throws TajoException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TajoDataTypes.Type.INT4);
- schema.addColumn("col2", TajoDataTypes.Type.INT4);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TajoDataTypes.Type.INT4)
+ .add("col2", TajoDataTypes.Type.INT4)
+ .build();
testEval(schema, "table1", "0,", "select col1 between 1 and 3 from table1", new String[]{"f"});
testEval(schema, "table1", "1,", "select col1 between 1 and 3 from table1", new String[]{"t"});
testEval(schema, "table1", "2,", "select col1 between 1 and 3 from table1", new String[]{"t"});
@@ -196,9 +201,10 @@ public class TestEvalCodeGenerator extends ExprTestBase {
@Test
public void testBetweenSymmetric() throws TajoException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TajoDataTypes.Type.INT4);
- schema.addColumn("col2", TajoDataTypes.Type.INT4);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TajoDataTypes.Type.INT4)
+ .add("col2", TajoDataTypes.Type.INT4)
+ .build();
testEval(schema, "table1", "0,", "select col1 between symmetric 1 and 3 from table1", new String[]{"f"});
testEval(schema, "table1", "1,", "select col1 between symmetric 1 and 3 from table1", new String[]{"t"});
testEval(schema, "table1", "2,", "select col1 between symmetric 1 and 3 from table1", new String[]{"t"});
@@ -231,16 +237,16 @@ public class TestEvalCodeGenerator extends ExprTestBase {
@Test
public void testUnary() throws TajoException {
- schema = SchemaFactory.newV1();
- schema.addColumn("col0", TajoDataTypes.Type.INT1);
- schema.addColumn("col1", TajoDataTypes.Type.INT2);
- schema.addColumn("col2", TajoDataTypes.Type.INT4);
- schema.addColumn("col3", TajoDataTypes.Type.INT8);
- schema.addColumn("col4", TajoDataTypes.Type.FLOAT4);
- schema.addColumn("col5", TajoDataTypes.Type.FLOAT8);
- schema.addColumn("col6", TajoDataTypes.Type.TEXT);
- schema.addColumn("col7", CatalogUtil.newDataType(TajoDataTypes.Type.CHAR, "", 3));
- schema.addColumn("col8", TajoDataTypes.Type.BOOLEAN);
+ schema = SchemaBuilder.builder()
+ .add("col0", TajoDataTypes.Type.INT1)
+ .add("col1", TajoDataTypes.Type.INT2)
+ .add("col2", TajoDataTypes.Type.INT4)
+ .add("col3", TajoDataTypes.Type.INT8)
+ .add("col4", TajoDataTypes.Type.FLOAT4)
+ .add("col5", TajoDataTypes.Type.FLOAT8)
+ .add("col6", TajoDataTypes.Type.TEXT)
+ .add("col7", CatalogUtil.newDataType(TajoDataTypes.Type.CHAR, "", 3))
+ .add("col8", TajoDataTypes.Type.BOOLEAN).build();
// sign test
@@ -303,9 +309,10 @@ public class TestEvalCodeGenerator extends ExprTestBase {
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 = SchemaFactory.newV1();
- schema.addColumn("col1", TajoDataTypes.Type.TEXT);
- schema.addColumn("col2", TajoDataTypes.Type.TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TajoDataTypes.Type.TEXT)
+ .add("col2", TajoDataTypes.Type.TEXT)
+ .build();
testEval(schema, "table1", " trim, abc", "select ltrim(col1) || ltrim(col2) from table1",
new String[]{"trimabc"});
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestEvalTree.java
----------------------------------------------------------------------
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 0b33626..e74b108 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,7 +21,7 @@ package org.apache.tajo.engine.eval;
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.catalog.SchemaBuilder;
import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.common.TajoDataTypes.DataType;
import org.apache.tajo.datum.Datum;
@@ -43,9 +43,10 @@ public class TestEvalTree extends ExprTestBase {
FieldEval e2 = new FieldEval("table1.score", CatalogUtil.newSimpleDataType(INT4)); // it indicates
assertCloneEqual(e2);
- Schema schema1 = SchemaFactory.newV1();
- schema1.addColumn("table1.id", INT4);
- schema1.addColumn("table1.score", INT4);
+ Schema schema1 = SchemaBuilder.builder()
+ .add("table1.id", INT4)
+ .add("table1.score", INT4)
+ .build();
BinaryEval expr = new BinaryEval(EvalType.PLUS, e1, e2);
expr.bind(null, schema1);
@@ -396,7 +397,7 @@ public class TestEvalTree extends ExprTestBase {
assertEquals(caseWhenEval.bind(null, null).eval(null).asInt4(), 1);
}
- Schema schema = SchemaFactory.newV1(new Column[]{new Column("test", TajoDataTypes.Type.INT4)});
+ Schema schema = SchemaBuilder.builder().addAll(new Column[]{new Column("test", TajoDataTypes.Type.INT4)}).build();
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);
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestEvalTreeUtil.java
----------------------------------------------------------------------
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 9192235..2846f22 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
@@ -31,9 +31,9 @@ import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
import org.apache.tajo.engine.function.FunctionLoader;
-import org.apache.tajo.parser.sql.SQLAnalyzer;
import org.apache.tajo.engine.query.QueryContext;
import org.apache.tajo.exception.TajoException;
+import org.apache.tajo.parser.sql.SQLAnalyzer;
import org.apache.tajo.plan.LogicalPlan;
import org.apache.tajo.plan.LogicalPlanner;
import org.apache.tajo.plan.Target;
@@ -97,10 +97,11 @@ public class TestEvalTreeUtil {
catalog.createTablespace(DEFAULT_TABLESPACE_NAME, "hdfs://localhost:1234/warehouse");
catalog.createDatabase(TajoConstants.DEFAULT_DATABASE_NAME, DEFAULT_TABLESPACE_NAME);
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("name", TajoDataTypes.Type.TEXT);
- schema.addColumn("score", TajoDataTypes.Type.INT4);
- schema.addColumn("age", TajoDataTypes.Type.INT4);
+ Schema schema = SchemaBuilder.builder()
+ .add("name", TajoDataTypes.Type.TEXT)
+ .add("score", TajoDataTypes.Type.INT4)
+ .add("age", TajoDataTypes.Type.INT4)
+ .build();
TableMeta meta = CatalogUtil.newTableMeta("TEXT");
TableDesc desc = new TableDesc(
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestPredicates.java
----------------------------------------------------------------------
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 c3cd0a0..cc9da7f 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,17 +20,26 @@ package org.apache.tajo.engine.eval;
import org.apache.tajo.catalog.CatalogUtil;
import org.apache.tajo.catalog.Schema;
-import org.apache.tajo.catalog.SchemaFactory;
+import org.apache.tajo.catalog.SchemaBuilder;
import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.exception.TajoException;
import org.junit.Test;
-import static org.apache.tajo.common.TajoDataTypes.Type.BOOLEAN;
-import static org.apache.tajo.common.TajoDataTypes.Type.INT4;
-import static org.apache.tajo.common.TajoDataTypes.Type.TEXT;
+import static org.apache.tajo.common.TajoDataTypes.Type.*;
public class TestPredicates extends ExprTestBase {
+ public static final Schema FourIntSchema;
+
+ static {
+ FourIntSchema = SchemaBuilder.builder()
+ .add("col1", INT4)
+ .add("col2", INT4)
+ .add("col3", INT4)
+ .add("col4", INT4)
+ .build();
+ }
+
//////////////////////////////////////////////////////////////////
// Logical Operator
//////////////////////////////////////////////////////////////////
@@ -87,10 +96,11 @@ public class TestPredicates extends ExprTestBase {
testSimpleEval("select (not (1 > null)) is null;", new String[] {"t"});
- Schema schema1 = SchemaFactory.newV1();
- schema1.addColumn("col1", INT4);
- schema1.addColumn("col2", INT4);
- schema1.addColumn("col3", INT4);
+ Schema schema1 = SchemaBuilder.builder()
+ .add("col1", INT4)
+ .add("col2", INT4)
+ .add("col3", INT4)
+ .build();
testEval(schema1,
"table1", "123,123,456,-123",
@@ -111,26 +121,22 @@ public class TestPredicates extends ExprTestBase {
@Test
public void testComparisonEqual() throws TajoException {
-
-
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col0", TajoDataTypes.Type.INT1);
- schema.addColumn("col1", TajoDataTypes.Type.INT2);
- schema.addColumn("col2", TajoDataTypes.Type.INT4);
- schema.addColumn("col3", TajoDataTypes.Type.INT8);
- schema.addColumn("col4", TajoDataTypes.Type.FLOAT4);
- schema.addColumn("col5", TajoDataTypes.Type.FLOAT8);
- schema.addColumn("col6", TajoDataTypes.Type.TEXT);
- schema.addColumn("col7", CatalogUtil.newDataType(TajoDataTypes.Type.CHAR, "", 3));
- schema.addColumn("nullable", TajoDataTypes.Type.INT4);
+ Schema schema = SchemaBuilder.builder()
+ .add("col0", TajoDataTypes.Type.INT1)
+ .add("col1", TajoDataTypes.Type.INT2)
+ .add("col2", TajoDataTypes.Type.INT4)
+ .add("col3", TajoDataTypes.Type.INT8)
+ .add("col4", TajoDataTypes.Type.FLOAT4)
+ .add("col5", TajoDataTypes.Type.FLOAT8)
+ .add("col6", TajoDataTypes.Type.TEXT)
+ .add("col7", CatalogUtil.newDataType(TajoDataTypes.Type.CHAR, "", 3))
+ .add("nullable", TajoDataTypes.Type.INT4)
+ .build();
testEval(schema, "t1", "0,1,2,3,4.1,5.1,cmp,asm,", "SELECT col6 = 'cmp' from t1", new String [] {"t"});
- Schema schema1 = SchemaFactory.newV1();
- schema1.addColumn("col1", INT4);
- schema1.addColumn("col2", INT4);
- schema1.addColumn("col3", INT4);
- schema1.addColumn("col4", INT4);
+ Schema schema1 = FourIntSchema;
+
testEval(schema1,
"table1", "123,123,456,-123",
"select col1 = col2, col1 = col3, col1 = col4 from table1",
@@ -143,11 +149,8 @@ public class TestPredicates extends ExprTestBase {
@Test
public void testComparisonNotEqual() throws TajoException {
- Schema schema1 = SchemaFactory.newV1();
- schema1.addColumn("col1", INT4);
- schema1.addColumn("col2", INT4);
- schema1.addColumn("col3", INT4);
- schema1.addColumn("col4", INT4);
+ Schema schema1 = FourIntSchema;
+
testEval(schema1,
"table1", "123,123,456,-123",
"select col1 <> col2, col1 <> col3, col1 <> col4 from table1",
@@ -160,11 +163,8 @@ public class TestPredicates extends ExprTestBase {
@Test
public void testComparisonLessThan() throws TajoException {
- Schema schema1 = SchemaFactory.newV1();
- schema1.addColumn("col1", INT4);
- schema1.addColumn("col2", INT4);
- schema1.addColumn("col3", INT4);
- schema1.addColumn("col4", INT4);
+ Schema schema1 = FourIntSchema;
+
testEval(schema1,
"table1", "123,123,456,-123",
"select col1 < col2, col1 < col3, col1 < col4 from table1",
@@ -177,11 +177,8 @@ public class TestPredicates extends ExprTestBase {
@Test
public void testComparisonLessThanEqual() throws TajoException {
- Schema schema1 = SchemaFactory.newV1();
- schema1.addColumn("col1", INT4);
- schema1.addColumn("col2", INT4);
- schema1.addColumn("col3", INT4);
- schema1.addColumn("col4", INT4);
+ Schema schema1 = FourIntSchema;
+
testEval(schema1,
"table1", "123,123,456,-123",
"select col1 <= col2, col1 <= col3, col1 <= col4 from table1",
@@ -194,11 +191,8 @@ public class TestPredicates extends ExprTestBase {
@Test
public void testComparisonGreaterThan() throws TajoException {
- Schema schema1 = SchemaFactory.newV1();
- schema1.addColumn("col1", INT4);
- schema1.addColumn("col2", INT4);
- schema1.addColumn("col3", INT4);
- schema1.addColumn("col4", INT4);
+ Schema schema1 = FourIntSchema;
+
testEval(schema1,
"table1", "123,123,456,-123",
"select col1 > col2, col3 > col2, col1 > col4 from table1",
@@ -211,11 +205,8 @@ public class TestPredicates extends ExprTestBase {
@Test
public void testComparisonGreaterThanEqual() throws TajoException {
- Schema schema1 = SchemaFactory.newV1();
- schema1.addColumn("col1", INT4);
- schema1.addColumn("col2", INT4);
- schema1.addColumn("col3", INT4);
- schema1.addColumn("col4", INT4);
+ Schema schema1 = FourIntSchema;
+
testEval(schema1,
"table1", "123,123,456,-123",
"select col1 >= col2, col3 >= col2, col1 >= col4 from table1",
@@ -232,10 +223,11 @@ public class TestPredicates extends ExprTestBase {
@Test
public void testBetween() throws TajoException {
- Schema schema2 = SchemaFactory.newV1();
- schema2.addColumn("col1", TEXT);
- schema2.addColumn("col2", TEXT);
- schema2.addColumn("col3", TEXT);
+ Schema schema2 = SchemaBuilder.builder()
+ .add("col1", TEXT)
+ .add("col2", TEXT)
+ .add("col3", TEXT)
+ .build();
// constant checker
testEval(schema2, "table1", "b,a,c", "select col1 between 'a' and 'c' from table1", new String[]{"t"});
@@ -256,11 +248,12 @@ public class TestPredicates extends ExprTestBase {
@Test
public void testBetween2() throws TajoException { // for TAJO-249
- Schema schema3 = SchemaFactory.newV1();
- schema3.addColumn("date_a", INT4);
- schema3.addColumn("date_b", INT4);
- schema3.addColumn("date_c", INT4);
- schema3.addColumn("date_d", INT4);
+ Schema schema3 = SchemaBuilder.builder()
+ .add("date_a", INT4)
+ .add("date_b", INT4)
+ .add("date_c", INT4)
+ .add("date_d", INT4)
+ .build();
String query = "select " +
"case " +
@@ -295,10 +288,11 @@ public class TestPredicates extends ExprTestBase {
@Test
public void testInPredicateWithConstant() throws TajoException {
- Schema schema2 = SchemaFactory.newV1();
- schema2.addColumn("col1", TEXT);
- schema2.addColumn("col2", TEXT);
- schema2.addColumn("col3", TEXT);
+ Schema schema2 = SchemaBuilder.builder()
+ .add("col1", TEXT)
+ .add("col2", TEXT)
+ .add("col3", TEXT)
+ .build();
testEval(schema2, "table1", "a,b,c", "select col1 in ('a'), col2 in ('a', 'c') from table1", new String[]{"t","f"});
testEval(schema2, "table1", "a,,c", "select col1 in ('a','b','c'), (col2 in ('a', 'c')) is null from table1",
@@ -320,10 +314,11 @@ public class TestPredicates extends ExprTestBase {
@Test
public void testInPredicateWithSimpleExprs() throws TajoException {
- Schema schema2 = SchemaFactory.newV1();
- schema2.addColumn("col1", TEXT);
- schema2.addColumn("col2", INT4);
- schema2.addColumn("col3", TEXT);
+ Schema schema2 = SchemaBuilder.builder()
+ .add("col1", TEXT)
+ .add("col2", INT4)
+ .add("col3", TEXT)
+ .build();
testEval(schema2, "table1", "abc,2,3", "select col1 in ('a'||'b'||'c'), col2 in (1 + 1, 2 * 10, 2003) from table1",
new String[]{"t","t"});
@@ -344,9 +339,10 @@ public class TestPredicates extends ExprTestBase {
@Test
public void testIsNullPredicate() throws TajoException {
- Schema schema1 = SchemaFactory.newV1();
- schema1.addColumn("col1", INT4);
- schema1.addColumn("col2", INT4);
+ Schema schema1 = SchemaBuilder.builder()
+ .add("col1", INT4)
+ .add("col2", INT4)
+ .build();
testEval(schema1, "table1", "123,", "select col1 is null, col2 is null as a from table1",
new String[]{"f", "t"});
testEval(schema1, "table1", "123,", "select col1 is not null, col2 is not null as a from table1",
@@ -355,9 +351,10 @@ public class TestPredicates extends ExprTestBase {
@Test
public void testIsNullPredicateWithFunction() throws TajoException {
- Schema schema2 = SchemaFactory.newV1();
- schema2.addColumn("col1", TEXT);
- schema2.addColumn("col2", TEXT);
+ Schema schema2 = SchemaBuilder.builder()
+ .add("col1", TEXT)
+ .add("col2", TEXT)
+ .build();
testEval(schema2, "table1", "_123,", "select ltrim(col1, '_') is null, upper(col2) is null as a from table1",
new String[]{"f", "t"});
@@ -394,9 +391,10 @@ public class TestPredicates extends ExprTestBase {
@Test
public void testBooleanTestOnTable() throws TajoException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", BOOLEAN);
- schema.addColumn("col2", BOOLEAN);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", BOOLEAN)
+ .add("col2", BOOLEAN)
+ .build();
testEval(schema, "table1", "t,f", "select col1 is true, col2 is false from table1", new String [] {"t", "t"});
testEval(schema, "table1", "t,f", "select col1 is not true, col2 is not false from table1",
new String [] {"f", "f"});
http://git-wip-us.apache.org/repos/asf/tajo/blob/4aef83a3/tajo-core-tests/src/test/java/org/apache/tajo/engine/eval/TestSQLExpression.java
----------------------------------------------------------------------
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 fa4561a..293b02a 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,13 +21,13 @@ package org.apache.tajo.engine.eval;
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.catalog.SchemaBuilder;
import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.datum.DatumFactory;
import org.apache.tajo.datum.TimestampDatum;
import org.apache.tajo.engine.query.QueryContext;
import org.apache.tajo.exception.TajoException;
+import org.apache.tajo.exception.UndefinedFunctionException;
import org.apache.tajo.util.datetime.DateTimeUtil;
import org.junit.Test;
@@ -40,9 +40,9 @@ public class TestSQLExpression extends ExprTestBase {
@Test
public void testQuotedIdentifiers() throws TajoException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("컬럼1", TEXT);
- schema.addColumn("컬럼2", TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("컬럼1", TEXT)
+ .add("컬럼2", TEXT).build();
testEval(schema, "테이블1", "123,234", "select \"컬럼1\"::float, cast (\"컬럼2\" as float4) as a from \"테이블1\"",
new String[]{"123.0", "234.0"});
testEval(schema,
@@ -92,17 +92,24 @@ public class TestSQLExpression extends ExprTestBase {
testSimpleEval("select cast (123.0 as double)", new String[] {"123.0"});
}
+ private static final Schema TestSchema1;
+
+ static {
+ TestSchema1 = SchemaBuilder.builder()
+ .add("col0", INT1)
+ .add("col1", INT2)
+ .add("col2", INT4)
+ .add("col3", INT8)
+ .add("col4", FLOAT4)
+ .add("col5", FLOAT8)
+ .add("col6", TEXT)
+ .add("col7", CatalogUtil.newDataType(TajoDataTypes.Type.CHAR, "", 3))
+ .build();
+ }
+
@Test
public void testExplicitCast() throws TajoException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col0", INT1);
- schema.addColumn("col1", INT2);
- schema.addColumn("col2", INT4);
- schema.addColumn("col3", INT8);
- schema.addColumn("col4", FLOAT4);
- schema.addColumn("col5", FLOAT8);
- schema.addColumn("col6", TEXT);
- schema.addColumn("col7", CatalogUtil.newDataType(TajoDataTypes.Type.CHAR, "", 3));
+ Schema schema = TestSchema1;
testSimpleEval("select cast (1 as char)", new String[]{"1"});
testSimpleEval("select cast (119 as char)", new String[] {"1"});
@@ -174,15 +181,7 @@ public class TestSQLExpression extends ExprTestBase {
@Test
public void testImplicitCastForInt1() throws TajoException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col0", TajoDataTypes.Type.INT1);
- schema.addColumn("col1", TajoDataTypes.Type.INT2);
- schema.addColumn("col2", TajoDataTypes.Type.INT4);
- schema.addColumn("col3", TajoDataTypes.Type.INT8);
- schema.addColumn("col4", TajoDataTypes.Type.FLOAT4);
- schema.addColumn("col5", TajoDataTypes.Type.FLOAT8);
- schema.addColumn("col6", TajoDataTypes.Type.TEXT);
- schema.addColumn("col7", CatalogUtil.newDataType(TajoDataTypes.Type.CHAR, "", 3));
+ Schema schema = TestSchema1;
testEval(schema, "table1", "0,1,2,3,4.1,5.1,6,7", "select col0 + col0 from table1;", new String [] {"0"});
testEval(schema, "table1", "0,1,2,3,4.1,5.1,6,7", "select col0 + col1 from table1;", new String [] {"1"});
@@ -276,15 +275,7 @@ public class TestSQLExpression extends ExprTestBase {
@Test
public void testImplicitCastForInt2() throws TajoException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col0", TajoDataTypes.Type.INT1);
- schema.addColumn("col1", TajoDataTypes.Type.INT2);
- schema.addColumn("col2", TajoDataTypes.Type.INT4);
- schema.addColumn("col3", TajoDataTypes.Type.INT8);
- schema.addColumn("col4", TajoDataTypes.Type.FLOAT4);
- schema.addColumn("col5", TajoDataTypes.Type.FLOAT8);
- schema.addColumn("col6", TajoDataTypes.Type.TEXT);
- schema.addColumn("col7", CatalogUtil.newDataType(TajoDataTypes.Type.CHAR, "", 3));
+ Schema schema = TestSchema1;
testEval(schema, "table1", "0,1,2,3,4.1,5.1,6,7", "select col1 + col0 from table1;", new String [] {"1"});
testEval(schema, "table1", "0,1,2,3,4.1,5.1,6,7", "select col1 + col1 from table1;", new String [] {"2"});
@@ -378,15 +369,7 @@ public class TestSQLExpression extends ExprTestBase {
@Test
public void testImplicitCastForInt4() throws TajoException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col0", TajoDataTypes.Type.INT1);
- schema.addColumn("col1", TajoDataTypes.Type.INT2);
- schema.addColumn("col2", TajoDataTypes.Type.INT4);
- schema.addColumn("col3", TajoDataTypes.Type.INT8);
- schema.addColumn("col4", TajoDataTypes.Type.FLOAT4);
- schema.addColumn("col5", TajoDataTypes.Type.FLOAT8);
- schema.addColumn("col6", TajoDataTypes.Type.TEXT);
- schema.addColumn("col7", CatalogUtil.newDataType(TajoDataTypes.Type.CHAR, "", 3));
+ Schema schema = TestSchema1;
testEval(schema, "table1", "0,1,2,3,4.1,5.1,6,7", "select col2 + col0 from table1;", new String [] {"2"});
testEval(schema, "table1", "0,1,2,3,4.1,5.1,6,7", "select col2 + col1 from table1;", new String [] {"3"});
@@ -481,15 +464,7 @@ public class TestSQLExpression extends ExprTestBase {
@Test
public void testImplicitCastForInt8() throws TajoException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col0", TajoDataTypes.Type.INT1);
- schema.addColumn("col1", TajoDataTypes.Type.INT2);
- schema.addColumn("col2", TajoDataTypes.Type.INT4);
- schema.addColumn("col3", TajoDataTypes.Type.INT8);
- schema.addColumn("col4", TajoDataTypes.Type.FLOAT4);
- schema.addColumn("col5", TajoDataTypes.Type.FLOAT8);
- schema.addColumn("col6", TajoDataTypes.Type.TEXT);
- schema.addColumn("col7", CatalogUtil.newDataType(TajoDataTypes.Type.CHAR, "", 3));
+ Schema schema = TestSchema1;
testEval(schema, "table1", "0,1,2,3,4.1,5.1,6,7", "select col3 + col0 from table1;", new String[]{"3"});
testEval(schema, "table1", "0,1,2,3,4.1,5.1,6,7", "select col3 + col1 from table1;", new String [] {"4"});
@@ -588,15 +563,7 @@ public class TestSQLExpression extends ExprTestBase {
@Test
public void testImplicitCastForFloat4() throws TajoException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col0", TajoDataTypes.Type.INT1);
- schema.addColumn("col1", TajoDataTypes.Type.INT2);
- schema.addColumn("col2", TajoDataTypes.Type.INT4);
- schema.addColumn("col3", TajoDataTypes.Type.INT8);
- schema.addColumn("col4", TajoDataTypes.Type.FLOAT4);
- schema.addColumn("col5", TajoDataTypes.Type.FLOAT8);
- schema.addColumn("col6", TajoDataTypes.Type.TEXT);
- schema.addColumn("col7", CatalogUtil.newDataType(TajoDataTypes.Type.CHAR, "", 3));
+ Schema schema = TestSchema1;
testEval(schema, "table1", "0,1,2,3,4.1,5.1,6,7", "select col4 + col0 from table1;", new String [] {"4.1"});
testEval(schema, "table1", "0,1,2,3,4.1,5.1,6,7", "select col4 + col1 from table1;", new String [] {"5.1"});
@@ -707,15 +674,7 @@ public class TestSQLExpression extends ExprTestBase {
@Test
public void testImplicitCastForFloat8() throws TajoException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col0", TajoDataTypes.Type.INT1);
- schema.addColumn("col1", TajoDataTypes.Type.INT2);
- schema.addColumn("col2", TajoDataTypes.Type.INT4);
- schema.addColumn("col3", TajoDataTypes.Type.INT8);
- schema.addColumn("col4", TajoDataTypes.Type.FLOAT4);
- schema.addColumn("col5", TajoDataTypes.Type.FLOAT8);
- schema.addColumn("col6", TajoDataTypes.Type.TEXT);
- schema.addColumn("col7", CatalogUtil.newDataType(TajoDataTypes.Type.CHAR, "", 3));
+ Schema schema = TestSchema1;
testEval(schema, "table1", "0,1,2,3,4.1,5.1,6,7", "select col5 + col0 from table1;", new String [] {"5.1"});
testEval(schema, "table1", "0,1,2,3,4.1,5.1,6,7", "select col5 + col1 from table1;", new String [] {"6.1"});
@@ -827,17 +786,7 @@ public class TestSQLExpression extends ExprTestBase {
@Test
public void testSigned() throws TajoException {
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col0", TajoDataTypes.Type.INT1);
- schema.addColumn("col1", TajoDataTypes.Type.INT2);
- schema.addColumn("col2", TajoDataTypes.Type.INT4);
- schema.addColumn("col3", TajoDataTypes.Type.INT8);
- schema.addColumn("col4", TajoDataTypes.Type.FLOAT4);
- schema.addColumn("col5", TajoDataTypes.Type.FLOAT8);
- schema.addColumn("col6", TajoDataTypes.Type.TEXT);
- schema.addColumn("col7", CatalogUtil.newDataType(TajoDataTypes.Type.CHAR, "", 3));
- schema.addColumn("col8", TajoDataTypes.Type.BOOLEAN);
-
+ Schema schema = TestSchema1;
// sign test
testEval(schema, "table1", "0,1,2,3,4.1,5.1,6,7,t", "select +col1 from table1;", new String [] {"1"});
@@ -871,9 +820,10 @@ public class TestSQLExpression extends ExprTestBase {
queryContext.put(SessionVars.TIMEZONE, "GMT-6");
TimeZone tz = TimeZone.getTimeZone("GMT-6");
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TEXT);
- schema.addColumn("col2", TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TEXT)
+ .add("col2", TEXT)
+ .build();
testEval(queryContext, schema,
"table1",
@@ -903,9 +853,10 @@ public class TestSQLExpression extends ExprTestBase {
testSimpleEval("select true", new String[] {"t"});
testSimpleEval("select false", new String[]{"f"});
- Schema schema = SchemaFactory.newV1();
- schema.addColumn("col1", TEXT);
- schema.addColumn("col2", TEXT);
+ Schema schema = SchemaBuilder.builder()
+ .add("col1", TEXT)
+ .add("col2", TEXT)
+ .build();
testEval(schema, "table1", "123,234", "select col1, col2 from table1 where true", new String[]{"123", "234"});
}