You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tajo.apache.org by hy...@apache.org on 2014/01/20 05:30:21 UTC
[3/3] git commit: TAJO-409: Add explored and explained annotations to
Tajo function system. (SeongHwa Ahn via hyunsik)
TAJO-409: Add explored and explained annotations to Tajo function system. (SeongHwa Ahn via hyunsik)
Project: http://git-wip-us.apache.org/repos/asf/incubator-tajo/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tajo/commit/d04f9a56
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tajo/tree/d04f9a56
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tajo/diff/d04f9a56
Branch: refs/heads/master
Commit: d04f9a567f3eac01fb796487e6dcb0af68f1d34b
Parents: c670c8a
Author: Hyunsik Choi <hy...@apache.org>
Authored: Mon Jan 20 13:29:56 2014 +0900
Committer: Hyunsik Choi <hy...@apache.org>
Committed: Mon Jan 20 13:29:57 2014 +0900
----------------------------------------------------------------------
CHANGES.txt | 5 +-
.../tajo/catalog/AbstractCatalogClient.java | 8 +-
.../org/apache/tajo/catalog/FunctionDesc.java | 66 +-
.../apache/tajo/catalog/function/Function.java | 3 +
.../src/main/proto/CatalogProtos.proto | 3 +
.../apache/tajo/catalog/TestFunctionDesc.java | 13 +
.../org/apache/tajo/catalog/TestCatalog.java | 7 +
.../tajo/engine/function/AggFunction.java | 6 +
.../apache/tajo/engine/function/Country.java | 12 +-
.../tajo/engine/function/GeneralFunction.java | 6 +
.../apache/tajo/engine/function/InCountry.java | 11 +-
.../engine/function/annotation/Description.java | 50 ++
.../function/annotation/ParamOptionTypes.java | 29 +
.../engine/function/annotation/ParamTypes.java | 30 +
.../tajo/engine/function/builtin/AvgDouble.java | 11 +-
.../tajo/engine/function/builtin/AvgFloat.java | 11 +
.../tajo/engine/function/builtin/AvgInt.java | 11 +
.../tajo/engine/function/builtin/AvgLong.java | 11 +-
.../tajo/engine/function/builtin/CountRows.java | 13 +-
.../engine/function/builtin/CountValue.java | 15 +-
.../function/builtin/CountValueDistinct.java | 20 +-
.../tajo/engine/function/builtin/Date.java | 14 +-
.../tajo/engine/function/builtin/MaxDouble.java | 15 +-
.../tajo/engine/function/builtin/MaxFloat.java | 15 +-
.../tajo/engine/function/builtin/MaxInt.java | 15 +-
.../tajo/engine/function/builtin/MaxLong.java | 15 +-
.../tajo/engine/function/builtin/MinDouble.java | 15 +-
.../tajo/engine/function/builtin/MinFloat.java | 15 +-
.../tajo/engine/function/builtin/MinInt.java | 15 +-
.../tajo/engine/function/builtin/MinLong.java | 15 +-
.../tajo/engine/function/builtin/MinString.java | 15 +-
.../tajo/engine/function/builtin/RandomInt.java | 16 +-
.../tajo/engine/function/builtin/SumDouble.java | 20 +-
.../tajo/engine/function/builtin/SumFloat.java | 20 +-
.../tajo/engine/function/builtin/SumInt.java | 20 +-
.../tajo/engine/function/builtin/SumLong.java | 20 +-
.../tajo/engine/function/builtin/Today.java | 13 +-
.../function/datetime/ToCharTimestamp.java | 11 +
.../engine/function/datetime/ToTimestamp.java | 13 +-
.../tajo/engine/function/math/AbsDouble.java | 13 +-
.../tajo/engine/function/math/AbsFloat.java | 13 +-
.../tajo/engine/function/math/AbsInt.java | 13 +-
.../tajo/engine/function/math/AbsLong.java | 12 +-
.../apache/tajo/engine/function/math/Acos.java | 13 +-
.../apache/tajo/engine/function/math/Asin.java | 12 +-
.../apache/tajo/engine/function/math/Atan.java | 12 +-
.../apache/tajo/engine/function/math/Atan2.java | 13 +-
.../apache/tajo/engine/function/math/Cbrt.java | 13 +-
.../apache/tajo/engine/function/math/Ceil.java | 17 +-
.../apache/tajo/engine/function/math/Cos.java | 12 +-
.../tajo/engine/function/math/Degrees.java | 13 +-
.../apache/tajo/engine/function/math/Div.java | 18 +-
.../apache/tajo/engine/function/math/Exp.java | 13 +-
.../apache/tajo/engine/function/math/Floor.java | 13 +-
.../apache/tajo/engine/function/math/Mod.java | 18 +-
.../apache/tajo/engine/function/math/Pi.java | 16 +-
.../apache/tajo/engine/function/math/Pow.java | 30 +-
.../tajo/engine/function/math/Radians.java | 14 +-
.../apache/tajo/engine/function/math/Round.java | 13 +-
.../apache/tajo/engine/function/math/Sign.java | 16 +-
.../apache/tajo/engine/function/math/Sin.java | 12 +-
.../apache/tajo/engine/function/math/Sqrt.java | 14 +-
.../apache/tajo/engine/function/math/Tan.java | 13 +-
.../tajo/engine/function/string/Ascii.java | 16 +-
.../tajo/engine/function/string/BTrim.java | 16 +-
.../tajo/engine/function/string/BitLength.java | 12 +-
.../tajo/engine/function/string/CharLength.java | 13 +-
.../apache/tajo/engine/function/string/Chr.java | 15 +-
.../tajo/engine/function/string/Decode.java | 14 +-
.../tajo/engine/function/string/Encode.java | 14 +-
.../tajo/engine/function/string/FindInSet.java | 14 +-
.../tajo/engine/function/string/InitCap.java | 13 +-
.../tajo/engine/function/string/LTrim.java | 13 +
.../tajo/engine/function/string/Left.java | 13 +-
.../tajo/engine/function/string/Length.java | 12 +-
.../tajo/engine/function/string/Locate.java | 12 +
.../tajo/engine/function/string/Lower.java | 10 +
.../tajo/engine/function/string/Lpad.java | 39 +-
.../apache/tajo/engine/function/string/Md5.java | 12 +-
.../engine/function/string/OctetLength.java | 12 +-
.../tajo/engine/function/string/QuoteIdent.java | 15 +-
.../tajo/engine/function/string/RTrim.java | 13 +
.../engine/function/string/RegexpReplace.java | 13 +-
.../tajo/engine/function/string/Repeat.java | 13 +-
.../tajo/engine/function/string/Reverse.java | 12 +-
.../tajo/engine/function/string/Right.java | 13 +-
.../tajo/engine/function/string/Rpad.java | 16 +-
.../tajo/engine/function/string/SplitPart.java | 17 +-
.../tajo/engine/function/string/StrPos.java | 13 +-
.../tajo/engine/function/string/StrPosb.java | 11 +
.../tajo/engine/function/string/Substr.java | 13 +-
.../tajo/engine/function/string/ToBin.java | 13 +-
.../tajo/engine/function/string/ToHex.java | 18 +-
.../tajo/engine/function/string/Upper.java | 12 +-
.../tajo/engine/planner/ExprAnnotator.java | 11 +-
.../java/org/apache/tajo/master/TajoMaster.java | 662 +++----------------
.../java/org/apache/tajo/util/ClassUtil.java | 155 +++++
.../main/java/org/apache/tajo/util/JSPUtil.java | 15 +
.../resources/webapps/admin/catalogview.jsp | 14 +
.../main/resources/webapps/admin/functions.jsp | 77 +++
100 files changed, 1607 insertions(+), 738 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index e75c1e8..19a445a 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -117,7 +117,10 @@ Release 0.8.0 - unreleased
IMPROVEMENTS
- TAJO-499: Shorten the length of classpath in shell command.
+ TAJO-409: Add explored and explained annotations to Tajo function system.
+ (SeongHwa Ahn via hyunsik)
+
+ TAJO-499: Shorten the length of classpath in shell command.
(hyoungjunkim via hyunsik)
TAJO-483: Add getParentCount(), getParents(), getParent() functions to DirectedGraph.
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-catalog/tajo-catalog-client/src/main/java/org/apache/tajo/catalog/AbstractCatalogClient.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-client/src/main/java/org/apache/tajo/catalog/AbstractCatalogClient.java b/tajo-catalog/tajo-catalog-client/src/main/java/org/apache/tajo/catalog/AbstractCatalogClient.java
index 44ac8f4..9241806 100644
--- a/tajo-catalog/tajo-catalog-client/src/main/java/org/apache/tajo/catalog/AbstractCatalogClient.java
+++ b/tajo-catalog/tajo-catalog-client/src/main/java/org/apache/tajo/catalog/AbstractCatalogClient.java
@@ -25,7 +25,9 @@ import org.apache.tajo.catalog.CatalogProtocol.CatalogProtocolService;
import org.apache.tajo.catalog.proto.CatalogProtos.*;
import org.apache.tajo.common.TajoDataTypes.DataType;
import org.apache.tajo.conf.TajoConf;
-import org.apache.tajo.rpc.*;
+import org.apache.tajo.rpc.NettyClientBase;
+import org.apache.tajo.rpc.RpcConnectionPool;
+import org.apache.tajo.rpc.ServerCallable;
import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos.NullProto;
import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos.StringProto;
@@ -326,6 +328,10 @@ public abstract class AbstractCatalogClient implements CatalogService {
LOG.error(e.getMessage(), e);
return null;
}
+ if(descProto == null) {
+ LOG.error("No matched function:" + signature + "," + funcType + "," + paramTypes);
+ return null;
+ }
try {
return new FunctionDesc(descProto);
} catch (ClassNotFoundException e) {
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/FunctionDesc.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/FunctionDesc.java b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/FunctionDesc.java
index c64ac45..b0bc68d 100644
--- a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/FunctionDesc.java
+++ b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/FunctionDesc.java
@@ -40,34 +40,47 @@ public class FunctionDesc implements ProtoObject<FunctionDescProto>, Cloneable,
@Expose private FunctionType funcType;
@Expose private DataType returnType;
@Expose private DataType [] params;
+ @Expose private String description;
+ @Expose private String detail;
+ @Expose private String example;
public FunctionDesc() {
}
public FunctionDesc(String signature, Class<? extends Function> clazz,
- FunctionType funcType, DataType retType, DataType [] params) {
+ FunctionType funcType, DataType retType,
+ DataType [] params) {
this.signature = signature.toLowerCase();
this.funcClass = clazz;
this.funcType = funcType;
this.returnType = retType;
this.params = params;
}
-
+
public FunctionDesc(FunctionDescProto proto) throws ClassNotFoundException {
this(proto.getSignature(), proto.getClassName(), proto.getType(),
proto.getReturnType(),
proto.getParameterTypesList().toArray(new DataType[proto.getParameterTypesCount()]));
+ if (proto.hasDescription()) {
+ this.description = proto.getDescription();
+ }
+ if (proto.hasDetail()) {
+ this.detail = proto.getDetail();
+ }
+ if (proto.hasExample()) {
+ this.example = proto.getExample();
+ }
}
public FunctionDesc(String signature, String className, FunctionType type,
- DataType retType, DataType... argTypes) throws ClassNotFoundException {
- this(signature, (Class<? extends Function>) Class.forName(className), type,
- retType, argTypes);
+ DataType retType,
+ DataType... argTypes) throws ClassNotFoundException {
+ this(signature, (Class<? extends Function>) Class.forName(className), type, retType, argTypes);
}
/**
*
- * @return 함수 인스턴스
+ * @return Function Instance
* @throws org.apache.tajo.exception.InternalException
*/
public Function newInstance() throws InternalException {
@@ -100,6 +113,30 @@ public class FunctionDesc implements ProtoObject<FunctionDescProto>, Cloneable,
return this.returnType;
}
+ public String getDescription() {
+ return description;
+ }
+
+ public String getDetail() {
+ return detail;
+ }
+
+ public String getExample() {
+ return example;
+ }
+
+ public void setDescription(String description) {
+ this.description = description;
+ }
+
+ public void setDetail(String detail) {
+ this.detail = detail;
+ }
+
+ public void setExample(String example) {
+ this.example = example;
+ }
+
@Override
public int hashCode() {
return Objects.hashCode(signature, params);
@@ -121,6 +158,9 @@ public class FunctionDesc implements ProtoObject<FunctionDescProto>, Cloneable,
desc.signature = this.signature;
desc.params = params.clone();
+ desc.description = this.description;
+ desc.example = this.example;
+ desc.detail = this.detail;
desc.returnType = this.returnType;
desc.funcClass = this.funcClass;
@@ -138,7 +178,15 @@ public class FunctionDesc implements ProtoObject<FunctionDescProto>, Cloneable,
builder.setClassName(this.funcClass.getName());
builder.setType(this.funcType);
builder.setReturnType(this.returnType);
-
+ if(this.description != null) {
+ builder.setDescription(this.description);
+ }
+ if (this.detail != null) {
+ builder.setDetail(this.detail);
+ }
+ if (this.example != null) {
+ builder.setExample(this.example);
+ }
if (this.params != null) { // repeated field
builder.addAllParameterTypes(Arrays.asList(params));
}
@@ -153,4 +201,8 @@ public class FunctionDesc implements ProtoObject<FunctionDescProto>, Cloneable,
public String toJson() {
return CatalogGsonHelper.toJson(this, FunctionDesc.class);
}
+
+ public String getHelpSignature() {
+ return returnType.getType() + " " + CatalogUtil.getCanonicalName(signature, getParamTypes());
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/function/Function.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/function/Function.java b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/function/Function.java
index 6d3feff..562f064 100644
--- a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/function/Function.java
+++ b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/function/Function.java
@@ -20,6 +20,7 @@ package org.apache.tajo.catalog.function;
import com.google.common.base.Objects;
import com.google.gson.annotations.Expose;
+import org.apache.tajo.catalog.proto.CatalogProtos;
import org.apache.tajo.json.GsonObject;
import org.apache.tajo.catalog.Column;
import org.apache.tajo.catalog.json.CatalogGsonHelper;
@@ -59,4 +60,6 @@ public abstract class Function<T extends Datum> implements Cloneable, GsonObject
public String toJson() {
return CatalogGsonHelper.toJson(this, Function.class);
}
+
+ public abstract CatalogProtos.FunctionType getFunctionType();
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-catalog/tajo-catalog-common/src/main/proto/CatalogProtos.proto
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/main/proto/CatalogProtos.proto b/tajo-catalog/tajo-catalog-common/src/main/proto/CatalogProtos.proto
index 8180812..beff4c7 100644
--- a/tajo-catalog/tajo-catalog-common/src/main/proto/CatalogProtos.proto
+++ b/tajo-catalog/tajo-catalog-common/src/main/proto/CatalogProtos.proto
@@ -131,6 +131,9 @@ message FunctionDescProto {
required FunctionType type = 3;
repeated DataType parameterTypes = 4;
required DataType returnType = 5;
+ optional string description = 6;
+ optional string example = 7;
+ optional string detail = 8;
}
message IndexDescProto {
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-catalog/tajo-catalog-common/src/test/java/org/apache/tajo/catalog/TestFunctionDesc.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/test/java/org/apache/tajo/catalog/TestFunctionDesc.java b/tajo-catalog/tajo-catalog-common/src/test/java/org/apache/tajo/catalog/TestFunctionDesc.java
index b30cbba..53a6796 100644
--- a/tajo-catalog/tajo-catalog-common/src/test/java/org/apache/tajo/catalog/TestFunctionDesc.java
+++ b/tajo-catalog/tajo-catalog-common/src/test/java/org/apache/tajo/catalog/TestFunctionDesc.java
@@ -20,6 +20,7 @@ package org.apache.tajo.catalog;
import org.apache.tajo.catalog.function.Function;
import org.apache.tajo.catalog.json.CatalogGsonHelper;
+import org.apache.tajo.catalog.proto.CatalogProtos;
import org.apache.tajo.catalog.proto.CatalogProtos.FunctionDescProto;
import org.apache.tajo.catalog.proto.CatalogProtos.FunctionType;
import org.apache.tajo.common.TajoDataTypes.Type;
@@ -32,6 +33,7 @@ import java.io.File;
import java.io.IOException;
import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
public class TestFunctionDesc {
private static final String TEST_PATH = "target/test-data/TestFunctionDesc";
@@ -48,6 +50,11 @@ public class TestFunctionDesc {
public String toJSON() {
return CatalogGsonHelper.toJson(this, Function.class);
}
+
+ @Override
+ public CatalogProtos.FunctionType getFunctionType() {
+ return FunctionType.GENERAL;
+ }
}
@@ -56,6 +63,10 @@ public class TestFunctionDesc {
FunctionDesc desc = new FunctionDesc("sum", TestSum.class, FunctionType.GENERAL,
CatalogUtil.newSimpleDataType(Type.INT4),
CatalogUtil.newSimpleDataTypeArray(Type.INT4, Type.INT8));
+ desc.setDescription("desc");
+ desc.setExample("example");
+ desc.setDetail("detail");
+
assertEquals("sum", desc.getSignature());
assertEquals(TestSum.class, desc.getFuncClass());
assertEquals(FunctionType.GENERAL, desc.getFuncType());
@@ -71,10 +82,12 @@ public class TestFunctionDesc {
proto = (FunctionDescProto) FileUtil.loadProto(save, proto);
FunctionDesc newDesc = new FunctionDesc(proto);
+
assertEquals("sum", newDesc.getSignature());
assertEquals(TestSum.class, newDesc.getFuncClass());
assertEquals(FunctionType.GENERAL, newDesc.getFuncType());
assertEquals(Type.INT4, newDesc.getReturnType().getType());
+
assertArrayEquals(CatalogUtil.newSimpleDataTypeArray(Type.INT4, Type.INT8),
newDesc.getParamTypes());
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalog.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalog.java b/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalog.java
index 3abbb81..00417f8 100644
--- a/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalog.java
+++ b/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestCatalog.java
@@ -153,6 +153,10 @@ public class TestCatalog {
}
);
}
+
+ public CatalogProtos.FunctionType getFunctionType() {
+ return FunctionType.GENERAL;
+ }
}
public static class TestFunc2 extends Function {
@@ -164,6 +168,9 @@ public class TestCatalog {
}
);
}
+ public CatalogProtos.FunctionType getFunctionType() {
+ return FunctionType.GENERAL;
+ }
}
@Test
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/AggFunction.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/AggFunction.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/AggFunction.java
index ebbf6e6..a5a2583 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/AggFunction.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/AggFunction.java
@@ -21,6 +21,7 @@ package org.apache.tajo.engine.function;
import org.apache.tajo.catalog.Column;
import org.apache.tajo.catalog.function.Function;
import org.apache.tajo.catalog.json.CatalogGsonHelper;
+import org.apache.tajo.catalog.proto.CatalogProtos;
import org.apache.tajo.common.TajoDataTypes.DataType;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.storage.Tuple;
@@ -49,4 +50,9 @@ public abstract class AggFunction<T extends Datum> extends Function<T> {
public String toJson() {
return CatalogGsonHelper.toJson(this, AggFunction.class);
}
+
+ @Override
+ public CatalogProtos.FunctionType getFunctionType() {
+ return CatalogProtos.FunctionType.AGGREGATION;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/Country.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/Country.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/Country.java
index 672a358..9e28b55 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/Country.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/Country.java
@@ -19,16 +19,26 @@
package org.apache.tajo.engine.function;
import org.apache.tajo.catalog.Column;
+import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.datum.TextDatum;
+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.GeoUtil;
import static org.apache.tajo.common.TajoDataTypes.Type.TEXT;
+@Description(
+ functionName = "country",
+ description = "Returns country code.",
+ example = "",
+ returnType = TajoDataTypes.Type.TEXT,
+ paramTypes = {@ParamTypes(paramTypes = {TajoDataTypes.Type.TEXT})}
+)
public class Country extends GeneralFunction {
public Country() {
- super(new Column[] {new Column("addr", TEXT)});
+ super(new Column[] {new Column("string", TEXT)});
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/GeneralFunction.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/GeneralFunction.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/GeneralFunction.java
index aa43b12..f7c31a1 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/GeneralFunction.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/GeneralFunction.java
@@ -21,6 +21,7 @@ package org.apache.tajo.engine.function;
import org.apache.tajo.catalog.Column;
import org.apache.tajo.catalog.function.Function;
import org.apache.tajo.catalog.json.CatalogGsonHelper;
+import org.apache.tajo.catalog.proto.CatalogProtos;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.engine.eval.FunctionEval;
import org.apache.tajo.json.GsonObject;
@@ -47,4 +48,9 @@ public abstract class GeneralFunction extends Function implements GsonObject {
public String toJson() {
return CatalogGsonHelper.toJson(this, GeneralFunction.class);
}
+
+ @Override
+ public CatalogProtos.FunctionType getFunctionType() {
+ return CatalogProtos.FunctionType.GENERAL;
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/InCountry.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/InCountry.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/InCountry.java
index 3cc9efa..1cac624 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/InCountry.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/InCountry.java
@@ -22,13 +22,22 @@ import org.apache.tajo.catalog.Column;
import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.datum.BooleanDatum;
import org.apache.tajo.datum.DatumFactory;
+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.GeoUtil;
+@Description(
+ functionName = "in_country",
+ description = "",
+ example = "",
+ returnType = TajoDataTypes.Type.BOOLEAN,
+ paramTypes = {@ParamTypes(paramTypes = {TajoDataTypes.Type.TEXT})}
+)
public class InCountry extends GeneralFunction {
public InCountry() {
- super(new Column[] {new Column("addr", TajoDataTypes.Type.TEXT),
+ super(new Column[] {new Column("string", TajoDataTypes.Type.TEXT),
new Column("code", TajoDataTypes.Type.TEXT)});
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/annotation/Description.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/annotation/Description.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/annotation/Description.java
new file mode 100644
index 0000000..bc6c7a2
--- /dev/null
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/annotation/Description.java
@@ -0,0 +1,50 @@
+/**
+ * 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.engine.function.annotation;
+
+import org.apache.tajo.common.TajoDataTypes.Type;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * Description.
+ *
+ */
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.TYPE)
+public @interface Description {
+
+ String description();
+
+ String detail() default "";
+
+ String example();
+
+ String functionName();
+
+ String[] synonyms() default {};
+
+ Type returnType();
+
+ ParamTypes[] paramTypes() default @ParamTypes;
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/annotation/ParamOptionTypes.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/annotation/ParamOptionTypes.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/annotation/ParamOptionTypes.java
new file mode 100644
index 0000000..0ef7f4c
--- /dev/null
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/annotation/ParamOptionTypes.java
@@ -0,0 +1,29 @@
+/**
+ * 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.engine.function.annotation;
+
+import org.apache.tajo.common.TajoDataTypes;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ParamOptionTypes {
+ TajoDataTypes.Type[] paramOptionTypes() default {};
+}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/annotation/ParamTypes.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/annotation/ParamTypes.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/annotation/ParamTypes.java
new file mode 100644
index 0000000..ed2545c
--- /dev/null
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/annotation/ParamTypes.java
@@ -0,0 +1,30 @@
+/**
+ * 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.engine.function.annotation;
+
+import org.apache.tajo.common.TajoDataTypes.Type;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+@Retention(RetentionPolicy.RUNTIME)
+public @interface ParamTypes {
+ Type[] paramTypes() default { Type.NULL_TYPE };
+ ParamOptionTypes[] paramOptionTypes() default {};
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/AvgDouble.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/AvgDouble.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/AvgDouble.java
index 5bae257..df5cc80 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/AvgDouble.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/AvgDouble.java
@@ -27,14 +27,23 @@ import org.apache.tajo.datum.DatumFactory;
import org.apache.tajo.datum.ProtobufDatum;
import org.apache.tajo.engine.function.AggFunction;
import org.apache.tajo.engine.function.FunctionContext;
+import org.apache.tajo.engine.function.annotation.Description;
+import org.apache.tajo.engine.function.annotation.ParamTypes;
import org.apache.tajo.storage.Tuple;
import static org.apache.tajo.InternalTypes.AvgDoubleProto;
+@Description(
+ functionName = "avg",
+ description = "The mean of a set of numbers.",
+ example = "> SELECT avg(expr);",
+ returnType = Type.FLOAT8,
+ paramTypes = {@ParamTypes(paramTypes = {Type.FLOAT8})}
+)
public class AvgDouble extends AggFunction {
public AvgDouble() {
super(new Column[] {
- new Column("val", Type.FLOAT8)
+ new Column("expr", Type.FLOAT8)
});
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/AvgFloat.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/AvgFloat.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/AvgFloat.java
index 9fc5ed9..4a30036 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/AvgFloat.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/AvgFloat.java
@@ -18,9 +18,19 @@
package org.apache.tajo.engine.function.builtin;
+import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.engine.function.FunctionContext;
+import org.apache.tajo.engine.function.annotation.Description;
+import org.apache.tajo.engine.function.annotation.ParamTypes;
import org.apache.tajo.storage.Tuple;
+@Description(
+ functionName = "avg",
+ description = "The mean of a set of numbers.",
+ example = "> SELECT avg(expr);",
+ returnType = TajoDataTypes.Type.FLOAT8,
+ paramTypes = {@ParamTypes(paramTypes = {TajoDataTypes.Type.FLOAT4})}
+)
public class AvgFloat extends AvgDouble {
public AvgFloat() {
@@ -32,4 +42,5 @@ public class AvgFloat extends AvgDouble {
avgCtx.sum += params.get(0).asFloat4();
avgCtx.count++;
}
+
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/AvgInt.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/AvgInt.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/AvgInt.java
index 338903a..3c59f13 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/AvgInt.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/AvgInt.java
@@ -18,9 +18,19 @@
package org.apache.tajo.engine.function.builtin;
+import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.engine.function.FunctionContext;
+import org.apache.tajo.engine.function.annotation.Description;
+import org.apache.tajo.engine.function.annotation.ParamTypes;
import org.apache.tajo.storage.Tuple;
+@Description(
+ functionName = "avg",
+ description = "the mean of a set of numbers.",
+ example = "> SELECT avg(expr);",
+ returnType = TajoDataTypes.Type.FLOAT8,
+ paramTypes = {@ParamTypes(paramTypes = {TajoDataTypes.Type.INT4})}
+)
public class AvgInt extends AvgLong {
public AvgInt() {
@@ -33,4 +43,5 @@ public class AvgInt extends AvgLong {
avgCtx.sum += params.get(0).asInt4();
avgCtx.count++;
}
+
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/AvgLong.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/AvgLong.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/AvgLong.java
index 86fc709..5bb5ff9 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/AvgLong.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/AvgLong.java
@@ -28,15 +28,24 @@ import org.apache.tajo.datum.Float8Datum;
import org.apache.tajo.datum.ProtobufDatum;
import org.apache.tajo.engine.function.AggFunction;
import org.apache.tajo.engine.function.FunctionContext;
+import org.apache.tajo.engine.function.annotation.Description;
+import org.apache.tajo.engine.function.annotation.ParamTypes;
import org.apache.tajo.storage.Tuple;
import static org.apache.tajo.InternalTypes.AvgLongProto;
+@Description(
+ functionName = "avg",
+ description = "the mean of a set of numbers",
+ example = "> SELECT avg(expr);",
+ returnType = Type.FLOAT8,
+ paramTypes = {@ParamTypes(paramTypes = {Type.INT8})}
+)
public class AvgLong extends AggFunction<Float8Datum> {
public AvgLong() {
super(new Column[] {
- new Column("val", Type.FLOAT8)
+ new Column("expr", Type.FLOAT8)
});
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/CountRows.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/CountRows.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/CountRows.java
index 722d8b7..aa1d941 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/CountRows.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/CountRows.java
@@ -20,15 +20,24 @@ package org.apache.tajo.engine.function.builtin;
import org.apache.tajo.catalog.CatalogUtil;
import org.apache.tajo.catalog.Column;
-import org.apache.tajo.engine.function.AggFunction;
-import org.apache.tajo.engine.function.FunctionContext;
import org.apache.tajo.common.TajoDataTypes.DataType;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
import org.apache.tajo.datum.Int8Datum;
+import org.apache.tajo.engine.function.AggFunction;
+import org.apache.tajo.engine.function.FunctionContext;
+import org.apache.tajo.engine.function.annotation.Description;
+import org.apache.tajo.engine.function.annotation.ParamTypes;
import org.apache.tajo.storage.Tuple;
+@Description(
+ functionName = "count",
+ description = "the total number of retrieved rows",
+ example = "> SELECT count(*);",
+ returnType = Type.INT8,
+ paramTypes = {@ParamTypes(paramTypes = {})}
+)
public class CountRows extends AggFunction<Datum> {
public CountRows() {
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/CountValue.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/CountValue.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/CountValue.java
index 5959197..12d8892 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/CountValue.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/CountValue.java
@@ -19,19 +19,29 @@
package org.apache.tajo.engine.function.builtin;
import org.apache.tajo.catalog.Column;
-import org.apache.tajo.engine.function.FunctionContext;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.datum.NullDatum;
+import org.apache.tajo.engine.function.FunctionContext;
+import org.apache.tajo.engine.function.annotation.Description;
+import org.apache.tajo.engine.function.annotation.ParamTypes;
import org.apache.tajo.storage.Tuple;
/**
* Count(column) function
*/
+@Description(
+ functionName = "count",
+ description = "The number of retrieved rows for "
+ + "which the supplied expressions are non-NULL",
+ example = "> SELECT count(expr);",
+ returnType = Type.INT8,
+ paramTypes = {@ParamTypes(paramTypes = {Type.ANY})}
+)
public final class CountValue extends CountRows {
public CountValue() {
super(new Column[] {
- new Column("col", Type.ANY)
+ new Column("expr", Type.ANY)
});
}
@@ -41,4 +51,5 @@ public final class CountValue extends CountRows {
((CountRowContext) ctx).count++;
}
}
+
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/CountValueDistinct.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/CountValueDistinct.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/CountValueDistinct.java
index 4c4900b..c0f5ec3 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/CountValueDistinct.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/CountValueDistinct.java
@@ -19,22 +19,33 @@
package org.apache.tajo.engine.function.builtin;
import org.apache.tajo.catalog.Column;
-import org.apache.tajo.engine.function.FunctionContext;
+import org.apache.tajo.catalog.proto.CatalogProtos;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
import org.apache.tajo.datum.Int8Datum;
import org.apache.tajo.datum.NullDatum;
+import org.apache.tajo.engine.function.FunctionContext;
+import org.apache.tajo.engine.function.annotation.Description;
+import org.apache.tajo.engine.function.annotation.ParamTypes;
import org.apache.tajo.storage.Tuple;
/**
* Count(distinct column) function
*/
+@Description(
+ functionName = "count",
+ description = " The number of rows for "
+ + "which the supplied expressions are unique and non-NULL.",
+ example = "> SELECT count(expr);",
+ returnType = Type.INT8,
+ paramTypes = {@ParamTypes(paramTypes = {Type.ANY})}
+)
public final class CountValueDistinct extends CountRows {
public CountValueDistinct() {
super(new Column[] {
- new Column("col", Type.ANY)
+ new Column("expr", Type.ANY)
});
}
@@ -71,4 +82,9 @@ public final class CountValueDistinct extends CountRows {
long count = 0;
Datum latest = null;
}
+
+ @Override
+ public CatalogProtos.FunctionType getFunctionType() {
+ return CatalogProtos.FunctionType.DISTINCT_AGGREGATION;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/Date.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/Date.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/Date.java
index cbc789c..7666e89 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/Date.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/Date.java
@@ -21,9 +21,12 @@ package org.apache.tajo.engine.function.builtin;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.tajo.catalog.Column;
-import org.apache.tajo.engine.function.GeneralFunction;
+import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.datum.DatumFactory;
import org.apache.tajo.datum.Int8Datum;
+import org.apache.tajo.engine.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 java.text.ParseException;
@@ -31,12 +34,19 @@ import java.text.SimpleDateFormat;
import static org.apache.tajo.common.TajoDataTypes.Type.TEXT;
+@Description(
+ functionName = "date",
+ description = "Extracts the date part of the date or datetime expression expr.",
+ example = "> SELECT date(expr);",
+ returnType = TajoDataTypes.Type.INT8,
+ paramTypes = {@ParamTypes(paramTypes = {TajoDataTypes.Type.INT4})}
+)
public class Date extends GeneralFunction {
private final Log LOG = LogFactory.getLog(Date.class);
private final static String dateFormat = "dd/MM/yyyy HH:mm:ss";
public Date() {
- super(new Column[] {new Column("val", TEXT)});
+ super(new Column[] {new Column("expr", TEXT)});
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MaxDouble.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MaxDouble.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MaxDouble.java
index 38fb14d..5c9ceb1 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MaxDouble.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MaxDouble.java
@@ -20,20 +20,29 @@ package org.apache.tajo.engine.function.builtin;
import org.apache.tajo.catalog.CatalogUtil;
import org.apache.tajo.catalog.Column;
-import org.apache.tajo.engine.function.AggFunction;
-import org.apache.tajo.engine.function.FunctionContext;
import org.apache.tajo.common.TajoDataTypes.DataType;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
import org.apache.tajo.datum.Float8Datum;
+import org.apache.tajo.engine.function.AggFunction;
+import org.apache.tajo.engine.function.FunctionContext;
+import org.apache.tajo.engine.function.annotation.Description;
+import org.apache.tajo.engine.function.annotation.ParamTypes;
import org.apache.tajo.storage.Tuple;
+@Description(
+ functionName = "max",
+ description = "the maximum value of expr",
+ example = "> SELECT max(expr);",
+ returnType = Type.FLOAT8,
+ paramTypes = {@ParamTypes(paramTypes = {Type.FLOAT8})}
+)
public class MaxDouble extends AggFunction<Float8Datum> {
public MaxDouble() {
super(new Column[] {
- new Column("val", Type.FLOAT8)
+ new Column("expr", Type.FLOAT8)
});
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MaxFloat.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MaxFloat.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MaxFloat.java
index c3c29f7..067026d 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MaxFloat.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MaxFloat.java
@@ -20,18 +20,27 @@ package org.apache.tajo.engine.function.builtin;
import org.apache.tajo.catalog.CatalogUtil;
import org.apache.tajo.catalog.Column;
-import org.apache.tajo.engine.function.AggFunction;
-import org.apache.tajo.engine.function.FunctionContext;
import org.apache.tajo.common.TajoDataTypes.DataType;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
+import org.apache.tajo.engine.function.AggFunction;
+import org.apache.tajo.engine.function.FunctionContext;
+import org.apache.tajo.engine.function.annotation.Description;
+import org.apache.tajo.engine.function.annotation.ParamTypes;
import org.apache.tajo.storage.Tuple;
+@Description(
+ functionName = "max",
+ description = "the maximum value of expr",
+ example = "> SELECT max(expr);",
+ returnType = Type.FLOAT4,
+ paramTypes = {@ParamTypes(paramTypes = {Type.FLOAT4})}
+)
public class MaxFloat extends AggFunction<Datum> {
public MaxFloat() {
super(new Column[] {
- new Column("val", Type.FLOAT8)
+ new Column("expr", Type.FLOAT8)
});
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MaxInt.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MaxInt.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MaxInt.java
index be18858..a329390 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MaxInt.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MaxInt.java
@@ -20,19 +20,28 @@ package org.apache.tajo.engine.function.builtin;
import org.apache.tajo.catalog.CatalogUtil;
import org.apache.tajo.catalog.Column;
-import org.apache.tajo.engine.function.AggFunction;
-import org.apache.tajo.engine.function.FunctionContext;
import org.apache.tajo.common.TajoDataTypes.DataType;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
+import org.apache.tajo.engine.function.AggFunction;
+import org.apache.tajo.engine.function.FunctionContext;
+import org.apache.tajo.engine.function.annotation.Description;
+import org.apache.tajo.engine.function.annotation.ParamTypes;
import org.apache.tajo.storage.Tuple;
+@Description(
+ functionName = "max",
+ description = "the maximum value of expr",
+ example = "> SELECT max(expr);",
+ returnType = Type.INT4,
+ paramTypes = {@ParamTypes(paramTypes = {Type.INT4})}
+)
public class MaxInt extends AggFunction<Datum> {
public MaxInt() {
super(new Column[] {
- new Column("val", Type.INT8)
+ new Column("expr", Type.INT8)
});
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MaxLong.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MaxLong.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MaxLong.java
index 7f82f06..71bab1a 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MaxLong.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MaxLong.java
@@ -20,19 +20,28 @@ package org.apache.tajo.engine.function.builtin;
import org.apache.tajo.catalog.CatalogUtil;
import org.apache.tajo.catalog.Column;
-import org.apache.tajo.engine.function.AggFunction;
-import org.apache.tajo.engine.function.FunctionContext;
import org.apache.tajo.common.TajoDataTypes.DataType;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
import org.apache.tajo.datum.Int8Datum;
+import org.apache.tajo.engine.function.AggFunction;
+import org.apache.tajo.engine.function.FunctionContext;
+import org.apache.tajo.engine.function.annotation.Description;
+import org.apache.tajo.engine.function.annotation.ParamTypes;
import org.apache.tajo.storage.Tuple;
+@Description(
+ functionName = "max",
+ description = "the maximum value of expr",
+ example = "> SELECT max(expr);",
+ returnType = Type.INT8,
+ paramTypes = {@ParamTypes(paramTypes = {Type.INT8})}
+)
public class MaxLong extends AggFunction<Int8Datum> {
public MaxLong() {
super(new Column[] {
- new Column("val", Type.INT8)
+ new Column("expr", Type.INT8)
});
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MinDouble.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MinDouble.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MinDouble.java
index fa54c8b..7b9e0ab 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MinDouble.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MinDouble.java
@@ -20,19 +20,28 @@ package org.apache.tajo.engine.function.builtin;
import org.apache.tajo.catalog.CatalogUtil;
import org.apache.tajo.catalog.Column;
-import org.apache.tajo.engine.function.AggFunction;
-import org.apache.tajo.engine.function.FunctionContext;
import org.apache.tajo.common.TajoDataTypes.DataType;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
+import org.apache.tajo.engine.function.AggFunction;
+import org.apache.tajo.engine.function.FunctionContext;
+import org.apache.tajo.engine.function.annotation.Description;
+import org.apache.tajo.engine.function.annotation.ParamTypes;
import org.apache.tajo.storage.Tuple;
+@Description(
+ functionName = "min",
+ description = "the minimum value of expr",
+ example = "> SELECT min(expr);",
+ returnType = Type.FLOAT8,
+ paramTypes = {@ParamTypes(paramTypes = {Type.FLOAT8})}
+)
public class MinDouble extends AggFunction<Datum> {
public MinDouble() {
super(new Column[] {
- new Column("val", Type.FLOAT8)
+ new Column("expr", Type.FLOAT8)
});
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MinFloat.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MinFloat.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MinFloat.java
index 1e9def1..95a97be 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MinFloat.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MinFloat.java
@@ -20,20 +20,29 @@ package org.apache.tajo.engine.function.builtin;
import org.apache.tajo.catalog.CatalogUtil;
import org.apache.tajo.catalog.Column;
-import org.apache.tajo.engine.function.AggFunction;
-import org.apache.tajo.engine.function.FunctionContext;
import org.apache.tajo.common.TajoDataTypes.DataType;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
import org.apache.tajo.datum.Float4Datum;
+import org.apache.tajo.engine.function.AggFunction;
+import org.apache.tajo.engine.function.FunctionContext;
+import org.apache.tajo.engine.function.annotation.Description;
+import org.apache.tajo.engine.function.annotation.ParamTypes;
import org.apache.tajo.storage.Tuple;
+@Description(
+ functionName = "min",
+ description = "the minimum value of expr",
+ example = "> SELECT min(expr);",
+ returnType = Type.FLOAT4,
+ paramTypes = {@ParamTypes(paramTypes = {Type.FLOAT4})}
+)
public class MinFloat extends AggFunction<Float4Datum> {
public MinFloat() {
super(new Column[] {
- new Column("val", Type.FLOAT4)
+ new Column("expr", Type.FLOAT4)
});
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MinInt.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MinInt.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MinInt.java
index e4184e0..24b379a 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MinInt.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MinInt.java
@@ -20,19 +20,28 @@ package org.apache.tajo.engine.function.builtin;
import org.apache.tajo.catalog.CatalogUtil;
import org.apache.tajo.catalog.Column;
-import org.apache.tajo.engine.function.AggFunction;
-import org.apache.tajo.engine.function.FunctionContext;
import org.apache.tajo.common.TajoDataTypes.DataType;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
+import org.apache.tajo.engine.function.AggFunction;
+import org.apache.tajo.engine.function.FunctionContext;
+import org.apache.tajo.engine.function.annotation.Description;
+import org.apache.tajo.engine.function.annotation.ParamTypes;
import org.apache.tajo.storage.Tuple;
+@Description(
+ functionName = "min",
+ description = "the minimum value of expr",
+ example = "> SELECT min(expr);",
+ returnType = Type.INT4,
+ paramTypes = {@ParamTypes(paramTypes = {Type.INT4})}
+)
public class MinInt extends AggFunction<Datum> {
public MinInt() {
super(new Column[] {
- new Column("val", Type.INT8)
+ new Column("expr", Type.INT8)
});
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MinLong.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MinLong.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MinLong.java
index 6cc854f..ad9ebfa 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MinLong.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MinLong.java
@@ -20,20 +20,29 @@ package org.apache.tajo.engine.function.builtin;
import org.apache.tajo.catalog.CatalogUtil;
import org.apache.tajo.catalog.Column;
-import org.apache.tajo.engine.function.AggFunction;
-import org.apache.tajo.engine.function.FunctionContext;
import org.apache.tajo.common.TajoDataTypes.DataType;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
import org.apache.tajo.datum.Int8Datum;
+import org.apache.tajo.engine.function.AggFunction;
+import org.apache.tajo.engine.function.FunctionContext;
+import org.apache.tajo.engine.function.annotation.Description;
+import org.apache.tajo.engine.function.annotation.ParamTypes;
import org.apache.tajo.storage.Tuple;
+@Description(
+ functionName = "min",
+ description = "the minimum value of expr",
+ example = "> SELECT min(expr);",
+ returnType = Type.INT8,
+ paramTypes = {@ParamTypes(paramTypes = {Type.INT8})}
+)
public class MinLong extends AggFunction<Datum> {
public MinLong() {
super(new Column[] {
- new Column("val", Type.INT8)
+ new Column("expr", Type.INT8)
});
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MinString.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MinString.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MinString.java
index 5364540..cbf214e 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MinString.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/MinString.java
@@ -20,20 +20,29 @@ package org.apache.tajo.engine.function.builtin;
import org.apache.tajo.catalog.CatalogUtil;
import org.apache.tajo.catalog.Column;
-import org.apache.tajo.engine.function.AggFunction;
-import org.apache.tajo.engine.function.FunctionContext;
import org.apache.tajo.common.TajoDataTypes.DataType;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
import org.apache.tajo.datum.TextDatum;
+import org.apache.tajo.engine.function.AggFunction;
+import org.apache.tajo.engine.function.FunctionContext;
+import org.apache.tajo.engine.function.annotation.Description;
+import org.apache.tajo.engine.function.annotation.ParamTypes;
import org.apache.tajo.storage.Tuple;
+@Description(
+ functionName = "min",
+ description = "the minimum value of expr",
+ example = "> SELECT min(expr);",
+ returnType = Type.TEXT,
+ paramTypes = {@ParamTypes(paramTypes = {Type.TEXT})}
+)
public class MinString extends AggFunction<Datum> {
public MinString() {
super(new Column[] {
- new Column("val", Type.TEXT)
+ new Column("expr", Type.TEXT)
});
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/RandomInt.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/RandomInt.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/RandomInt.java
index 304bd44..bdcf485 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/RandomInt.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/RandomInt.java
@@ -19,21 +19,32 @@
package org.apache.tajo.engine.function.builtin;
import org.apache.tajo.catalog.Column;
-import org.apache.tajo.engine.function.GeneralFunction;
+import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
+import org.apache.tajo.engine.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 java.util.Random;
import static org.apache.tajo.common.TajoDataTypes.Type.INT4;
+@Description(
+ functionName = "random",
+ description = "A pseudorandom number",
+ example = "> SELECT random(10);\n"
+ + "4",
+ returnType = TajoDataTypes.Type.INT4,
+ paramTypes = {@ParamTypes(paramTypes = {TajoDataTypes.Type.INT4})}
+)
public class RandomInt extends GeneralFunction {
private Random random;
public RandomInt() {
super(new Column[] {
- new Column("val", INT4)
+ new Column("n", INT4)
});
random = new Random(System.nanoTime());
}
@@ -42,4 +53,5 @@ public class RandomInt extends GeneralFunction {
public Datum eval(Tuple params) {
return DatumFactory.createInt4(random.nextInt(params.get(0).asInt4()));
}
+
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/SumDouble.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/SumDouble.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/SumDouble.java
index 09b1ab2..ece7487 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/SumDouble.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/SumDouble.java
@@ -20,20 +20,34 @@ package org.apache.tajo.engine.function.builtin;
import org.apache.tajo.catalog.CatalogUtil;
import org.apache.tajo.catalog.Column;
-import org.apache.tajo.engine.function.AggFunction;
-import org.apache.tajo.engine.function.FunctionContext;
import org.apache.tajo.common.TajoDataTypes.DataType;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
import org.apache.tajo.datum.Float8Datum;
+import org.apache.tajo.engine.function.AggFunction;
+import org.apache.tajo.engine.function.FunctionContext;
+import org.apache.tajo.engine.function.annotation.Description;
+import org.apache.tajo.engine.function.annotation.ParamTypes;
import org.apache.tajo.storage.Tuple;
+/**
+ * Function definition
+ *
+ * FLOAT8 sum(value FLOAT8)
+ */
+@Description(
+ functionName = "sum",
+ description = "the sum of a set of numbers",
+ example = "> SELECT sum(expr);",
+ returnType = Type.FLOAT8,
+ paramTypes = {@ParamTypes(paramTypes = {Type.FLOAT8})}
+)
public class SumDouble extends AggFunction<Datum> {
public SumDouble() {
super(new Column[] {
- new Column("val", Type.FLOAT8)
+ new Column("expr", Type.FLOAT8)
});
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/SumFloat.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/SumFloat.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/SumFloat.java
index 96b45ba..10fd720 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/SumFloat.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/SumFloat.java
@@ -20,18 +20,32 @@ package org.apache.tajo.engine.function.builtin;
import org.apache.tajo.catalog.CatalogUtil;
import org.apache.tajo.catalog.Column;
-import org.apache.tajo.engine.function.AggFunction;
-import org.apache.tajo.engine.function.FunctionContext;
import org.apache.tajo.common.TajoDataTypes.DataType;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
+import org.apache.tajo.engine.function.AggFunction;
+import org.apache.tajo.engine.function.FunctionContext;
+import org.apache.tajo.engine.function.annotation.Description;
+import org.apache.tajo.engine.function.annotation.ParamTypes;
import org.apache.tajo.storage.Tuple;
+/**
+ * Function definition
+ *
+ * FLOAT4 sum(value FLOAT4)
+ */
+@Description(
+ functionName = "sum",
+ description = "the sum of a set of numbers",
+ example = "> SELECT sum(expr);",
+ returnType = Type.FLOAT4,
+ paramTypes = {@ParamTypes(paramTypes = {Type.FLOAT4})}
+)
public class SumFloat extends AggFunction<Datum> {
public SumFloat() {
super(new Column[] {
- new Column("val", Type.FLOAT4)
+ new Column("expr", Type.FLOAT4)
});
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/SumInt.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/SumInt.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/SumInt.java
index 5797d6d..fff3a23 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/SumInt.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/SumInt.java
@@ -20,19 +20,33 @@ package org.apache.tajo.engine.function.builtin;
import org.apache.tajo.catalog.CatalogUtil;
import org.apache.tajo.catalog.Column;
-import org.apache.tajo.engine.function.AggFunction;
-import org.apache.tajo.engine.function.FunctionContext;
import org.apache.tajo.common.TajoDataTypes.DataType;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
+import org.apache.tajo.engine.function.AggFunction;
+import org.apache.tajo.engine.function.FunctionContext;
+import org.apache.tajo.engine.function.annotation.Description;
+import org.apache.tajo.engine.function.annotation.ParamTypes;
import org.apache.tajo.storage.Tuple;
+/**
+ * Function definition
+ *
+ * INT4 sum(value INT4)
+ */
+@Description(
+ functionName = "sum",
+ description = "the sum of a set of numbers",
+ example = "> SELECT sum(expr);",
+ returnType = Type.INT4,
+ paramTypes = {@ParamTypes(paramTypes = {Type.INT4})}
+)
public class SumInt extends AggFunction<Datum> {
public SumInt() {
super(new Column[] {
- new Column("val", Type.INT4)
+ new Column("expr", Type.INT4)
});
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/SumLong.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/SumLong.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/SumLong.java
index fe33b62..894348d 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/SumLong.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/SumLong.java
@@ -20,20 +20,34 @@ package org.apache.tajo.engine.function.builtin;
import org.apache.tajo.catalog.CatalogUtil;
import org.apache.tajo.catalog.Column;
-import org.apache.tajo.engine.function.AggFunction;
-import org.apache.tajo.engine.function.FunctionContext;
import org.apache.tajo.common.TajoDataTypes.DataType;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
import org.apache.tajo.datum.Int8Datum;
+import org.apache.tajo.engine.function.AggFunction;
+import org.apache.tajo.engine.function.FunctionContext;
+import org.apache.tajo.engine.function.annotation.Description;
+import org.apache.tajo.engine.function.annotation.ParamTypes;
import org.apache.tajo.storage.Tuple;
+/**
+ * Function definition
+ *
+ * INT8 sum(value INT8)
+ */
+@Description(
+ functionName = "sum",
+ description = "the sum of a set of numbers",
+ example = "> SELECT sum(expr);",
+ returnType = Type.INT8,
+ paramTypes = {@ParamTypes(paramTypes = {Type.INT8})}
+)
public class SumLong extends AggFunction<Datum> {
public SumLong() {
super(new Column[] {
- new Column("val", Type.INT8)
+ new Column("expr", Type.INT8)
});
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/Today.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/Today.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/Today.java
index e283c2f..157e545 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/Today.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/builtin/Today.java
@@ -18,16 +18,25 @@
package org.apache.tajo.engine.function.builtin;
-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.engine.function.GeneralFunction;
+import org.apache.tajo.engine.function.annotation.Description;
+import org.apache.tajo.engine.function.annotation.ParamTypes;
import org.apache.tajo.storage.Tuple;
+@Description(
+ functionName = "today",
+ description = "get current time millis",
+ example = "> SELECT today();",
+ returnType = TajoDataTypes.Type.INT8,
+ paramTypes = {@ParamTypes(paramTypes = {})}
+)
public class Today extends GeneralFunction {
public Today() {
- super(new Column[] {});
+ super(NoArgs);
}
@Override
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/datetime/ToCharTimestamp.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/datetime/ToCharTimestamp.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/datetime/ToCharTimestamp.java
index a3fd1f3..2a74ff5 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/datetime/ToCharTimestamp.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/datetime/ToCharTimestamp.java
@@ -19,12 +19,15 @@
package org.apache.tajo.engine.function.datetime;
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.datum.TimestampDatum;
import org.apache.tajo.engine.eval.FunctionEval;
import org.apache.tajo.engine.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.joda.time.format.DateTimeFormat;
import org.joda.time.format.DateTimeFormatter;
@@ -32,6 +35,14 @@ import org.joda.time.format.DateTimeFormatter;
import static org.apache.tajo.common.TajoDataTypes.Type.INT8;
import static org.apache.tajo.common.TajoDataTypes.Type.TEXT;
+@Description(
+ functionName = "to_char",
+ description = "Convert time stamp to string",
+ example = "> SELECT to_char(1389071652, 'yyyy-MM');\n"
+ + "2014-01",
+ returnType = TajoDataTypes.Type.TEXT,
+ paramTypes = {@ParamTypes(paramTypes = {TajoDataTypes.Type.TIMESTAMP, TajoDataTypes.Type.TEXT})}
+)
public class ToCharTimestamp extends GeneralFunction {
private boolean constantFormat;
private DateTimeFormatter formatter;
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestamp.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestamp.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestamp.java
index 6779b85..1cf6870 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestamp.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/datetime/ToTimestamp.java
@@ -19,20 +19,31 @@
package org.apache.tajo.engine.function.datetime;
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.engine.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 static org.apache.tajo.common.TajoDataTypes.Type.INT4;
+@Description(
+ functionName = "to_timestamp",
+ description = "Convert UNIX epoch to time stamp",
+ example = "> SELECT to_timestamp(1389071574);\n"
+ + "2014-01-07 14:12:54",
+ returnType = TajoDataTypes.Type.TIMESTAMP,
+ paramTypes = {@ParamTypes(paramTypes = {TajoDataTypes.Type.INT4}),
+ @ParamTypes(paramTypes = {TajoDataTypes.Type.INT8})}
+)
public class ToTimestamp extends GeneralFunction {
public ToTimestamp() {
super(new Column[] {new Column("timestamp", INT4)});
}
-
@Override
public Datum eval(Tuple params) {
Datum value = params.get(0);
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/AbsDouble.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/AbsDouble.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/AbsDouble.java
index cde4be7..1ff2f29 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/AbsDouble.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/AbsDouble.java
@@ -24,6 +24,8 @@ import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
import org.apache.tajo.datum.NullDatum;
import org.apache.tajo.engine.function.GeneralFunction;
+import org.apache.tajo.engine.function.annotation.Description;
+import org.apache.tajo.engine.function.annotation.ParamTypes;
import org.apache.tajo.storage.Tuple;
/**
@@ -31,10 +33,19 @@ import org.apache.tajo.storage.Tuple;
*
* FLOAT8 abs(value FLOAT8)
*/
+@Description(
+ functionName = "abs",
+ description = "Absolute value",
+ detail = "",
+ example = "> SELECT abs(-10);\n"
+ + "10",
+ returnType = TajoDataTypes.Type.FLOAT8,
+ paramTypes = {@ParamTypes(paramTypes = {TajoDataTypes.Type.FLOAT8})}
+)
public class AbsDouble extends GeneralFunction {
public AbsDouble() {
super(new Column[] {
- new Column("value", TajoDataTypes.Type.FLOAT8)
+ new Column("x", TajoDataTypes.Type.FLOAT8)
});
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/AbsFloat.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/AbsFloat.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/AbsFloat.java
index 08ea90a..4e3f54c 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/AbsFloat.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/AbsFloat.java
@@ -24,6 +24,8 @@ import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
import org.apache.tajo.datum.NullDatum;
import org.apache.tajo.engine.function.GeneralFunction;
+import org.apache.tajo.engine.function.annotation.Description;
+import org.apache.tajo.engine.function.annotation.ParamTypes;
import org.apache.tajo.storage.Tuple;
/**
@@ -31,10 +33,19 @@ import org.apache.tajo.storage.Tuple;
*
* FLOAT4 abs(value FLOAT4)
*/
+@Description(
+ functionName = "abs",
+ description = "Absolute value",
+ detail = "",
+ example = "> SELECT abs(-10);\n"
+ + "10",
+ returnType = TajoDataTypes.Type.FLOAT4,
+ paramTypes = {@ParamTypes(paramTypes = {TajoDataTypes.Type.FLOAT4})}
+)
public class AbsFloat extends GeneralFunction {
public AbsFloat() {
super(new Column[] {
- new Column("value", TajoDataTypes.Type.FLOAT4)
+ new Column("x", TajoDataTypes.Type.FLOAT4)
});
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/AbsInt.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/AbsInt.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/AbsInt.java
index 4f76162..b1fb79e 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/AbsInt.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/AbsInt.java
@@ -24,6 +24,8 @@ import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
import org.apache.tajo.datum.NullDatum;
import org.apache.tajo.engine.function.GeneralFunction;
+import org.apache.tajo.engine.function.annotation.Description;
+import org.apache.tajo.engine.function.annotation.ParamTypes;
import org.apache.tajo.storage.Tuple;
/**
@@ -31,10 +33,19 @@ import org.apache.tajo.storage.Tuple;
*
* INT4 abs(value INT4)
*/
+@Description(
+ functionName = "abs",
+ description = "Absolute value",
+ detail = "",
+ example = "> SELECT abs(-10);\n"
+ + "10",
+ returnType = TajoDataTypes.Type.INT4,
+ paramTypes = {@ParamTypes(paramTypes = {TajoDataTypes.Type.INT4})}
+)
public class AbsInt extends GeneralFunction {
public AbsInt() {
super(new Column[] {
- new Column("value", TajoDataTypes.Type.INT4)
+ new Column("x", TajoDataTypes.Type.INT4)
});
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/AbsLong.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/AbsLong.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/AbsLong.java
index 9b42417..cdb5a29 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/AbsLong.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/AbsLong.java
@@ -24,6 +24,8 @@ import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
import org.apache.tajo.datum.NullDatum;
import org.apache.tajo.engine.function.GeneralFunction;
+import org.apache.tajo.engine.function.annotation.Description;
+import org.apache.tajo.engine.function.annotation.ParamTypes;
import org.apache.tajo.storage.Tuple;
/**
@@ -31,10 +33,18 @@ import org.apache.tajo.storage.Tuple;
*
* INT8 abs(value INT8)
*/
+@Description(
+ functionName = "abs",
+ description = "Absolute value",
+ example = "> SELECT abs(-10);\n"
+ + "10",
+ returnType = TajoDataTypes.Type.INT8,
+ paramTypes = {@ParamTypes(paramTypes = {TajoDataTypes.Type.INT8})}
+)
public class AbsLong extends GeneralFunction {
public AbsLong() {
super(new Column[] {
- new Column("value", TajoDataTypes.Type.INT8)
+ new Column("x", TajoDataTypes.Type.INT8)
});
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/Acos.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/Acos.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/Acos.java
index 3c12bfb..f1f2804 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/Acos.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/Acos.java
@@ -24,6 +24,8 @@ import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
import org.apache.tajo.datum.NullDatum;
import org.apache.tajo.engine.function.GeneralFunction;
+import org.apache.tajo.engine.function.annotation.Description;
+import org.apache.tajo.engine.function.annotation.ParamTypes;
import org.apache.tajo.storage.Tuple;
/**
@@ -31,10 +33,19 @@ import org.apache.tajo.storage.Tuple;
*
* Float8 acos(value FLOAT8)
*/
+@Description(
+ functionName = "acos",
+ description = "Inverse cosine.",
+ detail = "",
+ example = "> SELECT acos(x);",
+ returnType = TajoDataTypes.Type.FLOAT8,
+ paramTypes = {@ParamTypes(paramTypes = {TajoDataTypes.Type.FLOAT4}),
+ @ParamTypes(paramTypes = {TajoDataTypes.Type.FLOAT8})}
+)
public class Acos extends GeneralFunction {
public Acos() {
super(new Column[] {
- new Column("value", TajoDataTypes.Type.FLOAT8)
+ new Column("x", TajoDataTypes.Type.FLOAT8)
});
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/Asin.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/Asin.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/Asin.java
index 9357a1a..6f6c905 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/Asin.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/Asin.java
@@ -24,6 +24,8 @@ import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
import org.apache.tajo.datum.NullDatum;
import org.apache.tajo.engine.function.GeneralFunction;
+import org.apache.tajo.engine.function.annotation.Description;
+import org.apache.tajo.engine.function.annotation.ParamTypes;
import org.apache.tajo.storage.Tuple;
/**
@@ -31,10 +33,18 @@ import org.apache.tajo.storage.Tuple;
*
* Float8 asin(value FLOAT8)
*/
+@Description(
+ functionName = "asin",
+ description = "Inverse sine.",
+ example = "> SELECT asin(x);",
+ returnType = TajoDataTypes.Type.FLOAT8,
+ paramTypes = {@ParamTypes(paramTypes = {TajoDataTypes.Type.FLOAT4}),
+ @ParamTypes(paramTypes = {TajoDataTypes.Type.FLOAT8})}
+)
public class Asin extends GeneralFunction {
public Asin() {
super(new Column[] {
- new Column("value", TajoDataTypes.Type.FLOAT8)
+ new Column("x", TajoDataTypes.Type.FLOAT8)
});
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/Atan.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/Atan.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/Atan.java
index c628a26..9e70ae3 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/Atan.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/Atan.java
@@ -24,6 +24,8 @@ import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
import org.apache.tajo.datum.NullDatum;
import org.apache.tajo.engine.function.GeneralFunction;
+import org.apache.tajo.engine.function.annotation.Description;
+import org.apache.tajo.engine.function.annotation.ParamTypes;
import org.apache.tajo.storage.Tuple;
/**
@@ -31,10 +33,18 @@ import org.apache.tajo.storage.Tuple;
*
* Float8 atan(value FLOAT8)
*/
+@Description(
+ functionName = "atan",
+ description = "Inverse tangent.",
+ example = "> SELECT atan(x);",
+ returnType = TajoDataTypes.Type.FLOAT8,
+ paramTypes = {@ParamTypes(paramTypes = {TajoDataTypes.Type.FLOAT4}),
+ @ParamTypes(paramTypes = {TajoDataTypes.Type.FLOAT8})}
+)
public class Atan extends GeneralFunction {
public Atan() {
super(new Column[] {
- new Column("value", TajoDataTypes.Type.FLOAT8)
+ new Column("x", TajoDataTypes.Type.FLOAT8)
});
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d04f9a56/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/Atan2.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/Atan2.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/Atan2.java
index 99908e7..bc2764c 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/Atan2.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/math/Atan2.java
@@ -24,6 +24,8 @@ import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
import org.apache.tajo.datum.NullDatum;
import org.apache.tajo.engine.function.GeneralFunction;
+import org.apache.tajo.engine.function.annotation.Description;
+import org.apache.tajo.engine.function.annotation.ParamTypes;
import org.apache.tajo.storage.Tuple;
/**
@@ -31,10 +33,19 @@ import org.apache.tajo.storage.Tuple;
*
* Float8 atan2(value FLOAT8, value FLOAT8)
*/
+@Description(
+ functionName = "atan2",
+ description = "Inverse tangent of y/x.",
+ example = "> SELECT atan(y,x);",
+ returnType = TajoDataTypes.Type.FLOAT8,
+ paramTypes = {@ParamTypes(paramTypes = {TajoDataTypes.Type.FLOAT4, TajoDataTypes.Type.FLOAT4}),
+ @ParamTypes(paramTypes = {TajoDataTypes.Type.FLOAT8, TajoDataTypes.Type.FLOAT8})}
+)
public class Atan2 extends GeneralFunction {
public Atan2() {
super(new Column[] {
- new Column("value", TajoDataTypes.Type.FLOAT8)
+ new Column("y", TajoDataTypes.Type.FLOAT8),
+ new Column("x", TajoDataTypes.Type.FLOAT8)
});
}