From 2077b867885d533c5cb9940f58252664b33c14fc Mon Sep 17 00:00:00 2001 From: Hyunsik Choi Date: Fri, 13 May 2016 18:06:43 -0700 Subject: [PATCH 1/6] TAJO-2154: Refactor Datum to use new Type implementation. --- .../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 +- .../java/org/apache/tajo/datum/Datum.java | 63 ++++--- .../org/apache/tajo/datum/DatumFactory.java | 8 +- .../org/apache/tajo/datum/Float4Datum.java | 34 ++-- .../org/apache/tajo/datum/Float8Datum.java | 21 +-- .../org/apache/tajo/datum/Inet4Datum.java | 14 +- .../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 +- .../InvalidValueForCastException.java | 4 + .../org/apache/tajo/json/DatumAdapter.java | 13 +- .../java/org/apache/tajo/storage/VTuple.java | 2 +- .../main/java/org/apache/tajo/type/Bit.java | 27 +++ .../main/java/org/apache/tajo/type/Type.java | 5 + .../tajo/tuple/memory/TestMemoryRowBlock.java | 2 +- .../function/json/JsonArrayContains.java | 12 +- .../org/apache/tajo/plan/expr/BinaryEval.java | 3 +- .../org/apache/tajo/plan/expr/ConstEval.java | 3 +- .../tajo/plan/expr/RowConstantEval.java | 3 +- .../function/stream/CSVLineSerializer.java | 20 +-- .../TextFieldSerializerDeserializer.java | 2 +- .../tajo/plan/serder/EvalNodeSerializer.java | 6 +- .../plan/util/EvalNodeToExprConverter.java | 2 +- .../tajo/plan/util/WritableTypeConverter.java | 7 +- .../org/apache/tajo/storage/LazyTuple.java | 2 +- .../org/apache/tajo/storage/MemoryUtil.java | 167 ------------------ .../storage/jdbc/SQLExpressionGenerator.java | 4 +- 42 files changed, 266 insertions(+), 391 deletions(-) create mode 100644 tajo-common/src/main/java/org/apache/tajo/type/Bit.java delete mode 100644 tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/MemoryUtil.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 bb20c0af2b..62f944ce43 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 void put(Datum[] values) { @Override public TajoDataTypes.Type type(int fieldId) { - return values.get(fieldId).type(); + return values.get(fieldId).kind(); } @Override 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 ecaeeb1f5d..c68aec4457 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 @@ -183,20 +183,18 @@ public static boolean isSigned(Type type) { } } - 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; } } 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 0771a6e54f..45b952018a 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; /** * AnyDatum 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 boolean equals(Object obj) { @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 Datum equalsTo(Datum datum) { @Override public int compareTo(Datum datum) { - if (datum.type() == ANY) { + if (datum.type.isAny()) { AnyDatum other = (AnyDatum) datum; return val.compareTo(other.val); } 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 8ada5e809e..81fae51b24 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 boolean equals(Object obj) { @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 Datum equalsTo(Datum datum) { @Override public int compareTo(Datum datum) { - switch (datum.type()) { + switch (datum.kind()) { case BIT: if (val < datum.asByte() ) { return -1; 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 3de5135505..f86bc1e49e 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.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 BlobDatum(byte[] val, int offset, int length) { } public BlobDatum(ByteBuffer val) { - super(BLOB); + super(Blob); this.val = val.array(); this.bb = val.duplicate(); bb.flip(); @@ -138,7 +138,7 @@ public boolean equals(Object obj) { @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 Datum equalsTo(Datum datum) { @Override public int compareTo(Datum datum) { - switch (datum.type()) { + switch (datum.kind()) { case BLOB: initFromBytes(); ((BlobDatum)datum).initFromBytes(); 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 596540f660..7a2df03a0f 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 @@ 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 boolean equals(Object obj) { // 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 BooleanDatum equalsTo(Datum datum) { @Override public int compareTo(Datum datum) { - switch (datum.type()) { + switch (datum.kind()) { case BOOLEAN: return Booleans.compare(val, datum.asBool()); default: 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 750930f0da..6b75ac6334 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 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 CharDatum(char val) { } public CharDatum(byte [] bytes) { - super(Type.CHAR); + super(Char(1)); this.bytes = bytes; this.size = bytes.length; } @@ -131,7 +131,7 @@ public boolean equals(Object obj) { @Override public Datum equalsTo(Datum datum) { - switch (datum.type()) { + switch (datum.kind()) { case CHAR: case VARCHAR: case TEXT: @@ -147,7 +147,7 @@ public Datum equalsTo(Datum datum) { @Override public int compareTo(Datum datum) { - switch (datum.type()) { + switch (datum.kind()) { case CHAR: case TEXT: return UnsignedBytes.lexicographicalComparator().compare(bytes, datum.asByteArray()); 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 acc5408f85..54e7a531dd 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 @@ 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.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 String toString() { @Override public Datum plus(Datum datum) { - switch (datum.type()) { + switch (datum.kind()) { case INT2: case INT4: case INT8: { @@ -128,7 +130,7 @@ public Datum plus(Datum datum) { @Override public Datum minus(Datum datum) { - switch(datum.type()) { + switch(datum.kind()) { case INT2: case INT4: case INT8: { @@ -198,7 +200,7 @@ public int size() { @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 Datum equalsTo(Datum 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()) { 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 dc61145926..61d8f48514 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 @@ 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.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, GsonObject { static boolean abortWhenDivideByZero; @@ -45,18 +46,22 @@ public abstract class Datum implements Comparable, 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 boolean isNotNull() { } 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 byte[] asTextBytes() { } 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 boolean isNumber() { } public boolean isReal() { - return TajoTypeUtil.isReal(type); + return TajoTypeUtil.isReal(type.kind()); } protected static void initAbortWhenDivideByZero(TajoConf tajoConf) { @@ -140,31 +145,31 @@ protected static void initAbortWhenDivideByZero(TajoConf tajoConf) { // 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 Datum notEqualsTo(Datum datum) { } 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); 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 aac877b9f6..e795efe13a 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 @@ -315,7 +315,7 @@ public static IntervalDatum createInterval(int month, long interval) { } public static DateDatum createDate(Datum datum) { - switch (datum.type()) { + switch (datum.kind()) { case INT4: return new DateDatum(datum.asInt4()); case INT8: @@ -330,7 +330,7 @@ public static DateDatum createDate(Datum datum) { } public static TimeDatum createTime(Datum datum) { - switch (datum.type()) { + switch (datum.kind()) { case INT8: return new TimeDatum(datum.asInt8()); case CHAR: @@ -346,7 +346,7 @@ public static TimeDatum createTime(Datum datum) { } public static TimestampDatum createTimestamp(Datum datum, @Nullable TimeZone tz) { - switch (datum.type()) { + switch (datum.kind()) { case CHAR: case VARCHAR: case TEXT: @@ -425,7 +425,7 @@ public static Datum cast(Datum operandDatum, DataType target, @Nullable TimeZone return DatumFactory.createFloat8(operandDatum.asFloat8()); case VARCHAR: case TEXT: - switch (operandDatum.type()) { + switch (operandDatum.kind()) { case TIMESTAMP: { TimestampDatum timestampDatum = (TimestampDatum)operandDatum; if (tz != null) { 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 5d56984c0b..5ae4e5e941 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 @@ 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 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 boolean equals(Object obj) { @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 Datum equalsTo(Datum datum) { 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 int compareTo(Datum datum) { 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 Datum plus(Datum datum) { 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 Datum minus(Datum datum) { 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 Datum multiply(Datum datum) { @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 Datum divide(Datum datum) { 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 Datum modular(Datum datum) { case NULL_TYPE: return datum; default: - throw new InvalidOperationException(datum.type()); + throw new InvalidOperationException(datum.type); } } 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 fdd54956fd..c2a5247c18 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 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 boolean equals(Object obj) { @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 Datum equalsTo(Datum datum) { @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 int compareTo(Datum datum) { @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 Datum plus(Datum datum) { @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 Datum minus(Datum datum) { @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 Datum multiply(Datum datum) { @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 Datum divide(Datum datum) { @Override public Datum modular(Datum datum) { - switch (datum.type()) { + switch (datum.kind()) { case INT2: short paramValueI2 = datum.asInt2(); if (!validateDivideZero(paramValueI2)) { diff --git a/tajo-common/src/main/java/org/apache/tajo/datum/Inet4Datum.java b/tajo-common/src/main/java/org/apache/tajo/datum/Inet4Datum.java index ab1799bac4..b103dbddcc 100644 --- a/tajo-common/src/main/java/org/apache/tajo/datum/Inet4Datum.java +++ b/tajo-common/src/main/java/org/apache/tajo/datum/Inet4Datum.java @@ -24,19 +24,19 @@ import org.apache.tajo.exception.InvalidOperationException; import org.apache.tajo.util.Bytes; -import static org.apache.tajo.common.TajoDataTypes.Type; +import static org.apache.tajo.type.Type.Inet4; public class Inet4Datum extends Datum { private static final int size = 4; @Expose private final int address; Inet4Datum(int encoded) { - super(Type.INET4); + super(Inet4); this.address = encoded; } public Inet4Datum(String addr) { - super(Type.INET4); + super(Inet4); String [] elems = addr.split("\\."); address = Integer.parseInt(elems[3]) & 0xFF | ((Integer.parseInt(elems[2]) << 8) & 0xFF00) @@ -45,7 +45,7 @@ public Inet4Datum(String addr) { } public Inet4Datum(byte[] addr) { - super(Type.INET4); + super(Inet4); Preconditions.checkArgument(addr.length == size); address = addr[3] & 0xFF | ((addr[2] << 8) & 0xFF00) @@ -54,7 +54,7 @@ public Inet4Datum(byte[] addr) { } public Inet4Datum(byte[] addr, int offset, int length) { - super(Type.INET4); + super(Inet4); Preconditions.checkArgument(length == size); address = addr[offset + 3] & 0xFF | ((addr[offset + 2] << 8) & 0xFF00) @@ -109,7 +109,7 @@ public boolean equals(Object obj) { @Override public Datum equalsTo(Datum datum) { - switch (datum.type()) { + switch (datum.kind()) { case INET4: return DatumFactory.createBool(this.address == ((Inet4Datum) datum).address); case NULL_TYPE: @@ -121,7 +121,7 @@ public Datum equalsTo(Datum datum) { @Override public int compareTo(Datum datum) { - switch (datum.type()) { + switch (datum.kind()) { case INET4: byte[] bytes = asByteArray(); byte[] other = datum.asByteArray(); 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 5629f4124a..a5b03e6ee0 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 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 boolean equals(Object obj) { @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 Datum equalsTo(Datum datum) { @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 int compareTo(Datum datum) { @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 Datum plus(Datum datum) { @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 Datum minus(Datum datum) { @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 Datum multiply(Datum datum) { @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 Datum divide(Datum datum) { @Override public Datum modular(Datum datum) { - switch (datum.type()) { + switch (datum.kind()) { case INT2: short paramValueI2 = datum.asInt2(); if (!validateDivideZero(paramValueI2)) { 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 a45cb1e218..9128dd1012 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 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 boolean equals(Object obj) { @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 Datum equalsTo(Datum datum) { @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 int compareTo(Datum datum) { @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 Datum plus(Datum datum) { @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 Datum minus(Datum datum) { @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 Datum multiply(Datum datum) { @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 Datum divide(Datum datum) { @Override public Datum modular(Datum datum) { - switch (datum.type()) { + switch (datum.kind()) { case INT2: short paramValueI2 = datum.asInt2(); if (!validateDivideZero(paramValueI2)) { 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 86f19c761a..bda4f90be5 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 @@ 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 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 boolean equals(Object obj) { @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 Datum equalsTo(Datum datum) { @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 int compareTo(Datum datum) { @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 Datum plus(Datum datum) { @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 Datum minus(Datum datum) { @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 Datum multiply(Datum datum) { @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 Datum divide(Datum datum) { @Override public Datum modular(Datum datum) { - switch (datum.type()) { + switch (datum.kind()) { case INT2: short paramValueI2 = datum.asInt2(); if (!validateDivideZero(paramValueI2)) { 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 44570f36b9..5dabe50459 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.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 IntervalDatum(long milliseconds) { } 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 long getMilliSeconds() { @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 Datum plus(Datum 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 Datum minus(Datum datum) { @Override public Datum multiply(Datum datum) { - switch(datum.type()) { + switch(datum.kind()) { case INT2: case INT4: case INT8: @@ -280,7 +282,7 @@ public Datum multiply(Datum datum) { @Override public Datum divide(Datum datum) { - switch (datum.type()) { + switch (datum.kind()) { case INT2: case INT4: case INT8: @@ -397,7 +399,7 @@ public int size() { @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 int compareTo(Datum 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; 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 de4ddcb3c7..2079953b5c 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 boolean isNotNull() { @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 boolean equals(Object obj) { @Override public int compareTo(Datum datum) { - if (datum.type() == Type.NULL_TYPE) { + if (datum.type().isNull()) { return 0; } else { return 1; 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 e0217810d1..13ce7e0fdd 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); } 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 822a1e9467..9adfe4756d 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 @@ 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 int size() { @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; 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 df810fe414..cbd0ca0bd4 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 @@ 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 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 COMPARATOR = UnsignedBytes.lexicographicalComparator(); public TextDatum(byte[] bytes) { - super(TajoDataTypes.Type.TEXT); + super(Text); this.bytes = bytes; } @@ -112,7 +113,7 @@ public int size() { @Override public int compareTo(Datum datum) { - switch (datum.type()) { + switch (datum.kind()) { case TEXT: case CHAR: case BLOB: @@ -138,7 +139,7 @@ public boolean equals(Object obj) { @Override public Datum equalsTo(Datum datum) { - switch (datum.type()) { + switch (datum.kind()) { case TEXT: case CHAR: case BLOB: 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 57196d2470..8c98ddc0dd 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.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 int size() { @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 Datum plus(Datum 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 Datum minus(Datum 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 Datum equalsTo(Datum 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()) { 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 782aab41cf..3854de9ad0 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 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 byte[] asTextBytes() { @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 Datum equalsTo(Datum 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 boolean equals(Object obj) { @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 Datum plus(Datum datum) { @Override public Datum minus(Datum datum) { - switch (datum.type()) { + switch (datum.kind()) { case INTERVAL: IntervalDatum interval = (IntervalDatum) datum; TimeMeta tm = asTimeMeta(); 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 5e48113d05..d97a0d18f3 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 InvalidOperationException() { 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"); } } 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 63ee354dfc..f1152b2904 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 InvalidValueForCastException(TajoDataTypes.Type src, TajoDataTypes.Type t 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()); } 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 b9d8aef0c9..9cc246c400 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 @@ 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 { 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 Datum deserialize(JsonElement json, Type typeOfT, 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; 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 0ad7202527..e621e9cb4b 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 @@ -94,7 +94,7 @@ public Datum asDatum(int fieldId) { @Override public TajoDataTypes.Type type(int fieldId) { - return values[fieldId].type(); + return values[fieldId].kind(); } @Override 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 0000000000..ee0043d9ca --- /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 { + public Bit() { + super(BIT); + } +} 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 35d666c712..5788bf1c82 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 @@ -36,6 +36,7 @@ public abstract class Type implements Cloneable, ProtoObject { // 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(); @@ -97,6 +98,10 @@ public String toString() { return typeName(kind()); } + public boolean isAny() { + return this.kind() == TajoDataTypes.Type.ANY; + } + public boolean isStruct() { return this.kind() == TajoDataTypes.Type.RECORD; } diff --git a/tajo-common/src/test/java/org/apache/tajo/tuple/memory/TestMemoryRowBlock.java b/tajo-common/src/test/java/org/apache/tajo/tuple/memory/TestMemoryRowBlock.java index 780f97f40a..ae046a66f3 100644 --- a/tajo-common/src/test/java/org/apache/tajo/tuple/memory/TestMemoryRowBlock.java +++ b/tajo-common/src/test/java/org/apache/tajo/tuple/memory/TestMemoryRowBlock.java @@ -289,7 +289,7 @@ public void testVTuplePutAndGetBenchmark() { int count = 0; for (VTuple aRowBlock : rowBlock) { for (int m = 0; m < schema.length; m++) { - if (aRowBlock.contains(m) && aRowBlock.get(m).type() == Type.INT4) { + if (aRowBlock.contains(m) && aRowBlock.get(m).kind() == Type.INT4) { count++; } } diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/json/JsonArrayContains.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/json/JsonArrayContains.java index c0287a9336..9f90e4cc3e 100644 --- a/tajo-core/src/main/java/org/apache/tajo/engine/function/json/JsonArrayContains.java +++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/json/JsonArrayContains.java @@ -66,13 +66,13 @@ public Datum eval(Tuple params) { if (isFirst) { isFirst = false; - if (actualParam.type() == TajoDataTypes.Type.INT1 || - actualParam.type() == TajoDataTypes.Type.INT2 || - actualParam.type() == TajoDataTypes.Type.INT4 || - actualParam.type() == TajoDataTypes.Type.INT8) { + if (actualParam.kind() == TajoDataTypes.Type.INT1 || + actualParam.kind() == TajoDataTypes.Type.INT2 || + actualParam.kind() == TajoDataTypes.Type.INT4 || + actualParam.kind() == TajoDataTypes.Type.INT8) { isLong = true; - } else if (actualParam.type() == TajoDataTypes.Type.FLOAT4 || - actualParam.type() == TajoDataTypes.Type.FLOAT8) { + } else if (actualParam.kind() == TajoDataTypes.Type.FLOAT4 || + actualParam.kind() == TajoDataTypes.Type.FLOAT8) { isDouble = true; } } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/expr/BinaryEval.java b/tajo-plan/src/main/java/org/apache/tajo/plan/expr/BinaryEval.java index b565b80189..a565d02c3b 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/expr/BinaryEval.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/expr/BinaryEval.java @@ -21,7 +21,6 @@ import com.google.common.base.Objects; import com.google.gson.annotations.Expose; import org.apache.tajo.DataTypeUtil; -import org.apache.tajo.common.TajoDataTypes; import org.apache.tajo.datum.Datum; import org.apache.tajo.datum.DatumFactory; import org.apache.tajo.datum.NullDatum; @@ -154,7 +153,7 @@ public Datum eval(Tuple tuple) { return lhs.modular(rhs); case CONCATENATE: - if (lhs.type() == TajoDataTypes.Type.NULL_TYPE || rhs.type() == TajoDataTypes.Type.NULL_TYPE) { + if (lhs.type().isNull() || rhs.type().isNull()) { return NullDatum.get(); } return DatumFactory.createText(lhs.asChars() + rhs.asChars()); diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/expr/ConstEval.java b/tajo-plan/src/main/java/org/apache/tajo/plan/expr/ConstEval.java index 4f1ece6791..b60f06a201 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/expr/ConstEval.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/expr/ConstEval.java @@ -23,7 +23,6 @@ import org.apache.tajo.datum.Datum; import org.apache.tajo.storage.Tuple; import org.apache.tajo.type.Type; -import org.apache.tajo.type.TypeFactory; public class ConstEval extends EvalNode implements Comparable, Cloneable { @Expose Datum datum = null; @@ -51,7 +50,7 @@ public Datum eval(Tuple tuple) { @Override public Type getValueType() { - return TypeFactory.create(datum.type()); + return datum.type(); } @Override diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/expr/RowConstantEval.java b/tajo-plan/src/main/java/org/apache/tajo/plan/expr/RowConstantEval.java index 21d3517b9f..6e8689055f 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/expr/RowConstantEval.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/expr/RowConstantEval.java @@ -23,7 +23,6 @@ import org.apache.tajo.datum.NullDatum; import org.apache.tajo.storage.Tuple; import org.apache.tajo.type.Type; -import org.apache.tajo.type.TypeFactory; import org.apache.tajo.util.StringUtils; import org.apache.tajo.util.TUtil; @@ -39,7 +38,7 @@ public RowConstantEval(Datum [] values) { @Override public Type getValueType() { - return TypeFactory.create(values[0].type()); + return values[0].type(); } @Override diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/function/stream/CSVLineSerializer.java b/tajo-plan/src/main/java/org/apache/tajo/plan/function/stream/CSVLineSerializer.java index 08874fd450..e84ab1b23b 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/function/stream/CSVLineSerializer.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/function/stream/CSVLineSerializer.java @@ -20,7 +20,6 @@ import org.apache.tajo.catalog.Schema; import org.apache.tajo.catalog.TableMeta; -import org.apache.tajo.common.TajoDataTypes; import org.apache.tajo.datum.AnyDatum; import org.apache.tajo.datum.Datum; import org.apache.tajo.exception.TajoRuntimeException; @@ -59,7 +58,7 @@ public int serialize(OutputStream out, Tuple input, Schema schema) throws IOExce for (int i = 0; i < input.size(); i++) { Datum datum = input.asDatum(i); String typeStr; - if (datum.type() == TajoDataTypes.Type.ANY) { + if (datum.type().isAny()) { typeStr = getTypeString(((AnyDatum)datum).getActual()); } else { typeStr = getTypeString(datum); @@ -78,19 +77,6 @@ public int serialize(OutputStream out, Tuple input, Schema schema) throws IOExce return writtenBytes; } - private int serializeDatum(OutputStream out, Datum datum, TajoDataTypes.DataType dataType) throws IOException { - String typeStr; - if (datum.type() == TajoDataTypes.Type.ANY) { - typeStr = getTypeString(((AnyDatum)datum).getActual()); - } else { - typeStr = getTypeString(datum); - } - out.write(typeStr.getBytes()); - out.write(PARAM_DELIM.getBytes()); - - return serde.serialize(out, datum, dataType, nullChars); - } - @Override public int serializeContext(OutputStream out, FunctionContext context) throws IOException { int writtenBytes = 0; @@ -114,7 +100,7 @@ public void release() { } public static String getTypeString(Datum val) { - switch (val.type()) { + switch (val.kind()) { case NULL_TYPE: return "-"; case BOOLEAN: @@ -143,7 +129,7 @@ public static String getTypeString(Datum val) { case INET6: return "A"; default: - throw new TajoRuntimeException(new UnsupportedException("data type '" + val.type().name() + "'")); + throw new TajoRuntimeException(new UnsupportedException("data type '" + val.type() + "'")); } } } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/function/stream/TextFieldSerializerDeserializer.java b/tajo-plan/src/main/java/org/apache/tajo/plan/function/stream/TextFieldSerializerDeserializer.java index 9638634881..e18969d46a 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/function/stream/TextFieldSerializerDeserializer.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/function/stream/TextFieldSerializerDeserializer.java @@ -139,7 +139,7 @@ public int serialize(OutputStream out, Datum datum, TajoDataTypes.DataType dataT break; case ANY: AnyDatum anyDatum = (AnyDatum) datum; - length = serialize(out, anyDatum.getActual(), CatalogUtil.newSimpleDataType(anyDatum.getActual().type()), + length = serialize(out, anyDatum.getActual(), CatalogUtil.newSimpleDataType(anyDatum.getActual().kind()), nullChars); break; default: diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/serder/EvalNodeSerializer.java b/tajo-plan/src/main/java/org/apache/tajo/plan/serder/EvalNodeSerializer.java index 92d59c6937..b227eea12c 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/serder/EvalNodeSerializer.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/serder/EvalNodeSerializer.java @@ -365,9 +365,9 @@ private WinFunctionEvalSpec.WindowFrameEndBoundType convertEndBoundType(WindowFr public static PlanProto.Datum serialize(Datum datum) { PlanProto.Datum.Builder builder = PlanProto.Datum.newBuilder(); - builder.setType(datum.type()); + builder.setType(datum.kind()); - switch (datum.type()) { + switch (datum.kind()) { case NULL_TYPE: break; case BOOLEAN: @@ -410,7 +410,7 @@ public static PlanProto.Datum serialize(Datum datum) { builder.setActual(serialize(((AnyDatum)datum).getActual())); break; default: - throw new RuntimeException("Unknown data type: " + datum.type().name()); + throw new RuntimeException("Unknown data type: " + datum.type()); } return builder.build(); diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/util/EvalNodeToExprConverter.java b/tajo-plan/src/main/java/org/apache/tajo/plan/util/EvalNodeToExprConverter.java index 2ad6b6f103..d3a51c15e0 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/util/EvalNodeToExprConverter.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/util/EvalNodeToExprConverter.java @@ -154,7 +154,7 @@ protected EvalNode visitRowConstant(Object o, RowConstantEval evalNode, Stack writa } public static Writable convertDatum2Writable(Datum value) { - switch(value.type()) { + switch(value.kind()) { case INT1: return new ByteWritable(value.asByte()); case INT2: return new ShortWritable(value.asInt2()); case INT4: return new IntWritable(value.asInt4()); @@ -111,7 +112,7 @@ public static Writable convertDatum2Writable(Datum value) { case NULL_TYPE: return null; } - throw new TajoRuntimeException(new NotImplementedException(value.type().name())); + throw new TajoRuntimeException(new NotImplementedException(TypeStringEncoder.encode(value.type()))); } public static Datum convertWritable2Datum(Writable value) throws UnsupportedDataTypeException { diff --git a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/LazyTuple.java b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/LazyTuple.java index 72ffde7296..903ca39d82 100644 --- a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/LazyTuple.java +++ b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/LazyTuple.java @@ -116,7 +116,7 @@ public Datum asDatum(int fieldId) { @Override public TajoDataTypes.Type type(int fieldId) { - return get(fieldId).type(); + return get(fieldId).kind(); } @Override diff --git a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/MemoryUtil.java b/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/MemoryUtil.java deleted file mode 100644 index 16477cd8ef..0000000000 --- a/tajo-storage/tajo-storage-common/src/main/java/org/apache/tajo/storage/MemoryUtil.java +++ /dev/null @@ -1,167 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.tajo.storage; - -import org.apache.tajo.datum.*; -import org.apache.tajo.util.ClassSize; - -public class MemoryUtil { - - /** Overhead for an NullDatum */ - public static final long NULL_DATUM; - - /** Overhead for an BoolDatum */ - public static final long BOOL_DATUM; - - /** Overhead for an CharDatum */ - public static final long CHAR_DATUM; - - /** Overhead for an BitDatum */ - public static final long BIT_DATUM; - - /** Overhead for an Int2Datum */ - public static final long INT2_DATUM; - - /** Overhead for an Int4Datum */ - public static final long INT4_DATUM; - - /** Overhead for an Int8Datum */ - public static final long INT8_DATUM; - - /** Overhead for an Float4Datum */ - public static final long FLOAT4_DATUM; - - /** Overhead for an Float8Datum */ - public static final long FLOAT8_DATUM; - - /** Overhead for an TextDatum */ - public static final long TEXT_DATUM; - - /** Overhead for an BlobDatum */ - public static final long BLOB_DATUM; - - /** Overhead for an DateDatum */ - public static final long DATE_DATUM; - - /** Overhead for an TimeDatum */ - public static final long TIME_DATUM; - - /** Overhead for an TimestampDatum */ - public static final long TIMESTAMP_DATUM; - - static { - NULL_DATUM = ClassSize.estimateBase(NullDatum.class, false); - - CHAR_DATUM = ClassSize.estimateBase(CharDatum.class, false); - - BOOL_DATUM = ClassSize.estimateBase(BooleanDatum.class, false); - - BIT_DATUM = ClassSize.estimateBase(BitDatum.class, false); - - INT2_DATUM = ClassSize.estimateBase(Int2Datum.class, false); - - INT4_DATUM = ClassSize.estimateBase(Int4Datum.class, false); - - INT8_DATUM = ClassSize.estimateBase(Int8Datum.class, false); - - FLOAT4_DATUM = ClassSize.estimateBase(Float4Datum.class, false); - - FLOAT8_DATUM = ClassSize.estimateBase(Float8Datum.class, false); - - TEXT_DATUM = ClassSize.estimateBase(TextDatum.class, false); - - BLOB_DATUM = ClassSize.estimateBase(BlobDatum.class, false); - - DATE_DATUM = ClassSize.estimateBase(DateDatum.class, false); - - TIME_DATUM = ClassSize.estimateBase(TimeDatum.class, false); - - TIMESTAMP_DATUM = ClassSize.estimateBase(TimestampDatum.class, false); - } - - public static long calculateMemorySize(Tuple tuple) { - long total = ClassSize.OBJECT; - for (Datum datum : tuple.getValues()) { - switch (datum.type()) { - - case NULL_TYPE: - total += NULL_DATUM; - break; - - case BOOLEAN: - total += BOOL_DATUM; - break; - - case BIT: - total += BIT_DATUM; - break; - - case CHAR: - total += CHAR_DATUM + datum.size(); - break; - - case INT1: - case INT2: - total += INT2_DATUM; - break; - - case INT4: - total += INT4_DATUM; - break; - - case INT8: - total += INT8_DATUM; - break; - - case FLOAT4: - total += FLOAT4_DATUM; - break; - - case FLOAT8: - total += FLOAT4_DATUM; - break; - - case TEXT: - total += TEXT_DATUM + datum.size(); - break; - - case BLOB: - total += BLOB_DATUM + datum.size(); - break; - - case DATE: - total += DATE_DATUM; - break; - - case TIME: - total += TIME_DATUM; - break; - - case TIMESTAMP: - total += TIMESTAMP_DATUM; - break; - - default: - break; - } - } - - return total; - } -} diff --git a/tajo-storage/tajo-storage-jdbc/src/main/java/org/apache/tajo/storage/jdbc/SQLExpressionGenerator.java b/tajo-storage/tajo-storage-jdbc/src/main/java/org/apache/tajo/storage/jdbc/SQLExpressionGenerator.java index da97e32e92..064d6cb61a 100644 --- a/tajo-storage/tajo-storage-jdbc/src/main/java/org/apache/tajo/storage/jdbc/SQLExpressionGenerator.java +++ b/tajo-storage/tajo-storage-jdbc/src/main/java/org/apache/tajo/storage/jdbc/SQLExpressionGenerator.java @@ -229,7 +229,7 @@ protected EvalNode visitSubquery(Context context, SubqueryEval evalNode, Stack Date: Mon, 16 May 2016 20:05:23 -0700 Subject: [PATCH 2/6] Fixed unit test failures. --- .../apache/tajo/datum/TestDatumFactory.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tajo-common/src/test/java/org/apache/tajo/datum/TestDatumFactory.java b/tajo-common/src/test/java/org/apache/tajo/datum/TestDatumFactory.java index ffb3a30266..2f96aa9f46 100644 --- a/tajo-common/src/test/java/org/apache/tajo/datum/TestDatumFactory.java +++ b/tajo-common/src/test/java/org/apache/tajo/datum/TestDatumFactory.java @@ -18,8 +18,8 @@ package org.apache.tajo.datum; +import org.apache.tajo.type.Type; import org.junit.Test; -import org.apache.tajo.common.TajoDataTypes.Type; import static org.junit.Assert.assertEquals; @@ -28,48 +28,48 @@ public class TestDatumFactory { @Test public final void testCreateBit() { Datum d = DatumFactory.createBit((byte) 5); - assertEquals(Type.BIT, d.type()); + assertEquals(Type.Bit, d.type()); } @Test public final void testCreateInt2() { Datum d = DatumFactory.createInt2((short) 5); - assertEquals(Type.INT2, d.type()); + assertEquals(Type.Int2, d.type()); } @Test public final void testCreateInt4() { Datum d = DatumFactory.createInt4(5); - assertEquals(Type.INT4, d.type()); + assertEquals(Type.Int4, d.type()); } @Test public final void testCreateInt8() { Datum d = DatumFactory.createInt8((long) 5); - assertEquals(Type.INT8, d.type()); + assertEquals(Type.Int8, d.type()); } @Test public final void testCreateFloat4() { Datum d = DatumFactory.createFloat4(5.0f); - assertEquals(Type.FLOAT4, d.type()); + assertEquals(Type.Float4, d.type()); } @Test public final void testCreateFloat8() { Datum d = DatumFactory.createFloat8(5.0d); - assertEquals(Type.FLOAT8, d.type()); + assertEquals(Type.Float8, d.type()); } @Test public final void testCreateBoolean() { Datum d = DatumFactory.createBool(true); - assertEquals(Type.BOOLEAN, d.type()); + assertEquals(Type.Bool, d.type()); } @Test public final void testCreateString() { Datum d = DatumFactory.createText("12345a"); - assertEquals(Type.TEXT, d.type()); + assertEquals(Type.Text, d.type()); } } From 077e36782574c934217358bfce9148b13171f362 Mon Sep 17 00:00:00 2001 From: Hyunsik Choi Date: Mon, 16 May 2016 21:26:19 -0700 Subject: [PATCH 3/6] Fixed unit test failures and removed unnecessary ones. --- .../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 +++++++++--------- .../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 | 11 +- .../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 -- 15 files changed, 88 insertions(+), 179 deletions(-) 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 812c4c7fbd..ac6a5584dc 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,22 +18,14 @@ 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); 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 dd722ffbef..7c928b5a98 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; @@ -26,12 +25,6 @@ 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); 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 c3a0e84757..12f924153f 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,23 +18,16 @@ 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()); @@ -46,14 +39,6 @@ public final void testSize() { 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() { diff --git a/tajo-common/src/test/java/org/apache/tajo/datum/TestCharDatum.java b/tajo-common/src/test/java/org/apache/tajo/datum/TestCharDatum.java index bb22d5cc46..e8b2999d11 100644 --- a/tajo-common/src/test/java/org/apache/tajo/datum/TestCharDatum.java +++ b/tajo-common/src/test/java/org/apache/tajo/datum/TestCharDatum.java @@ -18,9 +18,9 @@ package org.apache.tajo.datum; +import org.apache.tajo.type.Type; import org.junit.Test; -import static org.apache.tajo.common.TajoDataTypes.Type; import static org.junit.Assert.*; public class TestCharDatum { @@ -28,7 +28,7 @@ public class TestCharDatum { @Test public final void testType() { Datum d = DatumFactory.createChar((char) 1); - assertEquals(Type.CHAR, d.type()); + assertEquals(Type.Char(1), d.type()); } @Test diff --git a/tajo-common/src/test/java/org/apache/tajo/datum/TestDateDatum.java b/tajo-common/src/test/java/org/apache/tajo/datum/TestDateDatum.java index c7014a69c6..9e289e9701 100644 --- a/tajo-common/src/test/java/org/apache/tajo/datum/TestDateDatum.java +++ b/tajo-common/src/test/java/org/apache/tajo/datum/TestDateDatum.java @@ -18,23 +18,17 @@ package org.apache.tajo.datum; -import org.apache.tajo.common.TajoDataTypes.Type; import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.json.CommonGsonHelper; +import org.apache.tajo.type.Type; import org.junit.Test; +import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.*; -import static org.hamcrest.CoreMatchers.*; public class TestDateDatum { private static String DATE = "1980-04-01"; - @Test - public final void testType() { - Datum d = DatumFactory.createDate(DATE); - assertEquals(Type.DATE, d.type()); - } - @Test public final void testAsInt4() { Datum d = DatumFactory.createDate(DATE); diff --git a/tajo-common/src/test/java/org/apache/tajo/datum/TestDatum.java b/tajo-common/src/test/java/org/apache/tajo/datum/TestDatum.java index 9a0b654423..2e71a0fb72 100644 --- a/tajo-common/src/test/java/org/apache/tajo/datum/TestDatum.java +++ b/tajo-common/src/test/java/org/apache/tajo/datum/TestDatum.java @@ -18,8 +18,8 @@ package org.apache.tajo.datum; +import org.apache.tajo.type.Type; import org.junit.Test; -import org.apache.tajo.common.TajoDataTypes.Type; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; @@ -35,35 +35,35 @@ public final void testPlusDatumDatum() { x = DatumFactory.createInt4(1); y = DatumFactory.createInt4(2); z = x.plus(y); - assertEquals(z.type(), Type.INT4); + assertEquals(z.type(), Type.Int4); assertEquals(z.asInt4(),3); z = y.plus(x); - assertEquals(z.type(),Type.INT4); + assertEquals(z.type(),Type.Int4); assertEquals(z.asInt4(),3); x = DatumFactory.createInt4(1); y = DatumFactory.createInt8(2l); z = x.plus(y); - assertEquals(z.type(),Type.INT8); + assertEquals(z.type(),Type.Int8); assertEquals(z.asInt8(),3l); z = y.plus(x); - assertEquals(z.type(),Type.INT8); + assertEquals(z.type(),Type.Int8); assertEquals(z.asInt8(),3l); y = DatumFactory.createFloat4(2.5f); z = x.plus(y); - assertEquals(z.type(),Type.FLOAT4); + assertEquals(z.type(),Type.Float4); assertTrue(z.asFloat4() == 3.5f); z = y.plus(x); - assertEquals(z.type(),Type.FLOAT4); + assertEquals(z.type(),Type.Float4); assertEquals(z.asInt4(),3); y = DatumFactory.createFloat8(4.5d); z = x.plus(y); - assertEquals(z.type(),Type.FLOAT8); + assertEquals(z.type(),Type.Float8); assertTrue(z.asFloat8() == 5.5d); z = y.plus(x); - assertEquals(z.type(),Type.FLOAT8); + assertEquals(z.type(),Type.Float8); assertTrue(z.asFloat8() == 5.5d); } @@ -76,34 +76,34 @@ public final void testMinusDatumDatum() { x = DatumFactory.createInt4(5); y = DatumFactory.createInt4(2); z = x.minus(y); - assertEquals(z.type(),Type.INT4); + assertEquals(z.type(),Type.Int4); assertEquals(z.asInt4(),3); z = y.minus(x); - assertEquals(z.type(),Type.INT4); + assertEquals(z.type(),Type.Int4); assertEquals(z.asInt4(),-3); y = DatumFactory.createInt8(2l); z = x.minus(y); - assertEquals(z.type(),Type.INT8); + assertEquals(z.type(),Type.Int8); assertEquals(z.asInt8(),3l); z = y.minus(x); - assertEquals(z.type(),Type.INT8); + assertEquals(z.type(),Type.Int8); assertEquals(z.asInt8(),-3l); y = DatumFactory.createFloat4(2.5f); z = x.minus(y); - assertEquals(z.type(),Type.FLOAT4); + assertEquals(z.type(),Type.Float4); assertTrue(z.asFloat4() == 2.5f); z = y.minus(x); - assertEquals(z.type(),Type.FLOAT4); + assertEquals(z.type(),Type.Float4); assertTrue(z.asFloat4() == -2.5f); y = DatumFactory.createFloat8(4.5d); z = x.minus(y); - assertEquals(z.type(),Type.FLOAT8); + assertEquals(z.type(),Type.Float8); assertTrue(z.asFloat8() == 0.5d); z = y.minus(x); - assertEquals(z.type(),Type.FLOAT8); + assertEquals(z.type(),Type.Float8); assertTrue(z.asFloat8() == -0.5d); } @@ -116,34 +116,34 @@ public final void testMultiplyDatumDatum() { x = DatumFactory.createInt4(5); y = DatumFactory.createInt4(2); z = x.multiply(y); - assertEquals(z.type(),Type.INT4); + assertEquals(z.type(),Type.Int4); assertEquals(z.asInt4(),10); z = y.multiply(x); - assertEquals(z.type(),Type.INT4); + assertEquals(z.type(),Type.Int4); assertEquals(z.asInt4(),10); y = DatumFactory.createInt8(2l); z = x.multiply(y); - assertEquals(z.type(),Type.INT8); + assertEquals(z.type(),Type.Int8); assertEquals(z.asInt8(),10l); z = y.multiply(x); - assertEquals(z.type(),Type.INT8); + assertEquals(z.type(),Type.Int8); assertEquals(z.asInt8(),10l); y = DatumFactory.createFloat4(2.5f); z = x.multiply(y); - assertEquals(z.type(),Type.FLOAT4); + assertEquals(z.type(),Type.Float4); assertTrue(z.asFloat4() == 12.5f); z = y.multiply(x); - assertEquals(z.type(),Type.FLOAT4); + assertEquals(z.type(),Type.Float4); assertTrue(z.asFloat4() == 12.5f); y = DatumFactory.createFloat8(4.5d); z = x.multiply(y); - assertEquals(z.type(),Type.FLOAT8); + assertEquals(z.type(),Type.Float8); assertTrue(z.asFloat8() == 22.5d); z = y.multiply(x); - assertEquals(z.type(),Type.FLOAT8); + assertEquals(z.type(),Type.Float8); assertTrue(z.asFloat8() == 22.5d); } @@ -156,34 +156,34 @@ public final void testDivideDatumDatum() { x = DatumFactory.createInt4(6); y = DatumFactory.createInt4(3); z = x.divide(y); - assertEquals(z.type(), Type.INT4); + assertEquals(z.type(), Type.Int4); assertEquals(z.asInt4(),2); z = y.divide(x); - assertEquals(z.type(),Type.INT4); + assertEquals(z.type(),Type.Int4); assertTrue(z.asInt4() == 0); y = DatumFactory.createInt8(3l); z = x.divide(y); - assertEquals(z.type(),Type.INT8); + assertEquals(z.type(),Type.Int8); assertEquals(z.asInt8(),2l); z = y.divide(x); - assertEquals(z.type(),Type.INT8); + assertEquals(z.type(),Type.Int8); assertEquals(z.asInt8(),0l); y = DatumFactory.createFloat4(3f); z = x.divide(y); - assertEquals(z.type(),Type.FLOAT4); + assertEquals(z.type(),Type.Float4); assertTrue(z.asFloat4() == 2.0f); z = y.divide(x); - assertEquals(z.type(),Type.FLOAT4); + assertEquals(z.type(),Type.Float4); assertTrue(z.asFloat4() == 0.5f); y = DatumFactory.createFloat8(3d); z = x.divide(y); - assertEquals(z.type(),Type.FLOAT8); + assertEquals(z.type(),Type.Float8); assertTrue(z.asFloat8() == 2.0d); z = y.divide(x); - assertEquals(z.type(),Type.FLOAT8); + assertEquals(z.type(),Type.Float8); assertTrue(z.asFloat8() == 0.5d); } @@ -196,28 +196,28 @@ public final void testEqualToDatum() { x = DatumFactory.createInt4(6); y = DatumFactory.createInt4(3); z = x.equalsTo(y); - assertEquals(z.type(),Type.BOOLEAN); + assertEquals(z.type(),Type.Bool); assertEquals(z.asBool(),false); z = y.equalsTo(x); - assertEquals(z.type(),Type.BOOLEAN); + assertEquals(z.type(),Type.Bool); assertEquals(z.asBool(), false); x = DatumFactory.createFloat4(3.27f); y = DatumFactory.createFloat4(3.27f); z = x.equalsTo(y); - assertEquals(z.type(),Type.BOOLEAN); + assertEquals(z.type(),Type.Bool); assertEquals(z.asBool(),true); z = y.equalsTo(x); - assertEquals(z.type(),Type.BOOLEAN); + assertEquals(z.type(),Type.Bool); assertEquals(z.asBool(), true); x = DatumFactory.createInt8(123456789012345l); y = DatumFactory.createInt8(123456789012345l); z = x.equalsTo(y); - assertEquals(z.type(),Type.BOOLEAN); + assertEquals(z.type(),Type.Bool); assertEquals(z.asBool(),true); z = y.equalsTo(x); - assertEquals(z.type(),Type.BOOLEAN); + assertEquals(z.type(),Type.Bool); assertEquals(z.asBool(), true); } @@ -230,10 +230,10 @@ public final void testLessThanDatum() { x = DatumFactory.createInt4(6); y = DatumFactory.createInt4(3); z = x.lessThan(y); - assertEquals(z.type(),Type.BOOLEAN); + assertEquals(z.type(),Type.Bool); assertEquals(z.asBool(),false); z = y.lessThan(x); - assertEquals(z.type(),Type.BOOLEAN); + assertEquals(z.type(),Type.Bool); assertEquals(z.asBool(), true); } @@ -246,19 +246,19 @@ public final void testLessThanEqualsDatum() { x = DatumFactory.createInt4(6); y = DatumFactory.createInt4(3); z = x.lessThanEqual(y); - assertEquals(z.type(),Type.BOOLEAN); + assertEquals(z.type(),Type.Bool); assertEquals(z.asBool(),false); z = y.lessThanEqual(x); - assertEquals(z.type(),Type.BOOLEAN); + assertEquals(z.type(),Type.Bool); assertEquals(z.asBool(), true); x = DatumFactory.createInt4(6); y = DatumFactory.createInt4(6); z = x.lessThanEqual(y); - assertEquals(z.type(),Type.BOOLEAN); + assertEquals(z.type(),Type.Bool); assertEquals(z.asBool(),true); z = y.lessThanEqual(x); - assertEquals(z.type(),Type.BOOLEAN); + assertEquals(z.type(),Type.Bool); assertEquals(z.asBool(), true); } @@ -271,19 +271,19 @@ public final void testgreaterThanDatum() { x = DatumFactory.createInt4(6); y = DatumFactory.createInt4(3); z = x.greaterThan(y); - assertEquals(z.type(),Type.BOOLEAN); + assertEquals(z.type(),Type.Bool); assertEquals(z.asBool(),true); z = y.greaterThan(x); - assertEquals(z.type(),Type.BOOLEAN); + assertEquals(z.type(),Type.Bool); assertEquals(z.asBool(), false); x = DatumFactory.createInt4(6); y = DatumFactory.createInt4(6); z = x.greaterThan(y); - assertEquals(z.type(),Type.BOOLEAN); + assertEquals(z.type(),Type.Bool); assertEquals(z.asBool(),false); z = y.greaterThan(x); - assertEquals(z.type(),Type.BOOLEAN); + assertEquals(z.type(),Type.Bool); assertEquals(z.asBool(), false); } @@ -296,19 +296,19 @@ public final void testgreaterThanEqualsDatum() { x = DatumFactory.createInt4(6); y = DatumFactory.createInt4(3); z = x.greaterThanEqual(y); - assertEquals(z.type(),Type.BOOLEAN); + assertEquals(z.type(),Type.Bool); assertEquals(z.asBool(),true); z = y.greaterThanEqual(x); - assertEquals(z.type(),Type.BOOLEAN); + assertEquals(z.type(),Type.Bool); assertEquals(z.asBool(), false); x = DatumFactory.createInt4(6); y = DatumFactory.createInt4(6); z = x.greaterThanEqual(y); - assertEquals(z.type(),Type.BOOLEAN); + assertEquals(z.type(),Type.Bool); assertEquals(z.asBool(),true); z = y.greaterThanEqual(x); - assertEquals(z.type(),Type.BOOLEAN); + assertEquals(z.type(),Type.Bool); assertEquals(z.asBool(), true); } } diff --git a/tajo-common/src/test/java/org/apache/tajo/datum/TestFloat8Datum.java b/tajo-common/src/test/java/org/apache/tajo/datum/TestFloat8Datum.java index b2b49f277f..1d4ffb8eb9 100644 --- a/tajo-common/src/test/java/org/apache/tajo/datum/TestFloat8Datum.java +++ b/tajo-common/src/test/java/org/apache/tajo/datum/TestFloat8Datum.java @@ -27,12 +27,6 @@ public class TestFloat8Datum { - @Test - public final void testType() { - Datum d = DatumFactory.createFloat8(1d); - assertEquals(Type.FLOAT8, d.type()); - } - @Test public final void testAsInt4() { Datum d = DatumFactory.createFloat8(5d); diff --git a/tajo-common/src/test/java/org/apache/tajo/datum/TestFloatDatum.java b/tajo-common/src/test/java/org/apache/tajo/datum/TestFloatDatum.java index cd92dda70f..417de83fa5 100644 --- a/tajo-common/src/test/java/org/apache/tajo/datum/TestFloatDatum.java +++ b/tajo-common/src/test/java/org/apache/tajo/datum/TestFloatDatum.java @@ -27,12 +27,6 @@ public class TestFloatDatum { - @Test - public final void testType() { - Datum d = DatumFactory.createFloat4(1f); - assertEquals(Type.FLOAT4, d.type()); - } - @Test public final void testAsInt() { Datum d = DatumFactory.createFloat4(5f); diff --git a/tajo-common/src/test/java/org/apache/tajo/datum/TestInt2Datum.java b/tajo-common/src/test/java/org/apache/tajo/datum/TestInt2Datum.java index 6af97000e2..e92f0d2c0e 100644 --- a/tajo-common/src/test/java/org/apache/tajo/datum/TestInt2Datum.java +++ b/tajo-common/src/test/java/org/apache/tajo/datum/TestInt2Datum.java @@ -18,19 +18,12 @@ package org.apache.tajo.datum; -import org.apache.tajo.common.TajoDataTypes.Type; import org.junit.Test; import static org.junit.Assert.*; public class TestInt2Datum { - @Test - public final void testType() { - Datum d = DatumFactory.createInt2((short) 1); - assertEquals(d.type(), Type.INT2); - } - @Test public final void testAsInt4() { Datum d = DatumFactory.createInt2((short) 5); diff --git a/tajo-common/src/test/java/org/apache/tajo/datum/TestInt4Datum.java b/tajo-common/src/test/java/org/apache/tajo/datum/TestInt4Datum.java index 559bed3bff..ca8daa770c 100644 --- a/tajo-common/src/test/java/org/apache/tajo/datum/TestInt4Datum.java +++ b/tajo-common/src/test/java/org/apache/tajo/datum/TestInt4Datum.java @@ -19,20 +19,11 @@ package org.apache.tajo.datum; import org.junit.Test; -import org.apache.tajo.common.TajoDataTypes; -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 TestInt4Datum { - @Test - public final void testType() { - Datum d = DatumFactory.createInt4(1); - assertEquals(TajoDataTypes.Type.INT4, d.type()); - } - @Test public final void testAsInt() { Datum d = DatumFactory.createInt4(5); diff --git a/tajo-common/src/test/java/org/apache/tajo/datum/TestInt8Datum.java b/tajo-common/src/test/java/org/apache/tajo/datum/TestInt8Datum.java index 7c07114e1a..e625556b64 100644 --- a/tajo-common/src/test/java/org/apache/tajo/datum/TestInt8Datum.java +++ b/tajo-common/src/test/java/org/apache/tajo/datum/TestInt8Datum.java @@ -19,20 +19,11 @@ package org.apache.tajo.datum; import org.junit.Test; -import org.apache.tajo.common.TajoDataTypes.Type; -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 TestInt8Datum { - @Test - public final void testType() { - Datum d = DatumFactory.createInt8(1l); - assertEquals(d.type(), Type.INT8); - } - @Test public final void testAsInt() { Datum d = DatumFactory.createInt8(5l); diff --git a/tajo-common/src/test/java/org/apache/tajo/datum/TestIntervalDatum.java b/tajo-common/src/test/java/org/apache/tajo/datum/TestIntervalDatum.java index b319c9cd64..5f7e074a9c 100644 --- a/tajo-common/src/test/java/org/apache/tajo/datum/TestIntervalDatum.java +++ b/tajo-common/src/test/java/org/apache/tajo/datum/TestIntervalDatum.java @@ -20,6 +20,7 @@ import org.apache.tajo.common.TajoDataTypes; import org.apache.tajo.exception.InvalidOperationException; +import org.apache.tajo.type.Type; import org.apache.tajo.util.datetime.DateTimeUtil; import org.junit.Test; @@ -68,7 +69,7 @@ public final void testOperation() throws Exception { for (int i = 0; i < datums.length; i++) { Datum result = datum.plus(datums[i]); - assertEquals(TajoDataTypes.Type.DATE, result.type()); + assertEquals(Type.Date, result.type()); assertEquals("date '2001-09-28' + " + datums[i].asChars() + "(" + i + " th test)", "2001-10-05", result.asChars()); } @@ -76,38 +77,38 @@ public final void testOperation() throws Exception { // date '2001-09-28' + interval '1 hour' ==> timestamp '2001-09-28 01:00:00' datum = DatumFactory.createDate(2001, 9, 28); Datum result = datum.plus(new IntervalDatum(60 * 60 * 1000)); - assertEquals(TajoDataTypes.Type.TIMESTAMP, result.type()); + assertEquals(Type.Timestamp, result.type()); assertEquals(DatumFactory.parseTimestamp("2001-09-28 01:00:00", null), result); // interval '1 hour' + date '2001-09-28' ==> timestamp '2001-09-28 01:00:00' datum = new IntervalDatum(60 * 60 * 1000); result = datum.plus(DatumFactory.createDate(2001, 9, 28)); - assertEquals(TajoDataTypes.Type.TIMESTAMP, result.type()); + assertEquals(Type.Timestamp, result.type()); assertEquals(DatumFactory.parseTimestamp("2001-09-28 01:00:00", null), result); // date '2001-09-28' + time '03:00' ==> timestamp '2001-09-28 03:00:00' datum = DatumFactory.createDate(2001, 9, 28); TimeDatum time = new TimeDatum(DateTimeUtil.toTime(3, 0, 0, 0)); result = datum.plus(time); - assertEquals(TajoDataTypes.Type.TIMESTAMP, result.type()); + assertEquals(Type.Timestamp, result.type()); assertEquals(DatumFactory.parseTimestamp("2001-09-28 03:00:00", null), result); // interval '1 day' + interval '1 hour' interval '1 day 01:00:00' datum = new IntervalDatum(IntervalDatum.DAY_MILLIS); result = datum.plus(new IntervalDatum(0, 1 * 60 * 60 * 1000)); - assertEquals(TajoDataTypes.Type.INTERVAL, result.type()); + assertEquals(Type.Interval, result.type()); assertEquals("1 day 01:00:00", result.asChars()); // timestamp '2001-09-28 01:00' + interval '23 hours' ==> timestamp '2001-09-29 00:00:00' datum = new TimestampDatum(DateTimeUtil.toJulianTimestamp(2001, 9, 28, 1, 0, 0, 0)); result = datum.plus(new IntervalDatum(23 * 60 * 60 * 1000)); - assertEquals(TajoDataTypes.Type.TIMESTAMP, result.type()); + assertEquals(Type.Timestamp, result.type()); assertEquals(DatumFactory.parseTimestamp("2001-09-29 00:00:00", null), result); // time '01:00' + interval '3 hours' ==> time '04:00:00' datum = new TimeDatum(DateTimeUtil.toTime(1, 0, 0, 0)); result = datum.plus(new IntervalDatum(3 * 60 * 60 * 1000)); - assertEquals(TajoDataTypes.Type.TIME, result.type()); + assertEquals(Type.Time, result.type()); assertEquals(new TimeDatum(DateTimeUtil.toTime(4, 0, 0, 0)), result); // - interval '23 hours' ==> interval '-23:00:00' @@ -116,59 +117,59 @@ public final void testOperation() throws Exception { // date '2001-10-01' - date '2001-09-28' ==> integer '3' datum = DatumFactory.createDate(2001, 10, 1); result = datum.minus(DatumFactory.createDate(2001, 9, 28)); - assertEquals(TajoDataTypes.Type.INT4, result.type()); + assertEquals(Type.Int4, result.type()); assertEquals(new Int4Datum(3), result); // date '2001-10-01' - integer '7' ==> date '2001-09-24' datum = DatumFactory.createDate(2001, 10, 1); for (Datum eachDatum : datums) { Datum result2 = datum.minus(eachDatum); - assertEquals(TajoDataTypes.Type.DATE, result2.type()); + assertEquals(Type.Date, result2.type()); assertEquals(DatumFactory.createDate(2001, 9, 24), result2); } // date '2001-09-28' - interval '1 hour' ==> timestamp '2001-09-27 23:00:00' datum = DatumFactory.createDate(2001, 9, 28); result = datum.minus(new IntervalDatum(1 * 60 * 60 * 1000)); - assertEquals(TajoDataTypes.Type.TIMESTAMP, result.type()); + assertEquals(Type.Timestamp, result.type()); assertEquals(DatumFactory.parseTimestamp("2001-09-27 23:00:00", null), result); // date '2001-09-28' - interval '1 day 1 hour' ==> timestamp '2001-09-26 23:00:00' // In this case all datums are UTC datum = DatumFactory.createDate(2001, 9, 28); result = datum.minus(new IntervalDatum(IntervalDatum.DAY_MILLIS + 1 * 60 * 60 * 1000)); - assertEquals(TajoDataTypes.Type.TIMESTAMP, result.type()); + assertEquals(Type.Timestamp, result.type()); assertEquals(DatumFactory.parseTimestamp("2001-09-26 23:00:00", null), result); // time '05:00' - time '03:00' ==> interval '02:00:00' datum = new TimeDatum(DateTimeUtil.toTime(5, 0, 0, 0)); result = datum.minus(new TimeDatum(DateTimeUtil.toTime(3, 0, 0, 0))); - assertEquals(TajoDataTypes.Type.INTERVAL, result.type()); + assertEquals(Type.Interval, result.type()); assertEquals(new IntervalDatum(2 * 60 * 60 * 1000), result); // time '05:00' - interval '2 hours' ==> time '03:00:00' datum = new TimeDatum(DateTimeUtil.toTime(5, 0, 0, 0)); result = datum.minus(new IntervalDatum(2 * 60 * 60 * 1000)); - assertEquals(TajoDataTypes.Type.TIME, result.type()); + assertEquals(Type.Time, result.type()); assertEquals(new TimeDatum(DateTimeUtil.toTime(3, 0, 0, 0)), result); // timestamp '2001-09-28 23:00' - interval '23 hours' ==> timestamp '2001-09-28 00:00:00' // In this case all datums are UTC datum = new TimestampDatum(DateTimeUtil.toJulianTimestamp(2001, 9, 28, 23, 0, 0, 0)); result = datum.minus(new IntervalDatum(23 * 60 * 60 * 1000)); - assertEquals(TajoDataTypes.Type.TIMESTAMP, result.type()); + assertEquals(Type.Timestamp, result.type()); assertEquals(DatumFactory.parseTimestamp("2001-09-28 00:00:00", null), result); // interval '1 day' - interval '1 hour' ==> interval '1 day -01:00:00' datum = new IntervalDatum(IntervalDatum.DAY_MILLIS); result = datum.minus(new IntervalDatum(1 * 60 * 60 * 1000)); - assertEquals(TajoDataTypes.Type.INTERVAL, result.type()); + assertEquals(Type.Interval, result.type()); assertEquals(new IntervalDatum(23 * 60 * 60 * 1000), result); // timestamp '2001-09-29 03:00' - timestamp '2001-09-27 12:00' ==> interval '1 day 15:00:00' datum = new TimestampDatum(DateTimeUtil.toJulianTimestamp(2001, 9, 29, 3, 0, 0, 0)); result = datum.minus(new TimestampDatum(DateTimeUtil.toJulianTimestamp(2001, 9, 27, 12, 0, 0, 0))); - assertEquals(TajoDataTypes.Type.INTERVAL, result.type()); + assertEquals(Type.Interval, result.type()); assertEquals(new IntervalDatum(IntervalDatum.DAY_MILLIS + 15 * 60 * 60 * 1000), result); // 900 * interval '1 second' ==> interval '00:15:00' @@ -178,31 +179,31 @@ public final void testOperation() throws Exception { datum = new IntervalDatum(1000); for (Datum aDatum900 : datum900) { Datum result2 = datum.multiply(aDatum900); - assertEquals(TajoDataTypes.Type.INTERVAL, result2.type()); + assertEquals(Type.Interval, result2.type()); assertEquals(new IntervalDatum(15 * 60 * 1000), result2); result2 = aDatum900.multiply(datum); - assertEquals(TajoDataTypes.Type.INTERVAL, result2.type()); + assertEquals(Type.Interval, result2.type()); assertEquals(new IntervalDatum(15 * 60 * 1000), result2); } // double precision '3.5' * interval '1 hour' ==> interval '03:30:00' datum = new Float8Datum(3.5f); result = datum.multiply(new IntervalDatum(1 * 60 * 60 * 1000)); - assertEquals(TajoDataTypes.Type.INTERVAL, result.type()); + assertEquals(Type.Interval, result.type()); assertEquals(new IntervalDatum(3 * 60 * 60 * 1000 + 30 * 60 * 1000), result); // interval '1 hour' / double precision '1.5' ==> interval '00:40:00' datum = new IntervalDatum(1 * 60 * 60 * 1000); result = datum.divide(new Float8Datum(1.5f)); - assertEquals(TajoDataTypes.Type.INTERVAL, result.type()); + assertEquals(Type.Interval, result.type()); assertEquals(new IntervalDatum(40 * 60 * 1000), result); // timestamp '2001-08-31 01:00:00' + interval '1 mons' ==> timestamp 2001-09-30 01:00:00 // In this case all datums are UTC datum = new TimestampDatum(DateTimeUtil.toJulianTimestamp(2001, 8, 31, 1, 0, 0, 0)); result = datum.plus(new IntervalDatum(1, 0)); - assertEquals(TajoDataTypes.Type.TIMESTAMP, result.type()); + assertEquals(Type.Timestamp, result.type()); assertEquals(DatumFactory.parseTimestamp("2001-09-30 01:00:00", null), result); } } diff --git a/tajo-common/src/test/java/org/apache/tajo/datum/TestTextDatum.java b/tajo-common/src/test/java/org/apache/tajo/datum/TestTextDatum.java index 2624d330cb..d7e569bd6f 100644 --- a/tajo-common/src/test/java/org/apache/tajo/datum/TestTextDatum.java +++ b/tajo-common/src/test/java/org/apache/tajo/datum/TestTextDatum.java @@ -18,7 +18,7 @@ package org.apache.tajo.datum; -import org.apache.tajo.common.TajoDataTypes.Type; +import org.apache.tajo.type.Type; import org.junit.Test; import org.powermock.reflect.Whitebox; @@ -28,12 +28,6 @@ public class TestTextDatum { - @Test - public final void testType() { - Datum d = DatumFactory.createText("12345"); - assertEquals(d.type(), Type.TEXT); - } - @Test public final void testAsInt4() { Datum d = DatumFactory.createText("12345"); diff --git a/tajo-common/src/test/java/org/apache/tajo/datum/TestTimeDatum.java b/tajo-common/src/test/java/org/apache/tajo/datum/TestTimeDatum.java index 7058b525e4..ae5a9ac311 100644 --- a/tajo-common/src/test/java/org/apache/tajo/datum/TestTimeDatum.java +++ b/tajo-common/src/test/java/org/apache/tajo/datum/TestTimeDatum.java @@ -18,8 +18,8 @@ package org.apache.tajo.datum; +import org.apache.tajo.common.TajoDataTypes; import org.apache.tajo.common.TajoDataTypes.DataType; -import org.apache.tajo.common.TajoDataTypes.Type; import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.json.CommonGsonHelper; import org.junit.Test; @@ -30,12 +30,6 @@ public class TestTimeDatum { private static String TIME = "12:34:56"; - @Test - public final void testType() { - Datum d = DatumFactory.createTime(TIME); - assertEquals(Type.TIME, d.type()); - } - @Test(expected = TajoRuntimeException.class) public final void testAsInt4() { Datum d = DatumFactory.createTime(TIME); @@ -106,7 +100,7 @@ public final void testGetFields() { @Test public final void testTimeDatumFromCreateFromInt8() { TimeDatum d = DatumFactory.createTime(TIME); - DataType type = DataType.newBuilder().setType(Type.TIME).build(); + DataType type = DataType.newBuilder().setType(TajoDataTypes.Type.TIME).build(); TimeDatum copy = (TimeDatum)DatumFactory.createFromInt8(type, d.asInt8()); assertEquals(d, copy); diff --git a/tajo-common/src/test/java/org/apache/tajo/datum/TestTimestampDatum.java b/tajo-common/src/test/java/org/apache/tajo/datum/TestTimestampDatum.java index 2bbb92d323..32d4784700 100644 --- a/tajo-common/src/test/java/org/apache/tajo/datum/TestTimestampDatum.java +++ b/tajo-common/src/test/java/org/apache/tajo/datum/TestTimestampDatum.java @@ -18,7 +18,6 @@ package org.apache.tajo.datum; -import org.apache.tajo.common.TajoDataTypes.Type; import org.apache.tajo.exception.InvalidOperationException; import org.apache.tajo.exception.TajoRuntimeException; import org.apache.tajo.json.CommonGsonHelper; @@ -45,12 +44,6 @@ public static void setUp() { unixtime = (int) (javatime / 1000); } - @Test - public final void testType() { - Datum d = DatumFactory.createTimestampDatumWithUnixTime(unixtime); - assertEquals(Type.TIMESTAMP, d.type()); - } - @Test(expected = TajoRuntimeException.class) public final void testAsInt4() { Datum d = DatumFactory.createTimestampDatumWithUnixTime(unixtime); From 6e3b535c1705ece6e9802186d38219383b2ea557 Mon Sep 17 00:00:00 2001 From: Hyunsik Choi Date: Fri, 20 May 2016 14:56:05 -0700 Subject: [PATCH 4/6] Change the modifiers of builtin type classes to be default. --- .../src/main/java/org/apache/tajo/type/Any.java | 2 +- .../src/main/java/org/apache/tajo/type/Array.java | 2 +- .../src/main/java/org/apache/tajo/type/Bit.java | 2 +- .../src/main/java/org/apache/tajo/type/Blob.java | 2 +- .../src/main/java/org/apache/tajo/type/Bool.java | 2 +- .../src/main/java/org/apache/tajo/type/Char.java | 2 +- .../src/main/java/org/apache/tajo/type/Date.java | 2 +- .../src/main/java/org/apache/tajo/type/Float4.java | 2 +- .../src/main/java/org/apache/tajo/type/Float8.java | 2 +- .../src/main/java/org/apache/tajo/type/Int1.java | 2 +- .../src/main/java/org/apache/tajo/type/Int2.java | 2 +- .../src/main/java/org/apache/tajo/type/Int4.java | 2 +- .../src/main/java/org/apache/tajo/type/Int8.java | 2 +- .../src/main/java/org/apache/tajo/type/Interval.java | 2 +- .../src/main/java/org/apache/tajo/type/Map.java | 2 +- .../src/main/java/org/apache/tajo/type/Null.java | 2 +- .../src/main/java/org/apache/tajo/type/Numeric.java | 6 ++---- .../src/main/java/org/apache/tajo/type/Protobuf.java | 2 +- .../src/main/java/org/apache/tajo/type/Record.java | 2 +- .../src/main/java/org/apache/tajo/type/Text.java | 2 +- .../src/main/java/org/apache/tajo/type/Time.java | 2 +- .../src/main/java/org/apache/tajo/type/Timestamp.java | 2 +- .../src/main/java/org/apache/tajo/type/Type.java | 11 ++++------- .../main/java/org/apache/tajo/type/TypeFactory.java | 2 +- .../src/main/java/org/apache/tajo/type/Varchar.java | 2 +- .../java/org/apache/tajo/plan/LogicalPlanner.java | 2 +- 26 files changed, 30 insertions(+), 35 deletions(-) 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 342fdb68f7..e6f9f6f3a2 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 @@ import static org.apache.tajo.common.TajoDataTypes.Type.ANY; public class Any extends Type { - public Any() { + Any() { super(ANY); } } 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 3432238115..67be256bf0 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 @@ public class Array extends TypeParamterizedType { - public Array(Type elementType) { + Array(Type elementType) { super(ARRAY, ImmutableList.of(elementType)); } 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 index ee0043d9ca..befabda13b 100644 --- a/tajo-common/src/main/java/org/apache/tajo/type/Bit.java +++ b/tajo-common/src/main/java/org/apache/tajo/type/Bit.java @@ -21,7 +21,7 @@ import static org.apache.tajo.common.TajoDataTypes.Type.BIT; public class Bit extends Type { - public Bit() { + Bit() { super(BIT); } } 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 360ea13fba..d25084200a 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 @@ import static org.apache.tajo.common.TajoDataTypes.Type.BLOB; public class Blob extends Type { - public Blob() { + Blob() { super(BLOB); } } 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 923e8e90ec..7a152146fb 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 @@ import static org.apache.tajo.common.TajoDataTypes.Type.BOOLEAN; public class Bool extends Type { - public Bool() { + Bool() { super(BOOLEAN); } } 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 586775ea0d..f2679ae05b 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 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)); } 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 a68ab97a49..61cc7cc190 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 @@ import static org.apache.tajo.common.TajoDataTypes.Type.DATE; public class Date extends Type { - public Date() { + Date() { super(DATE); } } 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 b8c82181ee..58e5bb06f5 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 @@ import static org.apache.tajo.common.TajoDataTypes.Type.FLOAT4; public class Float4 extends Type { - public Float4() { + Float4() { super(FLOAT4); } } 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 f36fac87c8..6cb5d90a3a 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 @@ import static org.apache.tajo.common.TajoDataTypes.Type.FLOAT8; public class Float8 extends Type { - public Float8() { + Float8() { super(FLOAT8); } } 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 d86d36e196..bb7c310d02 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 @@ import static org.apache.tajo.common.TajoDataTypes.Type.INT1; public class Int1 extends Type { - public Int1() { + Int1() { super(INT1); } } 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 e7c221541d..315fed5e3a 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 @@ import static org.apache.tajo.common.TajoDataTypes.Type.INT2; public class Int2 extends Type { - public Int2() { + Int2() { super(INT2); } } 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 e8db7841a0..2aab6c45ca 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 @@ import static org.apache.tajo.common.TajoDataTypes.Type.INT4; public class Int4 extends Type { - public Int4() { + Int4() { super(INT4); } } 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 999e9acd97..d16aadaecf 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 @@ import static org.apache.tajo.common.TajoDataTypes.Type.INT8; public class Int8 extends Type { - public Int8() { + Int8() { super(INT8); } } 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 d6dc17eda8..5ca81777c6 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 @@ import static org.apache.tajo.common.TajoDataTypes.Type.INTERVAL; public class Interval extends Type { - public Interval() { + Interval() { super(INTERVAL); } } 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 786d6af4ff..4738b9bbae 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 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)); } 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 74cf052a0b..78a4fbe74f 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 @@ import static org.apache.tajo.common.TajoDataTypes.Type.NULL_TYPE; public class Null extends Type { - public Null() { + Null() { super(NULL_TYPE); } } 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 c21325dde1..8ea535ea3d 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 @@ -20,12 +20,10 @@ import com.google.common.collect.ImmutableList; -import static org.apache.tajo.common.TajoDataTypes.Type.NUMERIC; - public class Numeric extends ValueParamterizedType { - public Numeric(int precision, int scale) { - super(NUMERIC, ImmutableList.of(precision, scale)); + Numeric(int precision, int scale) { + super(Numeric, ImmutableList.of(precision, scale)); } public int precision() { diff --git a/tajo-common/src/main/java/org/apache/tajo/type/Protobuf.java b/tajo-common/src/main/java/org/apache/tajo/type/Protobuf.java index e286724644..7eb7d9b980 100644 --- a/tajo-common/src/main/java/org/apache/tajo/type/Protobuf.java +++ b/tajo-common/src/main/java/org/apache/tajo/type/Protobuf.java @@ -23,7 +23,7 @@ public class Protobuf extends Type { private String msgName; - public Protobuf(String msgName) { + Protobuf(String msgName) { super(PROTOBUF); this.msgName = msgName; } 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 46d7e1902c..d8492c5605 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 @@ public class Record extends Type implements Iterable { private final ImmutableList fields; - public Record(Collection fields) { + Record(Collection fields) { super(RECORD); this.fields = ImmutableList.copyOf(fields); } 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 aab49a497d..893331426e 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 @@ import static org.apache.tajo.common.TajoDataTypes.Type.TEXT; public class Text extends Type { - public Text() { + Text() { super(TEXT); } } 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 12fe5f82db..9ad94dd109 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 @@ import static org.apache.tajo.common.TajoDataTypes.Type.TIME; public class Time extends Type { - public Time() { + Time() { super(TIME); } } 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 577f877419..36b1edc712 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 @@ import static org.apache.tajo.common.TajoDataTypes.Type.TIMESTAMP; public class Timestamp extends Type { - public Timestamp() { + Timestamp() { super(TIMESTAMP); } } 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 d6c08ab6c0..75d900025f 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,6 +34,9 @@ */ public abstract class Type implements Cloneable, ProtoObject { + 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(); @@ -45,6 +48,7 @@ public abstract class Type implements Cloneable, ProtoObject { 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(); @@ -107,13 +111,6 @@ public boolean isStruct() { 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); } 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 24c46a9e14..f8f1b43d48 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 static Type create(TajoDataTypes.Type baseType, case FLOAT8: return Type.Float8; case NUMERIC: { if (valueParams.size() == 0) { - return Numeric.Numeric(); + return Type.Numeric; } else { for (Object p : valueParams) { 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 61e4e8563f..e96bc987a2 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 @@ public class Varchar extends ValueParamterizedType { - public Varchar(int length) { + Varchar(int length) { super(VARCHAR, ImmutableList.of(length)); } diff --git a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java index aaf64cd4a7..b64665839c 100644 --- a/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java +++ b/tajo-plan/src/main/java/org/apache/tajo/plan/LogicalPlanner.java @@ -2132,7 +2132,7 @@ public static Type convertDataType(DataTypeExpr dataType) { } else if (dataType.hasLengthOrPrecision()) { return Numeric(dataType.getLengthOrPrecision()); } else { - return Numeric(); + return Numeric; } } else { return TypeFactory.create(type); From 7c1c7df0727a5555d289d629ce3a838cd8c6c3e8 Mon Sep 17 00:00:00 2001 From: Hyunsik Choi Date: Fri, 20 May 2016 15:22:11 -0700 Subject: [PATCH 5/6] Fixed compilation error. --- tajo-common/src/main/java/org/apache/tajo/type/Protobuf.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tajo-common/src/main/java/org/apache/tajo/type/Protobuf.java b/tajo-common/src/main/java/org/apache/tajo/type/Protobuf.java index 7eb7d9b980..e286724644 100644 --- a/tajo-common/src/main/java/org/apache/tajo/type/Protobuf.java +++ b/tajo-common/src/main/java/org/apache/tajo/type/Protobuf.java @@ -23,7 +23,7 @@ public class Protobuf extends Type { private String msgName; - Protobuf(String msgName) { + public Protobuf(String msgName) { super(PROTOBUF); this.msgName = msgName; } From 8fb8ec3ab526653a025240aa6124148fc295f73c Mon Sep 17 00:00:00 2001 From: Hyunsik Choi Date: Sun, 22 May 2016 03:00:01 -0700 Subject: [PATCH 6/6] Fixed compilation errors. --- tajo-common/src/main/java/org/apache/tajo/type/Numeric.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 8ea535ea3d..8f9f9f91f2 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 @@ -20,10 +20,12 @@ import com.google.common.collect.ImmutableList; +import static org.apache.tajo.common.TajoDataTypes.Type.NUMERIC; + public class Numeric extends ValueParamterizedType { Numeric(int precision, int scale) { - super(Numeric, ImmutableList.of(precision, scale)); + super(NUMERIC, ImmutableList.of(precision, scale)); } public int precision() {