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/05/23 03:08:43 UTC
[2/2] tajo git commit: TAJO-2154: Refactor Datum to use new Type
implementation.
TAJO-2154: Refactor Datum to use new Type implementation.
Closes #1017
Project: http://git-wip-us.apache.org/repos/asf/tajo/repo
Commit: http://git-wip-us.apache.org/repos/asf/tajo/commit/13212495
Tree: http://git-wip-us.apache.org/repos/asf/tajo/tree/13212495
Diff: http://git-wip-us.apache.org/repos/asf/tajo/diff/13212495
Branch: refs/heads/master
Commit: 132124955d9af4a98ffb9893563be6f212a0c33a
Parents: d819bee
Author: Hyunsik Choi <hy...@apache.org>
Authored: Sun May 22 17:25:24 2016 -0700
Committer: Hyunsik Choi <hy...@apache.org>
Committed: Sun May 22 17:25:39 2016 -0700
----------------------------------------------------------------------
CHANGES | 2 +
.../org/apache/tajo/jdbc/MetaDataTuple.java | 2 +-
.../apache/tajo/common/type/TajoTypeUtil.java | 16 +-
.../java/org/apache/tajo/datum/AnyDatum.java | 9 +-
.../java/org/apache/tajo/datum/BitDatum.java | 8 +-
.../java/org/apache/tajo/datum/BlobDatum.java | 12 +-
.../org/apache/tajo/datum/BooleanDatum.java | 13 +-
.../java/org/apache/tajo/datum/CharDatum.java | 10 +-
.../java/org/apache/tajo/datum/DateDatum.java | 16 +-
.../main/java/org/apache/tajo/datum/Datum.java | 63 +++----
.../org/apache/tajo/datum/DatumFactory.java | 8 +-
.../java/org/apache/tajo/datum/Float4Datum.java | 34 ++--
.../java/org/apache/tajo/datum/Float8Datum.java | 21 +--
.../java/org/apache/tajo/datum/Int2Datum.java | 21 +--
.../java/org/apache/tajo/datum/Int4Datum.java | 21 +--
.../java/org/apache/tajo/datum/Int8Datum.java | 22 +--
.../org/apache/tajo/datum/IntervalDatum.java | 18 +-
.../java/org/apache/tajo/datum/NullDatum.java | 12 +-
.../org/apache/tajo/datum/NumericDatum.java | 4 +-
.../org/apache/tajo/datum/ProtobufDatum.java | 6 +-
.../java/org/apache/tajo/datum/TextDatum.java | 11 +-
.../java/org/apache/tajo/datum/TimeDatum.java | 12 +-
.../org/apache/tajo/datum/TimestampDatum.java | 12 +-
.../exception/InvalidOperationException.java | 8 +-
.../exception/InvalidValueForCastException.java | 4 +
.../java/org/apache/tajo/json/DatumAdapter.java | 13 +-
.../java/org/apache/tajo/storage/VTuple.java | 2 +-
.../src/main/java/org/apache/tajo/type/Any.java | 2 +-
.../main/java/org/apache/tajo/type/Array.java | 2 +-
.../src/main/java/org/apache/tajo/type/Bit.java | 27 +++
.../main/java/org/apache/tajo/type/Blob.java | 2 +-
.../main/java/org/apache/tajo/type/Bool.java | 2 +-
.../main/java/org/apache/tajo/type/Char.java | 2 +-
.../main/java/org/apache/tajo/type/Date.java | 2 +-
.../main/java/org/apache/tajo/type/Float4.java | 2 +-
.../main/java/org/apache/tajo/type/Float8.java | 2 +-
.../main/java/org/apache/tajo/type/Int1.java | 2 +-
.../main/java/org/apache/tajo/type/Int2.java | 2 +-
.../main/java/org/apache/tajo/type/Int4.java | 2 +-
.../main/java/org/apache/tajo/type/Int8.java | 2 +-
.../java/org/apache/tajo/type/Interval.java | 2 +-
.../src/main/java/org/apache/tajo/type/Map.java | 2 +-
.../main/java/org/apache/tajo/type/Null.java | 2 +-
.../main/java/org/apache/tajo/type/Numeric.java | 2 +-
.../main/java/org/apache/tajo/type/Record.java | 2 +-
.../main/java/org/apache/tajo/type/Text.java | 2 +-
.../main/java/org/apache/tajo/type/Time.java | 2 +-
.../java/org/apache/tajo/type/Timestamp.java | 2 +-
.../main/java/org/apache/tajo/type/Type.java | 16 +-
.../java/org/apache/tajo/type/TypeFactory.java | 2 +-
.../main/java/org/apache/tajo/type/Varchar.java | 2 +-
.../org/apache/tajo/datum/TestBitDatum.java | 12 +-
.../org/apache/tajo/datum/TestBoolDatum.java | 7 -
.../org/apache/tajo/datum/TestBytesDatum.java | 19 +--
.../org/apache/tajo/datum/TestCharDatum.java | 4 +-
.../org/apache/tajo/datum/TestDateDatum.java | 10 +-
.../java/org/apache/tajo/datum/TestDatum.java | 106 ++++++------
.../org/apache/tajo/datum/TestDatumFactory.java | 18 +-
.../org/apache/tajo/datum/TestFloat8Datum.java | 6 -
.../org/apache/tajo/datum/TestFloatDatum.java | 6 -
.../org/apache/tajo/datum/TestInt2Datum.java | 7 -
.../org/apache/tajo/datum/TestInt4Datum.java | 7 -
.../org/apache/tajo/datum/TestInt8Datum.java | 11 +-
.../apache/tajo/datum/TestIntervalDatum.java | 43 ++---
.../org/apache/tajo/datum/TestTextDatum.java | 8 +-
.../org/apache/tajo/datum/TestTimeDatum.java | 10 +-
.../apache/tajo/datum/TestTimestampDatum.java | 7 -
.../tajo/tuple/memory/TestMemoryRowBlock.java | 2 +-
.../engine/function/json/JsonArrayContains.java | 12 +-
.../org/apache/tajo/plan/LogicalPlanner.java | 2 +-
.../org/apache/tajo/plan/expr/BinaryEval.java | 3 +-
.../org/apache/tajo/plan/expr/ConstEval.java | 3 +-
.../apache/tajo/plan/expr/RowConstantEval.java | 3 +-
.../plan/function/stream/CSVLineSerializer.java | 20 +--
.../stream/TextFieldSerializerDeserializer.java | 2 +-
.../tajo/plan/serder/EvalNodeSerializer.java | 6 +-
.../tajo/plan/util/EvalNodeToExprConverter.java | 2 +-
.../tajo/plan/util/WritableTypeConverter.java | 7 +-
.../java/org/apache/tajo/storage/LazyTuple.java | 2 +-
.../org/apache/tajo/storage/MemoryUtil.java | 167 -------------------
.../storage/jdbc/SQLExpressionGenerator.java | 4 +-
81 files changed, 384 insertions(+), 599 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 9af0928..6819aa5 100644
--- a/CHANGES
+++ b/CHANGES
@@ -277,6 +277,8 @@ Release 0.12.0 - unreleased
TASKS
+ TAJO-2154: Refactor Datum to use new Type implementation. (hyunsik)
+
TAJO-2027: Writing Hive UDF integration document. (Jongyoung via hyunsik)
TAJO-2157: EvalNodeSerializer/Deserializer should use new Type
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-client/src/main/java/org/apache/tajo/jdbc/MetaDataTuple.java
----------------------------------------------------------------------
diff --git a/tajo-client/src/main/java/org/apache/tajo/jdbc/MetaDataTuple.java b/tajo-client/src/main/java/org/apache/tajo/jdbc/MetaDataTuple.java
index bb20c0a..62f944c 100644
--- a/tajo-client/src/main/java/org/apache/tajo/jdbc/MetaDataTuple.java
+++ b/tajo-client/src/main/java/org/apache/tajo/jdbc/MetaDataTuple.java
@@ -85,7 +85,7 @@ public class MetaDataTuple implements Tuple {
@Override
public TajoDataTypes.Type type(int fieldId) {
- return values.get(fieldId).type();
+ return values.get(fieldId).kind();
}
@Override
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/common/type/TajoTypeUtil.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/common/type/TajoTypeUtil.java b/tajo-common/src/main/java/org/apache/tajo/common/type/TajoTypeUtil.java
index bbab9de..658af65 100644
--- a/tajo-common/src/main/java/org/apache/tajo/common/type/TajoTypeUtil.java
+++ b/tajo-common/src/main/java/org/apache/tajo/common/type/TajoTypeUtil.java
@@ -182,20 +182,18 @@ public class TajoTypeUtil {
}
}
- public static boolean isNumeric(Type type) {
- return isNumber(type) || isReal(type);
+ public static boolean isNumeric(org.apache.tajo.type.Type type) {
+ return isNumber(type) || isReal(type.kind());
}
- public static boolean isNumber(Type type) {
+ public static boolean isNumber(org.apache.tajo.type.Type type) {
return
- type == Type.INT2 ||
- type == Type.INT4 ||
- type == Type.INT8;
+ type.kind() == Type.INT2 ||
+ type.kind() == Type.INT4 ||
+ type.kind() == Type.INT8;
}
public static boolean isReal(Type type) {
- return
- type == Type.FLOAT4||
- type == Type.FLOAT8;
+ return type == Type.FLOAT4|| type == Type.FLOAT8;
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/datum/AnyDatum.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/datum/AnyDatum.java b/tajo-common/src/main/java/org/apache/tajo/datum/AnyDatum.java
index 0771a6e..45b9520 100644
--- a/tajo-common/src/main/java/org/apache/tajo/datum/AnyDatum.java
+++ b/tajo-common/src/main/java/org/apache/tajo/datum/AnyDatum.java
@@ -19,8 +19,7 @@
package org.apache.tajo.datum;
import com.google.gson.annotations.Expose;
-
-import static org.apache.tajo.common.TajoDataTypes.Type.ANY;
+import org.apache.tajo.type.Type;
/**
* <code>AnyDatum</code> can contain any types of datum.
@@ -29,7 +28,7 @@ public class AnyDatum extends Datum {
@Expose Datum val;
public AnyDatum(Datum val) {
- super(ANY);
+ super(Type.Any);
this.val = val;
}
@@ -58,7 +57,7 @@ public class AnyDatum extends Datum {
@Override
public Datum equalsTo(Datum datum) {
- if (datum.type() == ANY) {
+ if (datum.type.isAny()) {
AnyDatum other = (AnyDatum) datum;
return val.equalsTo(other.val);
}
@@ -67,7 +66,7 @@ public class AnyDatum extends Datum {
@Override
public int compareTo(Datum datum) {
- if (datum.type() == ANY) {
+ if (datum.type.isAny()) {
AnyDatum other = (AnyDatum) datum;
return val.compareTo(other.val);
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/datum/BitDatum.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/datum/BitDatum.java b/tajo-common/src/main/java/org/apache/tajo/datum/BitDatum.java
index 8ada5e8..81fae51 100644
--- a/tajo-common/src/main/java/org/apache/tajo/datum/BitDatum.java
+++ b/tajo-common/src/main/java/org/apache/tajo/datum/BitDatum.java
@@ -19,8 +19,8 @@
package org.apache.tajo.datum;
import com.google.gson.annotations.Expose;
-import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.exception.InvalidOperationException;
+import org.apache.tajo.type.Type;
import org.apache.tajo.util.NumberUtil;
public class BitDatum extends Datum {
@@ -28,7 +28,7 @@ public class BitDatum extends Datum {
@Expose final byte val;
public BitDatum(byte val) {
- super(TajoDataTypes.Type.BIT);
+ super(Type.Bit);
this.val = val;
}
@@ -105,7 +105,7 @@ public class BitDatum extends Datum {
@Override
public Datum equalsTo(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case BIT:
return DatumFactory.createBool(this.val == (((BitDatum) datum).val));
case NULL_TYPE:
@@ -117,7 +117,7 @@ public class BitDatum extends Datum {
@Override
public int compareTo(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case BIT:
if (val < datum.asByte() ) {
return -1;
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/datum/BlobDatum.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/datum/BlobDatum.java b/tajo-common/src/main/java/org/apache/tajo/datum/BlobDatum.java
index 3de5135..f86bc1e 100644
--- a/tajo-common/src/main/java/org/apache/tajo/datum/BlobDatum.java
+++ b/tajo-common/src/main/java/org/apache/tajo/datum/BlobDatum.java
@@ -28,21 +28,21 @@ import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.util.Arrays;
-import static org.apache.tajo.common.TajoDataTypes.Type.BLOB;
+import static org.apache.tajo.type.Type.Blob;
public class BlobDatum extends Datum {
@Expose private final byte [] val;
private ByteBuffer bb = null;
public BlobDatum(byte[] val) {
- super(BLOB);
+ super(Blob);
this.val = val;
this.bb = ByteBuffer.wrap(val);
bb.flip();
}
public BlobDatum(byte[] val, int offset, int length) {
- super(BLOB);
+ super(Blob);
byte[] b = new byte[length];
System.arraycopy(val, offset, b, 0 , length);
this.val = b;
@@ -51,7 +51,7 @@ public class BlobDatum extends Datum {
}
public BlobDatum(ByteBuffer val) {
- super(BLOB);
+ super(Blob);
this.val = val.array();
this.bb = val.duplicate();
bb.flip();
@@ -138,7 +138,7 @@ public class BlobDatum extends Datum {
@Override
public Datum equalsTo(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case BLOB:
return DatumFactory.createBool(Arrays.equals(this.val, ((BlobDatum)datum).val));
case NULL_TYPE:
@@ -150,7 +150,7 @@ public class BlobDatum extends Datum {
@Override
public int compareTo(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case BLOB:
initFromBytes();
((BlobDatum)datum).initFromBytes();
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/datum/BooleanDatum.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/datum/BooleanDatum.java b/tajo-common/src/main/java/org/apache/tajo/datum/BooleanDatum.java
index 596540f..7a2df03 100644
--- a/tajo-common/src/main/java/org/apache/tajo/datum/BooleanDatum.java
+++ b/tajo-common/src/main/java/org/apache/tajo/datum/BooleanDatum.java
@@ -20,9 +20,10 @@ package org.apache.tajo.datum;
import com.google.common.primitives.Booleans;
import com.google.gson.annotations.Expose;
-import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.exception.InvalidOperationException;
+import static org.apache.tajo.type.Type.Bool;
+
public class BooleanDatum extends Datum {
@Expose private final boolean val;
public static final String TRUE_STRING ="t";
@@ -57,17 +58,17 @@ public class BooleanDatum extends Datum {
};
private BooleanDatum(boolean val) {
- super(TajoDataTypes.Type.BOOLEAN);
+ super(Bool);
this.val = val;
}
protected BooleanDatum(byte byteVal) {
- super(TajoDataTypes.Type.BOOLEAN);
+ super(Bool);
this.val = byteVal == TRUE_INT;
}
protected BooleanDatum(int byteVal) {
- super(TajoDataTypes.Type.BOOLEAN);
+ super(Bool);
this.val = byteVal == TRUE_INT;
}
@@ -157,7 +158,7 @@ public class BooleanDatum extends Datum {
// Datum Comparator
public BooleanDatum equalsTo(Datum datum) {
- switch(datum.type()) {
+ switch(datum.kind()) {
case BOOLEAN: return DatumFactory.createBool(this.val == ((BooleanDatum)datum).val);
default:
throw new InvalidOperationException(datum.type());
@@ -166,7 +167,7 @@ public class BooleanDatum extends Datum {
@Override
public int compareTo(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case BOOLEAN:
return Booleans.compare(val, datum.asBool());
default:
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/datum/CharDatum.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/datum/CharDatum.java b/tajo-common/src/main/java/org/apache/tajo/datum/CharDatum.java
index 750930f..6b75ac6 100644
--- a/tajo-common/src/main/java/org/apache/tajo/datum/CharDatum.java
+++ b/tajo-common/src/main/java/org/apache/tajo/datum/CharDatum.java
@@ -24,7 +24,7 @@ import org.apache.tajo.exception.InvalidOperationException;
import java.util.Arrays;
-import static org.apache.tajo.common.TajoDataTypes.Type;
+import static org.apache.tajo.type.Type.Char;
public class CharDatum extends Datum {
@Expose private final int size;
@@ -32,7 +32,7 @@ public class CharDatum extends Datum {
private String chars = null;
public CharDatum(byte val) {
- super(Type.CHAR);
+ super(Char(1));
this.size = 1;
bytes = new byte[size];
bytes[0] = val;
@@ -43,7 +43,7 @@ public class CharDatum extends Datum {
}
public CharDatum(byte [] bytes) {
- super(Type.CHAR);
+ super(Char(1));
this.bytes = bytes;
this.size = bytes.length;
}
@@ -131,7 +131,7 @@ public class CharDatum extends Datum {
@Override
public Datum equalsTo(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case CHAR:
case VARCHAR:
case TEXT:
@@ -147,7 +147,7 @@ public class CharDatum extends Datum {
@Override
public int compareTo(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case CHAR:
case TEXT:
return UnsignedBytes.lexicographicalComparator().compare(bytes, datum.asByteArray());
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/datum/DateDatum.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/datum/DateDatum.java b/tajo-common/src/main/java/org/apache/tajo/datum/DateDatum.java
index fffdca8..e8af261 100644
--- a/tajo-common/src/main/java/org/apache/tajo/datum/DateDatum.java
+++ b/tajo-common/src/main/java/org/apache/tajo/datum/DateDatum.java
@@ -21,8 +21,8 @@ package org.apache.tajo.datum;
import com.google.common.primitives.Ints;
import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.common.TajoDataTypes.Type;
-import org.apache.tajo.exception.InvalidValueForCastException;
import org.apache.tajo.exception.InvalidOperationException;
+import org.apache.tajo.exception.InvalidValueForCastException;
import org.apache.tajo.exception.TajoRuntimeException;
import org.apache.tajo.util.Bytes;
import org.apache.tajo.util.datetime.DateTimeConstants.DateStyle;
@@ -30,6 +30,8 @@ import org.apache.tajo.util.datetime.DateTimeFormat;
import org.apache.tajo.util.datetime.DateTimeUtil;
import org.apache.tajo.util.datetime.TimeMeta;
+import static org.apache.tajo.type.Type.Date;
+
public class DateDatum extends Datum {
public static final int SIZE = 4;
@@ -37,13 +39,13 @@ public class DateDatum extends Datum {
private int jdate;
public DateDatum(int value) {
- super(TajoDataTypes.Type.DATE);
+ super(Date);
jdate = value;
}
public DateDatum(TimeMeta tm) {
- super(TajoDataTypes.Type.DATE);
+ super(Date);
jdate = DateTimeUtil.date2j(tm.years, tm.monthOfYear, tm.dayOfMonth);
}
@@ -102,7 +104,7 @@ public class DateDatum extends Datum {
@Override
public Datum plus(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2:
case INT4:
case INT8: {
@@ -128,7 +130,7 @@ public class DateDatum extends Datum {
@Override
public Datum minus(Datum datum) {
- switch(datum.type()) {
+ switch(datum.kind()) {
case INT2:
case INT4:
case INT8: {
@@ -198,7 +200,7 @@ public class DateDatum extends Datum {
@Override
public Datum equalsTo(Datum datum) {
- if (datum.type() == Type.DATE) {
+ if (datum.kind() == Type.DATE) {
return DatumFactory.createBool(equals(datum));
} else if (datum.isNull()) {
return datum;
@@ -209,7 +211,7 @@ public class DateDatum extends Datum {
@Override
public int compareTo(Datum datum) {
- if (datum.type() == TajoDataTypes.Type.DATE) {
+ if (datum.kind() == TajoDataTypes.Type.DATE) {
DateDatum another = (DateDatum) datum;
return Ints.compare(jdate, another.jdate);
} else if (datum.isNull()) {
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/datum/Datum.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/datum/Datum.java b/tajo-common/src/main/java/org/apache/tajo/datum/Datum.java
index dc61145..61d8f48 100644
--- a/tajo-common/src/main/java/org/apache/tajo/datum/Datum.java
+++ b/tajo-common/src/main/java/org/apache/tajo/datum/Datum.java
@@ -20,6 +20,7 @@ package org.apache.tajo.datum;
import com.google.gson.annotations.Expose;
import org.apache.tajo.SessionVars;
+import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.common.type.TajoTypeUtil;
import org.apache.tajo.conf.TajoConf;
import org.apache.tajo.conf.TajoConf.ConfVars;
@@ -30,7 +31,7 @@ import org.apache.tajo.json.CommonGsonHelper;
import org.apache.tajo.json.GsonObject;
import org.apache.tajo.util.datetime.TimeMeta;
-import static org.apache.tajo.common.TajoDataTypes.Type;
+import static org.apache.tajo.common.TajoDataTypes.Type.*;
public abstract class Datum implements Comparable<Datum>, GsonObject {
static boolean abortWhenDivideByZero;
@@ -45,18 +46,22 @@ public abstract class Datum implements Comparable<Datum>, GsonObject {
}
}
- @Expose private final Type type;
+ @Expose protected final org.apache.tajo.type.Type type;
- public Datum(Type type) {
+ public Datum(org.apache.tajo.type.Type type) {
this.type = type;
}
- public Type type() {
+ public org.apache.tajo.type.Type type() {
return this.type;
}
+ public TajoDataTypes.Type kind() {
+ return this.type.kind();
+ }
+
public boolean isTrue() {
- return type == Type.BOOLEAN && asBool();
+ return type.kind() == BOOLEAN && asBool();
}
public boolean isNull() {
@@ -68,48 +73,48 @@ public abstract class Datum implements Comparable<Datum>, GsonObject {
}
public boolean asBool() {
- throw new TajoRuntimeException(new InvalidValueForCastException(type, Type.BOOLEAN));
+ throw new TajoRuntimeException(new InvalidValueForCastException(type.kind(), BOOLEAN));
}
public byte asByte() {
- throw new TajoRuntimeException(new InvalidValueForCastException(type, Type.BIT));
+ throw new TajoRuntimeException(new InvalidValueForCastException(type, BIT));
}
public char asChar() {
- throw new TajoRuntimeException(new InvalidValueForCastException(type, Type.CHAR));
+ throw new TajoRuntimeException(new InvalidValueForCastException(type, CHAR));
}
public short asInt2() {
- throw new TajoRuntimeException(new InvalidValueForCastException(type, Type.INT2));
+ throw new TajoRuntimeException(new InvalidValueForCastException(type, INT2));
}
public int asInt4() {
- throw new TajoRuntimeException(new InvalidValueForCastException(type, Type.INT4));
+ throw new TajoRuntimeException(new InvalidValueForCastException(type, INT4));
}
public long asInt8() {
- throw new TajoRuntimeException(new InvalidValueForCastException(type, Type.INT8));
+ throw new TajoRuntimeException(new InvalidValueForCastException(type, INT8));
}
public byte [] asByteArray() {
- throw new TajoRuntimeException(new InvalidValueForCastException(type, Type.BLOB));
+ throw new TajoRuntimeException(new InvalidValueForCastException(type, BLOB));
}
public float asFloat4() {
- throw new TajoRuntimeException(new InvalidValueForCastException(type, Type.FLOAT4));
+ throw new TajoRuntimeException(new InvalidValueForCastException(type, FLOAT4));
}
public double asFloat8() {
- throw new TajoRuntimeException(new InvalidValueForCastException(type, Type.FLOAT8));
+ throw new TajoRuntimeException(new InvalidValueForCastException(type, FLOAT8));
}
public String asChars() {
- throw new TajoRuntimeException(new InvalidValueForCastException(type, Type.TEXT));
+ throw new TajoRuntimeException(new InvalidValueForCastException(type, TEXT));
}
// todo remove this
public char [] asUnicodeChars() {
- throw new TajoRuntimeException(new InvalidValueForCastException(type, Type.TEXT));
+ throw new TajoRuntimeException(new InvalidValueForCastException(type, TEXT));
}
public byte[] asTextBytes() {
@@ -117,7 +122,7 @@ public abstract class Datum implements Comparable<Datum>, GsonObject {
}
public TimeMeta asTimeMeta() {
- throw new TajoRuntimeException(new InvalidValueForCastException(type, Type.INT8));
+ throw new TajoRuntimeException(new InvalidValueForCastException(type, TajoDataTypes.Type.INT8));
}
public boolean isNumeric() {
@@ -129,7 +134,7 @@ public abstract class Datum implements Comparable<Datum>, GsonObject {
}
public boolean isReal() {
- return TajoTypeUtil.isReal(type);
+ return TajoTypeUtil.isReal(type.kind());
}
protected static void initAbortWhenDivideByZero(TajoConf tajoConf) {
@@ -140,31 +145,31 @@ public abstract class Datum implements Comparable<Datum>, GsonObject {
// belows should be extracted out of datum
public Datum and(Datum datum) {
- throw new InvalidOperationException(datum.type);
+ throw new InvalidOperationException(type);
}
public Datum or(Datum datum) {
- throw new InvalidOperationException(datum.type);
+ throw new InvalidOperationException(type);
}
public Datum plus(Datum datum) {
- throw new InvalidOperationException(datum.type);
+ throw new InvalidOperationException(type);
}
public Datum minus(Datum datum) {
- throw new InvalidOperationException(datum.type);
+ throw new InvalidOperationException(type);
}
public Datum multiply(Datum datum) {
- throw new InvalidOperationException(datum.type);
+ throw new InvalidOperationException(type);
}
public Datum divide(Datum datum) {
- throw new InvalidOperationException(datum.type);
+ throw new InvalidOperationException(type);
}
public Datum modular(Datum datum) {
- throw new InvalidOperationException(datum.type);
+ throw new InvalidOperationException(type);
}
public Datum equalsTo(Datum datum) {
@@ -184,28 +189,28 @@ public abstract class Datum implements Comparable<Datum>, GsonObject {
}
public Datum lessThan(Datum datum) {
- if (this.type() == Type.NULL_TYPE || datum.type() == Type.NULL_TYPE) {
+ if (type.isNull() || datum.type().isNull()) {
return NullDatum.get();
}
return DatumFactory.createBool(compareTo(datum) < 0);
}
public Datum lessThanEqual(Datum datum) {
- if (this.type() == Type.NULL_TYPE || datum.type() == Type.NULL_TYPE) {
+ if (type.isNull() || datum.type().isNull()) {
return NullDatum.get();
}
return DatumFactory.createBool(compareTo(datum) <= 0);
}
public Datum greaterThan(Datum datum) {
- if (this.type() == Type.NULL_TYPE || datum.type() == Type.NULL_TYPE) {
+ if (type.isNull() || datum.type().isNull()) {
return NullDatum.get();
}
return DatumFactory.createBool(compareTo(datum) > 0);
}
public Datum greaterThanEqual(Datum datum) {
- if (this.type() == Type.NULL_TYPE || datum.type() == Type.NULL_TYPE) {
+ if (type.isNull() || datum.type().isNull()) {
return NullDatum.get();
}
return DatumFactory.createBool(compareTo(datum) >= 0);
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/datum/DatumFactory.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/datum/DatumFactory.java b/tajo-common/src/main/java/org/apache/tajo/datum/DatumFactory.java
index 8943642..2774948 100644
--- a/tajo-common/src/main/java/org/apache/tajo/datum/DatumFactory.java
+++ b/tajo-common/src/main/java/org/apache/tajo/datum/DatumFactory.java
@@ -309,7 +309,7 @@ public class DatumFactory {
}
public static DateDatum createDate(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT4:
return new DateDatum(datum.asInt4());
case INT8:
@@ -324,7 +324,7 @@ public class DatumFactory {
}
public static TimeDatum createTime(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT8:
return new TimeDatum(datum.asInt8());
case CHAR:
@@ -340,7 +340,7 @@ public class DatumFactory {
}
public static TimestampDatum createTimestamp(Datum datum, @Nullable TimeZone tz) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case CHAR:
case VARCHAR:
case TEXT:
@@ -403,7 +403,7 @@ public class DatumFactory {
return DatumFactory.createFloat8(operandDatum.asFloat8());
case VARCHAR:
case TEXT:
- switch (operandDatum.type()) {
+ switch (operandDatum.kind()) {
case TIMESTAMP: {
TimestampDatum timestampDatum = (TimestampDatum)operandDatum;
if (tz != null) {
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/datum/Float4Datum.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/datum/Float4Datum.java b/tajo-common/src/main/java/org/apache/tajo/datum/Float4Datum.java
index 5d56984..5ae4e5e 100644
--- a/tajo-common/src/main/java/org/apache/tajo/datum/Float4Datum.java
+++ b/tajo-common/src/main/java/org/apache/tajo/datum/Float4Datum.java
@@ -20,8 +20,8 @@ package org.apache.tajo.datum;
import com.google.gson.annotations.Expose;
import org.apache.tajo.common.TajoDataTypes;
-import org.apache.tajo.exception.InvalidValueForCastException;
import org.apache.tajo.exception.InvalidOperationException;
+import org.apache.tajo.exception.InvalidValueForCastException;
import org.apache.tajo.exception.TajoRuntimeException;
import org.apache.tajo.util.MurmurHash;
import org.apache.tajo.util.NumberUtil;
@@ -29,17 +29,19 @@ import org.apache.tajo.util.datetime.TimeMeta;
import java.nio.ByteBuffer;
+import static org.apache.tajo.type.Type.Float4;
+
public class Float4Datum extends NumericDatum {
private static final int size = 4;
@Expose final float val;
public Float4Datum(float val) {
- super(TajoDataTypes.Type.FLOAT4);
+ super(Float4);
this.val = val;
}
public Float4Datum(byte[] bytes) {
- super(TajoDataTypes.Type.FLOAT4);
+ super(Float4);
ByteBuffer bb = ByteBuffer.wrap(bytes);
this.val = bb.getFloat();
}
@@ -122,7 +124,7 @@ public class Float4Datum extends NumericDatum {
@Override
public Datum equalsTo(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2:
return DatumFactory.createBool(val == datum.asInt2());
case INT4:
@@ -136,13 +138,13 @@ public class Float4Datum extends NumericDatum {
case NULL_TYPE:
return datum;
default:
- throw new InvalidOperationException(datum.type());
+ throw new InvalidOperationException(datum.type);
}
}
@Override
public int compareTo(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2: {
short another = datum.asInt2();
if (val < another) {
@@ -196,13 +198,13 @@ public class Float4Datum extends NumericDatum {
case NULL_TYPE:
return -1;
default:
- throw new InvalidOperationException(datum.type());
+ throw new InvalidOperationException(datum.type);
}
}
@Override
public Datum plus(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2:
return DatumFactory.createFloat4(val + datum.asInt2());
case INT4:
@@ -220,13 +222,13 @@ public class Float4Datum extends NumericDatum {
case NULL_TYPE:
return datum;
default:
- throw new InvalidOperationException(datum.type());
+ throw new InvalidOperationException(datum.type);
}
}
@Override
public Datum minus(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2:
return DatumFactory.createFloat4(val - datum.asInt2());
case INT4:
@@ -244,13 +246,13 @@ public class Float4Datum extends NumericDatum {
case NULL_TYPE:
return datum;
default:
- throw new InvalidOperationException(datum.type());
+ throw new InvalidOperationException(datum.type);
}
}
@Override
public Datum multiply(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2:
return DatumFactory.createFloat4(val * datum.asInt2());
case INT4:
@@ -273,7 +275,7 @@ public class Float4Datum extends NumericDatum {
@Override
public Datum divide(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2:
short paramValueI2 = datum.asInt2();
if (!validateDivideZero(paramValueI2)) {
@@ -307,13 +309,13 @@ public class Float4Datum extends NumericDatum {
case NULL_TYPE:
return datum;
default:
- throw new InvalidOperationException(datum.type());
+ throw new InvalidOperationException(datum.type);
}
}
@Override
public Datum modular(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2:
short paramValueI2 = datum.asInt2();
if (!validateDivideZero(paramValueI2)) {
@@ -347,7 +349,7 @@ public class Float4Datum extends NumericDatum {
case NULL_TYPE:
return datum;
default:
- throw new InvalidOperationException(datum.type());
+ throw new InvalidOperationException(datum.type);
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/datum/Float8Datum.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/datum/Float8Datum.java b/tajo-common/src/main/java/org/apache/tajo/datum/Float8Datum.java
index fdd5495..c2a5247 100644
--- a/tajo-common/src/main/java/org/apache/tajo/datum/Float8Datum.java
+++ b/tajo-common/src/main/java/org/apache/tajo/datum/Float8Datum.java
@@ -19,7 +19,6 @@
package org.apache.tajo.datum;
import com.google.gson.annotations.Expose;
-import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.exception.InvalidOperationException;
import org.apache.tajo.util.Bytes;
import org.apache.tajo.util.MurmurHash;
@@ -28,18 +27,20 @@ import org.apache.tajo.util.datetime.TimeMeta;
import java.nio.ByteBuffer;
+import static org.apache.tajo.type.Type.Float8;
+
public class Float8Datum extends NumericDatum {
private static final int size = 8;
@Expose private final double val;
public Float8Datum(double val) {
- super(TajoDataTypes.Type.FLOAT8);
+ super(Float8);
this.val = val;
}
public Float8Datum(byte[] bytes) {
- super(TajoDataTypes.Type.FLOAT8);
+ super(Float8);
ByteBuffer bb = ByteBuffer.wrap(bytes);
this.val = bb.getDouble();
}
@@ -110,7 +111,7 @@ public class Float8Datum extends NumericDatum {
@Override
public Datum equalsTo(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2:
return DatumFactory.createBool(val == datum.asInt2());
case INT4:
@@ -130,7 +131,7 @@ public class Float8Datum extends NumericDatum {
@Override
public int compareTo(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2: {
short another = datum.asInt2();
if (val < another) {
@@ -190,7 +191,7 @@ public class Float8Datum extends NumericDatum {
@Override
public Datum plus(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2:
return DatumFactory.createFloat8(val + datum.asInt2());
case INT4:
@@ -214,7 +215,7 @@ public class Float8Datum extends NumericDatum {
@Override
public Datum minus(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2:
return DatumFactory.createFloat8(val - datum.asInt2());
case INT4:
@@ -238,7 +239,7 @@ public class Float8Datum extends NumericDatum {
@Override
public Datum multiply(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2:
return DatumFactory.createFloat8(val * datum.asInt2());
case INT4:
@@ -261,7 +262,7 @@ public class Float8Datum extends NumericDatum {
@Override
public Datum divide(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2:
short paramValueI2 = datum.asInt2();
if (!validateDivideZero(paramValueI2)) {
@@ -301,7 +302,7 @@ public class Float8Datum extends NumericDatum {
@Override
public Datum modular(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2:
short paramValueI2 = datum.asInt2();
if (!validateDivideZero(paramValueI2)) {
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/datum/Int2Datum.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/datum/Int2Datum.java b/tajo-common/src/main/java/org/apache/tajo/datum/Int2Datum.java
index 5629f41..a5b03e6 100644
--- a/tajo-common/src/main/java/org/apache/tajo/datum/Int2Datum.java
+++ b/tajo-common/src/main/java/org/apache/tajo/datum/Int2Datum.java
@@ -19,7 +19,6 @@
package org.apache.tajo.datum;
import com.google.gson.annotations.Expose;
-import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.exception.InvalidOperationException;
import org.apache.tajo.util.MurmurHash;
import org.apache.tajo.util.NumberUtil;
@@ -27,18 +26,20 @@ import org.apache.tajo.util.datetime.TimeMeta;
import java.nio.ByteBuffer;
+import static org.apache.tajo.type.Type.Int2;
+
public class Int2Datum extends NumericDatum {
private static final int size = 2;
@Expose private final short val;
public Int2Datum(short val) {
- super(TajoDataTypes.Type.INT2);
+ super(Int2);
this.val = val;
}
public Int2Datum(byte[] bytes) {
- super(TajoDataTypes.Type.INT2);
+ super(Int2);
ByteBuffer bb = ByteBuffer.wrap(bytes);
this.val = bb.getShort();
}
@@ -112,7 +113,7 @@ public class Int2Datum extends NumericDatum {
@Override
public Datum equalsTo(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2:
return DatumFactory.createBool(val == datum.asInt2());
case INT4:
@@ -132,7 +133,7 @@ public class Int2Datum extends NumericDatum {
@Override
public int compareTo(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2: {
short another = datum.asInt2();
if (val < another) {
@@ -192,7 +193,7 @@ public class Int2Datum extends NumericDatum {
@Override
public Datum plus(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2:
return DatumFactory.createInt2((short) (val + datum.asInt2()));
case INT4:
@@ -216,7 +217,7 @@ public class Int2Datum extends NumericDatum {
@Override
public Datum minus(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2:
return DatumFactory.createInt2((short) (val - datum.asInt2()));
case INT4:
@@ -240,7 +241,7 @@ public class Int2Datum extends NumericDatum {
@Override
public Datum multiply(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2:
return DatumFactory.createInt4(val * datum.asInt2());
case INT4:
@@ -263,7 +264,7 @@ public class Int2Datum extends NumericDatum {
@Override
public Datum divide(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2:
short paramValueI2 = datum.asInt2();
if (!validateDivideZero(paramValueI2)) {
@@ -303,7 +304,7 @@ public class Int2Datum extends NumericDatum {
@Override
public Datum modular(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2:
short paramValueI2 = datum.asInt2();
if (!validateDivideZero(paramValueI2)) {
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/datum/Int4Datum.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/datum/Int4Datum.java b/tajo-common/src/main/java/org/apache/tajo/datum/Int4Datum.java
index a45cb1e..9128dd1 100644
--- a/tajo-common/src/main/java/org/apache/tajo/datum/Int4Datum.java
+++ b/tajo-common/src/main/java/org/apache/tajo/datum/Int4Datum.java
@@ -19,7 +19,6 @@
package org.apache.tajo.datum;
import com.google.gson.annotations.Expose;
-import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.exception.InvalidOperationException;
import org.apache.tajo.util.MurmurHash;
import org.apache.tajo.util.NumberUtil;
@@ -27,18 +26,20 @@ import org.apache.tajo.util.datetime.TimeMeta;
import java.nio.ByteBuffer;
+import static org.apache.tajo.type.Type.Int4;
+
public class Int4Datum extends NumericDatum {
private static final int size = 4;
@Expose private final int val;
public Int4Datum(int val) {
- super(Type.INT4);
+ super(Int4);
this.val = val;
}
public Int4Datum(byte[] bytes) {
- super(Type.INT4);
+ super(Int4);
ByteBuffer bb = ByteBuffer.wrap(bytes);
this.val = bb.getInt();
}
@@ -116,7 +117,7 @@ public class Int4Datum extends NumericDatum {
@Override
public Datum equalsTo(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2:
return DatumFactory.createBool(val == datum.asInt2());
case INT4:
@@ -136,7 +137,7 @@ public class Int4Datum extends NumericDatum {
@Override
public int compareTo(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2: {
short another = datum.asInt2();
if (val < another) {
@@ -196,7 +197,7 @@ public class Int4Datum extends NumericDatum {
@Override
public Datum plus(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2:
return DatumFactory.createInt4(val + datum.asInt2());
case INT4:
@@ -220,7 +221,7 @@ public class Int4Datum extends NumericDatum {
@Override
public Datum minus(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2:
return DatumFactory.createInt4(val - datum.asInt2());
case INT4:
@@ -244,7 +245,7 @@ public class Int4Datum extends NumericDatum {
@Override
public Datum multiply(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2:
return DatumFactory.createInt4(val * datum.asInt2());
case INT4:
@@ -267,7 +268,7 @@ public class Int4Datum extends NumericDatum {
@Override
public Datum divide(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2:
short paramValueI2 = datum.asInt2();
if (!validateDivideZero(paramValueI2)) {
@@ -307,7 +308,7 @@ public class Int4Datum extends NumericDatum {
@Override
public Datum modular(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2:
short paramValueI2 = datum.asInt2();
if (!validateDivideZero(paramValueI2)) {
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/datum/Int8Datum.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/datum/Int8Datum.java b/tajo-common/src/main/java/org/apache/tajo/datum/Int8Datum.java
index 86f19c7..bda4f90 100644
--- a/tajo-common/src/main/java/org/apache/tajo/datum/Int8Datum.java
+++ b/tajo-common/src/main/java/org/apache/tajo/datum/Int8Datum.java
@@ -20,8 +20,8 @@ package org.apache.tajo.datum;
import com.google.gson.annotations.Expose;
import org.apache.tajo.common.TajoDataTypes;
-import org.apache.tajo.exception.InvalidValueForCastException;
import org.apache.tajo.exception.InvalidOperationException;
+import org.apache.tajo.exception.InvalidValueForCastException;
import org.apache.tajo.exception.TajoRuntimeException;
import org.apache.tajo.util.MurmurHash;
import org.apache.tajo.util.NumberUtil;
@@ -29,18 +29,20 @@ import org.apache.tajo.util.datetime.TimeMeta;
import java.nio.ByteBuffer;
+import static org.apache.tajo.type.Type.Int8;
+
public class Int8Datum extends NumericDatum {
private static final int size = 8;
@Expose private final long val;
public Int8Datum(long val) {
- super(TajoDataTypes.Type.INT8);
+ super(Int8);
this.val = val;
}
public Int8Datum(byte[] bytes) {
- super(TajoDataTypes.Type.INT8);
+ super(Int8);
ByteBuffer bb = ByteBuffer.wrap(bytes);
val = bb.getLong();
}
@@ -124,7 +126,7 @@ public class Int8Datum extends NumericDatum {
@Override
public Datum equalsTo(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2:
return DatumFactory.createBool(val == datum.asInt2());
case INT4:
@@ -144,7 +146,7 @@ public class Int8Datum extends NumericDatum {
@Override
public int compareTo(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2: {
short another = datum.asInt2();
if (val < another) {
@@ -205,7 +207,7 @@ public class Int8Datum extends NumericDatum {
@Override
public Datum plus(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2:
return DatumFactory.createInt8(val + datum.asInt2());
case INT4:
@@ -229,7 +231,7 @@ public class Int8Datum extends NumericDatum {
@Override
public Datum minus(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2:
return DatumFactory.createInt8(val - datum.asInt2());
case INT4:
@@ -253,7 +255,7 @@ public class Int8Datum extends NumericDatum {
@Override
public Datum multiply(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2:
return DatumFactory.createInt8(val * datum.asInt2());
case INT4:
@@ -277,7 +279,7 @@ public class Int8Datum extends NumericDatum {
@Override
public Datum divide(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2:
short paramValueI2 = datum.asInt2();
if (!validateDivideZero(paramValueI2)) {
@@ -317,7 +319,7 @@ public class Int8Datum extends NumericDatum {
@Override
public Datum modular(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2:
short paramValueI2 = datum.asInt2();
if (!validateDivideZero(paramValueI2)) {
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/datum/IntervalDatum.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/datum/IntervalDatum.java b/tajo-common/src/main/java/org/apache/tajo/datum/IntervalDatum.java
index 44570f3..5dabe50 100644
--- a/tajo-common/src/main/java/org/apache/tajo/datum/IntervalDatum.java
+++ b/tajo-common/src/main/java/org/apache/tajo/datum/IntervalDatum.java
@@ -28,6 +28,8 @@ import java.text.DecimalFormat;
import java.util.HashMap;
import java.util.Map;
+import static org.apache.tajo.type.Type.Interval;
+
public class IntervalDatum extends Datum {
public static final long MINUTE_MILLIS = 60 * 1000;
public static final long HOUR_MILLIS = 60 * MINUTE_MILLIS;
@@ -70,13 +72,13 @@ public class IntervalDatum extends Datum {
}
public IntervalDatum(int months, long milliseconds) {
- super(TajoDataTypes.Type.INTERVAL);
+ super(Interval);
this.months = months;
this.milliseconds = milliseconds;
}
public IntervalDatum(String intervalStr) {
- super(TajoDataTypes.Type.INTERVAL);
+ super(Interval);
intervalStr = intervalStr.trim();
if (intervalStr.isEmpty()) {
@@ -225,7 +227,7 @@ public class IntervalDatum extends Datum {
@Override
public Datum plus(Datum datum) {
- switch(datum.type()) {
+ switch(datum.kind()) {
case INTERVAL:
IntervalDatum other = (IntervalDatum) datum;
return new IntervalDatum(months + other.months, milliseconds + other.milliseconds);
@@ -253,7 +255,7 @@ public class IntervalDatum extends Datum {
@Override
public Datum minus(Datum datum) {
- if (datum.type() == TajoDataTypes.Type.INTERVAL) {
+ if (datum.kind() == TajoDataTypes.Type.INTERVAL) {
IntervalDatum other = (IntervalDatum) datum;
return new IntervalDatum(months - other.months, milliseconds - other.milliseconds);
} else {
@@ -263,7 +265,7 @@ public class IntervalDatum extends Datum {
@Override
public Datum multiply(Datum datum) {
- switch(datum.type()) {
+ switch(datum.kind()) {
case INT2:
case INT4:
case INT8:
@@ -280,7 +282,7 @@ public class IntervalDatum extends Datum {
@Override
public Datum divide(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INT2:
case INT4:
case INT8:
@@ -397,7 +399,7 @@ public class IntervalDatum extends Datum {
@Override
public int compareTo(Datum datum) {
- if (datum.type() == TajoDataTypes.Type.INTERVAL) {
+ if (datum.kind() == TajoDataTypes.Type.INTERVAL) {
return Longs.compare(asInt8(), datum.asInt8());
} else if (datum instanceof NullDatum || datum.isNull()) {
return -1;
@@ -408,7 +410,7 @@ public class IntervalDatum extends Datum {
@Override
public Datum equalsTo(Datum datum) {
- if (datum.type() == TajoDataTypes.Type.INTERVAL) {
+ if (datum.kind() == TajoDataTypes.Type.INTERVAL) {
return DatumFactory.createBool(asInt8() == datum.asInt8());
} else if (datum.isNull()) {
return datum;
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/datum/NullDatum.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/datum/NullDatum.java b/tajo-common/src/main/java/org/apache/tajo/datum/NullDatum.java
index de4ddcb..2079953 100644
--- a/tajo-common/src/main/java/org/apache/tajo/datum/NullDatum.java
+++ b/tajo-common/src/main/java/org/apache/tajo/datum/NullDatum.java
@@ -18,11 +18,13 @@
package org.apache.tajo.datum;
+import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.common.TajoDataTypes.DataType;
import org.apache.tajo.exception.InvalidValueForCastException;
import org.apache.tajo.exception.TajoRuntimeException;
-import static org.apache.tajo.common.TajoDataTypes.Type;
+import static org.apache.tajo.type.Type.Bool;
+import static org.apache.tajo.type.Type.Null;
public class NullDatum extends Datum {
private static NullDatum instance;
@@ -32,11 +34,11 @@ public class NullDatum extends Datum {
static {
instance = new NullDatum();
- NULL_DATA_TYPE = DataType.newBuilder().setType(Type.NULL_TYPE).build();
+ NULL_DATA_TYPE = DataType.newBuilder().setType(TajoDataTypes.Type.NULL_TYPE).build();
}
private NullDatum() {
- super(Type.NULL_TYPE);
+ super(Null);
}
public static NullDatum get() {
@@ -59,7 +61,7 @@ public class NullDatum extends Datum {
@Override
public boolean asBool() {
- throw new TajoRuntimeException(new InvalidValueForCastException(Type.NULL_TYPE, Type.BOOLEAN));
+ throw new TajoRuntimeException(new InvalidValueForCastException(type, Bool));
}
@Override
@@ -119,7 +121,7 @@ public class NullDatum extends Datum {
@Override
public int compareTo(Datum datum) {
- if (datum.type() == Type.NULL_TYPE) {
+ if (datum.type().isNull()) {
return 0;
} else {
return 1;
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/datum/NumericDatum.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/datum/NumericDatum.java b/tajo-common/src/main/java/org/apache/tajo/datum/NumericDatum.java
index e021781..13ce7e0 100644
--- a/tajo-common/src/main/java/org/apache/tajo/datum/NumericDatum.java
+++ b/tajo-common/src/main/java/org/apache/tajo/datum/NumericDatum.java
@@ -19,11 +19,11 @@
package org.apache.tajo.datum;
-import org.apache.tajo.common.TajoDataTypes;
+import org.apache.tajo.type.Type;
public abstract class NumericDatum extends Datum {
- public NumericDatum(TajoDataTypes.Type type) {
+ public NumericDatum(Type type) {
super(type);
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/datum/ProtobufDatum.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/datum/ProtobufDatum.java b/tajo-common/src/main/java/org/apache/tajo/datum/ProtobufDatum.java
index 822a1e9..9adfe47 100644
--- a/tajo-common/src/main/java/org/apache/tajo/datum/ProtobufDatum.java
+++ b/tajo-common/src/main/java/org/apache/tajo/datum/ProtobufDatum.java
@@ -19,12 +19,14 @@ package org.apache.tajo.datum;
import com.google.protobuf.Message;
import org.apache.tajo.common.TajoDataTypes;
+import org.apache.tajo.type.Protobuf;
+@Deprecated
public class ProtobufDatum extends Datum {
private final Message value;
public ProtobufDatum(Message message) {
- super(TajoDataTypes.Type.PROTOBUF);
+ super(new Protobuf(null));
this.value = message;
}
@@ -44,7 +46,7 @@ public class ProtobufDatum extends Datum {
@Override
public int compareTo(Datum datum) {
- if (datum.type() == TajoDataTypes.Type.PROTOBUF) {
+ if (datum.kind() == TajoDataTypes.Type.PROTOBUF) {
return value.equals(((ProtobufDatum)datum).get()) ? 0 : -1;
} else {
return -1;
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/datum/TextDatum.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/datum/TextDatum.java b/tajo-common/src/main/java/org/apache/tajo/datum/TextDatum.java
index df810fe..cbd0ca0 100644
--- a/tajo-common/src/main/java/org/apache/tajo/datum/TextDatum.java
+++ b/tajo-common/src/main/java/org/apache/tajo/datum/TextDatum.java
@@ -20,10 +20,9 @@ package org.apache.tajo.datum;
import com.google.common.primitives.UnsignedBytes;
import com.google.gson.annotations.Expose;
-
import org.apache.tajo.common.TajoDataTypes;
-import org.apache.tajo.exception.InvalidValueForCastException;
import org.apache.tajo.exception.InvalidOperationException;
+import org.apache.tajo.exception.InvalidValueForCastException;
import org.apache.tajo.exception.TajoRuntimeException;
import org.apache.tajo.util.MurmurHash;
import org.apache.tajo.util.StringUtils;
@@ -31,6 +30,8 @@ import org.apache.tajo.util.StringUtils;
import java.nio.charset.Charset;
import java.util.Comparator;
+import static org.apache.tajo.type.Type.Text;
+
public class TextDatum extends Datum {
public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");
@@ -42,7 +43,7 @@ public class TextDatum extends Datum {
public static final Comparator<byte[]> COMPARATOR = UnsignedBytes.lexicographicalComparator();
public TextDatum(byte[] bytes) {
- super(TajoDataTypes.Type.TEXT);
+ super(Text);
this.bytes = bytes;
}
@@ -112,7 +113,7 @@ public class TextDatum extends Datum {
@Override
public int compareTo(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case TEXT:
case CHAR:
case BLOB:
@@ -138,7 +139,7 @@ public class TextDatum extends Datum {
@Override
public Datum equalsTo(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case TEXT:
case CHAR:
case BLOB:
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/datum/TimeDatum.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/datum/TimeDatum.java b/tajo-common/src/main/java/org/apache/tajo/datum/TimeDatum.java
index 57196d2..8c98ddc 100644
--- a/tajo-common/src/main/java/org/apache/tajo/datum/TimeDatum.java
+++ b/tajo-common/src/main/java/org/apache/tajo/datum/TimeDatum.java
@@ -28,12 +28,14 @@ import org.apache.tajo.util.datetime.DateTimeConstants.DateStyle;
import org.apache.tajo.util.datetime.DateTimeUtil;
import org.apache.tajo.util.datetime.TimeMeta;
+import static org.apache.tajo.type.Type.Time;
+
public class TimeDatum extends Datum {
public static final int SIZE = 8;
private final long time;
public TimeDatum(long time) {
- super(TajoDataTypes.Type.TIME);
+ super(Time);
this.time = time;
}
@@ -108,7 +110,7 @@ public class TimeDatum extends Datum {
@Override
public Datum plus(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INTERVAL: {
IntervalDatum interval = ((IntervalDatum) datum);
TimeMeta tm = asTimeMeta();
@@ -134,7 +136,7 @@ public class TimeDatum extends Datum {
@Override
public Datum minus(Datum datum) {
- switch(datum.type()) {
+ switch(datum.kind()) {
case INTERVAL:
IntervalDatum interval = ((IntervalDatum)datum);
TimeMeta tm = asTimeMeta();
@@ -149,7 +151,7 @@ public class TimeDatum extends Datum {
@Override
public Datum equalsTo(Datum datum) {
- if (datum.type() == TajoDataTypes.Type.TIME) {
+ if (datum.kind() == TajoDataTypes.Type.TIME) {
return DatumFactory.createBool(time == (((TimeDatum) datum).time));
} else if (datum.isNull()) {
return datum;
@@ -160,7 +162,7 @@ public class TimeDatum extends Datum {
@Override
public int compareTo(Datum datum) {
- if (datum.type() == TajoDataTypes.Type.TIME) {
+ if (datum.kind() == TajoDataTypes.Type.TIME) {
TimeDatum another = (TimeDatum)datum;
return Longs.compare(time, another.time);
} else if (datum.isNull()) {
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/datum/TimestampDatum.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/datum/TimestampDatum.java b/tajo-common/src/main/java/org/apache/tajo/datum/TimestampDatum.java
index 782aab4..3854de9 100644
--- a/tajo-common/src/main/java/org/apache/tajo/datum/TimestampDatum.java
+++ b/tajo-common/src/main/java/org/apache/tajo/datum/TimestampDatum.java
@@ -28,6 +28,8 @@ import org.apache.tajo.util.datetime.TimeMeta;
import java.util.TimeZone;
+import static org.apache.tajo.type.Type.Timestamp;
+
public class TimestampDatum extends Datum {
public static final int SIZE = 8;
@@ -38,7 +40,7 @@ public class TimestampDatum extends Datum {
* @param timestamp UTC based Julian time microseconds
*/
public TimestampDatum(long timestamp) {
- super(TajoDataTypes.Type.TIMESTAMP);
+ super(Timestamp);
this.timestamp = timestamp;
}
@@ -169,7 +171,7 @@ public class TimestampDatum extends Datum {
@Override
public Datum equalsTo(Datum datum) {
- if (datum.type() == TajoDataTypes.Type.TIMESTAMP) {
+ if (datum.kind() == TajoDataTypes.Type.TIMESTAMP) {
return timestamp == datum.asInt8() ? BooleanDatum.TRUE : BooleanDatum.FALSE;
} else if (datum.isNull()) {
return datum;
@@ -180,7 +182,7 @@ public class TimestampDatum extends Datum {
@Override
public int compareTo(Datum datum) {
- if (datum.type() == TajoDataTypes.Type.TIMESTAMP) {
+ if (datum.kind() == TajoDataTypes.Type.TIMESTAMP) {
TimestampDatum another = (TimestampDatum) datum;
return Longs.compare(timestamp, another.timestamp);
} else if (datum.isNull()) {
@@ -202,7 +204,7 @@ public class TimestampDatum extends Datum {
@Override
public Datum plus(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INTERVAL:
IntervalDatum interval = (IntervalDatum) datum;
TimeMeta tm = asTimeMeta();
@@ -220,7 +222,7 @@ public class TimestampDatum extends Datum {
@Override
public Datum minus(Datum datum) {
- switch (datum.type()) {
+ switch (datum.kind()) {
case INTERVAL:
IntervalDatum interval = (IntervalDatum) datum;
TimeMeta tm = asTimeMeta();
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/exception/InvalidOperationException.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/exception/InvalidOperationException.java b/tajo-common/src/main/java/org/apache/tajo/exception/InvalidOperationException.java
index 5e48113..d97a0d1 100644
--- a/tajo-common/src/main/java/org/apache/tajo/exception/InvalidOperationException.java
+++ b/tajo-common/src/main/java/org/apache/tajo/exception/InvalidOperationException.java
@@ -18,8 +18,6 @@
package org.apache.tajo.exception;
-import static org.apache.tajo.common.TajoDataTypes.Type;
-
public class InvalidOperationException extends RuntimeException {
private static final long serialVersionUID = -7689027447969916148L;
@@ -32,8 +30,8 @@ public class InvalidOperationException extends RuntimeException {
public InvalidOperationException(String message) {
super(message);
}
-
- public InvalidOperationException(Type type) {
- super("Cannot compare to " + type + " type datum");
+
+ public InvalidOperationException(org.apache.tajo.type.Type type) {
+ super("Cannot compare to " + type + " type datum");
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/exception/InvalidValueForCastException.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/exception/InvalidValueForCastException.java b/tajo-common/src/main/java/org/apache/tajo/exception/InvalidValueForCastException.java
index 63ee354..f1152b2 100644
--- a/tajo-common/src/main/java/org/apache/tajo/exception/InvalidValueForCastException.java
+++ b/tajo-common/src/main/java/org/apache/tajo/exception/InvalidValueForCastException.java
@@ -38,6 +38,10 @@ public class InvalidValueForCastException extends TajoException {
super(Errors.ResultCode.INVALID_VALUE_FOR_CAST, src.name(), target.name());
}
+ public InvalidValueForCastException(Type src, TajoDataTypes.Type target) {
+ super(Errors.ResultCode.INVALID_VALUE_FOR_CAST, src.kind().name(), target.name());
+ }
+
public InvalidValueForCastException(Type src, Type target) {
super(Errors.ResultCode.INVALID_VALUE_FOR_CAST, src.kind().name(), target.kind().name());
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/json/DatumAdapter.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/json/DatumAdapter.java b/tajo-common/src/main/java/org/apache/tajo/json/DatumAdapter.java
index b9d8aef..9cc246c 100644
--- a/tajo-common/src/main/java/org/apache/tajo/json/DatumAdapter.java
+++ b/tajo-common/src/main/java/org/apache/tajo/json/DatumAdapter.java
@@ -21,6 +21,7 @@ package org.apache.tajo.json;
import com.google.gson.*;
import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.datum.*;
+import org.apache.tajo.type.TypeStringEncoder;
import java.lang.reflect.Type;
@@ -30,9 +31,9 @@ public class DatumAdapter implements GsonSerDerAdapter<Datum> {
public Datum deserialize(JsonElement json, Type typeOfT,
JsonDeserializationContext context) throws JsonParseException {
JsonObject jsonObject = json.getAsJsonObject();
- String typeName = CommonGsonHelper.getOrDie(jsonObject, "type").getAsString();
- TajoDataTypes.Type type = TajoDataTypes.Type.valueOf(typeName);
- switch (type) {
+ String typeStr = CommonGsonHelper.getOrDie(jsonObject, "type").getAsString();
+ org.apache.tajo.type.Type type = TypeStringEncoder.decode(typeStr);
+ switch (type.kind()) {
case DATE:
return new DateDatum(CommonGsonHelper.getOrDie(jsonObject, "value").getAsInt());
case TIME:
@@ -46,15 +47,15 @@ public class DatumAdapter implements GsonSerDerAdapter<Datum> {
return new AnyDatum(deserialize(CommonGsonHelper.getOrDie(jsonObject, "actual"), typeOfT, context));
default:
return context.deserialize(CommonGsonHelper.getOrDie(jsonObject, "body"),
- DatumFactory.getDatumClass(TajoDataTypes.Type.valueOf(typeName)));
+ DatumFactory.getDatumClass(TajoDataTypes.Type.valueOf(type.kind().name())));
}
}
@Override
public JsonElement serialize(Datum src, Type typeOfSrc, JsonSerializationContext context) {
JsonObject jsonObj = new JsonObject();
- jsonObj.addProperty("type", src.type().name());
- switch (src.type()) {
+ jsonObj.addProperty("type", TypeStringEncoder.encode(src.type()));
+ switch (src.kind()) {
case DATE:
jsonObj.addProperty("value", src.asInt4());
break;
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/storage/VTuple.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/storage/VTuple.java b/tajo-common/src/main/java/org/apache/tajo/storage/VTuple.java
index dc7c15f..9dc0588 100644
--- a/tajo-common/src/main/java/org/apache/tajo/storage/VTuple.java
+++ b/tajo-common/src/main/java/org/apache/tajo/storage/VTuple.java
@@ -90,7 +90,7 @@ public class VTuple implements Tuple, Cloneable {
@Override
public TajoDataTypes.Type type(int fieldId) {
- return values[fieldId].type();
+ return values[fieldId].kind();
}
@Override
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/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
index 342fdb6..e6f9f6f 100644
--- a/tajo-common/src/main/java/org/apache/tajo/type/Any.java
+++ b/tajo-common/src/main/java/org/apache/tajo/type/Any.java
@@ -21,7 +21,7 @@ package org.apache.tajo.type;
import static org.apache.tajo.common.TajoDataTypes.Type.ANY;
public class Any extends Type {
- public Any() {
+ Any() {
super(ANY);
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/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 3432238..67be256 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
@@ -24,7 +24,7 @@ import static org.apache.tajo.common.TajoDataTypes.Type.ARRAY;
public class Array extends TypeParamterizedType {
- public Array(Type elementType) {
+ Array(Type elementType) {
super(ARRAY, ImmutableList.of(elementType));
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/type/Bit.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/type/Bit.java b/tajo-common/src/main/java/org/apache/tajo/type/Bit.java
new file mode 100644
index 0000000..befabda
--- /dev/null
+++ b/tajo-common/src/main/java/org/apache/tajo/type/Bit.java
@@ -0,0 +1,27 @@
+/**
+ * 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 static org.apache.tajo.common.TajoDataTypes.Type.BIT;
+
+public class Bit extends Type {
+ Bit() {
+ super(BIT);
+ }
+}
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/type/Blob.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/type/Blob.java b/tajo-common/src/main/java/org/apache/tajo/type/Blob.java
index 360ea13..d250842 100644
--- a/tajo-common/src/main/java/org/apache/tajo/type/Blob.java
+++ b/tajo-common/src/main/java/org/apache/tajo/type/Blob.java
@@ -21,7 +21,7 @@ package org.apache.tajo.type;
import static org.apache.tajo.common.TajoDataTypes.Type.BLOB;
public class Blob extends Type {
- public Blob() {
+ Blob() {
super(BLOB);
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/type/Bool.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/type/Bool.java b/tajo-common/src/main/java/org/apache/tajo/type/Bool.java
index 923e8e9..7a15214 100644
--- a/tajo-common/src/main/java/org/apache/tajo/type/Bool.java
+++ b/tajo-common/src/main/java/org/apache/tajo/type/Bool.java
@@ -21,7 +21,7 @@ package org.apache.tajo.type;
import static org.apache.tajo.common.TajoDataTypes.Type.BOOLEAN;
public class Bool extends Type {
- public Bool() {
+ Bool() {
super(BOOLEAN);
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/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 586775e..f2679ae 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
@@ -23,7 +23,7 @@ import com.google.common.collect.ImmutableList;
import static org.apache.tajo.common.TajoDataTypes.Type.CHAR;
public class Char extends ValueParamterizedType {
- public Char(int length) {
+ Char(int length) {
super(CHAR, ImmutableList.of(length));
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/type/Date.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/type/Date.java b/tajo-common/src/main/java/org/apache/tajo/type/Date.java
index a68ab97..61cc7cc 100644
--- a/tajo-common/src/main/java/org/apache/tajo/type/Date.java
+++ b/tajo-common/src/main/java/org/apache/tajo/type/Date.java
@@ -21,7 +21,7 @@ package org.apache.tajo.type;
import static org.apache.tajo.common.TajoDataTypes.Type.DATE;
public class Date extends Type {
- public Date() {
+ Date() {
super(DATE);
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/type/Float4.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/type/Float4.java b/tajo-common/src/main/java/org/apache/tajo/type/Float4.java
index b8c8218..58e5bb0 100644
--- a/tajo-common/src/main/java/org/apache/tajo/type/Float4.java
+++ b/tajo-common/src/main/java/org/apache/tajo/type/Float4.java
@@ -21,7 +21,7 @@ package org.apache.tajo.type;
import static org.apache.tajo.common.TajoDataTypes.Type.FLOAT4;
public class Float4 extends Type {
- public Float4() {
+ Float4() {
super(FLOAT4);
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/type/Float8.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/type/Float8.java b/tajo-common/src/main/java/org/apache/tajo/type/Float8.java
index f36fac8..6cb5d90 100644
--- a/tajo-common/src/main/java/org/apache/tajo/type/Float8.java
+++ b/tajo-common/src/main/java/org/apache/tajo/type/Float8.java
@@ -21,7 +21,7 @@ package org.apache.tajo.type;
import static org.apache.tajo.common.TajoDataTypes.Type.FLOAT8;
public class Float8 extends Type {
- public Float8() {
+ Float8() {
super(FLOAT8);
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/type/Int1.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/type/Int1.java b/tajo-common/src/main/java/org/apache/tajo/type/Int1.java
index d86d36e..bb7c310 100644
--- a/tajo-common/src/main/java/org/apache/tajo/type/Int1.java
+++ b/tajo-common/src/main/java/org/apache/tajo/type/Int1.java
@@ -21,7 +21,7 @@ package org.apache.tajo.type;
import static org.apache.tajo.common.TajoDataTypes.Type.INT1;
public class Int1 extends Type {
- public Int1() {
+ Int1() {
super(INT1);
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/type/Int2.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/type/Int2.java b/tajo-common/src/main/java/org/apache/tajo/type/Int2.java
index e7c2215..315fed5 100644
--- a/tajo-common/src/main/java/org/apache/tajo/type/Int2.java
+++ b/tajo-common/src/main/java/org/apache/tajo/type/Int2.java
@@ -21,7 +21,7 @@ package org.apache.tajo.type;
import static org.apache.tajo.common.TajoDataTypes.Type.INT2;
public class Int2 extends Type {
- public Int2() {
+ Int2() {
super(INT2);
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/type/Int4.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/type/Int4.java b/tajo-common/src/main/java/org/apache/tajo/type/Int4.java
index e8db784..2aab6c4 100644
--- a/tajo-common/src/main/java/org/apache/tajo/type/Int4.java
+++ b/tajo-common/src/main/java/org/apache/tajo/type/Int4.java
@@ -21,7 +21,7 @@ package org.apache.tajo.type;
import static org.apache.tajo.common.TajoDataTypes.Type.INT4;
public class Int4 extends Type {
- public Int4() {
+ Int4() {
super(INT4);
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/type/Int8.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/type/Int8.java b/tajo-common/src/main/java/org/apache/tajo/type/Int8.java
index 999e9ac..d16aada 100644
--- a/tajo-common/src/main/java/org/apache/tajo/type/Int8.java
+++ b/tajo-common/src/main/java/org/apache/tajo/type/Int8.java
@@ -21,7 +21,7 @@ package org.apache.tajo.type;
import static org.apache.tajo.common.TajoDataTypes.Type.INT8;
public class Int8 extends Type {
- public Int8() {
+ Int8() {
super(INT8);
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/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
index d6dc17e..5ca8177 100644
--- a/tajo-common/src/main/java/org/apache/tajo/type/Interval.java
+++ b/tajo-common/src/main/java/org/apache/tajo/type/Interval.java
@@ -21,7 +21,7 @@ package org.apache.tajo.type;
import static org.apache.tajo.common.TajoDataTypes.Type.INTERVAL;
public class Interval extends Type {
- public Interval() {
+ Interval() {
super(INTERVAL);
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/type/Map.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/type/Map.java b/tajo-common/src/main/java/org/apache/tajo/type/Map.java
index 786d6af..4738b9b 100644
--- a/tajo-common/src/main/java/org/apache/tajo/type/Map.java
+++ b/tajo-common/src/main/java/org/apache/tajo/type/Map.java
@@ -23,7 +23,7 @@ import com.google.common.collect.ImmutableList;
import static org.apache.tajo.common.TajoDataTypes.Type.MAP;
public class Map extends TypeParamterizedType {
- public Map(Type keyType, Type valueType) {
+ Map(Type keyType, Type valueType) {
super(MAP, ImmutableList.of(keyType, valueType));
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/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
index 74cf052..78a4fbe 100644
--- a/tajo-common/src/main/java/org/apache/tajo/type/Null.java
+++ b/tajo-common/src/main/java/org/apache/tajo/type/Null.java
@@ -21,7 +21,7 @@ package org.apache.tajo.type;
import static org.apache.tajo.common.TajoDataTypes.Type.NULL_TYPE;
public class Null extends Type {
- public Null() {
+ Null() {
super(NULL_TYPE);
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/type/Numeric.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/type/Numeric.java b/tajo-common/src/main/java/org/apache/tajo/type/Numeric.java
index c21325d..8f9f9f9 100644
--- a/tajo-common/src/main/java/org/apache/tajo/type/Numeric.java
+++ b/tajo-common/src/main/java/org/apache/tajo/type/Numeric.java
@@ -24,7 +24,7 @@ import static org.apache.tajo.common.TajoDataTypes.Type.NUMERIC;
public class Numeric extends ValueParamterizedType {
- public Numeric(int precision, int scale) {
+ Numeric(int precision, int scale) {
super(NUMERIC, ImmutableList.of(precision, scale));
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/type/Record.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/type/Record.java b/tajo-common/src/main/java/org/apache/tajo/type/Record.java
index 46d7e19..d8492c5 100644
--- a/tajo-common/src/main/java/org/apache/tajo/type/Record.java
+++ b/tajo-common/src/main/java/org/apache/tajo/type/Record.java
@@ -35,7 +35,7 @@ import static org.apache.tajo.common.TajoDataTypes.Type.RECORD;
public class Record extends Type implements Iterable<Field> {
private final ImmutableList<Field> fields;
- public Record(Collection<Field> fields) {
+ Record(Collection<Field> fields) {
super(RECORD);
this.fields = ImmutableList.copyOf(fields);
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/type/Text.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/type/Text.java b/tajo-common/src/main/java/org/apache/tajo/type/Text.java
index aab49a4..8933314 100644
--- a/tajo-common/src/main/java/org/apache/tajo/type/Text.java
+++ b/tajo-common/src/main/java/org/apache/tajo/type/Text.java
@@ -21,7 +21,7 @@ package org.apache.tajo.type;
import static org.apache.tajo.common.TajoDataTypes.Type.TEXT;
public class Text extends Type {
- public Text() {
+ Text() {
super(TEXT);
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/type/Time.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/type/Time.java b/tajo-common/src/main/java/org/apache/tajo/type/Time.java
index 12fe5f8..9ad94dd 100644
--- a/tajo-common/src/main/java/org/apache/tajo/type/Time.java
+++ b/tajo-common/src/main/java/org/apache/tajo/type/Time.java
@@ -21,7 +21,7 @@ package org.apache.tajo.type;
import static org.apache.tajo.common.TajoDataTypes.Type.TIME;
public class Time extends Type {
- public Time() {
+ Time() {
super(TIME);
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/type/Timestamp.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/type/Timestamp.java b/tajo-common/src/main/java/org/apache/tajo/type/Timestamp.java
index 577f877..36b1edc 100644
--- a/tajo-common/src/main/java/org/apache/tajo/type/Timestamp.java
+++ b/tajo-common/src/main/java/org/apache/tajo/type/Timestamp.java
@@ -21,7 +21,7 @@ package org.apache.tajo.type;
import static org.apache.tajo.common.TajoDataTypes.Type.TIMESTAMP;
public class Timestamp extends Type {
- public Timestamp() {
+ Timestamp() {
super(TIMESTAMP);
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/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 5479658..75d9000 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
@@ -34,8 +34,12 @@ import java.util.List;
*/
public abstract class Type implements Cloneable, ProtoObject<TypeProto> {
+ public static int DEFAULT_PRECISION = 0;
+ public static int DEFAULT_SCALE = 0;
+
// No paramter types
public static final Any Any = new Any();
+ public static final Bit Bit = new Bit();
public static final Null Null = new Null();
public static final Bool Bool = new Bool();
public static final Int1 Int1 = new Int1();
@@ -44,6 +48,7 @@ public abstract class Type implements Cloneable, ProtoObject<TypeProto> {
public static final Int8 Int8 = new Int8();
public static final Float4 Float4 = new Float4();
public static final Float8 Float8 = new Float8();
+ public static final Numeric Numeric = new Numeric(DEFAULT_PRECISION, DEFAULT_SCALE);
public static final Date Date = new Date();
public static final Time Time = new Time();
public static final Timestamp Timestamp = new Timestamp();
@@ -96,19 +101,16 @@ public abstract class Type implements Cloneable, ProtoObject<TypeProto> {
return typeName(kind());
}
+ public boolean isAny() {
+ return this.kind() == TajoDataTypes.Type.ANY;
+ }
+
public boolean isStruct() {
return this.kind() == TajoDataTypes.Type.RECORD;
}
public boolean isNull() { return this.kind() == TajoDataTypes.Type.NULL_TYPE; }
- public static int DEFAULT_PRECISION = 0;
- public static int DEFAULT_SCALE = 0;
-
- public static Numeric Numeric() {
- return new Numeric(DEFAULT_PRECISION, DEFAULT_SCALE);
- }
-
public static Numeric Numeric(int precision) {
return new Numeric(precision, DEFAULT_SCALE);
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/main/java/org/apache/tajo/type/TypeFactory.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/type/TypeFactory.java b/tajo-common/src/main/java/org/apache/tajo/type/TypeFactory.java
index 24c46a9..f8f1b43 100644
--- a/tajo-common/src/main/java/org/apache/tajo/type/TypeFactory.java
+++ b/tajo-common/src/main/java/org/apache/tajo/type/TypeFactory.java
@@ -132,7 +132,7 @@ public class TypeFactory {
case FLOAT8: return Type.Float8;
case NUMERIC: {
if (valueParams.size() == 0) {
- return Numeric.Numeric();
+ return Type.Numeric;
} else {
for (Object p : valueParams) {
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/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 61e4e85..e96bc98 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
@@ -24,7 +24,7 @@ import static org.apache.tajo.common.TajoDataTypes.Type.VARCHAR;
public class Varchar extends ValueParamterizedType {
- public Varchar(int length) {
+ Varchar(int length) {
super(VARCHAR, ImmutableList.of(length));
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/test/java/org/apache/tajo/datum/TestBitDatum.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/test/java/org/apache/tajo/datum/TestBitDatum.java b/tajo-common/src/test/java/org/apache/tajo/datum/TestBitDatum.java
index 812c4c7..ac6a558 100644
--- a/tajo-common/src/test/java/org/apache/tajo/datum/TestBitDatum.java
+++ b/tajo-common/src/test/java/org/apache/tajo/datum/TestBitDatum.java
@@ -18,23 +18,15 @@
package org.apache.tajo.datum;
-import org.apache.tajo.common.TajoDataTypes.Type;
+import org.apache.tajo.type.Type;
import org.apache.tajo.util.NumberUtil;
import org.junit.Test;
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
public class TestBitDatum {
@Test
- public final void testType() {
- Datum d = DatumFactory.createBit((byte) 1);
- assertEquals(Type.BIT, d.type());
- }
-
- @Test
public final void testAsInt() {
Datum d = DatumFactory.createBit((byte) 5);
assertEquals(5,d.asInt4());
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/test/java/org/apache/tajo/datum/TestBoolDatum.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/test/java/org/apache/tajo/datum/TestBoolDatum.java b/tajo-common/src/test/java/org/apache/tajo/datum/TestBoolDatum.java
index dd722ff..7c928b5 100644
--- a/tajo-common/src/test/java/org/apache/tajo/datum/TestBoolDatum.java
+++ b/tajo-common/src/test/java/org/apache/tajo/datum/TestBoolDatum.java
@@ -18,7 +18,6 @@
package org.apache.tajo.datum;
-import org.apache.tajo.common.TajoDataTypes.Type;
import org.junit.Test;
import static org.junit.Assert.assertArrayEquals;
@@ -27,12 +26,6 @@ import static org.junit.Assert.assertEquals;
public class TestBoolDatum {
@Test
- public final void testType() {
- Datum d = DatumFactory.createBool(true);
- assertEquals(Type.BOOLEAN, d.type());
- }
-
- @Test
public final void testAsBool() {
Datum trueDatum = DatumFactory.createBool(true);
assertEquals(true, trueDatum.asBool());
http://git-wip-us.apache.org/repos/asf/tajo/blob/13212495/tajo-common/src/test/java/org/apache/tajo/datum/TestBytesDatum.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/test/java/org/apache/tajo/datum/TestBytesDatum.java b/tajo-common/src/test/java/org/apache/tajo/datum/TestBytesDatum.java
index c3a0e84..12f9241 100644
--- a/tajo-common/src/test/java/org/apache/tajo/datum/TestBytesDatum.java
+++ b/tajo-common/src/test/java/org/apache/tajo/datum/TestBytesDatum.java
@@ -18,24 +18,17 @@
package org.apache.tajo.datum;
-import org.apache.tajo.common.TajoDataTypes.Type;
-import org.apache.tajo.json.CommonGsonHelper;
import org.apache.tajo.util.Bytes;
import org.junit.Test;
import java.nio.ByteBuffer;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertArrayEquals;
+import static org.junit.Assert.assertEquals;
public class TestBytesDatum {
@Test
- public final void testType() {
- Datum d = DatumFactory.createBlob("12345".getBytes());
- assertEquals(Type.BLOB, d.type());
- }
-
- @Test
public final void testAsChars() {
Datum d = DatumFactory.createBlob("12345".getBytes());
assertEquals("12345", d.asChars());
@@ -46,14 +39,6 @@ public class TestBytesDatum {
Datum d = DatumFactory.createBlob("12345".getBytes());
assertEquals(5, d.size());
}
-
- @Test
- public final void testJson() {
- Datum d = DatumFactory.createBlob("12345".getBytes());
- String json = d.toJson();
- Datum fromJson = CommonGsonHelper.fromJson(json, Datum.class);
- assertTrue(d.equalsTo(fromJson).asBool());
- }
@Test
public final void testAsTextBytes() {