You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tajo.apache.org by ji...@apache.org on 2015/06/02 04:59:00 UTC
[5/6] tajo git commit: TAJO-1450: Encapsulate Datum in Tuple.
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/Max.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/Max.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/Max.java
index 6931ffc..e2636be 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/Max.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/Max.java
@@ -38,11 +38,11 @@ public abstract class Max extends AggFunction<Datum> {
@Override
public void eval(FunctionContext ctx, Tuple params) {
MaxContext maxCtx = (MaxContext) ctx;
- Datum datum = params.get(0);
- if (datum.isNotNull()) {
- if (maxCtx.max == null || maxCtx.max.compareTo(datum) < 0) {
- maxCtx.max = datum;
- }
+ if (!params.isBlankOrNull(0)) {
+ Datum datum = params.asDatum(0);
+ if (maxCtx.max == null || maxCtx.max.compareTo(datum) < 0) {
+ maxCtx.max = datum;
+ }
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/Min.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/Min.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/Min.java
index 9a2e3ad..21058f2 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/Min.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/Min.java
@@ -38,8 +38,8 @@ public abstract class Min extends AggFunction<Datum> {
@Override
public void eval(FunctionContext ctx, Tuple params) {
MinContext minCtx = (MinContext) ctx;
- Datum datum = params.get(0);
- if (datum.isNotNull()) {
+ if (!params.isBlankOrNull(0)) {
+ Datum datum = params.asDatum(0);
if (minCtx.min == null || minCtx.min.compareTo(datum) > 0) {
minCtx.min = datum;
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/RandomInt.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/RandomInt.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/RandomInt.java
index 6901d7b..97288a0 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/RandomInt.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/RandomInt.java
@@ -51,7 +51,7 @@ public class RandomInt extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- return DatumFactory.createInt4(random.nextInt(params.get(0).asInt4()));
+ return DatumFactory.createInt4(random.nextInt(params.getInt4(0)));
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumDouble.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumDouble.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumDouble.java
index ca33b6f..2d1b2ac 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumDouble.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumDouble.java
@@ -62,11 +62,10 @@ public class SumDouble extends AggFunction<Datum> {
@Override
public void eval(FunctionContext ctx, Tuple params) {
- Datum datum = params.get(0);
- if (datum.isNotNull()) {
+ if (!params.isBlankOrNull(0)) {
SumContext sumCtx = (SumContext)ctx;
sumCtx.hasNonNull = true;
- sumCtx.sum += datum.asFloat8();
+ sumCtx.sum += params.getFloat8(0);
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumDoubleDistinct.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumDoubleDistinct.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumDoubleDistinct.java
index 76c79f2..bb615dd 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumDoubleDistinct.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumDoubleDistinct.java
@@ -65,10 +65,12 @@ public class SumDoubleDistinct extends AggFunction<Datum> {
@Override
public void merge(FunctionContext context, Tuple params) {
SumContext distinctContext = (SumContext) context;
- Datum value = params.get(0);
- if ((distinctContext.latest == null || (!distinctContext.latest.equals(value)) && !(value instanceof NullDatum))) {
- distinctContext.latest = value;
- distinctContext.sum += value.asFloat8();
+ if (!params.isBlankOrNull(0)) {
+ Datum value = params.asDatum(0);
+ if (distinctContext.latest == null || !distinctContext.latest.equals(value)) {
+ distinctContext.latest = value;
+ distinctContext.sum += value.asFloat8();
+ }
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumFloat.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumFloat.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumFloat.java
index f63aa56..4390e71 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumFloat.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumFloat.java
@@ -51,11 +51,10 @@ public class SumFloat extends SumDouble {
@Override
public void eval(FunctionContext ctx, Tuple params) {
- Datum datum = params.get(0);
- if (datum.isNotNull()) {
+ if (!params.isBlankOrNull(0)) {
SumContext sumCtx = (SumContext)ctx;
sumCtx.hasNonNull = true;
- sumCtx.sum += datum.asFloat4();
+ sumCtx.sum += params.getFloat4(0);
}
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumFloatDistinct.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumFloatDistinct.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumFloatDistinct.java
index a1855b4..6cad5c9 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumFloatDistinct.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumFloatDistinct.java
@@ -65,10 +65,12 @@ public class SumFloatDistinct extends AggFunction<Datum> {
@Override
public void merge(FunctionContext context, Tuple params) {
SumContext distinctContext = (SumContext) context;
- Datum value = params.get(0);
- if ((distinctContext.latest == null || (!distinctContext.latest.equals(value)) && !(value instanceof NullDatum))) {
- distinctContext.latest = value;
- distinctContext.sum += value.asFloat4();
+ if (!params.isBlankOrNull(0)) {
+ Datum value = params.asDatum(0);
+ if (distinctContext.latest == null || !distinctContext.latest.equals(value)) {
+ distinctContext.latest = value;
+ distinctContext.sum += value.asFloat4();
+ }
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumIntDistinct.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumIntDistinct.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumIntDistinct.java
index 77eb7a6..f3cda4a 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumIntDistinct.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumIntDistinct.java
@@ -65,10 +65,12 @@ public class SumIntDistinct extends AggFunction<Datum> {
@Override
public void merge(FunctionContext context, Tuple params) {
SumContext distinctContext = (SumContext) context;
- Datum value = params.get(0);
- if ((distinctContext.latest == null || (!distinctContext.latest.equals(value)) && !(value instanceof NullDatum))) {
- distinctContext.latest = value;
- distinctContext.sum += value.asInt4();
+ if (!params.isBlankOrNull(0)) {
+ Datum value = params.asDatum(0);
+ if (distinctContext.latest == null || !distinctContext.latest.equals(value)) {
+ distinctContext.latest = value;
+ distinctContext.sum += value.asInt4();
+ }
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumLong.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumLong.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumLong.java
index 6503a83..f00a33b 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumLong.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumLong.java
@@ -62,11 +62,10 @@ public class SumLong extends AggFunction<Datum> {
@Override
public void eval(FunctionContext ctx, Tuple params) {
- Datum datum = params.get(0);
- if (datum.isNotNull()) {
+ if (!params.isBlankOrNull(0)) {
SumContext sumCtx = (SumContext) ctx;
sumCtx.hasNonNull = true;
- sumCtx.sum += datum.asInt8();
+ sumCtx.sum += params.getInt8(0);
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumLongDistinct.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumLongDistinct.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumLongDistinct.java
index f22a483..2be6d81 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumLongDistinct.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/SumLongDistinct.java
@@ -65,10 +65,12 @@ public class SumLongDistinct extends AggFunction<Datum> {
@Override
public void merge(FunctionContext context, Tuple params) {
SumContext distinctContext = (SumContext) context;
- Datum value = params.get(0);
- if ((distinctContext.latest == null || (!distinctContext.latest.equals(value)) && !(value instanceof NullDatum))) {
- distinctContext.latest = value;
- distinctContext.sum += value.asInt8();
+ if (!params.isBlankOrNull(0)) {
+ Datum value = params.asDatum(0);
+ if (distinctContext.latest == null || !distinctContext.latest.equals(value)) {
+ distinctContext.latest = value;
+ distinctContext.sum += value.asInt8();
+ }
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/Variance.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/Variance.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/Variance.java
index 3d925d1..5fa58af 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/Variance.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/builtin/Variance.java
@@ -44,23 +44,22 @@ public abstract class Variance extends AggFunction<Datum> {
@Override
public void eval(FunctionContext ctx, Tuple params) {
VarianceContext varianceCtx = (VarianceContext) ctx;
- Datum datum = params.get(0);
- if (datum.isNotNull()) {
- double delta = datum.asFloat8() - varianceCtx.avg;
+ if (!params.isBlankOrNull(0)) {
+ double value = params.getFloat8(0);
+ double delta = value - varianceCtx.avg;
varianceCtx.count++;
varianceCtx.avg += delta/varianceCtx.count;
- varianceCtx.squareSumOfDiff += delta * (datum.asFloat8() - varianceCtx.avg);
+ varianceCtx.squareSumOfDiff += delta * (value - varianceCtx.avg);
}
}
@Override
public void merge(FunctionContext ctx, Tuple part) {
VarianceContext varianceCtx = (VarianceContext) ctx;
- Datum d = part.get(0);
- if (d instanceof NullDatum) {
+ if (part.isBlankOrNull(0)) {
return;
}
- ProtobufDatum datum = (ProtobufDatum) d;
+ ProtobufDatum datum = (ProtobufDatum) part.getProtobufDatum(0);
VarianceProto proto = (VarianceProto) datum.get();
double delta = proto.getAvg() - varianceCtx.avg;
varianceCtx.avg += delta * proto.getCount() / (varianceCtx.count + proto.getCount());
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/AddDays.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/AddDays.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/AddDays.java
index 643e2c0..5543024 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/AddDays.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/AddDays.java
@@ -53,8 +53,8 @@ public class AddDays extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum dateDatum = params.get(0);
- long val = params.get(1).asInt8();
+ Datum dateDatum = params.asDatum(0);
+ long val = params.getInt8(1);
if (val >= 0) {
return dateDatum.plus(new IntervalDatum(val * IntervalDatum.DAY_MILLIS));
} else {
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/AddMonths.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/AddMonths.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/AddMonths.java
index aef258a..016a25c 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/AddMonths.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/AddMonths.java
@@ -53,12 +53,12 @@ public class AddMonths extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum dateDatum = params.get(0);
- int val = params.get(1).asInt4();
+ Datum dateDatum = params.asDatum(0);
+ int val = params.getInt4(1);
if (val >= 0) {
return dateDatum.plus(new IntervalDatum(val, 0));
} else {
- return dateDatum.minus(new IntervalDatum(0- val, 0));
+ return dateDatum.minus(new IntervalDatum(-val, 0));
}
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromDate.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromDate.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromDate.java
index 069a7ee..1f897ca 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromDate.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromDate.java
@@ -25,6 +25,7 @@ import org.apache.tajo.plan.function.GeneralFunction;
import org.apache.tajo.engine.function.annotation.Description;
import org.apache.tajo.engine.function.annotation.ParamTypes;
import org.apache.tajo.storage.Tuple;
+import org.apache.tajo.util.datetime.TimeMeta;
import static org.apache.tajo.common.TajoDataTypes.Type.*;
@@ -48,21 +49,15 @@ public class DatePartFromDate extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum target = params.get(0);
- if(target instanceof NullDatum || params.get(1) instanceof NullDatum) {
+ if (params.isBlankOrNull(0) || params.isBlankOrNull(1) || params.type(1) != DATE) {
return NullDatum.get();
}
- DateDatum date;
- if(params.get(1) instanceof DateDatum) {
- date = (DateDatum)(params.get(1));
- } else {
- return NullDatum.get();
- }
+ TimeMeta timeMeta = params.getTimeDate(1);
if (extractor == null) {
- String extractType = target.asChars().toLowerCase();
+ String extractType = params.getText(0).toLowerCase();
if (extractType.equals("century")) {
extractor = new CenturyExtractorFromDate();
@@ -93,100 +88,100 @@ public class DatePartFromDate extends GeneralFunction {
}
}
- return extractor.extract(date);
+ return extractor.extract(timeMeta);
}
private interface DatePartExtractorFromDate {
- public Datum extract(DateDatum date);
+ public Datum extract(TimeMeta timeMeta);
}
private static class CenturyExtractorFromDate implements DatePartExtractorFromDate {
@Override
- public Datum extract(DateDatum date) {
- return DatumFactory.createFloat8((double) date.getCenturyOfEra());
+ public Datum extract(TimeMeta timeMeta) {
+ return DatumFactory.createFloat8((double) timeMeta.getCenturyOfEra());
}
}
private static class DayExtractorFromDate implements DatePartExtractorFromDate {
@Override
- public Datum extract(DateDatum date) {
- return DatumFactory.createFloat8((double) date.getDayOfMonth());
+ public Datum extract(TimeMeta timeMeta) {
+ return DatumFactory.createFloat8((double) timeMeta.dayOfMonth);
}
}
private static class DecadeExtractorFromDate implements DatePartExtractorFromDate {
@Override
- public Datum extract(DateDatum date) {
- return DatumFactory.createFloat8((date.getYear() / 10.0d));
+ public Datum extract(TimeMeta timeMeta) {
+ return DatumFactory.createFloat8((timeMeta.years / 10.0d));
}
}
private static class DowExtractorFromDate implements DatePartExtractorFromDate {
@Override
- public Datum extract(DateDatum date) {
- return DatumFactory.createFloat8((double) date.getDayOfWeek());
+ public Datum extract(TimeMeta timeMeta) {
+ return DatumFactory.createFloat8((double) timeMeta.getDayOfWeek());
}
}
private static class DoyExtractorFromDate implements DatePartExtractorFromDate {
@Override
- public Datum extract(DateDatum date) {
- return DatumFactory.createFloat8((double) date.getDayOfYear());
+ public Datum extract(TimeMeta timeMeta) {
+ return DatumFactory.createFloat8((double) timeMeta.getDayOfYear());
}
}
private static class ISODowExtractorFromDate implements DatePartExtractorFromDate {
@Override
- public Datum extract(DateDatum date) {
- return DatumFactory.createFloat8((double) date.getISODayOfWeek());
+ public Datum extract(TimeMeta timeMeta) {
+ return DatumFactory.createFloat8((double) timeMeta.getISODayOfWeek());
}
}
private static class ISOYearExtractorFromDate implements DatePartExtractorFromDate {
@Override
- public Datum extract(DateDatum date) {
- return DatumFactory.createFloat8((double) date.getWeekyear());
+ public Datum extract(TimeMeta timeMeta) {
+ return DatumFactory.createFloat8((double) timeMeta.getWeekyear());
}
}
private static class MillenniumExtractorFromDate implements DatePartExtractorFromDate {
@Override
- public Datum extract(DateDatum date) {
- return DatumFactory.createFloat8((double) (((date.getYear() - 1) / 1000) + 1));
+ public Datum extract(TimeMeta timeMeta) {
+ return DatumFactory.createFloat8((double) (((timeMeta.years - 1) / 1000) + 1));
}
}
private static class MonthExtractorFromDate implements DatePartExtractorFromDate {
@Override
- public Datum extract(DateDatum date) {
- return DatumFactory.createFloat8((double) date.getMonthOfYear());
+ public Datum extract(TimeMeta timeMeta) {
+ return DatumFactory.createFloat8((double) timeMeta.monthOfYear);
}
}
private static class QuarterExtractorFromDate implements DatePartExtractorFromDate {
@Override
- public Datum extract(DateDatum date) {
- return DatumFactory.createFloat8((double) (((date.getMonthOfYear() - 1) / 3) + 1));
+ public Datum extract(TimeMeta timeMeta) {
+ return DatumFactory.createFloat8((double) (((timeMeta.monthOfYear - 1) / 3) + 1));
}
}
private static class WeekExtractorFromDate implements DatePartExtractorFromDate {
@Override
- public Datum extract(DateDatum date) {
- return DatumFactory.createFloat8((double) date.getWeekOfYear());
+ public Datum extract(TimeMeta timeMeta) {
+ return DatumFactory.createFloat8((double) timeMeta.getWeekOfYear());
}
}
private static class YearExtractorFromDate implements DatePartExtractorFromDate {
@Override
- public Datum extract(DateDatum date) {
- return DatumFactory.createFloat8((double) date.getYear());
+ public Datum extract(TimeMeta timeMeta) {
+ return DatumFactory.createFloat8((double) timeMeta.years);
}
}
private static class NullExtractorFromDate implements DatePartExtractorFromDate {
@Override
- public Datum extract(DateDatum date) {
+ public Datum extract(TimeMeta timeMeta) {
return NullDatum.get();
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromTime.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromTime.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromTime.java
index 8100379..8848af6 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromTime.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromTime.java
@@ -27,7 +27,6 @@ import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
import org.apache.tajo.datum.NullDatum;
-import org.apache.tajo.datum.TimeDatum;
import org.apache.tajo.engine.function.annotation.Description;
import org.apache.tajo.engine.function.annotation.ParamTypes;
import org.apache.tajo.plan.expr.FunctionEval;
@@ -39,6 +38,7 @@ import org.apache.tajo.util.datetime.TimeMeta;
import java.util.TimeZone;
+import static org.apache.tajo.common.TajoDataTypes.Type.TIME;
import static org.apache.tajo.common.TajoDataTypes.Type.FLOAT8;
import static org.apache.tajo.common.TajoDataTypes.Type.TEXT;
@@ -69,21 +69,13 @@ public class DatePartFromTime extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum target = params.get(0);
- TimeDatum time = null;
- if(target instanceof NullDatum || params.get(1) instanceof NullDatum) {
- return NullDatum.get();
- }
-
- if(params.get(1) instanceof TimeDatum) {
- time = (TimeDatum)(params.get(1));
- } else {
+ if (params.isBlankOrNull(0) || params.isBlankOrNull(1) || params.type(1) != TIME) {
return NullDatum.get();
}
if (extractor == null) {
- String extractType = target.asChars().toLowerCase();
+ String extractType = params.getText(0).toLowerCase();
if (extractType.equals("hour")) {
extractor = new HourExtractorFromTime();
@@ -100,7 +92,7 @@ public class DatePartFromTime extends GeneralFunction {
}
}
- TimeMeta tm = time.toTimeMeta();
+ TimeMeta tm = params.getTimeDate(1);
DateTimeUtil.toUserTimezone(tm, timezone);
return extractor.extract(tm);
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromTimestamp.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromTimestamp.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromTimestamp.java
index a115d00..05fa8e4 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromTimestamp.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DatePartFromTimestamp.java
@@ -65,21 +65,13 @@ public class DatePartFromTimestamp extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum target = params.get(0);
- TimestampDatum timestamp;
- if(target instanceof NullDatum || params.get(1) instanceof NullDatum) {
- return NullDatum.get();
- }
-
- if(params.get(1) instanceof TimestampDatum) {
- timestamp = (TimestampDatum)(params.get(1));
- } else {
+ if (params.isBlankOrNull(0) || params.isBlankOrNull(1) || params.type(1) != TIMESTAMP) {
return NullDatum.get();
}
if (extractor == null) {
- String extractType = target.asChars().toLowerCase();
+ String extractType = params.getText(0).toLowerCase();
if (extractType.equals("century")) {
extractor = new CenturyExtractorFromTimestamp();
@@ -128,7 +120,7 @@ public class DatePartFromTimestamp extends GeneralFunction {
}
}
- TimeMeta tm = timestamp.toTimeMeta();
+ TimeMeta tm = params.getTimeDate(1);
DateTimeUtil.toUserTimezone(tm, timezone);
return extractor.extract(tm);
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DateTimePartFromUnixTimestamp.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DateTimePartFromUnixTimestamp.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DateTimePartFromUnixTimestamp.java
index 6bf99dd..d017b36 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DateTimePartFromUnixTimestamp.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/DateTimePartFromUnixTimestamp.java
@@ -57,24 +57,16 @@ public class DateTimePartFromUnixTimestamp extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum target = params.get(0);
- TimeMeta dateTime;
- Int4Datum dayOfWeek = null;
-
- if (target instanceof NullDatum || params.get(1) instanceof NullDatum) {
+ if (params.isBlankOrNull(0) || params.isBlankOrNull(1) || params.type(1) != INT8) {
return NullDatum.get();
}
- if (params.get(1) instanceof Int8Datum) {
- dateTime = DateTimeUtil.getUTCDateTime((Int8Datum) (params.get(1)));
- } else {
- return NullDatum.get();
- }
+ TimeMeta dateTime = DateTimeUtil.getUTCDateTime(params.getInt8(1));
- if ( null == extractor || null == weekExtractor) {
+ if (extractor == null && weekExtractor == null) {
- String extractType = target.asChars().toLowerCase();
+ String extractType = params.getText(0).toLowerCase();
if (extractType.equals("day")) {
extractor = new DayExtractorFromTime();
@@ -85,15 +77,15 @@ public class DateTimePartFromUnixTimestamp extends GeneralFunction {
} else if (extractType.equals("year")) {
extractor = new YearExtractorFromTime();
} else if (extractType.equals("week")) {
- if (params.get(2) instanceof NullDatum) {
- return NullDatum.get();
- }
- dayOfWeek = (Int4Datum) params.get(2);
weekExtractor = new WeekExtractorFromTime();
}
}
- return null != weekExtractor ? weekExtractor.extract(dateTime, dayOfWeek.asInt4()) : extractor.extract(dateTime);
+ if (extractor != null) {
+ return extractor.extract(dateTime);
+ }
+
+ return params.isBlankOrNull(2) ? NullDatum.get() : weekExtractor.extract(dateTime, params.getInt4(2));
}
private interface DateTimePartExtractorFromUnixTime {
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToCharTimestamp.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToCharTimestamp.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToCharTimestamp.java
index 1053ecb..7b620e9 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToCharTimestamp.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToCharTimestamp.java
@@ -27,7 +27,6 @@ import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
import org.apache.tajo.datum.NullDatum;
-import org.apache.tajo.datum.TimestampDatum;
import org.apache.tajo.engine.function.annotation.Description;
import org.apache.tajo.engine.function.annotation.ParamTypes;
import org.apache.tajo.plan.expr.FunctionEval;
@@ -68,16 +67,15 @@ public class ToCharTimestamp extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- if(params.isNull(0) || params.isNull(1)) {
+ if(params.isBlankOrNull(0) || params.isBlankOrNull(1)) {
return NullDatum.get();
}
- TimestampDatum valueDatum = (TimestampDatum) params.get(0);
- Datum pattern = params.get(1);
+ TimeMeta tm = params.getTimeDate(0);
+ String pattern = params.getText(1);
- TimeMeta tm = valueDatum.toTimeMeta();
DateTimeUtil.toUserTimezone(tm, timezone);
- return DatumFactory.createText(DateTimeFormat.to_char(tm, pattern.asChars()));
+ return DatumFactory.createText(DateTimeFormat.to_char(tm, pattern));
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToDate.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToDate.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToDate.java
index 9575e12..43f0014 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToDate.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToDate.java
@@ -48,12 +48,12 @@ public class ToDate extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- if(params.isNull(0) || params.isNull(1)) {
+ if(params.isBlankOrNull(0) || params.isBlankOrNull(1)) {
return NullDatum.get();
}
- String value = params.get(0).asChars();
- String pattern = params.get(1).asChars();
+ String value = params.getText(0);
+ String pattern = params.getText(1);
TimeMeta tm = DateTimeFormat.parseDateTime(value, pattern);
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestampInt.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestampInt.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestampInt.java
index 3821d76..5468b19 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestampInt.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestampInt.java
@@ -46,10 +46,9 @@ public class ToTimestampInt extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum value = params.get(0);
- if (value instanceof NullDatum) {
+ if (params.isBlankOrNull(0)) {
return NullDatum.get();
}
- return DatumFactory.createTimestmpDatumWithUnixTime(value.asInt4());
+ return DatumFactory.createTimestmpDatumWithUnixTime(params.getInt4(0));
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestampText.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestampText.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestampText.java
index 6b199f6..ff92795 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestampText.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestampText.java
@@ -60,14 +60,11 @@ public class ToTimestampText extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- if(params.isNull(0) || params.isNull(1)) {
+ if(params.isBlankOrNull(0) || params.isBlankOrNull(1)) {
return NullDatum.get();
}
- TextDatum dateTimeTextDatum = (TextDatum) params.get(0);
- TextDatum patternDatum = (TextDatum) params.get(1);
-
- TimeMeta tm = DateTimeFormat.parseDateTime(dateTimeTextDatum.asChars(), patternDatum.asChars());
+ TimeMeta tm = DateTimeFormat.parseDateTime(params.getText(0), params.getText(1));
DateTimeUtil.toUTCTimezone(tm, timezone);
return new TimestampDatum(DateTimeUtil.toJulianTimestamp(tm));
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/geoip/GeoIPCountryInet4.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/geoip/GeoIPCountryInet4.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/geoip/GeoIPCountryInet4.java
index 3789709..8e69766 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/geoip/GeoIPCountryInet4.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/geoip/GeoIPCountryInet4.java
@@ -46,10 +46,9 @@ public class GeoIPCountryInet4 extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum valueDatum = params.get(0);
- if (valueDatum instanceof NullDatum) {
+ if (params.isBlankOrNull(0)) {
return NullDatum.get();
}
- return new TextDatum(GeoIPUtil.getCountryCode(params.get(0).asChars()));
+ return new TextDatum(GeoIPUtil.getCountryCode(params.getText(0)));
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/geoip/GeoIPCountryText.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/geoip/GeoIPCountryText.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/geoip/GeoIPCountryText.java
index 232e414..42dc858 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/geoip/GeoIPCountryText.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/geoip/GeoIPCountryText.java
@@ -47,10 +47,9 @@ public class GeoIPCountryText extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum valueDatum = params.get(0);
- if (valueDatum instanceof NullDatum) {
+ if (params.isBlankOrNull(0)) {
return NullDatum.get();
}
- return new TextDatum(GeoIPUtil.getCountryCode(params.get(0).asChars()));
+ return new TextDatum(GeoIPUtil.getCountryCode(params.getText(0)));
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/geoip/GeoIPInCountryInet4.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/geoip/GeoIPInCountryInet4.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/geoip/GeoIPInCountryInet4.java
index 46257a4..9167356 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/geoip/GeoIPInCountryInet4.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/geoip/GeoIPInCountryInet4.java
@@ -48,12 +48,12 @@ public class GeoIPInCountryInet4 extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- if (params.get(0) instanceof NullDatum || params.get(1) instanceof NullDatum) {
+ if (params.isBlankOrNull(0) || params.isBlankOrNull(1)) {
return NullDatum.get();
}
- String addr = params.get(0).asChars();
- String otherCode = params.get(1).asChars();
+ String addr = params.getText(0);
+ String otherCode = params.getText(1);
String thisCode = GeoIPUtil.getCountryCode(addr);
return DatumFactory.createBool(thisCode.equals(otherCode));
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/geoip/GeoIPInCountryText.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/geoip/GeoIPInCountryText.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/geoip/GeoIPInCountryText.java
index ebd4fad..ec19063 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/geoip/GeoIPInCountryText.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/geoip/GeoIPInCountryText.java
@@ -47,12 +47,12 @@ public class GeoIPInCountryText extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- if (params.get(0) instanceof NullDatum || params.get(1) instanceof NullDatum) {
+ if (params.isBlankOrNull(0) || params.isBlankOrNull(1)) {
return NullDatum.get();
}
- String addr = params.get(0).asChars();
- String otherCode = params.get(1).asChars();
+ String addr = params.getText(0);
+ String otherCode = params.getText(1);
String thisCode = GeoIPUtil.getCountryCode(addr);
return DatumFactory.createBool(thisCode.equals(otherCode));
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/json/JsonExtractPathText.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/json/JsonExtractPathText.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/json/JsonExtractPathText.java
index 27d342e..84c14c6 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/json/JsonExtractPathText.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/json/JsonExtractPathText.java
@@ -67,19 +67,16 @@ public class JsonExtractPathText extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum json = params.get(0);
- Datum xPath = params.get(1);
-
- if (json instanceof NullDatum || xPath instanceof NullDatum) {
+ if (params.isBlankOrNull(0) || params.isBlankOrNull(1)) {
return NullDatum.get();
}
// default is JsonSmartMappingProvider
try {
- JSONObject object = (JSONObject) parser.parse(json.asTextBytes());
+ JSONObject object = (JSONObject) parser.parse(params.getBytes(0));
if (jsonPath == null) {
- jsonPath = JsonPath.compile(xPath.asChars());
+ jsonPath = JsonPath.compile(params.getText(1));
}
return DatumFactory.createText(jsonPath.read(object).toString());
} catch (Exception e) {
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/math/AbsDouble.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/AbsDouble.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/AbsDouble.java
index c535721..114b281 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/AbsDouble.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/AbsDouble.java
@@ -51,11 +51,10 @@ public class AbsDouble extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum valueDatum = params.get(0);
- if(valueDatum instanceof NullDatum) {
+ if (params.isBlankOrNull(0)) {
return NullDatum.get();
}
- return DatumFactory.createFloat8(Math.abs(valueDatum.asFloat8()));
+ return DatumFactory.createFloat8(Math.abs(params.getFloat8(0)));
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/math/AbsFloat.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/AbsFloat.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/AbsFloat.java
index 002b445..112db52 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/AbsFloat.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/AbsFloat.java
@@ -51,11 +51,10 @@ public class AbsFloat extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum valueDatum = params.get(0);
- if(valueDatum instanceof NullDatum) {
+ if (params.isBlankOrNull(0)) {
return NullDatum.get();
}
- return DatumFactory.createFloat4(Math.abs(valueDatum.asFloat4()));
+ return DatumFactory.createFloat4(Math.abs(params.getFloat4(0)));
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/math/AbsInt.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/AbsInt.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/AbsInt.java
index 00523ec..b11fc8b 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/AbsInt.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/AbsInt.java
@@ -51,11 +51,10 @@ public class AbsInt extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum valueDatum = params.get(0);
- if(valueDatum instanceof NullDatum) {
+ if (params.isBlankOrNull(0)) {
return NullDatum.get();
}
- return DatumFactory.createInt4(Math.abs(valueDatum.asInt4()));
+ return DatumFactory.createInt4(Math.abs(params.getInt4(0)));
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/math/AbsLong.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/AbsLong.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/AbsLong.java
index 82a6ba8..a806489 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/AbsLong.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/AbsLong.java
@@ -50,11 +50,10 @@ public class AbsLong extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum valueDatum = params.get(0);
- if(valueDatum instanceof NullDatum) {
+ if (params.isBlankOrNull(0)) {
return NullDatum.get();
}
- return DatumFactory.createInt8(Math.abs(valueDatum.asInt8()));
+ return DatumFactory.createInt8(Math.abs(params.getInt8(0)));
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Acos.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Acos.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Acos.java
index f5e4415..0002acf 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Acos.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Acos.java
@@ -51,11 +51,10 @@ public class Acos extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum valueDatum = params.get(0);
- if(valueDatum instanceof NullDatum) {
+ if (params.isBlankOrNull(0)) {
return NullDatum.get();
}
- return DatumFactory.createFloat8(Math.acos(valueDatum.asFloat8()));
+ return DatumFactory.createFloat8(Math.acos(params.getFloat8(0)));
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Asin.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Asin.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Asin.java
index 898b73c..989c962 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Asin.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Asin.java
@@ -50,11 +50,10 @@ public class Asin extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum valueDatum = params.get(0);
- if(valueDatum instanceof NullDatum) {
+ if (params.isBlankOrNull(0)) {
return NullDatum.get();
}
- return DatumFactory.createFloat8(Math.asin(valueDatum.asFloat8()));
+ return DatumFactory.createFloat8(Math.asin(params.getFloat8(0)));
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Atan.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Atan.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Atan.java
index 15b9fb7..f082a7d 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Atan.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Atan.java
@@ -50,11 +50,10 @@ public class Atan extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum valueDatum = params.get(0);
- if(valueDatum instanceof NullDatum) {
+ if (params.isBlankOrNull(0)) {
return NullDatum.get();
}
- return DatumFactory.createFloat8(Math.atan(valueDatum.asFloat8()));
+ return DatumFactory.createFloat8(Math.atan(params.getFloat8(0)));
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Atan2.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Atan2.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Atan2.java
index e8401af..13af81c 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Atan2.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Atan2.java
@@ -51,12 +51,10 @@ public class Atan2 extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum valueDatumx = params.get(0);
- Datum valueDatumy = params.get(1);
- if(valueDatumx instanceof NullDatum || valueDatumy instanceof NullDatum) {
+ if (params.isBlankOrNull(0) || params.isBlankOrNull(1)) {
return NullDatum.get();
}
- return DatumFactory.createFloat8(Math.atan2(valueDatumx.asFloat8(), valueDatumy.asFloat8()));
+ return DatumFactory.createFloat8(Math.atan2(params.getFloat8(0), params.getFloat8(1)));
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Cbrt.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Cbrt.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Cbrt.java
index 0f83ea0..af599da 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Cbrt.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Cbrt.java
@@ -51,11 +51,10 @@ public class Cbrt extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum valueDatum = params.get(0);
- if(valueDatum instanceof NullDatum) {
+ if (params.isBlankOrNull(0)) {
return NullDatum.get();
}
- return DatumFactory.createFloat8(Math.cbrt(valueDatum.asFloat8()));
+ return DatumFactory.createFloat8(Math.cbrt(params.getFloat8(0)));
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Ceil.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Ceil.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Ceil.java
index 4bfe501..b8f5c7d 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Ceil.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Ceil.java
@@ -52,12 +52,11 @@ public class Ceil extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum valueDatum = params.get(0);
- if(valueDatum instanceof NullDatum) {
+ if (params.isBlankOrNull(0)) {
return NullDatum.get();
}
- return DatumFactory.createInt8((long)Math.ceil(valueDatum.asFloat8()));
+ return DatumFactory.createInt8((long)Math.ceil(params.getFloat8(0)));
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Cos.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Cos.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Cos.java
index 3a71ae7..96f3e50 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Cos.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Cos.java
@@ -50,11 +50,10 @@ public class Cos extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum valueDatum = params.get(0);
- if(valueDatum instanceof NullDatum) {
+ if (params.isBlankOrNull(0)) {
return NullDatum.get();
}
- return DatumFactory.createFloat8(Math.cos(valueDatum.asFloat8()));
+ return DatumFactory.createFloat8(Math.cos(params.getFloat8(0)));
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Degrees.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Degrees.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Degrees.java
index 61d87fb..036eef6 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Degrees.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Degrees.java
@@ -51,11 +51,10 @@ public class Degrees extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum valueDatum = params.get(0);
- if(valueDatum instanceof NullDatum) {
+ if (params.isBlankOrNull(0)) {
return NullDatum.get();
}
- return DatumFactory.createFloat8(Math.toDegrees(valueDatum.asFloat8()));
+ return DatumFactory.createFloat8(Math.toDegrees(params.getFloat8(0)));
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Div.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Div.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Div.java
index 4c82a79..2f831d7 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Div.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Div.java
@@ -55,18 +55,12 @@ public class Div extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum value1Datum = params.get(0);
- if(value1Datum instanceof NullDatum) {
+ if (params.isBlankOrNull(0) || params.isBlankOrNull(1)) {
return NullDatum.get();
}
- Datum value2Datum = params.get(1);
- if(value2Datum instanceof NullDatum) {
- return NullDatum.get();
- }
-
- long value1 = value1Datum.asInt8();
- long value2 = value2Datum.asInt8();
+ long value1 = params.getInt8(0);
+ long value2 = params.getInt8(1);
if (value2 == 0) {
return NullDatum.get();
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Exp.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Exp.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Exp.java
index 2657d80..c0d3d67 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Exp.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Exp.java
@@ -51,11 +51,10 @@ public class Exp extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum valueDatum = params.get(0);
- if(valueDatum instanceof NullDatum) {
+ if (params.isBlankOrNull(0)) {
return NullDatum.get();
}
- return DatumFactory.createFloat8(Math.exp(valueDatum.asFloat8()));
+ return DatumFactory.createFloat8(Math.exp(params.getFloat8(0)));
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Floor.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Floor.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Floor.java
index aca0821..139ff79 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Floor.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Floor.java
@@ -51,11 +51,10 @@ public class Floor extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum valueDatum = params.get(0);
- if(valueDatum instanceof NullDatum) {
+ if (params.isBlankOrNull(0)) {
return NullDatum.get();
}
- return DatumFactory.createInt8((long)Math.floor(valueDatum.asFloat8()));
+ return DatumFactory.createInt8((long)Math.floor(params.getFloat8(0)));
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Mod.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Mod.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Mod.java
index bfb4d54..3b1511d 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Mod.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Mod.java
@@ -55,18 +55,12 @@ public class Mod extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum value1Datum = params.get(0);
- if(value1Datum instanceof NullDatum) {
+ if (params.isBlankOrNull(0) || params.isBlankOrNull(1)) {
return NullDatum.get();
}
- Datum value2Datum = params.get(1);
- if(value2Datum instanceof NullDatum) {
- return NullDatum.get();
- }
-
- long value1 = value1Datum.asInt8();
- long value2 = value2Datum.asInt8();
+ long value1 = params.getInt8(0);
+ long value2 = params.getInt8(1);
if (value2 == 0) {
return NullDatum.get();
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Pow.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Pow.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Pow.java
index 8a28c84..e39e4fb 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Pow.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Pow.java
@@ -54,12 +54,10 @@ public class Pow extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum value1Datum = params.get(0);
- Datum value2Datum = params.get(1);
- if(value1Datum instanceof NullDatum || value2Datum instanceof NullDatum) {
+ if (params.isBlankOrNull(0) || params.isBlankOrNull(1)) {
return NullDatum.get();
}
- return DatumFactory.createFloat8(Math.pow(value1Datum.asFloat8(), value2Datum.asFloat8()));
+ return DatumFactory.createFloat8(Math.pow(params.getFloat8(0), params.getFloat8(1)));
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Radians.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Radians.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Radians.java
index 26e767c..8edb331 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Radians.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Radians.java
@@ -52,11 +52,10 @@ public class Radians extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum valueDatum = params.get(0);
- if(valueDatum instanceof NullDatum) {
+ if (params.isBlankOrNull(0)) {
return NullDatum.get();
}
- return DatumFactory.createFloat8(Math.toRadians(valueDatum.asFloat8()));
+ return DatumFactory.createFloat8(Math.toRadians(params.getFloat8(0)));
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Round.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Round.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Round.java
index 2a13378..8c8d303 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Round.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Round.java
@@ -54,12 +54,11 @@ public class Round extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum valueDatum = params.get(0);
- if(valueDatum instanceof NullDatum) {
+ if (params.isBlankOrNull(0)) {
return NullDatum.get();
}
- double value = valueDatum.asFloat8();
+ double value = params.getFloat8(0);
// Note: there are various round up/down approaches (https://en.wikipedia.org/wiki/Rounding#Tie-breaking).
// Math.round uses an approach different from other programming languages, so the results of round function
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/math/RoundFloat8.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/RoundFloat8.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/RoundFloat8.java
index f6a92f9..7650261 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/RoundFloat8.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/RoundFloat8.java
@@ -56,15 +56,12 @@ public class RoundFloat8 extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum valueDatum = params.get(0);
- Datum roundDatum = params.get(1);
-
- if(valueDatum instanceof NullDatum || roundDatum instanceof NullDatum) {
+ if (params.isBlankOrNull(0) || params.isBlankOrNull(1)) {
return NullDatum.get();
}
- double value = valueDatum.asFloat8();
- int rountPoint = roundDatum.asInt4();
+ double value = params.getFloat8(0);
+ int rountPoint = params.getInt4(1);
if (Double.isNaN(value)) {
throw new InvalidOperationException("value is not a number.");
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Sign.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Sign.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Sign.java
index 71e4d01..f5f26ac 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Sign.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Sign.java
@@ -54,11 +54,10 @@ public class Sign extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum valueDatum = params.get(0);
- if(valueDatum instanceof NullDatum) {
+ if (params.isBlankOrNull(0)) {
return NullDatum.get();
}
- return DatumFactory.createFloat8(Math.signum(valueDatum.asFloat8()));
+ return DatumFactory.createFloat8(Math.signum(params.getFloat8(0)));
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Sin.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Sin.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Sin.java
index e4f7877..8eb22a1 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Sin.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Sin.java
@@ -50,11 +50,10 @@ public class Sin extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum valueDatum = params.get(0);
- if(valueDatum instanceof NullDatum) {
+ if (params.isBlankOrNull(0)) {
return NullDatum.get();
}
- return DatumFactory.createFloat8(Math.sin(valueDatum.asFloat8()));
+ return DatumFactory.createFloat8(Math.sin(params.getFloat8(0)));
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Sqrt.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Sqrt.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Sqrt.java
index 4e11908..357d864 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Sqrt.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Sqrt.java
@@ -52,11 +52,10 @@ public class Sqrt extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum valueDatum = params.get(0);
- if(valueDatum instanceof NullDatum) {
+ if (params.isBlankOrNull(0)) {
return NullDatum.get();
}
- return DatumFactory.createFloat8(Math.sqrt(valueDatum.asFloat8()));
+ return DatumFactory.createFloat8(Math.sqrt(params.getFloat8(0)));
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Tan.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Tan.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Tan.java
index ff30990..1b90ede 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Tan.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/math/Tan.java
@@ -50,11 +50,10 @@ public class Tan extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum valueDatum = params.get(0);
- if(valueDatum instanceof NullDatum) {
+ if (params.isBlankOrNull(0)) {
return NullDatum.get();
}
- return DatumFactory.createFloat8(Math.tan(valueDatum.asFloat8()));
+ return DatumFactory.createFloat8(Math.tan(params.getFloat8(0)));
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Ascii.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Ascii.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Ascii.java
index 0a43947..86ea283 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Ascii.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Ascii.java
@@ -54,10 +54,11 @@ public class Ascii extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum datum = params.get(0);
- if (datum instanceof NullDatum) return NullDatum.get();
+ if (params.isBlankOrNull(0)) {
+ return NullDatum.get();
+ }
- byte[] bytes = datum.asByteArray();
+ byte[] bytes = params.getBytes(0);
if (bytes.length > 0) {
return DatumFactory.createInt4(bytes[0]);
} else {
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/string/BTrim.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/BTrim.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/BTrim.java
index 9864b0d..99767ad 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/BTrim.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/BTrim.java
@@ -67,13 +67,15 @@ public class BTrim extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum datum = params.get(0);
- if(datum instanceof NullDatum) return NullDatum.get();
+ if (params.isBlankOrNull(0)) {
+ return NullDatum.get();
+ }
+ String input = params.getText(0);
if (!hasTrimCharacters) {
- return DatumFactory.createText(StringUtils.strip(datum.asChars(), null));
+ return DatumFactory.createText(StringUtils.strip(input, null));
} else {
- return DatumFactory.createText(StringUtils.strip(datum.asChars(), params.get(1).asChars()));
+ return DatumFactory.createText(StringUtils.strip(input, params.getText(1)));
}
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/string/BitLength.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/BitLength.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/BitLength.java
index c099c77..08bd907 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/BitLength.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/BitLength.java
@@ -50,9 +50,9 @@ public class BitLength extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum datum = params.get(0);
- if(datum instanceof NullDatum) return NullDatum.get();
-
- return DatumFactory.createInt4(datum.asByteArray().length*8);
+ if (params.isBlankOrNull(0)) {
+ return NullDatum.get();
+ }
+ return DatumFactory.createInt4(params.getBytes(0).length * 8);
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/string/CharLength.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/CharLength.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/CharLength.java
index b287c93..e9cade3 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/CharLength.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/CharLength.java
@@ -51,9 +51,10 @@ public class CharLength extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum datum = params.get(0);
- if(datum instanceof NullDatum) return NullDatum.get();
+ if (params.isBlankOrNull(0)) {
+ return NullDatum.get();
+ }
- return DatumFactory.createInt4(datum.asChars().length());
+ return DatumFactory.createInt4(params.getText(0).length());
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Chr.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Chr.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Chr.java
index 4d0a4a9..7644eef 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Chr.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Chr.java
@@ -52,10 +52,11 @@ public class Chr extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum datum = params.get(0);
- if (datum instanceof NullDatum) return NullDatum.get();
+ if (params.isBlankOrNull(0)) {
+ return NullDatum.get();
+ }
- int value = datum.asInt4();
+ int value = params.getInt4(0);
if (value <= 0 || value > 65525) {
return NullDatum.get();
} else {
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Concat.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Concat.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Concat.java
index 3268817..32e5c17 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Concat.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Concat.java
@@ -22,7 +22,6 @@ import org.apache.tajo.catalog.Column;
import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
-import org.apache.tajo.datum.NullDatum;
import org.apache.tajo.plan.function.GeneralFunction;
import org.apache.tajo.engine.function.annotation.Description;
import org.apache.tajo.engine.function.annotation.ParamTypes;
@@ -56,11 +55,11 @@ public class Concat extends GeneralFunction {
StringBuilder result = new StringBuilder();
int paramSize = params.size();
- for(int i = 0 ; i < paramSize; i++) {
- Datum tmpDatum = params.get(i);
- if(tmpDatum instanceof NullDatum)
+ for (int i = 0; i < paramSize; i++) {
+ if (params.isBlankOrNull(i)) {
continue;
- result.append(tmpDatum.asChars());
+ }
+ result.append(params.getText(i));
}
return DatumFactory.createText(result.toString());
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Concat_ws.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Concat_ws.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Concat_ws.java
index 4a723cb..bbddeb1 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Concat_ws.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Concat_ws.java
@@ -24,7 +24,6 @@ import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
import org.apache.tajo.datum.NullDatum;
-import org.apache.tajo.datum.TextDatum;
import org.apache.tajo.plan.function.GeneralFunction;
import org.apache.tajo.engine.function.annotation.Description;
import org.apache.tajo.engine.function.annotation.ParamTypes;
@@ -57,24 +56,23 @@ public class Concat_ws extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum sepDatum = params.get(0);
-
- if(sepDatum instanceof NullDatum) return NullDatum.get();
+ if (params.isBlankOrNull(0)) {
+ return NullDatum.get();
+ }
- String seperator = ((TextDatum)sepDatum).asChars();
+ String separator = params.getText(0);
- String opSperator = "";
StringBuilder result = new StringBuilder();
int paramSize = params.size();
for(int i = 1; i < paramSize; i++) {
- Datum datum = params.get(i);
- if(datum instanceof NullDatum) {
+ if (params.isBlankOrNull(i)) {
continue;
- } else {
- result.append(opSperator).append(datum.asChars());
}
- opSperator = seperator;
+ if (result.length() > 0) {
+ result.append(separator);
+ }
+ result.append(params.getText(i));
}
return DatumFactory.createText(result.toString());
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Decode.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Decode.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Decode.java
index 72d3501..11ec242 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Decode.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Decode.java
@@ -56,18 +56,17 @@ public class Decode extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum datum = params.get(0);
- Datum formatType = params.get(1);
+ if (params.isBlankOrNull(0) || params.isBlankOrNull(1)) {
+ return NullDatum.get();
+ }
+ String formatType = params.getText(1).toLowerCase();
String decodedBase64Text="";
String decodedHexString="";
- if(datum instanceof NullDatum) return NullDatum.get();
- if(formatType instanceof NullDatum) return NullDatum.get();
-
- if(formatType.asChars().toLowerCase().equals("base64")) {
+ if (formatType.equals("base64")) {
try {
// Base64
- decodedBase64Text = new String(Base64.decodeBase64(datum.asChars().getBytes()));
+ decodedBase64Text = new String(Base64.decodeBase64(params.getTextBytes(0)));
}
catch (Exception e) {
return NullDatum.get();
@@ -75,10 +74,10 @@ public class Decode extends GeneralFunction {
return DatumFactory.createText(StringEscapeUtils.escapeJava(decodedBase64Text));
}
- else if(formatType.asChars().toLowerCase().equals("hex")) {
+ else if (formatType.equals("hex")) {
try {
// Hex
- decodedHexString = HexStringConverter.getInstance().decodeHex(datum.asChars());
+ decodedHexString = HexStringConverter.getInstance().decodeHex(params.getText(0));
}
catch (Exception e) {
return NullDatum.get();
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Digest.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Digest.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Digest.java
index 3de914a..0d275b2 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Digest.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Digest.java
@@ -74,12 +74,12 @@ public class Digest extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum datum = params.get(0);
- Datum typeDatum = params.get(1);
- if(datum instanceof NullDatum || typeDatum instanceof NullDatum) return NullDatum.get();
+ if (params.isBlankOrNull(0) || params.isBlankOrNull(1)) {
+ return NullDatum.get();
+ }
try {
- return DatumFactory.createText(digest(datum.asByteArray(), typeDatum.asChars()));
+ return DatumFactory.createText(digest(params.getBytes(0), params.getText(1)));
} catch (NoSuchAlgorithmException e){
return NullDatum.get();
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Encode.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Encode.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Encode.java
index 4cdbc24..a8b6714 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Encode.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Encode.java
@@ -56,19 +56,19 @@ public class Encode extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum datum = params.get(0);
- Datum formatType = params.get(1);
String encodedBase64Text="";
String encodedHexString="";
- if(datum instanceof NullDatum) return NullDatum.get();
- if(formatType instanceof NullDatum) return NullDatum.get();
-
+ if (params.isBlankOrNull(0) || params.isBlankOrNull(1)) {
+ return NullDatum.get();
+ }
- if(formatType.asChars().toLowerCase().equals("base64")) {
+ String input = params.getText(0);
+ String formatType = params.getText(1).toLowerCase();
+ if(formatType.equals("base64")) {
try {
// Base64
- encodedBase64Text = new String(Base64.encodeBase64(StringEscapeUtils.unescapeJava(datum.asChars()).getBytes()));
+ encodedBase64Text = new String(Base64.encodeBase64(StringEscapeUtils.unescapeJava(input).getBytes()));
}
catch (Exception e) {
return NullDatum.get();
@@ -76,10 +76,10 @@ public class Encode extends GeneralFunction {
return DatumFactory.createText(encodedBase64Text);
}
- else if(formatType.asChars().toLowerCase().equals("hex")) {
+ else if(formatType.equals("hex")) {
try {
// Hex
- encodedHexString = HexStringConverter.getInstance().encodeHex(StringEscapeUtils.unescapeJava(datum.asChars()));
+ encodedHexString = HexStringConverter.getInstance().encodeHex(StringEscapeUtils.unescapeJava(input));
}
catch (Exception e) {
return NullDatum.get();
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/string/FindInSet.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/FindInSet.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/FindInSet.java
index ced7d4e..7cf20cb 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/FindInSet.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/FindInSet.java
@@ -59,32 +59,29 @@ public class FindInSet extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum finding = params.get(0);
- Datum textArray = params.get(1);
-
- if (finding instanceof NullDatum || textArray instanceof NullDatum) {
+ if (params.isBlankOrNull(0) || params.isBlankOrNull(1)) {
return NullDatum.get();
}
- byte[] searchBytes = finding.asByteArray();
+ byte[] searchBytes = params.getBytes(0);
// Returns 0 if the first argument has any commas.
- for (int i = 0; i < finding.size(); i++) {
- if (searchBytes[i] == ',') {
+ for (byte searchByte : searchBytes) {
+ if (searchByte == ',') {
return DatumFactory.createInt4(0);
}
}
- byte[] arrayData = textArray.asByteArray();
- int findingLength = finding.size();
+ byte[] arrayData = params.getBytes(1);
+ int findingLength = searchBytes.length;
int posInTextArray = 0;
int curLengthOfCandidate = 0;
boolean matching = true;
- for (int i = 0; i < textArray.size(); i++) {
+ for (byte abyte : arrayData) {
- if (arrayData[i] == ',') {
+ if (abyte == ',') {
posInTextArray++;
if (matching && curLengthOfCandidate == findingLength) {
return DatumFactory.createInt4(posInTextArray);
@@ -94,7 +91,7 @@ public class FindInSet extends GeneralFunction {
}
} else {
if (curLengthOfCandidate + 1 <= findingLength) {
- if (!matching || searchBytes[curLengthOfCandidate] != arrayData[i]) {
+ if (!matching || searchBytes[curLengthOfCandidate] != abyte) {
matching = false;
}
} else {
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/string/InitCap.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/InitCap.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/InitCap.java
index 35bb164..5405792 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/InitCap.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/InitCap.java
@@ -52,9 +52,10 @@ public class InitCap extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum datum = params.get(0);
- if(datum instanceof NullDatum) return NullDatum.get();
+ if (params.isBlankOrNull(0)) {
+ return NullDatum.get();
+ }
- return DatumFactory.createText(WordUtils.capitalizeFully(datum.asChars()));
+ return DatumFactory.createText(WordUtils.capitalizeFully(params.getText(0)));
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/string/LTrim.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/LTrim.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/LTrim.java
index 5d95c38..40477ba 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/LTrim.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/LTrim.java
@@ -67,13 +67,15 @@ public class LTrim extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum datum = params.get(0);
- if(datum instanceof NullDatum) return NullDatum.get();
+ if (params.isBlankOrNull(0)) {
+ return NullDatum.get();
+ }
+ String input = params.getText(0);
if (!hasTrimCharacters) {
- return DatumFactory.createText(StringUtils.stripStart(datum.asChars(), null));
+ return DatumFactory.createText(StringUtils.stripStart(input, null));
} else {
- return DatumFactory.createText(StringUtils.stripStart(datum.asChars(), params.get(1).asChars()));
+ return DatumFactory.createText(StringUtils.stripStart(input, params.getText(1)));
}
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Left.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Left.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Left.java
index bf3fbfb..958486e 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Left.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Left.java
@@ -64,19 +64,17 @@ public class Left extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum datum = params.get(0);
- if(datum instanceof NullDatum) return NullDatum.get();
-
- Datum sizeDatum = params.get(1);
- if(sizeDatum instanceof NullDatum) return NullDatum.get();
+ if (params.isBlankOrNull(0) || params.isBlankOrNull(1)) {
+ return NullDatum.get();
+ }
- String data = datum.asChars();
+ String data = params.getText(0);
int length = data.length();
- int size = sizeDatum.asInt4();
+ int size = params.getInt4(1);
size = getSize(length, size);
if (size == 0) {
- return TextDatum.EMPTY_TEXT;
+ return TextDatum.EMPTY_TEXT;
}
return DatumFactory.createText(data.substring(0, size));
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Length.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Length.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Length.java
index 39bdd2f..08dc0cd 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Length.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Length.java
@@ -51,11 +51,10 @@ public class Length extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum datum = params.get(0);
- if(datum instanceof NullDatum) {
+ if (params.isBlankOrNull(0)) {
return NullDatum.get();
}
- return DatumFactory.createInt4(datum.asChars().length());
+ return DatumFactory.createInt4(params.getText(0).length());
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Locate.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Locate.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Locate.java
index 7b70399..c50bdcb 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Locate.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Locate.java
@@ -78,18 +78,13 @@ public class Locate extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum strDatum = params.get(0);
- if(strDatum instanceof NullDatum) {
+ if (params.isBlankOrNull(0) || params.isBlankOrNull(1)) {
return NullDatum.get();
}
- Datum substrDatum = params.get(1);
- if (substrDatum instanceof NullDatum) {
- return NullDatum.get();
- }
-
+
int pos = 1; // one-based index
if (params.size() > 2) {
- pos = params.get(2).asInt4();
+ pos = params.getInt4(2);
if (pos < 0) {
return DatumFactory.createInt4(0); // negative value is not acceptable.
}
@@ -98,8 +93,8 @@ public class Locate extends GeneralFunction {
}
}
- String str = strDatum.asChars();
- String substr = substrDatum.asChars();
+ String str = params.getText(0);
+ String substr = params.getText(1);
return DatumFactory.createInt4(locate(str, substr, pos));
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Lower.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Lower.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Lower.java
index 7c1e33e..b47690f 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Lower.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Lower.java
@@ -50,9 +50,10 @@ public class Lower extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum datum = params.get(0);
- if(datum instanceof NullDatum) return NullDatum.get();
+ if (params.isBlankOrNull(0)) {
+ return NullDatum.get();
+ }
- return DatumFactory.createText(datum.asChars().toLowerCase());
+ return DatumFactory.createText(params.getText(0).toLowerCase());
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/5c2aee23/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Lpad.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Lpad.java b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Lpad.java
index da11f19..b31ca5f 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Lpad.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/function/string/Lpad.java
@@ -67,26 +67,27 @@ public class Lpad extends GeneralFunction {
@Override
public Datum eval(Tuple params) {
- Datum datum = params.get(0);
- Datum lengthDatum = params.get(1);
- if (datum instanceof NullDatum) return NullDatum.get();
- if (lengthDatum instanceof NullDatum) return NullDatum.get();
-
- Datum fillText = NullDatum.get();
+ if (params.isBlankOrNull(0) || params.isBlankOrNull(1)) {
+ return NullDatum.get();
+ }
+ String fillText;
if (hasFillCharacters) {
- fillText = params.get(2);
+ fillText = params.getText(2);
} else {
- fillText = DatumFactory.createText(" ");
+ fillText = " ";
}
- int templen = lengthDatum.asInt4() - datum.asChars().length();
+ String input = params.getText(0);
+ int expected = params.getInt4(1);
+
+ int templen = expected - params.size(0);
if (templen <= 0) {
- return DatumFactory.createText(datum.asChars().substring(0,lengthDatum.asInt4()));
+ return DatumFactory.createText(input.substring(0, expected));
} else {
- return DatumFactory.createText(StringUtils.leftPad(datum.asChars(), lengthDatum.asInt4(), fillText.asChars()));
+ return DatumFactory.createText(StringUtils.leftPad(input, expected, fillText));
}
}
}