Return-Path: X-Original-To: apmail-tajo-commits-archive@minotaur.apache.org Delivered-To: apmail-tajo-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id C7706FB1B for ; Thu, 9 May 2013 05:39:37 +0000 (UTC) Received: (qmail 31338 invoked by uid 500); 9 May 2013 05:39:37 -0000 Delivered-To: apmail-tajo-commits-archive@tajo.apache.org Received: (qmail 31275 invoked by uid 500); 9 May 2013 05:39:36 -0000 Mailing-List: contact commits-help@tajo.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@tajo.apache.org Delivered-To: mailing list commits@tajo.apache.org Received: (qmail 31267 invoked by uid 99); 9 May 2013 05:39:36 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 09 May 2013 05:39:36 +0000 X-ASF-Spam-Status: No, hits=-2000.2 required=5.0 tests=ALL_TRUSTED,FRT_ADOBE2,RP_MATCHES_RCVD X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO mail.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with SMTP; Thu, 09 May 2013 05:38:57 +0000 Received: (qmail 25268 invoked by uid 99); 9 May 2013 05:38:34 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 09 May 2013 05:38:34 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 1467F88A546; Thu, 9 May 2013 05:38:34 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: hyunsik@apache.org To: commits@tajo.incubator.apache.org Date: Thu, 09 May 2013 05:38:42 -0000 Message-Id: In-Reply-To: <37d723a8d3c848df9e2482d0a1ad5d9a@git.apache.org> References: <37d723a8d3c848df9e2482d0a1ad5d9a@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: [10/11] TAJO-57: Recognize Parser and Catalog Standard SQL data types. (hyunsik) X-Virus-Checked: Checked by ClamAV on apache.org http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-catalog/tajo-catalog-server/src/main/java/tajo/catalog/AlreadyRegisteredURIException.java ---------------------------------------------------------------------- diff --git a/tajo-catalog/tajo-catalog-server/src/main/java/tajo/catalog/AlreadyRegisteredURIException.java b/tajo-catalog/tajo-catalog-server/src/main/java/tajo/catalog/AlreadyRegisteredURIException.java deleted file mode 100644 index 5aa1cb1..0000000 --- a/tajo-catalog/tajo-catalog-server/src/main/java/tajo/catalog/AlreadyRegisteredURIException.java +++ /dev/null @@ -1,43 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * - */ -package tajo.catalog; - -import java.net.URI; - -public class AlreadyRegisteredURIException extends RuntimeException { - - private static final long serialVersionUID = 747390434221048348L; - - public AlreadyRegisteredURIException() { - } - - /** - * @param uri - */ - public AlreadyRegisteredURIException(String uri) { - super("Already registered TRID: "+uri); - } - - public AlreadyRegisteredURIException(URI uri) { - this("Already registered TRID: "+uri); - } -} http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-catalog/tajo-catalog-server/src/main/java/tajo/catalog/CatalogServer.java ---------------------------------------------------------------------- diff --git a/tajo-catalog/tajo-catalog-server/src/main/java/tajo/catalog/CatalogServer.java b/tajo-catalog/tajo-catalog-server/src/main/java/tajo/catalog/CatalogServer.java index 85600a8..8587b1e 100644 --- a/tajo-catalog/tajo-catalog-server/src/main/java/tajo/catalog/CatalogServer.java +++ b/tajo-catalog/tajo-catalog-server/src/main/java/tajo/catalog/CatalogServer.java @@ -30,6 +30,7 @@ import tajo.catalog.exception.*; import tajo.catalog.proto.CatalogProtos.*; import tajo.catalog.store.CatalogStore; import tajo.catalog.store.DBStore; +import tajo.common.TajoDataTypes.DataType; import tajo.conf.TajoConf; import tajo.conf.TajoConf.ConfVars; import tajo.rpc.ProtoBlockingRpcServer; @@ -226,7 +227,7 @@ public class CatalogServer extends AbstractService { // rewrite schema SchemaProto revisedSchema = - TCatUtil.getQualfiedSchema(tableDesc.getId(), tableDesc.getMeta() + CatalogUtil.getQualfiedSchema(tableDesc.getId(), tableDesc.getMeta() .getSchema()); TableProto.Builder metaBuilder = TableProto.newBuilder(tableDesc.getMeta()); @@ -396,7 +397,7 @@ public class CatalogServer extends AbstractService { FunctionDescProto funcDesc) throws ServiceException { String canonicalName = - TCatUtil.getCanonicalName(funcDesc.getSignature(), + CatalogUtil.getCanonicalName(funcDesc.getSignature(), funcDesc.getParameterTypesList()); if (functions.containsKey(canonicalName)) { throw new AlreadyExistsFunctionException(canonicalName); @@ -420,7 +421,7 @@ public class CatalogServer extends AbstractService { for (int i = 0; i < size; i++) { paramTypes.add(request.getParameterTypes(i)); } - String canonicalName = TCatUtil.getCanonicalName(signature, paramTypes); + String canonicalName = CatalogUtil.getCanonicalName(signature, paramTypes); if (!functions.containsKey(canonicalName)) { throw new NoSuchFunctionException(canonicalName); } @@ -440,7 +441,7 @@ public class CatalogServer extends AbstractService { for (int i = 0; i < size; i++) { paramTypes.add(request.getParameterTypes(i)); } - return functions.get(TCatUtil.getCanonicalName( + return functions.get(CatalogUtil.getCanonicalName( request.getSignature().toLowerCase(), paramTypes)); } @@ -454,7 +455,7 @@ public class CatalogServer extends AbstractService { paramTypes.add(request.getParameterTypes(i)); } boolean returnValue = - functions.containsKey(TCatUtil.getCanonicalName( + functions.containsKey(CatalogUtil.getCanonicalName( request.getSignature().toLowerCase(), paramTypes)); return BoolProto.newBuilder().setValue(returnValue).build(); } http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-catalog/tajo-catalog-server/src/main/java/tajo/catalog/store/DBStore.java ---------------------------------------------------------------------- diff --git a/tajo-catalog/tajo-catalog-server/src/main/java/tajo/catalog/store/DBStore.java b/tajo-catalog/tajo-catalog-server/src/main/java/tajo/catalog/store/DBStore.java index 136872d..6db6e49 100644 --- a/tajo-catalog/tajo-catalog-server/src/main/java/tajo/catalog/store/DBStore.java +++ b/tajo-catalog/tajo-catalog-server/src/main/java/tajo/catalog/store/DBStore.java @@ -28,6 +28,7 @@ import org.apache.hadoop.fs.Path; import tajo.catalog.*; import tajo.catalog.proto.CatalogProtos.*; import tajo.catalog.statistics.TableStat; +import tajo.common.TajoDataTypes.Type; import tajo.conf.TajoConf; import tajo.exception.InternalException; @@ -444,7 +445,7 @@ public class DBStore implements CatalogStore { + "'" + desc.getId() + "'," + columnId + ", " + "'" + col.getColumnName() + "'," - + "'" + col.getDataType().toString() + "'" + + "'" + col.getDataType().getType().name() + "'" + ")"; return sql; @@ -627,7 +628,7 @@ public class DBStore implements CatalogStore { while (res.next()) { String columnName = tableName + "." + res.getString("column_name").trim(); - DataType dataType = getDataType(res.getString("data_type") + Type dataType = getDataType(res.getString("data_type") .trim()); schema.addColumn(columnName, dataType); } @@ -695,37 +696,11 @@ public class DBStore implements CatalogStore { } } - private DataType getDataType(final String typeStr) { - if (typeStr.equals(DataType.BOOLEAN.toString())) { - return DataType.BOOLEAN; - } else if (typeStr.equals(DataType.BYTE.toString())) { - return DataType.BYTE; - } else if (typeStr.equals(DataType.CHAR.toString())) { - return DataType.CHAR; - } else if (typeStr.equals(DataType.SHORT.toString())) { - return DataType.SHORT; - } else if (typeStr.equals(DataType.INT.toString())) { - return DataType.INT; - } else if (typeStr.equals(DataType.LONG.toString())) { - return DataType.LONG; - } else if (typeStr.equals(DataType.FLOAT.toString())) { - return DataType.FLOAT; - } else if (typeStr.equals(DataType.DOUBLE.toString())) { - return DataType.DOUBLE; - } else if (typeStr.equals(DataType.STRING.toString())) { - return DataType.STRING; - } else if (typeStr.equals(DataType.IPv4.toString())) { - return DataType.IPv4; - } else if (typeStr.equals(DataType.IPv6.toString())) { - return DataType.IPv6; - } else if (typeStr.equals(DataType.BYTES.toString())) { - return DataType.BYTES; - } else if (typeStr.equals(DataType.DATE.toString())) { - return DataType.DATE; - } else { - LOG.error("Cannot find a matched type aginst from '" - + typeStr + "'"); - // TODO - needs exception handling + private Type getDataType(final String typeStr) { + try { + return Enum.valueOf(Type.class, typeStr); + } catch (IllegalArgumentException iae) { + LOG.error("Cannot find a matched type aginst from '" + typeStr + "'"); return null; } } @@ -776,7 +751,7 @@ public class DBStore implements CatalogStore { stmt.setString(1, proto.getName()); stmt.setString(2, proto.getTableId()); stmt.setString(3, proto.getColumn().getColumnName()); - stmt.setString(4, proto.getColumn().getDataType().toString()); + stmt.setString(4, proto.getColumn().getDataType().getType().name()); stmt.setString(5, proto.getIndexMethod().toString()); stmt.setBoolean(6, proto.hasIsUnique() && proto.getIsUnique()); stmt.setBoolean(7, proto.hasIsClustered() && proto.getIsClustered()); @@ -1001,7 +976,8 @@ public class DBStore implements CatalogStore { private ColumnProto resultToColumnProto(final ResultSet res) throws SQLException { ColumnProto.Builder builder = ColumnProto.newBuilder(); builder.setColumnName(res.getString("column_name")); - builder.setDataType(getDataType(res.getString("data_type").trim())); + builder.setDataType(CatalogUtil.newDataTypeWithoutLen( + getDataType(res.getString("data_type").trim()))); return builder.build(); } http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-catalog/tajo-catalog-server/src/test/java/tajo/catalog/TestCatalog.java ---------------------------------------------------------------------- diff --git a/tajo-catalog/tajo-catalog-server/src/test/java/tajo/catalog/TestCatalog.java b/tajo-catalog/tajo-catalog-server/src/test/java/tajo/catalog/TestCatalog.java index 269d8b4..9e61d83 100644 --- a/tajo-catalog/tajo-catalog-server/src/test/java/tajo/catalog/TestCatalog.java +++ b/tajo-catalog/tajo-catalog-server/src/test/java/tajo/catalog/TestCatalog.java @@ -23,10 +23,11 @@ import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; import tajo.catalog.function.GeneralFunction; -import tajo.catalog.proto.CatalogProtos.DataType; import tajo.catalog.proto.CatalogProtos.FunctionType; import tajo.catalog.proto.CatalogProtos.IndexMethod; import tajo.catalog.proto.CatalogProtos.StoreType; +import tajo.common.TajoDataTypes; +import tajo.common.TajoDataTypes.Type; import tajo.conf.TajoConf; import tajo.datum.Datum; import tajo.storage.Tuple; @@ -61,11 +62,11 @@ public class TestCatalog { @Test public void testGetTable() throws Exception { schema1 = new Schema(); - schema1.addColumn(FieldName1, DataType.BYTE); - schema1.addColumn(FieldName2, DataType.INT); - schema1.addColumn(FieldName3, DataType.LONG); + schema1.addColumn(FieldName1, Type.BLOB); + schema1.addColumn(FieldName2, Type.INT4); + schema1.addColumn(FieldName3, Type.INT8); - TableDesc meta = TCatUtil.newTableDesc( + TableDesc meta = CatalogUtil.newTableDesc( "getTable", schema1, StoreType.CSV, @@ -86,11 +87,11 @@ public class TestCatalog { @Test(expected = Throwable.class) public void testAddTableNoName() throws Exception { schema1 = new Schema(); - schema1.addColumn(FieldName1, DataType.BYTE); - schema1.addColumn(FieldName2, DataType.INT); - schema1.addColumn(FieldName3, DataType.LONG); + schema1.addColumn(FieldName1, Type.BLOB); + schema1.addColumn(FieldName2, Type.INT4); + schema1.addColumn(FieldName3, Type.INT8); - TableMeta info = TCatUtil.newTableMeta(schema1, StoreType.CSV); + TableMeta info = CatalogUtil.newTableMeta(schema1, StoreType.CSV); TableDesc desc = new TableDescImpl(); desc.setMeta(info); @@ -103,15 +104,15 @@ public class TestCatalog { static { desc1 = new IndexDesc( - "idx_test", "indexed", new Column("id", DataType.INT), + "idx_test", "indexed", new Column("id", Type.INT4), IndexMethod.TWO_LEVEL_BIN_TREE, true, true, true); desc2 = new IndexDesc( - "idx_test2", "indexed", new Column("score", DataType.DOUBLE), + "idx_test2", "indexed", new Column("score", Type.FLOAT8), IndexMethod.TWO_LEVEL_BIN_TREE, false, false, false); desc3 = new IndexDesc( - "idx_test", "indexed", new Column("id", DataType.INT), + "idx_test", "indexed", new Column("id", Type.INT4), IndexMethod.TWO_LEVEL_BIN_TREE, true, true, true); } @@ -144,7 +145,7 @@ public class TestCatalog { public TestFunc1() { super( new Column [] { - new Column("name", DataType.INT) + new Column("name", TajoDataTypes.Type.INT4) } ); } @@ -160,8 +161,8 @@ public class TestCatalog { public TestFunc2() { super( new Column [] { - new Column("name", DataType.INT), - new Column("bytes", DataType.BYTES) + new Column("name", TajoDataTypes.Type.INT4), + new Column("bytes", TajoDataTypes.Type.BLOB) } ); } @@ -176,12 +177,12 @@ public class TestCatalog { public final void testRegisterFunc() throws Exception { assertFalse(catalog.containFunction("test2")); FunctionDesc meta = new FunctionDesc("test2", TestFunc1.class, FunctionType.GENERAL, - new DataType [] {DataType.INT}, - new DataType [] {DataType.INT}); + CatalogUtil.newDataTypesWithoutLen(Type.INT4), + CatalogUtil.newDataTypesWithoutLen(Type.INT4)); catalog.registerFunction(meta); - assertTrue(catalog.containFunction("test2", DataType.INT)); - FunctionDesc retrived = catalog.getFunction("test2", DataType.INT); + assertTrue(catalog.containFunction("test2", CatalogUtil.newDataTypesWithoutLen(Type.INT4))); + FunctionDesc retrived = catalog.getFunction("test2", CatalogUtil.newDataTypesWithoutLen(Type.INT4)); assertEquals(retrived.getSignature(),"test2"); assertEquals(retrived.getFuncClass(),TestFunc1.class); @@ -191,20 +192,23 @@ public class TestCatalog { @Test public final void testUnregisterFunc() throws Exception { assertFalse(catalog - .containFunction("test3", DataType.INT)); + .containFunction("test3", CatalogUtil.newDataTypesWithoutLen(Type.INT4))); FunctionDesc meta = new FunctionDesc("test3", TestFunc1.class, FunctionType.GENERAL, - new DataType [] {DataType.INT}, new DataType[] { DataType.INT }); + CatalogUtil.newDataTypesWithoutLen(Type.INT4), + CatalogUtil.newDataTypesWithoutLen(Type.INT4 )); catalog.registerFunction(meta); - assertTrue(catalog.containFunction("test3", DataType.INT)); - catalog.unregisterFunction("test3", DataType.INT); + assertTrue(catalog.containFunction("test3", CatalogUtil.newDataTypesWithoutLen(Type.INT4))); + catalog.unregisterFunction("test3", CatalogUtil.newDataTypesWithoutLen(Type.INT4)); assertFalse(catalog - .containFunction("test3", DataType.INT)); + .containFunction("test3", CatalogUtil.newDataTypesWithoutLen(Type.INT4))); - assertFalse(catalog.containFunction("test3", DataType.INT, DataType.BYTES)); + assertFalse(catalog.containFunction("test3", + CatalogUtil.newDataTypesWithoutLen(Type.INT4, Type.BLOB))); FunctionDesc overload = new FunctionDesc("test3", TestFunc2.class, FunctionType.GENERAL, - new DataType [] {DataType.INT}, - new DataType [] {DataType.INT,DataType.BYTES}); + CatalogUtil.newDataTypesWithoutLen(Type.INT4), + CatalogUtil.newDataTypesWithoutLen(Type.INT4, Type.BLOB)); catalog.registerFunction(overload); - assertTrue(catalog.containFunction("test3", DataType.INT, DataType.BYTES)); + assertTrue(catalog.containFunction("test3", + CatalogUtil.newDataTypesWithoutLen(Type.INT4, Type.BLOB))); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-catalog/tajo-catalog-server/src/test/java/tajo/catalog/TestDBStore.java ---------------------------------------------------------------------- diff --git a/tajo-catalog/tajo-catalog-server/src/test/java/tajo/catalog/TestDBStore.java b/tajo-catalog/tajo-catalog-server/src/test/java/tajo/catalog/TestDBStore.java index 033efa3..8ed8fb3 100644 --- a/tajo-catalog/tajo-catalog-server/src/test/java/tajo/catalog/TestDBStore.java +++ b/tajo-catalog/tajo-catalog-server/src/test/java/tajo/catalog/TestDBStore.java @@ -25,10 +25,10 @@ import org.apache.hadoop.fs.Path; import org.junit.AfterClass; import org.junit.BeforeClass; import org.junit.Test; -import tajo.catalog.proto.CatalogProtos.DataType; import tajo.catalog.proto.CatalogProtos.StoreType; import tajo.catalog.statistics.TableStat; import tajo.catalog.store.DBStore; +import tajo.common.TajoDataTypes.Type; import tajo.conf.TajoConf; import tajo.util.CommonTestingUtil; @@ -59,15 +59,15 @@ public class TestDBStore { @Test public final void testAddAndDeleteTable() throws Exception { Schema schema = new Schema(); - schema.addColumn("id", DataType.INT) - .addColumn("name", DataType.STRING) - .addColumn("age", DataType.INT) - .addColumn("score", DataType.DOUBLE); + schema.addColumn("id", Type.INT4) + .addColumn("name", Type.TEXT) + .addColumn("age", Type.INT4) + .addColumn("score", Type.FLOAT8); String tableName = "addedtable"; Options opts = new Options(); opts.put("file.delimiter", ","); - TableMeta meta = TCatUtil.newTableMeta(schema, StoreType.CSV, opts); + TableMeta meta = CatalogUtil.newTableMeta(schema, StoreType.CSV, opts); TableDesc desc = new TableDescImpl(tableName, meta, new Path("/addedtable")); assertFalse(store.existTable(tableName)); store.addTable(desc); @@ -83,15 +83,15 @@ public class TestDBStore { @Test public final void testGetTable() throws Exception { Schema schema = new Schema(); - schema.addColumn("gettable.id", DataType.INT) - .addColumn("gettable.name", DataType.STRING) - .addColumn("gettable.age", DataType.INT) - .addColumn("gettable.score", DataType.DOUBLE); + schema.addColumn("gettable.id", Type.INT4) + .addColumn("gettable.name", Type.TEXT) + .addColumn("gettable.age", Type.INT4) + .addColumn("gettable.score", Type.FLOAT8); String tableName = "gettable"; Options opts = new Options(); opts.put("file.delimiter", ","); - TableMeta meta = TCatUtil.newTableMeta(schema, StoreType.CSV, opts); + TableMeta meta = CatalogUtil.newTableMeta(schema, StoreType.CSV, opts); TableStat stat = new TableStat(); stat.setNumRows(957685); @@ -114,15 +114,15 @@ public class TestDBStore { @Test public final void testGetAllTableNames() throws Exception { Schema schema = new Schema(); - schema.addColumn("id", DataType.INT) - .addColumn("name", DataType.STRING) - .addColumn("age", DataType.INT) - .addColumn("score", DataType.DOUBLE); + schema.addColumn("id", Type.INT4) + .addColumn("name", Type.TEXT) + .addColumn("age", Type.INT4) + .addColumn("score", Type.FLOAT8); int numTables = 5; for (int i = 0; i < numTables; i++) { String tableName = "tableA_" + i; - TableMeta meta = TCatUtil.newTableMeta(schema, StoreType.CSV); + TableMeta meta = CatalogUtil.newTableMeta(schema, StoreType.CSV); TableDesc desc = new TableDescImpl(tableName, meta, new Path("/tableA_" + i)); store.addTable(desc); @@ -196,14 +196,14 @@ public class TestDBStore { public static TableDesc prepareTable() { Schema schema = new Schema(); - schema.addColumn("indexed.id", DataType.INT) - .addColumn("indexed.name", DataType.STRING) - .addColumn("indexed.age", DataType.INT) - .addColumn("indexed.score", DataType.DOUBLE); + schema.addColumn("indexed.id", Type.INT4) + .addColumn("indexed.name", Type.TEXT) + .addColumn("indexed.age", Type.INT4) + .addColumn("indexed.score", Type.FLOAT8); String tableName = "indexed"; - TableMeta meta = TCatUtil.newTableMeta(schema, StoreType.CSV); + TableMeta meta = CatalogUtil.newTableMeta(schema, StoreType.CSV); return new TableDescImpl(tableName, meta, new Path("/indexed")); } http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-catalog/tajo-catalog-server/src/test/java/tajo/catalog/statistics/TestColumnStat.java ---------------------------------------------------------------------- diff --git a/tajo-catalog/tajo-catalog-server/src/test/java/tajo/catalog/statistics/TestColumnStat.java b/tajo-catalog/tajo-catalog-server/src/test/java/tajo/catalog/statistics/TestColumnStat.java index 9af4453..cffd42f 100644 --- a/tajo-catalog/tajo-catalog-server/src/test/java/tajo/catalog/statistics/TestColumnStat.java +++ b/tajo-catalog/tajo-catalog-server/src/test/java/tajo/catalog/statistics/TestColumnStat.java @@ -20,7 +20,7 @@ package tajo.catalog.statistics; import org.junit.Test; import tajo.catalog.Column; -import tajo.catalog.proto.CatalogProtos; +import tajo.common.TajoDataTypes.Type; import tajo.datum.DatumFactory; import static org.junit.Assert.assertEquals; @@ -30,7 +30,7 @@ public class TestColumnStat { @Test public final void testColumnStat() { - ColumnStat stat = new ColumnStat(new Column("test", CatalogProtos.DataType.LONG)); + ColumnStat stat = new ColumnStat(new Column("test", Type.INT8)); stat.setNumDistVals(1000); stat.setNumNulls(999); @@ -44,11 +44,11 @@ public class TestColumnStat { @Test public final void testEqualsObject() { - ColumnStat stat = new ColumnStat(new Column("test", CatalogProtos.DataType.LONG)); + ColumnStat stat = new ColumnStat(new Column("test", Type.INT8)); stat.setNumDistVals(1000); stat.setNumNulls(999); - stat.setMinValue(DatumFactory.createLong(5)); - stat.setMaxValue(DatumFactory.createLong(10)); + stat.setMinValue(DatumFactory.createInt8(5)); + stat.setMaxValue(DatumFactory.createInt8(10)); ColumnStat stat2 = new ColumnStat(stat.getProto()); assertEquals(stat, stat2); @@ -56,11 +56,11 @@ public class TestColumnStat { @Test public final void testClone() throws CloneNotSupportedException { - ColumnStat stat = new ColumnStat(new Column("test", CatalogProtos.DataType.LONG)); + ColumnStat stat = new ColumnStat(new Column("test", Type.INT8)); stat.setNumDistVals(1000); stat.setNumNulls(999); - stat.setMinValue(DatumFactory.createLong(5)); - stat.setMaxValue(DatumFactory.createLong(10)); + stat.setMinValue(DatumFactory.createInt8(5)); + stat.setMaxValue(DatumFactory.createInt8(10)); ColumnStat stat2 = (ColumnStat) stat.clone(); assertEquals(stat, stat2); http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-catalog/tajo-catalog-server/src/test/java/tajo/catalog/statistics/TestTableStat.java ---------------------------------------------------------------------- diff --git a/tajo-catalog/tajo-catalog-server/src/test/java/tajo/catalog/statistics/TestTableStat.java b/tajo-catalog/tajo-catalog-server/src/test/java/tajo/catalog/statistics/TestTableStat.java index 3237d25..d679c69 100644 --- a/tajo-catalog/tajo-catalog-server/src/test/java/tajo/catalog/statistics/TestTableStat.java +++ b/tajo-catalog/tajo-catalog-server/src/test/java/tajo/catalog/statistics/TestTableStat.java @@ -20,7 +20,7 @@ package tajo.catalog.statistics; import org.junit.Test; import tajo.catalog.Column; -import tajo.catalog.proto.CatalogProtos; +import tajo.common.TajoDataTypes.Type; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; @@ -38,7 +38,7 @@ public class TestTableStat { int numCols = 3; ColumnStat[] cols = new ColumnStat[numCols]; for (int i = 0; i < numCols; i++) { - cols[i] = new ColumnStat(new Column("col_" + i, CatalogProtos.DataType.LONG)); + cols[i] = new ColumnStat(new Column("col_" + i, Type.INT8)); cols[i].setNumDistVals(1024 * i); cols[i].setNumNulls(100 * i); stat.addColumnStat(cols[i]); http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-common/pom.xml ---------------------------------------------------------------------- diff --git a/tajo-common/pom.xml b/tajo-common/pom.xml index 3bd06ef..4674ec1 100644 --- a/tajo-common/pom.xml +++ b/tajo-common/pom.xml @@ -90,6 +90,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xs --java_out=target/generated-sources/proto src/main/proto/TestProtos.proto src/main/proto/TajoIdProtos.proto + src/main/proto/DataTypes.proto http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-common/src/main/java/tajo/datum/ArrayDatum.java ---------------------------------------------------------------------- diff --git a/tajo-common/src/main/java/tajo/datum/ArrayDatum.java b/tajo-common/src/main/java/tajo/datum/ArrayDatum.java index 12151ed..e1bc84c 100644 --- a/tajo-common/src/main/java/tajo/datum/ArrayDatum.java +++ b/tajo-common/src/main/java/tajo/datum/ArrayDatum.java @@ -21,15 +21,17 @@ package tajo.datum; import com.google.gson.annotations.Expose; import tajo.datum.json.GsonCreator; +import static tajo.common.TajoDataTypes.Type; + public class ArrayDatum extends Datum { @Expose private Datum [] data; public ArrayDatum(Datum [] data) { - super(DatumType.ARRAY); + super(Type.ARRAY); this.data = data; } public ArrayDatum(int size) { - super(DatumType.ARRAY); + super(Type.ARRAY); this.data = new Datum[size]; } http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-common/src/main/java/tajo/datum/BoolDatum.java ---------------------------------------------------------------------- diff --git a/tajo-common/src/main/java/tajo/datum/BoolDatum.java b/tajo-common/src/main/java/tajo/datum/BoolDatum.java deleted file mode 100644 index 0b1982a..0000000 --- a/tajo-common/src/main/java/tajo/datum/BoolDatum.java +++ /dev/null @@ -1,172 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package tajo.datum; - -import com.google.gson.annotations.Expose; -import tajo.datum.exception.InvalidOperationException; -import tajo.datum.json.GsonCreator; - -public class BoolDatum extends Datum { - @Expose private boolean val; - - public BoolDatum() { - super(DatumType.BOOLEAN); - } - - public BoolDatum(boolean val) { - this(); - this.val = val; - } - - public BoolDatum(byte byteVal) { - this(); - this.val = byteVal == 1; - } - - public BoolDatum(int byteVal) { - this(); - this.val = byteVal == 1; - } - - - public BoolDatum(byte [] bytes) { - this(bytes[0]); - } - - public boolean asBool() { - return val; - } - - public void setValue(boolean val) { - this.val = val; - } - - @Override - public short asShort() { - return (short) (val ? 1 : 0); - } - - /* (non-Javadoc) - * @see nta.common.datum.Datum#asInt() - */ - @Override - public int asInt() { - return val ? 1 : 0; - } - - /* (non-Javadoc) - * @see nta.common.datum.Datum#asLong() - */ - @Override - public long asLong() { - return val ? 1 : 0; - } - - /* (non-Javadoc) - * @see nta.common.datum.Datum#asByte() - */ - @Override - public byte asByte() { - return (byte) (val ? 0x01 : 0x00); - } - - /* (non-Javadoc) - * @see nta.common.datum.Datum#asByteArray() - */ - @Override - public byte[] asByteArray() { - byte [] bytes = new byte[1]; - bytes[0] = asByte(); - return bytes; - } - - /* (non-Javadoc) - * @see nta.common.datum.Datum#asFloat() - */ - @Override - public float asFloat() { - return val ? 1 : 0; - } - - /* (non-Javadoc) - * @see nta.common.datum.Datum#asDouble() - */ - @Override - public double asDouble() { - return val ? 1 : 0; - } - - /* (non-Javadoc) - * @see nta.common.datum.Datum#asChars() - */ - @Override - public String asChars() { - return val ? "true" : "false"; - } - - public String toJSON() { - return GsonCreator.getInstance().toJson(this, Datum.class); - } - - @Override - public int size() { - return 1; - } - - @Override - public int hashCode() { - return val ? 7907 : 0; // 7907 is one of the prime numbers - } - - @Override - public boolean equals(Object obj) { - if (obj instanceof BoolDatum) { - BoolDatum other = (BoolDatum) obj; - return val == other.val; - } - - return false; - } - - // Datum Comparator - public BoolDatum equalsTo(Datum datum) { - switch(datum.type()) { - case BOOLEAN: return DatumFactory.createBool(this.val == - ((BoolDatum)datum).val); - default: - throw new InvalidOperationException(datum.type()); - } - } - - @Override - public int compareTo(Datum datum) { - switch (datum.type()) { - case BOOLEAN: - if (val && !datum.asBool()) { - return -1; - } else if (val && datum.asBool()) { - return 1; - } else { - return 0; - } - default: - throw new InvalidOperationException(datum.type()); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-common/src/main/java/tajo/datum/ByteDatum.java ---------------------------------------------------------------------- diff --git a/tajo-common/src/main/java/tajo/datum/ByteDatum.java b/tajo-common/src/main/java/tajo/datum/ByteDatum.java deleted file mode 100644 index 3bce3ff..0000000 --- a/tajo-common/src/main/java/tajo/datum/ByteDatum.java +++ /dev/null @@ -1,134 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package tajo.datum; - -import com.google.gson.annotations.Expose; -import tajo.datum.exception.InvalidOperationException; -import tajo.datum.json.GsonCreator; - -public class ByteDatum extends Datum { - private static final int size = 1; - - @Expose byte val; - - public ByteDatum() { - super(DatumType.BYTE); - } - - public ByteDatum(byte val) { - this(); - this.val = val; - } - - public ByteDatum(byte [] bytes) { - this(bytes[0]); - } - - @Override - public char asChar() { - return (char)val; - } - - @Override - public int asInt() { - return val; - } - - @Override - public long asLong() { - return val; - } - - @Override - public byte asByte() { - return val; - } - - @Override - public byte[] asByteArray() { - byte [] bytes = new byte[1]; - bytes[0] = this.val; - return bytes; - } - - @Override - public float asFloat() { - return val; - } - - @Override - public double asDouble() { - return val; - } - - @Override - public String asChars() { - return "0x"+val; - } - - public String toJSON() { - return GsonCreator.getInstance().toJson(this, Datum.class); - } - - @Override - public int size() { - return size; - } - - @Override - public int hashCode() { - return val; - } - - @Override - public boolean equals(Object obj) { - if (obj instanceof ByteDatum) { - ByteDatum other = (ByteDatum) obj; - return val == other.val; - } - - return false; - } - - @Override - public BoolDatum equalsTo(Datum datum) { - switch (datum.type()) { - case BYTE: - return DatumFactory.createBool(this.val == (((ByteDatum) datum).val)); - default: - throw new InvalidOperationException(datum.type()); - } - } - - @Override - public int compareTo(Datum datum) { - switch (datum.type()) { - case BYTE: - if (val < datum.asByte() ) { - return -1; - } else if (val > datum.asByte()) { - return 1; - } else { - return 0; - } - default: - throw new InvalidOperationException(datum.type()); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-common/src/main/java/tajo/datum/BytesDatum.java ---------------------------------------------------------------------- diff --git a/tajo-common/src/main/java/tajo/datum/BytesDatum.java b/tajo-common/src/main/java/tajo/datum/BytesDatum.java deleted file mode 100644 index 1111ead..0000000 --- a/tajo-common/src/main/java/tajo/datum/BytesDatum.java +++ /dev/null @@ -1,161 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * - */ -package tajo.datum; - -import com.google.gson.annotations.Expose; -import tajo.datum.exception.InvalidOperationException; -import tajo.datum.json.GsonCreator; - -import java.nio.ByteBuffer; -import java.nio.charset.Charset; -import java.util.Arrays; - -public class BytesDatum extends Datum { - @Expose private byte[] val; - private ByteBuffer bb = null; - - public BytesDatum() { - super(DatumType.BYTES); - } - - public BytesDatum(byte [] val) { - this(); - this.val = val; - this.bb = ByteBuffer.wrap(val); - bb.flip(); - } - - public BytesDatum(ByteBuffer val) { - this(); - this.val = val.array(); - this.bb = val.duplicate(); - bb.flip(); - } - - public void initFromBytes() { - if (bb == null) { - bb = ByteBuffer.wrap(val); - } - } - - @Override - public int asInt() { - initFromBytes(); - bb.rewind(); - return bb.getInt(); - } - - @Override - public long asLong() { - initFromBytes(); - bb.rewind(); - return bb.getLong(); - } - - @Override - public byte asByte() { - initFromBytes(); - bb.rewind(); - return bb.get(); - } - - @Override - public byte[] asByteArray() { - initFromBytes(); - bb.rewind(); - return bb.array(); - } - - @Override - public float asFloat() { - initFromBytes(); - bb.rewind(); - return bb.getFloat(); - } - - @Override - public double asDouble() { - initFromBytes(); - bb.rewind(); - return bb.getDouble(); - } - - @Override - public String asChars() { - initFromBytes(); - bb.rewind(); - return new String(bb.array(), Charset.defaultCharset()); - } - - @Override - public String toJSON() { - return GsonCreator.getInstance().toJson(this, Datum.class); - } - - @Override - public int size() { - return this.val.length; - } - - @Override - public int hashCode() { - initFromBytes(); - bb.rewind(); - return bb.hashCode(); - } - - @Override - public boolean equals(Object obj) { - if (obj instanceof BytesDatum) { - BytesDatum other = (BytesDatum) obj; - initFromBytes(); - other.initFromBytes(); - return bb.equals(other.bb); - } - - return false; - } - - @Override - public BoolDatum equalsTo(Datum datum) { - switch (datum.type()) { - case BYTES: - initFromBytes(); - ((BytesDatum)datum).initFromBytes(); - return DatumFactory.createBool(Arrays.equals(this.val, ((BytesDatum)datum).val)); - default: - throw new InvalidOperationException(datum.type()); - } - } - - @Override - public int compareTo(Datum datum) { - switch (datum.type()) { - case BYTES: - initFromBytes(); - ((BytesDatum)datum).initFromBytes(); - return bb.compareTo(((BytesDatum) datum).bb); - default: - throw new InvalidOperationException(datum.type()); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-common/src/main/java/tajo/datum/CharDatum.java ---------------------------------------------------------------------- diff --git a/tajo-common/src/main/java/tajo/datum/CharDatum.java b/tajo-common/src/main/java/tajo/datum/CharDatum.java index ff82493..0dc11f8 100644 --- a/tajo-common/src/main/java/tajo/datum/CharDatum.java +++ b/tajo-common/src/main/java/tajo/datum/CharDatum.java @@ -22,12 +22,14 @@ import com.google.gson.annotations.Expose; import tajo.datum.exception.InvalidOperationException; import tajo.datum.json.GsonCreator; +import static tajo.common.TajoDataTypes.Type; + public class CharDatum extends Datum { private static final int size = 1; @Expose char val; public CharDatum() { - super(DatumType.CHAR); + super(Type.CHAR); } public CharDatum(byte val) { @@ -50,12 +52,12 @@ public class CharDatum extends Datum { } @Override - public int asInt() { + public int asInt4() { return val; } @Override - public long asLong() { + public long asInt8() { return val; } @@ -72,12 +74,12 @@ public class CharDatum extends Datum { } @Override - public float asFloat() { + public float asFloat4() { return val; } @Override - public double asDouble() { + public double asFloat8() { return val; } @@ -112,9 +114,9 @@ public class CharDatum extends Datum { } @Override - public BoolDatum equalsTo(Datum datum) { + public BooleanDatum equalsTo(Datum datum) { switch (datum.type()) { - case BYTE: + case CHAR: return DatumFactory.createBool(this.val == (((CharDatum) datum).val)); default: throw new InvalidOperationException(datum.type()); @@ -124,7 +126,6 @@ public class CharDatum extends Datum { @Override public int compareTo(Datum datum) { switch (datum.type()) { - case BYTE: case CHAR: if (val < datum.asChar()) { return -1; http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-common/src/main/java/tajo/datum/Datum.java ---------------------------------------------------------------------- diff --git a/tajo-common/src/main/java/tajo/datum/Datum.java b/tajo-common/src/main/java/tajo/datum/Datum.java index c9e0fb9..f4772ef 100644 --- a/tajo-common/src/main/java/tajo/datum/Datum.java +++ b/tajo-common/src/main/java/tajo/datum/Datum.java @@ -22,24 +22,26 @@ import com.google.gson.annotations.Expose; import tajo.datum.exception.InvalidCastException; import tajo.datum.exception.InvalidOperationException; +import static tajo.common.TajoDataTypes.Type; + public abstract class Datum implements Comparable { @Expose - private DatumType type; + private Type type; @SuppressWarnings("unused") private Datum() { } - public Datum(DatumType type) { + public Datum(Type type) { this.type = type; } - public DatumType type() { + public Type type() { return this.type; } public boolean isNull() { - return type == DatumType.NULL; + return false; } public boolean asBool() { @@ -54,14 +56,14 @@ public abstract class Datum implements Comparable { throw new InvalidCastException(type + " cannot be casted to CHAR type"); } - public short asShort() { + public short asInt2() { throw new InvalidCastException(type + " cannot be casted to SHORT type"); } - public int asInt() { + public int asInt4() { throw new InvalidCastException(type + " cannot be casted to INT type"); } - public long asLong() { + public long asInt8() { throw new InvalidCastException(type + " cannot be casted to LONG type"); } @@ -69,11 +71,11 @@ public abstract class Datum implements Comparable { throw new InvalidCastException(type + " cannot be casted to BYTES type"); } - public float asFloat() { + public float asFloat4() { throw new InvalidCastException(type + " cannot be casted to FLOAT type"); } - public double asDouble() { + public double asFloat8() { throw new InvalidCastException(type + " cannot be casted to DOUBLE type"); } @@ -87,15 +89,15 @@ public abstract class Datum implements Comparable { public boolean isNumber() { return - this.type == DatumType.SHORT || - this.type == DatumType.INT || - this.type == DatumType.LONG; + this.type == Type.INT2 || + this.type == Type.INT4 || + this.type == Type.INT8; } public boolean isReal() { return - this.type == DatumType.FLOAT || - this.type == DatumType.DOUBLE; + this.type == Type.FLOAT4|| + this.type == Type.FLOAT8; } public abstract int size(); @@ -120,8 +122,8 @@ public abstract class Datum implements Comparable { throw new InvalidOperationException(datum.type); } - public BoolDatum equalsTo(Datum datum) { - if (this.isNull() || datum.isNull()) { + public BooleanDatum equalsTo(Datum datum) { + if (this instanceof NullDatum || datum instanceof NullDatum) { // TODO - comparing any value against null will be always unknown return DatumFactory.createBool(false); } else { @@ -129,19 +131,19 @@ public abstract class Datum implements Comparable { } } - public BoolDatum lessThan(Datum datum) { + public BooleanDatum lessThan(Datum datum) { return DatumFactory.createBool(compareTo(datum) < 0); } - public BoolDatum lessThanEqual(Datum datum) { + public BooleanDatum lessThanEqual(Datum datum) { return DatumFactory.createBool(compareTo(datum) <= 0); } - public BoolDatum greaterThan(Datum datum) { + public BooleanDatum greaterThan(Datum datum) { return DatumFactory.createBool(compareTo(datum) > 0); } - public BoolDatum greaterThanEqual(Datum datum) { + public BooleanDatum greaterThanEqual(Datum datum) { return DatumFactory.createBool(compareTo(datum) >= 0); } http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-common/src/main/java/tajo/datum/DatumFactory.java ---------------------------------------------------------------------- diff --git a/tajo-common/src/main/java/tajo/datum/DatumFactory.java b/tajo-common/src/main/java/tajo/datum/DatumFactory.java index 7f19262..2e1cd79 100644 --- a/tajo-common/src/main/java/tajo/datum/DatumFactory.java +++ b/tajo-common/src/main/java/tajo/datum/DatumFactory.java @@ -23,18 +23,18 @@ public class DatumFactory { return NullDatum.get(); } - public static BoolDatum createBool(String val) { + public static BooleanDatum createBool(String val) { boolean boolVal = val.equalsIgnoreCase("true"); - return new BoolDatum(boolVal); + return new BooleanDatum(boolVal); } - public static BoolDatum createBool(byte val) { + public static BooleanDatum createBool(byte val) { boolean boolVal = val == 0x01; - return new BoolDatum(boolVal); + return new BooleanDatum(boolVal); } - public static BoolDatum createBool(boolean val) { - return new BoolDatum(val); + public static BooleanDatum createBool(boolean val) { + return new BooleanDatum(val); } /* public static BoolDatum createBool(int val) { @@ -42,11 +42,11 @@ public class DatumFactory { } */ - public static ByteDatum createByte(byte val) { - return new ByteDatum(val); + public static BitDatum createBit(byte val) { + return new BitDatum(val); } /* - public static ByteDatum createByte(int val) { + public static ByteDatum createBit(int val) { return new ByteDatum(val); }*/ @@ -64,75 +64,67 @@ public class DatumFactory { } */ - public static ShortDatum createShort(short val) { - return new ShortDatum(val); + public static Int2Datum createInt2(short val) { + return new Int2Datum(val); } - public static ShortDatum createShort(String val) { - return new ShortDatum(Short.valueOf(val)); + public static Int2Datum createInt2(String val) { + return new Int2Datum(Short.valueOf(val)); } - public static IntDatum createInt(int val) { - return new IntDatum(val); + public static Int4Datum createInt4(int val) { + return new Int4Datum(val); } - public static IntDatum createInt(String val) { - return new IntDatum(Integer.valueOf(val)); + public static Int4Datum createInt4(String val) { + return new Int4Datum(Integer.valueOf(val)); } - public static LongDatum createLong(long val) { - return new LongDatum(val); + public static Int8Datum createInt8(long val) { + return new Int8Datum(val); } - public static LongDatum createLong(String val) { - return new LongDatum(Long.valueOf(val)); + public static Int8Datum createInt8(String val) { + return new Int8Datum(Long.valueOf(val)); } - public static FloatDatum createFloat(float val) { - return new FloatDatum(val); + public static Float4Datum createFloat4(float val) { + return new Float4Datum(val); } - public static FloatDatum createFloat(String val) { - return new FloatDatum(Float.valueOf(val)); + public static Float4Datum createFloat4(String val) { + return new Float4Datum(Float.valueOf(val)); } - public static DoubleDatum createDouble(double val) { - return new DoubleDatum(val); + public static Float8Datum createFloat8(double val) { + return new Float8Datum(val); } - public static DoubleDatum createDouble(String val) { - return new DoubleDatum(Double.valueOf(val)); + public static Float8Datum createFloat8(String val) { + return new Float8Datum(Double.valueOf(val)); } - public static StringDatum createString(String val) { - return new StringDatum(val); - } - - public static StringDatum2 createString2(String val) { - return new StringDatum2(val); - } - - public static StringDatum2 createString2(byte[] val) { - return new StringDatum2(val); + public static TextDatum createText(String val) { + return new TextDatum(val); } - public static StringDatum createString(byte[] val) { - return new StringDatum(val); + public static TextDatum createText(byte[] val) { + return new TextDatum(val); } - public static BytesDatum createBytes(byte [] val) { - return new BytesDatum(val); + public static BlobDatum createBlob(byte[] val) { + return new BlobDatum(val); } - public static BytesDatum createBytes(String val) { - return new BytesDatum(val.getBytes()); + public static BlobDatum createBlob(String val) { + return new BlobDatum(val.getBytes()); } - public static IPv4Datum createIPv4(byte [] val) { - return new IPv4Datum(val); + public static Inet4Datum createInet4(byte[] val) { + return new Inet4Datum(val); } - public static IPv4Datum createIPv4(String val) { - return new IPv4Datum(val); + public static Inet4Datum createInet4(String val) { + return new Inet4Datum(val); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-common/src/main/java/tajo/datum/DatumType.java ---------------------------------------------------------------------- diff --git a/tajo-common/src/main/java/tajo/datum/DatumType.java b/tajo-common/src/main/java/tajo/datum/DatumType.java deleted file mode 100644 index 5a26cb8..0000000 --- a/tajo-common/src/main/java/tajo/datum/DatumType.java +++ /dev/null @@ -1,42 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * - */ -package tajo.datum; - -public enum DatumType { - NULL, - BOOLEAN, - BYTE, - CHAR, - BYTES, - SHORT, - INT, - LONG, - FLOAT, - DOUBLE, - STRING, - STRING2, - ENUM, - IPv4, - IPv6, - ALL, - ARRAY -} http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-common/src/main/java/tajo/datum/DoubleDatum.java ---------------------------------------------------------------------- diff --git a/tajo-common/src/main/java/tajo/datum/DoubleDatum.java b/tajo-common/src/main/java/tajo/datum/DoubleDatum.java deleted file mode 100644 index 0b48fa4..0000000 --- a/tajo-common/src/main/java/tajo/datum/DoubleDatum.java +++ /dev/null @@ -1,270 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * - */ -package tajo.datum; - -import com.google.gson.annotations.Expose; -import tajo.datum.exception.InvalidOperationException; -import tajo.datum.json.GsonCreator; - -import java.nio.ByteBuffer; - -public class DoubleDatum extends NumericDatum { - private static final int size = 8; - @Expose private double val; - - public DoubleDatum() { - super(DatumType.DOUBLE); - } - - public DoubleDatum(double val) { - this(); - this.val = val; - } - - public DoubleDatum(byte [] bytes) { - this(); - ByteBuffer bb = ByteBuffer.wrap(bytes); - this.val = bb.getDouble(); - } - - @Override - public short asShort() { - return (short) val; - } - - @Override - public int asInt() { - return (int) val; - } - - @Override - public long asLong() { - return (long) val; - } - - @Override - public byte[] asByteArray() { - ByteBuffer bb = ByteBuffer.allocate(8); - bb.putDouble(val); - return bb.array(); - } - - @Override - public float asFloat() { - return (float) val; - } - - @Override - public double asDouble() { - return val; - } - - @Override - public String asChars() { - return ""+val; - } - - @Override - public String toJSON() { - return GsonCreator.getInstance().toJson(this, Datum.class); - } - - @Override - public int size() { - return size; - } - - @Override - public int hashCode() { - return (int) val; - } - - public boolean equals(Object obj) { - if (obj instanceof DoubleDatum) { - DoubleDatum other = (DoubleDatum) obj; - return val == other.val; - } - - return false; - } - - @Override - public BoolDatum equalsTo(Datum datum) { - switch (datum.type()) { - case SHORT: - return DatumFactory.createBool(val == datum.asShort()); - case INT: - return DatumFactory.createBool(val == datum.asInt()); - case LONG: - return DatumFactory.createBool(val == datum.asLong()); - case FLOAT: - return DatumFactory.createBool(val == datum.asFloat()); - case DOUBLE: - return DatumFactory.createBool(val == datum.asDouble()); - default: - throw new InvalidOperationException(datum.type()); - } - } - - @Override - public int compareTo(Datum datum) { - switch (datum.type()) { - case SHORT: - if (val < datum.asShort()) { - return -1; - } else if (datum.asShort() < val) { - return 1; - } else { - return 0; - } - case INT: - if (val < datum.asInt()) { - return -1; - } else if (datum.asInt() < val) { - return 1; - } else { - return 0; - } - case LONG: - if (val < datum.asLong()) { - return -1; - } else if (datum.asLong() < val) { - return 1; - } else { - return 0; - } - case FLOAT: - if (val < datum.asFloat()) { - return -1; - } else if (datum.asFloat() < val) { - return 1; - } else { - return 0; - } - case DOUBLE: - if (val < datum.asDouble()) { - return -1; - } else if (datum.asDouble() < val) { - return 1; - } else { - return 0; - } - default: - throw new InvalidOperationException(datum.type()); - } - } - - @Override - public Datum plus(Datum datum) { - switch (datum.type()) { - case SHORT: - return DatumFactory.createDouble(val + datum.asShort()); - case INT: - return DatumFactory.createDouble(val + datum.asInt()); - case LONG: - return DatumFactory.createDouble(val + datum.asLong()); - case FLOAT: - return DatumFactory.createDouble(val + datum.asFloat()); - case DOUBLE: - return DatumFactory.createDouble(val + datum.asDouble()); - default: - throw new InvalidOperationException(datum.type()); - } - } - - @Override - public Datum minus(Datum datum) { - switch (datum.type()) { - case SHORT: - return DatumFactory.createDouble(val - datum.asShort()); - case INT: - return DatumFactory.createDouble(val - datum.asInt()); - case LONG: - return DatumFactory.createDouble(val - datum.asLong()); - case FLOAT: - return DatumFactory.createDouble(val - datum.asFloat()); - case DOUBLE: - return DatumFactory.createDouble(val - datum.asDouble()); - default: - throw new InvalidOperationException(datum.type()); - } - } - - @Override - public Datum multiply(Datum datum) { - switch (datum.type()) { - case SHORT: - return DatumFactory.createDouble(val * datum.asShort()); - case INT: - return DatumFactory.createDouble(val * datum.asInt()); - case LONG: - return DatumFactory.createDouble(val * datum.asLong()); - case FLOAT: - return DatumFactory.createDouble(val * datum.asFloat()); - case DOUBLE: - return DatumFactory.createDouble(val * datum.asDouble()); - default: - throw new InvalidOperationException(); - } - } - - @Override - public Datum divide(Datum datum) { - switch (datum.type()) { - case SHORT: - return DatumFactory.createDouble(val / datum.asShort()); - case INT: - return DatumFactory.createDouble(val / datum.asInt()); - case LONG: - return DatumFactory.createDouble(val / datum.asLong()); - case FLOAT: - return DatumFactory.createDouble(val / datum.asFloat()); - case DOUBLE: - return DatumFactory.createDouble(val / datum.asDouble()); - default: - throw new InvalidOperationException(datum.type()); - } - } - - @Override - public Datum modular(Datum datum) { - switch (datum.type()) { - case SHORT: - return DatumFactory.createDouble(val % datum.asShort()); - case INT: - return DatumFactory.createDouble(val % datum.asInt()); - case LONG: - return DatumFactory.createDouble(val % datum.asLong()); - case FLOAT: - return DatumFactory.createDouble(val % datum.asFloat()); - case DOUBLE: - return DatumFactory.createDouble(val % datum.asDouble()); - default: - throw new InvalidOperationException(datum.type()); - } - } - - @Override - public void inverseSign() { - this.val = -val; - } -} http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-common/src/main/java/tajo/datum/FloatDatum.java ---------------------------------------------------------------------- diff --git a/tajo-common/src/main/java/tajo/datum/FloatDatum.java b/tajo-common/src/main/java/tajo/datum/FloatDatum.java deleted file mode 100644 index 1a6da49..0000000 --- a/tajo-common/src/main/java/tajo/datum/FloatDatum.java +++ /dev/null @@ -1,278 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package tajo.datum; - -import com.google.gson.annotations.Expose; -import tajo.datum.exception.InvalidCastException; -import tajo.datum.exception.InvalidOperationException; -import tajo.datum.json.GsonCreator; - -import java.nio.ByteBuffer; - -public class FloatDatum extends NumericDatum { - private static final int size = 4; - @Expose float val; - - public FloatDatum() { - super(DatumType.FLOAT); - } - - public FloatDatum(float val) { - this(); - this.val = val; - } - - public FloatDatum(byte [] bytes) { - this(); - ByteBuffer bb = ByteBuffer.wrap(bytes); - this.val = bb.getFloat(); - } - - public boolean asBool() { - throw new InvalidCastException(); - } - - @Override - public short asShort() { - return (short) val; - } - - @Override - public int asInt() { - return (int) val; - } - - @Override - public long asLong() { - return (long) val; - } - - @Override - public byte asByte() { - throw new InvalidCastException(); - } - - @Override - public byte[] asByteArray() { - ByteBuffer bb = ByteBuffer.allocate(4); - bb.putFloat(val); - return bb.array(); - } - - @Override - public float asFloat() { - return val; - } - - @Override - public double asDouble() { - return val; - } - - @Override - public String asChars() { - return ""+val; - } - - @Override - public String toJSON() { - return GsonCreator.getInstance().toJson(this, Datum.class); - } - - @Override - public int size() { - return size; - } - - @Override - public int hashCode() { - return (int) val; - } - - @Override - public boolean equals(Object obj) { - if (obj instanceof FloatDatum) { - FloatDatum other = (FloatDatum) obj; - return val == other.val; - } - - return false; - } - - @Override - public BoolDatum equalsTo(Datum datum) { - switch (datum.type()) { - case SHORT: - return DatumFactory.createBool(val == datum.asShort()); - case INT: - return DatumFactory.createBool(val == datum.asInt()); - case LONG: - return DatumFactory.createBool(val == datum.asLong()); - case FLOAT: - return DatumFactory.createBool(val == datum.asFloat()); - case DOUBLE: - return DatumFactory.createBool(val == datum.asDouble()); - default: - throw new InvalidOperationException(datum.type()); - } - } - - @Override - public int compareTo(Datum datum) { - switch (datum.type()) { - case SHORT: - if (val < datum.asShort()) { - return -1; - } else if (datum.asShort() < val) { - return 1; - } else { - return 0; - } - case INT: - if (val < datum.asInt()) { - return -1; - } else if (datum.asInt() < val) { - return 1; - } else { - return 0; - } - case LONG: - if (val < datum.asLong()) { - return -1; - } else if (datum.asLong() < val) { - return 1; - } else { - return 0; - } - case FLOAT: - if (val < datum.asFloat()) { - return -1; - } else if (datum.asFloat() < val) { - return 1; - } else { - return 0; - } - case DOUBLE: - if (val < datum.asDouble()) { - return -1; - } else if (datum.asDouble() < val) { - return 1; - } else { - return 0; - } - default: - throw new InvalidOperationException(datum.type()); - } - } - - @Override - public Datum plus(Datum datum) { - switch (datum.type()) { - case SHORT: - return DatumFactory.createFloat(val + datum.asShort()); - case INT: - return DatumFactory.createFloat(val + datum.asInt()); - case LONG: - return DatumFactory.createDouble(val + datum.asLong()); - case FLOAT: - return DatumFactory.createDouble(val + datum.asFloat()); - case DOUBLE: - return DatumFactory.createDouble(val + datum.asDouble()); - default: - throw new InvalidOperationException(datum.type()); - } - } - - @Override - public Datum minus(Datum datum) { - switch (datum.type()) { - case SHORT: - return DatumFactory.createFloat(val - datum.asShort()); - case INT: - return DatumFactory.createFloat(val - datum.asInt()); - case LONG: - return DatumFactory.createDouble(val - datum.asLong()); - case FLOAT: - return DatumFactory.createDouble(val - datum.asFloat()); - case DOUBLE: - return DatumFactory.createDouble(val - datum.asDouble()); - default: - throw new InvalidOperationException(datum.type()); - } - } - - @Override - public Datum multiply(Datum datum) { - switch (datum.type()) { - case SHORT: - return DatumFactory.createFloat(val * datum.asShort()); - case INT: - return DatumFactory.createFloat(val * datum.asInt()); - case LONG: - return DatumFactory.createDouble(val * datum.asLong()); - case FLOAT: - return DatumFactory.createDouble(val * datum.asFloat()); - case DOUBLE: - return DatumFactory.createDouble(val * datum.asDouble()); - default: - throw new InvalidOperationException(); - } - } - - @Override - public Datum divide(Datum datum) { - switch (datum.type()) { - case SHORT: - return DatumFactory.createFloat(val / datum.asShort()); - case INT: - return DatumFactory.createFloat(val / datum.asInt()); - case LONG: - return DatumFactory.createDouble(val / datum.asLong()); - case FLOAT: - return DatumFactory.createDouble(val / datum.asFloat()); - case DOUBLE: - return DatumFactory.createDouble(val / datum.asDouble()); - default: - throw new InvalidOperationException(datum.type()); - } - } - - @Override - public Datum modular(Datum datum) { - switch (datum.type()) { - case SHORT: - return DatumFactory.createFloat(val / datum.asShort()); - case INT: - return DatumFactory.createFloat(val / datum.asInt()); - case LONG: - return DatumFactory.createFloat(val / datum.asLong()); - case FLOAT: - return DatumFactory.createFloat(val / datum.asFloat()); - case DOUBLE: - return DatumFactory.createDouble(val / datum.asDouble()); - default: - throw new InvalidOperationException(datum.type()); - } - } - - @Override - public void inverseSign() { - this.val = - val; - } -} http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-common/src/main/java/tajo/datum/IPv4Datum.java ---------------------------------------------------------------------- diff --git a/tajo-common/src/main/java/tajo/datum/IPv4Datum.java b/tajo-common/src/main/java/tajo/datum/IPv4Datum.java deleted file mode 100644 index dd3e95b..0000000 --- a/tajo-common/src/main/java/tajo/datum/IPv4Datum.java +++ /dev/null @@ -1,136 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package tajo.datum; - -import com.google.common.base.Preconditions; -import com.google.gson.annotations.Expose; -import tajo.datum.exception.InvalidOperationException; -import tajo.datum.json.GsonCreator; - -public class IPv4Datum extends Datum { - private static final int size = 4; - @Expose private int address; - - public IPv4Datum() { - super(DatumType.IPv4); - } - - public IPv4Datum(String addr) { - this(); - String [] elems = addr.split("\\."); - address = Integer.valueOf(elems[3]) & 0xFF; - address |= ((Integer.valueOf(elems[2]) << 8) & 0xFF00); - address |= ((Integer.valueOf(elems[1]) << 16) & 0xFF0000); - address |= ((Integer.valueOf(elems[0]) << 24) & 0xFF000000); - } - - public IPv4Datum(byte [] addr) { - this(); - Preconditions.checkArgument(addr.length == size); - address = addr[3] & 0xFF; - address |= ((addr[2] << 8) & 0xFF00); - address |= ((addr[1] << 16) & 0xFF0000); - address |= ((addr[0] << 24) & 0xFF000000); - } - - @Override - public int asInt() { - return this.address; - } - - @Override - public long asLong() { - return this.address; - } - - @Override - public byte[] asByteArray() { - byte[] addr = new byte[size]; - addr[0] = (byte) ((address >>> 24) & 0xFF); - addr[1] = (byte) ((address >>> 16) & 0xFF); - addr[2] = (byte) ((address >>> 8) & 0xFF); - addr[3] = (byte) (address & 0xFF); - return addr; - } - - @Override - public String asChars() { - return numericToTextFormat(asByteArray()); - } - - @Override - public String toJSON() { - return GsonCreator.getInstance().toJson(this, Datum.class); - } - - @Override - public int size() { - return size; - } - - @Override - public int hashCode() { - return address; - } - - @Override - public boolean equals(Object obj) { - if (obj instanceof IPv4Datum) { - IPv4Datum other = (IPv4Datum) obj; - return this.address == other.address; - } - - return false; - } - - @Override - public BoolDatum equalsTo(Datum datum) { - switch (datum.type()) { - case IPv4: - return DatumFactory.createBool(this.address == ((IPv4Datum)datum).address); - default: - throw new InvalidOperationException(datum.type()); - } - } - - @Override - public int compareTo(Datum datum) { - switch (datum.type()) { - case IPv4: - byte [] bytes = asByteArray(); - byte [] other = datum.asByteArray(); - - for (int i = 0; i < 4; i++) { - if (bytes[i] > other[i]) { - return 1; - } else if (bytes[i] < other[i]) { - return -1; - } - } - - default: - throw new InvalidOperationException(datum.type()); - } - } - - static String numericToTextFormat(byte[] src) { - return (src[0] & 0xff) + "." + (src[1] & 0xff) + "." + (src[2] & 0xff) - + "." + (src[3] & 0xff); - } -} http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-common/src/main/java/tajo/datum/IntDatum.java ---------------------------------------------------------------------- diff --git a/tajo-common/src/main/java/tajo/datum/IntDatum.java b/tajo-common/src/main/java/tajo/datum/IntDatum.java deleted file mode 100644 index 281aba3..0000000 --- a/tajo-common/src/main/java/tajo/datum/IntDatum.java +++ /dev/null @@ -1,274 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package tajo.datum; - -import com.google.gson.annotations.Expose; -import tajo.datum.exception.InvalidCastException; -import tajo.datum.exception.InvalidOperationException; -import tajo.datum.json.GsonCreator; - -import java.nio.ByteBuffer; - -public class IntDatum extends NumericDatum { - private static final int size = 4; - - @Expose private int val; - - public IntDatum() { - super(DatumType.INT); - } - - public IntDatum(int val) { - this(); - this.val = val; - } - - public IntDatum(byte [] bytes) { - this(); - ByteBuffer bb = ByteBuffer.wrap(bytes); - this.val = bb.getInt(); - } - - @Override - public short asShort() { - return (short) val; - } - - @Override - public int asInt() { - return val; - } - - @Override - public long asLong() { - return val; - } - - @Override - public byte asByte() { - throw new InvalidCastException(); - } - - @Override - public byte[] asByteArray() { - ByteBuffer bb = ByteBuffer.allocate(4); - bb.putInt(val); - return bb.array(); - } - - @Override - public float asFloat() { - return val; - } - - @Override - public double asDouble() { - return val; - } - - @Override - public String asChars() { - return ""+val; - } - - @Override - public String toJSON() { - return GsonCreator.getInstance().toJson(this, Datum.class); - } - - @Override - public int size() { - return size; - } - - @Override - public int hashCode() { - return val; - } - - public boolean equals(Object obj) { - if (obj instanceof IntDatum) { - IntDatum other = (IntDatum) obj; - return val == other.val; - } - - return false; - } - - @Override - public BoolDatum equalsTo(Datum datum) { - switch (datum.type()) { - case SHORT: - return DatumFactory.createBool(val == datum.asShort()); - case INT: - return DatumFactory.createBool(val == datum.asInt()); - case LONG: - return DatumFactory.createBool(val == datum.asLong()); - case FLOAT: - return DatumFactory.createBool(val == datum.asFloat()); - case DOUBLE: - return DatumFactory.createBool(val == datum.asDouble()); - default: - throw new InvalidOperationException(); - } - } - - @Override - public int compareTo(Datum datum) { - switch (datum.type()) { - case SHORT: - if (val < datum.asShort()) { - return -1; - } else if (datum.asShort() < val) { - return 1; - } else { - return 0; - } - case INT: - if (val < datum.asInt()) { - return -1; - } else if (datum.asInt() < val) { - return 1; - } else { - return 0; - } - case LONG: - if (val < datum.asLong()) { - return -1; - } else if (datum.asLong() < val) { - return 1; - } else { - return 0; - } - case FLOAT: - if (val < datum.asFloat()) { - return -1; - } else if (datum.asFloat() < val) { - return 1; - } else { - return 0; - } - case DOUBLE: - if (val < datum.asDouble()) { - return -1; - } else if (datum.asDouble() < val) { - return 1; - } else { - return 0; - } - default: - throw new InvalidOperationException(datum.type()); - } - } - - @Override - public Datum plus(Datum datum) { - switch (datum.type()) { - case SHORT: - return DatumFactory.createInt(val + datum.asShort()); - case INT: - return DatumFactory.createInt(val + datum.asInt()); - case LONG: - return DatumFactory.createLong(val + datum.asLong()); - case FLOAT: - return DatumFactory.createFloat(val + datum.asFloat()); - case DOUBLE: - return DatumFactory.createDouble(val + datum.asDouble()); - default: - throw new InvalidOperationException(datum.type()); - } - } - - @Override - public Datum minus(Datum datum) { - switch (datum.type()) { - case SHORT: - return DatumFactory.createInt(val - datum.asShort()); - case INT: - return DatumFactory.createInt(val - datum.asInt()); - case LONG: - return DatumFactory.createLong(val - datum.asLong()); - case FLOAT: - return DatumFactory.createFloat(val - datum.asFloat()); - case DOUBLE: - return DatumFactory.createDouble(val - datum.asDouble()); - default: - throw new InvalidOperationException(datum.type()); - } - } - - @Override - public Datum multiply(Datum datum) { - switch (datum.type()) { - case SHORT: - return DatumFactory.createInt(val * datum.asShort()); - case INT: - return DatumFactory.createInt(val * datum.asInt()); - case LONG: - return DatumFactory.createLong(val * datum.asLong()); - case FLOAT: - return DatumFactory.createFloat(val * datum.asFloat()); - case DOUBLE: - return DatumFactory.createDouble(val * datum.asDouble()); - default: - throw new InvalidOperationException(); - } - } - - @Override - public Datum divide(Datum datum) { - switch (datum.type()) { - case SHORT: - return DatumFactory.createInt(val / datum.asShort()); - case INT: - return DatumFactory.createInt(val / datum.asInt()); - case LONG: - return DatumFactory.createLong(val / datum.asLong()); - case FLOAT: - return DatumFactory.createFloat(val / datum.asFloat()); - case DOUBLE: - return DatumFactory.createDouble(val / datum.asDouble()); - default: - throw new InvalidOperationException(datum.type()); - } - } - - @Override - public Datum modular(Datum datum) { - switch (datum.type()) { - case SHORT: - return DatumFactory.createInt(val % datum.asShort()); - case INT: - return DatumFactory.createInt(val % datum.asInt()); - case LONG: - return DatumFactory.createLong(val % datum.asLong()); - case FLOAT: - return DatumFactory.createFloat(val % datum.asFloat()); - case DOUBLE: - return DatumFactory.createDouble(val % datum.asDouble()); - default: - throw new InvalidOperationException(datum.type()); - } - } - - @Override - public void inverseSign() { - this.val = - val; - } -} http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-common/src/main/java/tajo/datum/LongDatum.java ---------------------------------------------------------------------- diff --git a/tajo-common/src/main/java/tajo/datum/LongDatum.java b/tajo-common/src/main/java/tajo/datum/LongDatum.java deleted file mode 100644 index ae53224..0000000 --- a/tajo-common/src/main/java/tajo/datum/LongDatum.java +++ /dev/null @@ -1,279 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package tajo.datum; - -import com.google.gson.annotations.Expose; -import tajo.datum.exception.InvalidCastException; -import tajo.datum.exception.InvalidOperationException; -import tajo.datum.json.GsonCreator; - -import java.nio.ByteBuffer; - -public class LongDatum extends NumericDatum { - private static final int size = 8; - @Expose private long val; - - public LongDatum() { - super(DatumType.LONG); - } - - public LongDatum(long val) { - this(); - this.val = val; - } - - public LongDatum(byte [] bytes) { - this(); - ByteBuffer bb = ByteBuffer.wrap(bytes); - val = bb.getLong(); - } - - @Override - public boolean asBool() { - throw new InvalidCastException(); - } - - @Override - public short asShort() { - return (short) val; - } - - @Override - public int asInt() { - return (int) val; - } - - @Override - public long asLong() { - return val; - } - - @Override - public byte asByte() { - throw new InvalidCastException(); - } - - @Override - public byte[] asByteArray() { - ByteBuffer bb = ByteBuffer.allocate(8); - bb.putLong(val); - return bb.array(); - } - - @Override - public float asFloat() { - return val; - } - - @Override - public double asDouble() { - return val; - } - - @Override - public String asChars() { - return ""+val; - } - - @Override - public String toJSON() { - return GsonCreator.getInstance().toJson(this, Datum.class); - } - - @Override - public int size() { - return size; - } - - @Override - public int hashCode() { - return (int) val; - } - - @Override - public boolean equals(Object obj) { - if (obj instanceof LongDatum) { - LongDatum other = (LongDatum) obj; - return val == other.val; - } - - return false; - } - - @Override - public BoolDatum equalsTo(Datum datum) { - switch (datum.type()) { - case SHORT: - return DatumFactory.createBool(val == datum.asShort()); - case INT: - return DatumFactory.createBool(val == datum.asInt()); - case LONG: - return DatumFactory.createBool(val == datum.asLong()); - case FLOAT: - return DatumFactory.createBool(val == datum.asFloat()); - case DOUBLE: - return DatumFactory.createBool(val == datum.asDouble()); - default: - throw new InvalidOperationException(datum.type()); - } - } - - @Override - public int compareTo(Datum datum) { - switch (datum.type()) { - case SHORT: - if (val < datum.asShort()) { - return -1; - } else if (datum.asShort() < val) { - return 1; - } else { - return 0; - } - case INT: - if (val < datum.asInt()) { - return -1; - } else if (datum.asInt() < val) { - return 1; - } else { - return 0; - } - case LONG: - if (val < datum.asLong()) { - return -1; - } else if (datum.asLong() < val) { - return 1; - } else { - return 0; - } - case FLOAT: - if (val < datum.asFloat()) { - return -1; - } else if (datum.asFloat() < val) { - return 1; - } else { - return 0; - } - case DOUBLE: - if (val < datum.asDouble()) { - return -1; - } else if (datum.asDouble() < val) { - return 1; - } else { - return 0; - } - default: - throw new InvalidOperationException(datum.type()); - } - } - - @Override - public Datum plus(Datum datum) { - switch (datum.type()) { - case SHORT: - return DatumFactory.createLong(val + datum.asShort()); - case INT: - return DatumFactory.createLong(val + datum.asInt()); - case LONG: - return DatumFactory.createLong(val + datum.asLong()); - case FLOAT: - return DatumFactory.createDouble(val + datum.asFloat()); - case DOUBLE: - return DatumFactory.createDouble(val + datum.asDouble()); - default: - throw new InvalidOperationException(datum.type()); - } - } - - @Override - public Datum minus(Datum datum) { - switch (datum.type()) { - case SHORT: - return DatumFactory.createLong(val - datum.asShort()); - case INT: - return DatumFactory.createLong(val - datum.asInt()); - case LONG: - return DatumFactory.createLong(val - datum.asLong()); - case FLOAT: - return DatumFactory.createDouble(val - datum.asFloat()); - case DOUBLE: - return DatumFactory.createDouble(val - datum.asDouble()); - default: - throw new InvalidOperationException(datum.type()); - } - } - - @Override - public Datum multiply(Datum datum) { - switch (datum.type()) { - case SHORT: - return DatumFactory.createLong(val * datum.asShort()); - case INT: - return DatumFactory.createLong(val * datum.asInt()); - case LONG: - return DatumFactory.createLong(val * datum.asLong()); - case FLOAT: - return DatumFactory.createDouble(val * datum.asFloat()); - case DOUBLE: - return DatumFactory.createDouble(val * datum.asDouble()); - default: - throw new InvalidOperationException(datum.type()); - } - } - - @Override - public Datum divide(Datum datum) { - switch (datum.type()) { - case SHORT: - return DatumFactory.createLong(val / datum.asShort()); - case INT: - return DatumFactory.createLong(val / datum.asInt()); - case LONG: - return DatumFactory.createLong(val / datum.asLong()); - case FLOAT: - return DatumFactory.createDouble(val / datum.asFloat()); - case DOUBLE: - return DatumFactory.createDouble(val / datum.asDouble()); - default: - throw new InvalidOperationException(datum.type()); - } - } - - @Override - public Datum modular(Datum datum) { - switch (datum.type()) { - case SHORT: - return DatumFactory.createLong(val % datum.asShort()); - case INT: - return DatumFactory.createLong(val % datum.asInt()); - case LONG: - return DatumFactory.createLong(val % datum.asLong()); - case FLOAT: - return DatumFactory.createDouble(val % datum.asFloat()); - case DOUBLE: - return DatumFactory.createDouble(val % datum.asDouble()); - default: - throw new InvalidOperationException(datum.type()); - } - } - - @Override - public void inverseSign() { - this.val = -val; - } -} http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-common/src/main/java/tajo/datum/NullDatum.java ---------------------------------------------------------------------- diff --git a/tajo-common/src/main/java/tajo/datum/NullDatum.java b/tajo-common/src/main/java/tajo/datum/NullDatum.java index 2460a89..b34e6dd 100644 --- a/tajo-common/src/main/java/tajo/datum/NullDatum.java +++ b/tajo-common/src/main/java/tajo/datum/NullDatum.java @@ -20,6 +20,8 @@ package tajo.datum; import tajo.util.Bytes; +import static tajo.common.TajoDataTypes.Type; + public class NullDatum extends Datum { private static final NullDatum instance; @@ -28,7 +30,7 @@ public class NullDatum extends Datum { } private NullDatum() { - super(DatumType.NULL); + super(Type.ANY); } public static NullDatum get() { @@ -46,17 +48,17 @@ public class NullDatum extends Datum { } @Override - public short asShort() { + public short asInt2() { return Short.MIN_VALUE; } @Override - public int asInt() { + public int asInt4() { return Integer.MIN_VALUE; } @Override - public long asLong() { + public long asInt8() { return Long.MIN_VALUE; } @@ -66,12 +68,12 @@ public class NullDatum extends Datum { } @Override - public float asFloat() { + public float asFloat4() { return Float.NaN; } @Override - public double asDouble() { + public double asFloat8() { return Double.NaN; } @@ -87,11 +89,7 @@ public class NullDatum extends Datum { @Override public boolean equals(Object obj) { - if (obj instanceof NullDatum) { - return true; - } else { - return false; - } + return obj instanceof NullDatum; } @Override http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/c1c6f83e/tajo-common/src/main/java/tajo/datum/NumericDatum.java ---------------------------------------------------------------------- diff --git a/tajo-common/src/main/java/tajo/datum/NumericDatum.java b/tajo-common/src/main/java/tajo/datum/NumericDatum.java index 3a7cb29..4f58aa0 100644 --- a/tajo-common/src/main/java/tajo/datum/NumericDatum.java +++ b/tajo-common/src/main/java/tajo/datum/NumericDatum.java @@ -19,9 +19,11 @@ package tajo.datum; +import tajo.common.TajoDataTypes; + public abstract class NumericDatum extends Datum { - public NumericDatum(DatumType type) { + public NumericDatum(TajoDataTypes.Type type) { super(type); }