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:38 UTC
[5/6] tajo git commit: TAJO-2108: Refactor Schema to be immutable.
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"});
}