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 2013/08/19 11:23:55 UTC
[4/4] git commit: TAJO-123: Clean up the logical plan's json format.
(hyunsik)
TAJO-123: Clean up the logical plan's json format. (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/49607a54
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tajo/tree/49607a54
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tajo/diff/49607a54
Branch: refs/heads/master
Commit: 49607a5423c458d2821d7a5bc0db6dde78f8a559
Parents: 6899815
Author: Hyunsik Choi <hy...@apache.org>
Authored: Mon Aug 19 18:20:15 2013 +0900
Committer: Hyunsik Choi <hy...@apache.org>
Committed: Mon Aug 19 18:21:21 2013 +0900
----------------------------------------------------------------------
CHANGES.txt | 2 +
.../java/org/apache/tajo/catalog/TableDesc.java | 4 +-
.../org/apache/tajo/catalog/TableDescImpl.java | 24 +-
.../tajo/catalog/json/FunctionAdapter.java | 10 +-
.../tajo/catalog/json/TableDescAdapter.java | 23 +-
.../tajo/catalog/json/TableMetaAdapter.java | 22 +-
.../org/apache/tajo/catalog/TestTableDesc.java | 2 +-
.../org/apache/tajo/catalog/store/DBStore.java | 12 +-
.../org/apache/tajo/catalog/store/MemStore.java | 2 +-
.../org/apache/tajo/catalog/TestCatalog.java | 2 +-
.../org/apache/tajo/catalog/TestDBStore.java | 8 +-
.../org/apache/tajo/datum/DatumFactory.java | 34 ++
.../org/apache/tajo/json/DataTypeAdapter.java | 2 +-
.../java/org/apache/tajo/json/DatumAdapter.java | 21 +-
.../org/apache/tajo/json/DatumTypeAdapter.java | 55 ---
.../org/apache/tajo/json/PathSerializer.java | 6 +-
.../org/apache/tajo/TaskAttemptContext.java | 12 +-
.../main/java/org/apache/tajo/cli/TajoCli.java | 2 +-
.../tajo/engine/eval/AggFuncCallEval.java | 2 +-
.../apache/tajo/engine/eval/AlgebraicUtil.java | 56 +--
.../org/apache/tajo/engine/eval/BinaryEval.java | 26 +-
.../apache/tajo/engine/eval/CaseWhenEval.java | 6 +-
.../org/apache/tajo/engine/eval/ConstEval.java | 2 +-
.../org/apache/tajo/engine/eval/EvalNode.java | 44 +--
.../tajo/engine/eval/EvalTreeFactory.java | 2 +-
.../apache/tajo/engine/eval/EvalTreeUtil.java | 43 +-
.../org/apache/tajo/engine/eval/EvalType.java | 63 +++
.../org/apache/tajo/engine/eval/FieldEval.java | 4 +-
.../apache/tajo/engine/eval/FuncCallEval.java | 2 +-
.../org/apache/tajo/engine/eval/FuncEval.java | 2 +-
.../org/apache/tajo/engine/eval/IsNullEval.java | 8 +-
.../org/apache/tajo/engine/eval/LikeEval.java | 2 +-
.../org/apache/tajo/engine/eval/NotEval.java | 2 +-
.../tajo/engine/eval/PartialBinaryExpr.java | 4 +-
.../tajo/engine/json/EvalNodeAdapter.java | 41 +-
.../tajo/engine/json/LogicalNodeAdapter.java | 43 +-
.../engine/planner/BasicLogicalPlanVisitor.java | 30 +-
.../apache/tajo/engine/planner/FromTable.java | 8 +-
.../apache/tajo/engine/planner/LogicalPlan.java | 3 +-
.../tajo/engine/planner/LogicalPlanner.java | 82 ++--
.../engine/planner/PhysicalPlannerImpl.java | 36 +-
.../apache/tajo/engine/planner/PlannerUtil.java | 94 ++---
.../org/apache/tajo/engine/planner/Target.java | 3 +-
.../engine/planner/global/GlobalOptimizer.java | 12 +-
.../tajo/engine/planner/logical/BinaryNode.java | 22 +-
.../engine/planner/logical/CreateTableNode.java | 2 +-
.../engine/planner/logical/DropTableNode.java | 2 +-
.../engine/planner/logical/EvalExprNode.java | 2 +-
.../tajo/engine/planner/logical/ExceptNode.java | 8 +-
.../tajo/engine/planner/logical/ExprType.java | 52 ---
.../engine/planner/logical/GroupbyNode.java | 10 +-
.../engine/planner/logical/IndexScanNode.java | 2 +-
.../engine/planner/logical/IntersectNode.java | 8 +-
.../tajo/engine/planner/logical/JoinNode.java | 14 +-
.../tajo/engine/planner/logical/LimitNode.java | 6 +-
.../engine/planner/logical/LogicalNode.java | 8 +-
.../engine/planner/logical/LogicalRootNode.java | 6 +-
.../tajo/engine/planner/logical/NodeType.java | 56 +++
.../tajo/engine/planner/logical/PipeType.java | 24 ++
.../engine/planner/logical/ProjectionNode.java | 10 +-
.../engine/planner/logical/ReceiveNode.java | 122 ++++++
.../engine/planner/logical/RepartitionType.java | 25 ++
.../tajo/engine/planner/logical/ScanNode.java | 2 +-
.../engine/planner/logical/SelectionNode.java | 6 +-
.../tajo/engine/planner/logical/SendNode.java | 145 +++++++
.../tajo/engine/planner/logical/SortNode.java | 6 +-
.../engine/planner/logical/StoreTableNode.java | 6 +-
.../tajo/engine/planner/logical/UnaryNode.java | 18 +-
.../tajo/engine/planner/logical/UnionNode.java | 8 +-
.../planner/logical/extended/PipeType.java | 24 --
.../planner/logical/extended/ReceiveNode.java | 122 ------
.../logical/extended/RepartitionType.java | 25 --
.../planner/logical/extended/SendNode.java | 145 -------
.../planner/physical/AggregationExec.java | 3 +-
.../planner/rewrite/FilterPushDownRule.java | 16 +-
.../planner/rewrite/ProjectionPushDownRule.java | 31 +-
.../org/apache/tajo/master/ExecutionBlock.java | 13 +-
.../org/apache/tajo/master/GlobalEngine.java | 10 +-
.../org/apache/tajo/master/GlobalPlanner.java | 178 ++++-----
.../tajo/master/TajoMasterClientService.java | 2 +-
.../tajo/master/querymaster/QueryMaster.java | 4 +-
.../tajo/master/querymaster/QueryUnit.java | 11 +-
.../tajo/master/querymaster/Repartitioner.java | 14 +-
.../tajo/master/querymaster/SubQuery.java | 4 +-
.../java/org/apache/tajo/util/IndexUtil.java | 16 +-
.../main/java/org/apache/tajo/worker/Task.java | 4 +-
.../org/apache/tajo/client/TestTajoClient.java | 2 +-
.../apache/tajo/engine/eval/TestEvalTree.java | 121 +++---
.../tajo/engine/eval/TestEvalTreeUtil.java | 27 +-
.../plan/global/TestGlobalQueryPlanner.java | 62 +--
.../engine/planner/TestLogicalOptimizer.java | 103 +++--
.../tajo/engine/planner/TestLogicalPlanner.java | 390 +++++++++----------
.../tajo/engine/planner/TestPlannerUtil.java | 97 +++--
.../global/TestGlobalQueryOptimizer.java | 28 +-
.../engine/planner/logical/TestReceiveNode.java | 61 +++
.../engine/planner/logical/TestSendNode.java | 49 +++
.../logical/extended/TestReceiveNode.java | 62 ---
.../planner/logical/extended/TestSendNode.java | 50 ---
.../planner/physical/TestPhysicalPlanner.java | 8 +-
.../org/apache/tajo/storage/TestFragment.java | 6 +-
.../java/org/apache/tajo/storage/Fragment.java | 40 +-
.../tajo/storage/json/StorageGsonHelper.java | 1 -
102 files changed, 1565 insertions(+), 1597 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 45d1f17..6f4cd5b 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -15,6 +15,8 @@ Release 0.2.0 - unreleased
IMPROVEMENTS
+ TAJO-123: Clean up the logical plan's json format. (hyunsik)
+
TAJO-129: Enable the constructor of NettyServerBase to take a service
name. (hyunsik)
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/TableDesc.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/TableDesc.java b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/TableDesc.java
index d46bd14..b27492d 100644
--- a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/TableDesc.java
+++ b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/TableDesc.java
@@ -23,9 +23,9 @@ import org.apache.hadoop.fs.Path;
import org.apache.tajo.json.GsonObject;
public interface TableDesc extends Cloneable, GsonObject {
- void setId(String tableId);
+ void setName(String tableId);
- String getId();
+ String getName();
void setPath(Path path);
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/TableDescImpl.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/TableDescImpl.java b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/TableDescImpl.java
index 2771157..5111116 100644
--- a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/TableDescImpl.java
+++ b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/TableDescImpl.java
@@ -30,7 +30,7 @@ import org.apache.tajo.common.ProtoObject;
public class TableDescImpl implements TableDesc, ProtoObject<TableDescProto>, Cloneable {
protected TableDescProto.Builder builder = null;
- @Expose protected String tableId; // required
+ @Expose protected String tableName; // required
@Expose protected Path uri; // required
@Expose protected TableMeta meta; // required
@@ -38,30 +38,30 @@ public class TableDescImpl implements TableDesc, ProtoObject<TableDescProto>, Cl
builder = TableDescProto.newBuilder();
}
- public TableDescImpl(String tableId, TableMeta info, Path path) {
+ public TableDescImpl(String tableName, TableMeta info, Path path) {
this();
// tajo deems all identifiers as lowcase characters
- this.tableId = tableId.toLowerCase();
+ this.tableName = tableName.toLowerCase();
this.meta = info;
this.uri = path;
}
- public TableDescImpl(String tableId, Schema schema, StoreType type,
+ public TableDescImpl(String tableName, Schema schema, StoreType type,
Options options, Path path) {
- this(tableId, new TableMetaImpl(schema, type, options), path);
+ this(tableName, new TableMetaImpl(schema, type, options), path);
}
public TableDescImpl(TableDescProto proto) {
this(proto.getId(), new TableMetaImpl(proto.getMeta()), new Path(proto.getPath()));
}
- public void setId(String tableId) {
+ public void setName(String tableId) {
// tajo deems all identifiers as lowcase characters
- this.tableId = tableId.toLowerCase();
+ this.tableName = tableId.toLowerCase();
}
- public String getId() {
- return this.tableId;
+ public String getName() {
+ return this.tableName;
}
public void setPath(Path uri) {
@@ -98,7 +98,7 @@ public class TableDescImpl implements TableDesc, ProtoObject<TableDescProto>, Cl
public Object clone() throws CloneNotSupportedException {
TableDescImpl desc = (TableDescImpl) super.clone();
desc.builder = TableDescProto.newBuilder();
- desc.tableId = tableId;
+ desc.tableName = tableName;
desc.uri = uri;
desc.meta = (TableMeta) meta.clone();
@@ -119,8 +119,8 @@ public class TableDescImpl implements TableDesc, ProtoObject<TableDescProto>, Cl
if (builder == null) {
builder = TableDescProto.newBuilder();
}
- if (this.tableId != null) {
- builder.setId(this.tableId);
+ if (this.tableName != null) {
+ builder.setId(this.tableName);
}
if (this.uri != null) {
builder.setPath(this.uri.toString());
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/json/FunctionAdapter.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/json/FunctionAdapter.java b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/json/FunctionAdapter.java
index 4736631..ed5ff49 100644
--- a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/json/FunctionAdapter.java
+++ b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/json/FunctionAdapter.java
@@ -30,10 +30,10 @@ public class FunctionAdapter implements GsonSerDerAdapter<Function> {
public JsonElement serialize(Function src, Type typeOfSrc,
JsonSerializationContext context) {
JsonObject jsonObj = new JsonObject();
- String className = src.getClass().getCanonicalName();
- jsonObj.addProperty("className", className);
+ String className = src.getClass().getName();
+ jsonObj.addProperty("class", className);
JsonElement jsonElem = context.serialize(src);
- jsonObj.add("property", jsonElem);
+ jsonObj.add("body", jsonElem);
return jsonObj;
}
@@ -41,7 +41,7 @@ public class FunctionAdapter implements GsonSerDerAdapter<Function> {
public Function deserialize(JsonElement json, Type typeOfT,
JsonDeserializationContext context) throws JsonParseException {
JsonObject jsonObject = json.getAsJsonObject();
- String className = jsonObject.get("className").getAsJsonPrimitive().getAsString();
+ String className = jsonObject.get("class").getAsJsonPrimitive().getAsString();
Class clazz;
try {
@@ -50,6 +50,6 @@ public class FunctionAdapter implements GsonSerDerAdapter<Function> {
e.printStackTrace();
throw new JsonParseException(e);
}
- return context.deserialize(jsonObject.get("property"), clazz);
+ return context.deserialize(jsonObject.get("body"), clazz);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/json/TableDescAdapter.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/json/TableDescAdapter.java b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/json/TableDescAdapter.java
index e34ef61..f942048 100644
--- a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/json/TableDescAdapter.java
+++ b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/json/TableDescAdapter.java
@@ -18,8 +18,10 @@
package org.apache.tajo.catalog.json;
+import com.google.common.base.Preconditions;
import com.google.gson.*;
import org.apache.tajo.catalog.TableDesc;
+import org.apache.tajo.catalog.TableDescImpl;
import org.apache.tajo.json.GsonSerDerAdapter;
import java.lang.reflect.Type;
@@ -30,27 +32,18 @@ public class TableDescAdapter implements GsonSerDerAdapter<TableDesc> {
public TableDesc deserialize(JsonElement json, Type type,
JsonDeserializationContext ctx) throws JsonParseException {
JsonObject jsonObject = json.getAsJsonObject();
- String className = jsonObject.get("classname").getAsJsonPrimitive().getAsString();
-
- Class clazz;
- try {
- clazz = Class.forName(className);
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- throw new JsonParseException(e);
- }
- return ctx.deserialize(jsonObject.get("property"), clazz);
+ String typeName = jsonObject.get("type").getAsJsonPrimitive().getAsString();
+ Preconditions.checkState(typeName.equals("TableDesc"));
+ return ctx.deserialize(jsonObject.get("body"), TableDescImpl.class);
}
@Override
public JsonElement serialize(TableDesc src, Type typeOfSrc,
JsonSerializationContext context) {
JsonObject jsonObj = new JsonObject();
- String className = src.getClass().getCanonicalName();
- jsonObj.addProperty("classname", className);
-
- JsonElement jsonElem = context.serialize(src);
- jsonObj.add("property", jsonElem);
+ jsonObj.addProperty("type", "TableDesc");
+ JsonElement jsonElem = context.serialize(src, TableDescImpl.class);
+ jsonObj.add("body", jsonElem);
return jsonObj;
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/json/TableMetaAdapter.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/json/TableMetaAdapter.java b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/json/TableMetaAdapter.java
index f8c02e2..3afda0a 100644
--- a/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/json/TableMetaAdapter.java
+++ b/tajo-catalog/tajo-catalog-common/src/main/java/org/apache/tajo/catalog/json/TableMetaAdapter.java
@@ -18,8 +18,10 @@
package org.apache.tajo.catalog.json;
+import com.google.common.base.Preconditions;
import com.google.gson.*;
import org.apache.tajo.catalog.TableMeta;
+import org.apache.tajo.catalog.TableMetaImpl;
import org.apache.tajo.json.GsonSerDerAdapter;
import java.lang.reflect.Type;
@@ -30,26 +32,18 @@ public class TableMetaAdapter implements GsonSerDerAdapter<TableMeta> {
public TableMeta deserialize(JsonElement json, Type typeOfT,
JsonDeserializationContext context) throws JsonParseException {
JsonObject jsonObject = json.getAsJsonObject();
- String className = jsonObject.get("classname").getAsJsonPrimitive().getAsString();
-
- Class clazz;
- try {
- clazz = Class.forName(className);
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- throw new JsonParseException(e);
- }
- return context.deserialize(jsonObject.get("property"), clazz);
+ String typeName = jsonObject.get("type").getAsJsonPrimitive().getAsString();
+ Preconditions.checkState(typeName.equals("TableMeta"));
+ return context.deserialize(jsonObject.get("body"), TableMetaImpl.class);
}
@Override
public JsonElement serialize(TableMeta src, Type typeOfSrc,
JsonSerializationContext context) {
JsonObject jsonObj = new JsonObject();
- String className = src.getClass().getCanonicalName();
- jsonObj.addProperty("classname", className);
- JsonElement jsonElem = context.serialize(src);
- jsonObj.add("property", jsonElem);
+ jsonObj.addProperty("type", "TableMeta");
+ JsonElement jsonElem = context.serialize(src, TableMetaImpl.class);
+ jsonObj.add("body", jsonElem);
return jsonObj;
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-catalog/tajo-catalog-common/src/test/java/org/apache/tajo/catalog/TestTableDesc.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-common/src/test/java/org/apache/tajo/catalog/TestTableDesc.java b/tajo-catalog/tajo-catalog-common/src/test/java/org/apache/tajo/catalog/TestTableDesc.java
index 5235af1..cf943c4 100644
--- a/tajo-catalog/tajo-catalog-common/src/test/java/org/apache/tajo/catalog/TestTableDesc.java
+++ b/tajo-catalog/tajo-catalog-common/src/test/java/org/apache/tajo/catalog/TestTableDesc.java
@@ -51,7 +51,7 @@ public class TestTableDesc {
testClone(info);
TableDesc desc = new TableDescImpl("table1", info, new Path("/tajo/data"));
- assertEquals("table1", desc.getId());
+ assertEquals("table1", desc.getName());
assertEquals(new Path("/tajo/data"), desc.getPath());
assertEquals(info, desc.getMeta());
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/DBStore.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/DBStore.java b/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/DBStore.java
index 41b2ca1..8fb19f0 100644
--- a/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/DBStore.java
+++ b/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/DBStore.java
@@ -365,7 +365,7 @@ public class DBStore implements CatalogStore {
String sql =
"INSERT INTO " + TB_TABLES + " (" + C_TABLE_ID + ", path, store_type) "
- + "VALUES('" + table.getId() + "', "
+ + "VALUES('" + table.getName() + "', "
+ "'" + table.getPath() + "', "
+ "'" + table.getMeta().getStoreType() + "'"
+ ")";
@@ -381,14 +381,14 @@ public class DBStore implements CatalogStore {
stmt = conn.createStatement();
sql = "SELECT TID from " + TB_TABLES + " WHERE " + C_TABLE_ID
- + " = '" + table.getId() + "'";
+ + " = '" + table.getName() + "'";
if (LOG.isDebugEnabled()) {
LOG.debug(sql);
}
res = stmt.executeQuery(sql);
if (!res.next()) {
throw new IOException("ERROR: there is no tid matched to "
- + table.getId());
+ + table.getName());
}
int tid = res.getInt("TID");
@@ -415,7 +415,7 @@ public class DBStore implements CatalogStore {
stmt.executeBatch();
if (table.getMeta().getStat() != null) {
sql = "INSERT INTO " + TB_STATISTICS + " (" + C_TABLE_ID + ", num_rows, num_bytes) "
- + "VALUES ('" + table.getId() + "', "
+ + "VALUES ('" + table.getName() + "', "
+ table.getMeta().getStat().getNumRows() + ","
+ table.getMeta().getStat().getNumBytes() + ")";
if (LOG.isDebugEnabled()) {
@@ -442,7 +442,7 @@ public class DBStore implements CatalogStore {
+ " (tid, " + C_TABLE_ID + ", column_id, column_name, data_type) "
+ "VALUES("
+ tid + ","
- + "'" + desc.getId() + "',"
+ + "'" + desc.getName() + "',"
+ columnId + ", "
+ "'" + col.getColumnName() + "',"
+ "'" + col.getDataType().getType().name() + "'"
@@ -457,7 +457,7 @@ public class DBStore implements CatalogStore {
"INSERT INTO " + TB_OPTIONS
+ " (" + C_TABLE_ID + ", key_, value_) "
+ "VALUES("
- + "'" + desc.getId() + "',"
+ + "'" + desc.getName() + "',"
+ "'" + keyVal.getKey() + "',"
+ "'" + keyVal.getValue() + "'"
+ ")";
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/MemStore.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/MemStore.java b/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/MemStore.java
index 4aacefd..7323393 100644
--- a/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/MemStore.java
+++ b/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/MemStore.java
@@ -61,7 +61,7 @@ public class MemStore implements CatalogStore {
@Override
public void addTable(TableDesc desc) throws IOException {
synchronized(tables) {
- tables.put(desc.getId(), desc);
+ tables.put(desc.getName(), desc);
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/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 6d08521..5ac59d2 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
@@ -137,7 +137,7 @@ public class TestCatalog {
catalog.deleteIndex(desc2.getName());
assertFalse(catalog.existIndex(desc2.getName()));
- catalog.deleteTable(desc.getId());
+ catalog.deleteTable(desc.getName());
}
public static class TestFunc1 extends GeneralFunction {
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestDBStore.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestDBStore.java b/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestDBStore.java
index 3764b34..47ec4dd 100644
--- a/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestDBStore.java
+++ b/tajo-catalog/tajo-catalog-server/src/test/java/org/apache/tajo/catalog/TestDBStore.java
@@ -141,7 +141,7 @@ public class TestDBStore {
store.delIndex(TestCatalog.desc1.getName());
assertFalse(store.existIndex(TestCatalog.desc1.getName()));
- store.deleteTable(table.getId());
+ store.deleteTable(table.getName());
}
@Test
@@ -156,7 +156,7 @@ public class TestDBStore {
new IndexDesc(store.getIndex(TestCatalog.desc2.getName())));
store.delIndex(TestCatalog.desc2.getName());
- store.deleteTable(table.getId());
+ store.deleteTable(table.getName());
}
@Test
@@ -174,7 +174,7 @@ public class TestDBStore {
new IndexDesc(store.getIndex(tableId, columnName)));
store.delIndex(TestCatalog.desc2.getName());
- store.deleteTable(table.getId());
+ store.deleteTable(table.getName());
}
@Test
@@ -191,7 +191,7 @@ public class TestDBStore {
store.delIndex(TestCatalog.desc1.getName());
store.delIndex(TestCatalog.desc2.getName());
- store.deleteTable(table.getId());
+ store.deleteTable(table.getName());
}
public static TableDesc prepareTable() {
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-common/src/main/java/org/apache/tajo/datum/DatumFactory.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/datum/DatumFactory.java b/tajo-common/src/main/java/org/apache/tajo/datum/DatumFactory.java
index dffd28a..453dd4a 100644
--- a/tajo-common/src/main/java/org/apache/tajo/datum/DatumFactory.java
+++ b/tajo-common/src/main/java/org/apache/tajo/datum/DatumFactory.java
@@ -18,6 +18,7 @@
package org.apache.tajo.datum;
+import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.common.TajoDataTypes.DataType;
import org.apache.tajo.common.TajoDataTypes.Type;
import org.apache.tajo.util.Bytes;
@@ -28,6 +29,39 @@ public class DatumFactory {
return create(type.getType(), val);
}
+ public static Class<? extends Datum> getDatumClass(Type type) {
+ switch (type) {
+ case BOOLEAN:
+ return BooleanDatum.class;
+ case INT2:
+ return Int2Datum.class;
+ case INT4:
+ return Int4Datum.class;
+ case INT8:
+ return Int8Datum.class;
+ case FLOAT4:
+ return Float4Datum.class;
+ case FLOAT8:
+ return Float8Datum.class;
+ case CHAR:
+ return CharDatum.class;
+ case TEXT:
+ return TextDatum.class;
+ case BIT:
+ return BitDatum.class;
+ case BLOB:
+ return BlobDatum.class;
+ case INET4:
+ return Inet4Datum.class;
+ case ANY:
+ return NullDatum.class;
+ case ARRAY:
+ return ArrayDatum.class;
+ default:
+ throw new UnsupportedOperationException(type.name());
+ }
+ }
+
public static Datum create(Type type, byte[] val) {
switch (type) {
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-common/src/main/java/org/apache/tajo/json/DataTypeAdapter.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/json/DataTypeAdapter.java b/tajo-common/src/main/java/org/apache/tajo/json/DataTypeAdapter.java
index 3df6939..29aad47 100644
--- a/tajo-common/src/main/java/org/apache/tajo/json/DataTypeAdapter.java
+++ b/tajo-common/src/main/java/org/apache/tajo/json/DataTypeAdapter.java
@@ -33,7 +33,7 @@ public class DataTypeAdapter implements GsonSerDerAdapter<DataType> {
JsonObject obj = (JsonObject) json;
DataType.Builder builder = DataType.newBuilder();
- TajoDataTypes.Type type = Enum.valueOf(TajoDataTypes.Type.class, obj.get("type").getAsString());
+ TajoDataTypes.Type type = TajoDataTypes.Type.valueOf(obj.get("type").getAsString());
builder.setType(type);
JsonElement len = obj.get("len");
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-common/src/main/java/org/apache/tajo/json/DatumAdapter.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/json/DatumAdapter.java b/tajo-common/src/main/java/org/apache/tajo/json/DatumAdapter.java
index 8f9bb4e..fe20a35 100644
--- a/tajo-common/src/main/java/org/apache/tajo/json/DatumAdapter.java
+++ b/tajo-common/src/main/java/org/apache/tajo/json/DatumAdapter.java
@@ -19,7 +19,9 @@
package org.apache.tajo.json;
import com.google.gson.*;
+import org.apache.tajo.common.TajoDataTypes;
import org.apache.tajo.datum.Datum;
+import org.apache.tajo.datum.DatumFactory;
import java.lang.reflect.Type;
@@ -29,26 +31,17 @@ public class DatumAdapter implements GsonSerDerAdapter<Datum> {
public Datum deserialize(JsonElement json, Type typeOfT,
JsonDeserializationContext context) throws JsonParseException {
JsonObject jsonObject = json.getAsJsonObject();
- String className = jsonObject.get("classname").getAsJsonPrimitive().getAsString();
-
- Class clazz;
- try {
- clazz = Class.forName(className);
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- throw new JsonParseException(e);
- }
- return context.deserialize(jsonObject.get("property"), clazz);
+ String typeName = jsonObject.get("type").getAsString();
+ return context.deserialize(jsonObject.get("body"),
+ DatumFactory.getDatumClass(TajoDataTypes.Type.valueOf(typeName)));
}
@Override
public JsonElement serialize(Datum src, Type typeOfSrc, JsonSerializationContext context) {
JsonObject jsonObj = new JsonObject();
- String className = src.getClass().getCanonicalName();
- jsonObj.addProperty("classname", className);
+ jsonObj.addProperty("type", src.type().name());
JsonElement jsonElem = context.serialize(src);
- jsonObj.add("property", jsonElem);
+ jsonObj.add("body", jsonElem);
return jsonObj;
}
-
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-common/src/main/java/org/apache/tajo/json/DatumTypeAdapter.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/json/DatumTypeAdapter.java b/tajo-common/src/main/java/org/apache/tajo/json/DatumTypeAdapter.java
deleted file mode 100644
index 70af19f..0000000
--- a/tajo-common/src/main/java/org/apache/tajo/json/DatumTypeAdapter.java
+++ /dev/null
@@ -1,55 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.tajo.json;
-
-import com.google.gson.*;
-import org.apache.tajo.datum.Datum;
-
-import java.lang.reflect.Type;
-
-public class DatumTypeAdapter implements GsonSerDerAdapter<Datum> {
-
- @Override
- public Datum deserialize(JsonElement json, Type typeOfT,
- JsonDeserializationContext context) throws JsonParseException {
- JsonObject jsonObject = json.getAsJsonObject();
- String className = jsonObject.get("classname").getAsJsonPrimitive().getAsString();
-
- Class clazz;
- try {
- clazz = Class.forName(className);
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- throw new JsonParseException(e);
- }
- return context.deserialize(jsonObject.get("property"), clazz);
- }
-
- @Override
- public JsonElement serialize(Datum src, Type typeOfSrc,
- JsonSerializationContext context) {
- JsonObject jsonObj = new JsonObject();
- String className = src.getClass().getCanonicalName();
- jsonObj.addProperty("classname", className);
- JsonElement jsonElem = context.serialize(src);
- jsonObj.add("property", jsonElem);
- return jsonObj;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-common/src/main/java/org/apache/tajo/json/PathSerializer.java
----------------------------------------------------------------------
diff --git a/tajo-common/src/main/java/org/apache/tajo/json/PathSerializer.java b/tajo-common/src/main/java/org/apache/tajo/json/PathSerializer.java
index 3ee8e2b..bcd1bcf 100644
--- a/tajo-common/src/main/java/org/apache/tajo/json/PathSerializer.java
+++ b/tajo-common/src/main/java/org/apache/tajo/json/PathSerializer.java
@@ -29,14 +29,14 @@ import java.lang.reflect.Type;
public class PathSerializer implements GsonSerDerAdapter<Path> {
@Override
- public JsonElement serialize(Path arg0, Type arg1,
+ public JsonElement serialize(Path path, Type arg1,
JsonSerializationContext arg2) {
- return new JsonPrimitive(arg0.toString());
+ return new JsonPrimitive(path.toString());
}
@Override
public Path deserialize(JsonElement arg0, Type arg1,
- JsonDeserializationContext arg2) throws JsonParseException {
+ JsonDeserializationContext context) throws JsonParseException {
return new Path(arg0.getAsJsonPrimitive().getAsString());
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/TaskAttemptContext.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/TaskAttemptContext.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/TaskAttemptContext.java
index 8f08d86..8ae2f2b 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/TaskAttemptContext.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/TaskAttemptContext.java
@@ -62,12 +62,12 @@ public class TaskAttemptContext {
this.queryId = queryId;
for(Fragment t : fragments) {
- if (fragmentMap.containsKey(t.getId())) {
- fragmentMap.get(t.getId()).add(t);
+ if (fragmentMap.containsKey(t.getName())) {
+ fragmentMap.get(t.getName()).add(t);
} else {
List<Fragment> frags = new ArrayList<Fragment>();
frags.add(t);
- fragmentMap.put(t.getId(), frags);
+ fragmentMap.put(t.getName(), frags);
}
}
@@ -155,12 +155,12 @@ public class TaskAttemptContext {
public void changeFragment(String tableId, Fragment [] fragments) {
fragmentMap.remove(tableId);
for(Fragment t : fragments) {
- if (fragmentMap.containsKey(t.getId())) {
- fragmentMap.get(t.getId()).add(t);
+ if (fragmentMap.containsKey(t.getName())) {
+ fragmentMap.get(t.getName()).add(t);
} else {
List<Fragment> frags = new ArrayList<Fragment>();
frags.add(t);
- fragmentMap.put(t.getId(), frags);
+ fragmentMap.put(t.getName(), frags);
}
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/cli/TajoCli.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/cli/TajoCli.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/cli/TajoCli.java
index 86d47f9..2dd25de 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/cli/TajoCli.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/cli/TajoCli.java
@@ -426,7 +426,7 @@ public class TajoCli {
private String toFormattedString(TableDesc desc) {
StringBuilder sb = new StringBuilder();
- sb.append("\ntable name: ").append(desc.getId()).append("\n");
+ sb.append("\ntable name: ").append(desc.getName()).append("\n");
sb.append("table path: ").append(desc.getPath()).append("\n");
sb.append("store type: ").append(desc.getMeta().getStoreType()).append("\n");
if (desc.getMeta().getStat() != null) {
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/AggFuncCallEval.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/AggFuncCallEval.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/AggFuncCallEval.java
index 9aae34e..1282d1d 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/AggFuncCallEval.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/AggFuncCallEval.java
@@ -34,7 +34,7 @@ public class AggFuncCallEval extends FuncEval implements Cloneable {
private Tuple params;
public AggFuncCallEval(FunctionDesc desc, AggFunction instance, EvalNode[] givenArgs) {
- super(Type.AGG_FUNCTION, desc, givenArgs);
+ super(EvalType.AGG_FUNCTION, desc, givenArgs);
this.instance = instance;
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/AlgebraicUtil.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/AlgebraicUtil.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/AlgebraicUtil.java
index 46a3cdb..a5ee425 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/AlgebraicUtil.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/AlgebraicUtil.java
@@ -61,10 +61,10 @@ public class AlgebraicUtil {
EvalNode lTerm = null;
EvalNode rTerm = null;
- if (left.getType() == EvalNode.Type.PLUS
- || left.getType() == EvalNode.Type.MINUS
- || left.getType() == EvalNode.Type.MULTIPLY
- || left.getType() == EvalNode.Type.DIVIDE) {
+ if (left.getType() == EvalType.PLUS
+ || left.getType() == EvalType.MINUS
+ || left.getType() == EvalType.MULTIPLY
+ || left.getType() == EvalType.DIVIDE) {
// If the left-left term is a variable, the left-right term is transposed.
if(EvalTreeUtil.containColumnRef(left.getLeftExpr(), target)) {
@@ -92,16 +92,16 @@ public class AlgebraicUtil {
* @param type
* @return inversed operator type
*/
- public static EvalNode.Type inverseOperator(EvalNode.Type type) {
+ public static EvalType inverseOperator(EvalType type) {
switch (type) {
case PLUS:
- return EvalNode.Type.MINUS;
+ return EvalType.MINUS;
case MINUS:
- return EvalNode.Type.PLUS;
+ return EvalType.PLUS;
case MULTIPLY:
- return EvalNode.Type.DIVIDE;
+ return EvalType.DIVIDE;
case DIVIDE:
- return EvalNode.Type.MULTIPLY;
+ return EvalType.MULTIPLY;
default : throw new AlgebraicException("ERROR: cannot inverse the operator: "
+ type);
}
@@ -114,7 +114,7 @@ public class AlgebraicUtil {
* @return true if a given expr is a variable.
*/
private static boolean isSingleVar(EvalNode node) {
- if (node.getType() == EvalNode.Type.FIELD) {
+ if (node.getType() == EvalType.FIELD) {
return true;
} else {
return false;
@@ -152,8 +152,8 @@ public class AlgebraicUtil {
right = simplify(right);
// If both are constants, they can be evaluated immediately.
- if (left.getType() == EvalNode.Type.CONST
- && right.getType() == EvalNode.Type.CONST) {
+ if (left.getType() == EvalType.CONST
+ && right.getType() == EvalType.CONST) {
EvalContext exprCtx = expr.newContext();
expr.eval(exprCtx, null, null);
return new ConstEval(expr.terminate(exprCtx));
@@ -174,14 +174,14 @@ public class AlgebraicUtil {
* @return true if expr has only one field
*/
public static boolean containSingleVar(EvalNode expr) {
- Map<EvalNode.Type, Integer> counter = EvalTreeUtil.getExprCounters(expr);
+ Map<EvalType, Integer> counter = EvalTreeUtil.getExprCounters(expr);
int sum = 0;
for (Integer cnt : counter.values()) {
sum += cnt;
}
- if (sum == 1 && counter.get(EvalNode.Type.FIELD) == 1) {
+ if (sum == 1 && counter.get(EvalType.FIELD) == 1) {
return true;
} else {
return false;
@@ -199,14 +199,14 @@ public class AlgebraicUtil {
*/
public static PartialBinaryExpr splitLeftTerm(EvalNode expr) {
- if (!(expr.getType() == EvalNode.Type.PLUS
- || expr.getType() == EvalNode.Type.MINUS
- || expr.getType() == EvalNode.Type.MULTIPLY
- || expr.getType() == EvalNode.Type.DIVIDE)) {
+ if (!(expr.getType() == EvalType.PLUS
+ || expr.getType() == EvalType.MINUS
+ || expr.getType() == EvalType.MULTIPLY
+ || expr.getType() == EvalType.DIVIDE)) {
throw new AlgebraicException("Invalid algebraic operation: " + expr);
}
- if (expr.getLeftExpr().getType() != EvalNode.Type.CONST) {
+ if (expr.getLeftExpr().getType() != EvalType.CONST) {
return splitLeftTerm(expr.getLeftExpr());
}
@@ -227,14 +227,14 @@ public class AlgebraicUtil {
*/
public static PartialBinaryExpr splitRightTerm(EvalNode expr) {
- if (!(expr.getType() == EvalNode.Type.PLUS
- || expr.getType() == EvalNode.Type.MINUS
- || expr.getType() == EvalNode.Type.MULTIPLY
- || expr.getType() == EvalNode.Type.DIVIDE)) {
+ if (!(expr.getType() == EvalType.PLUS
+ || expr.getType() == EvalType.MINUS
+ || expr.getType() == EvalType.MULTIPLY
+ || expr.getType() == EvalType.DIVIDE)) {
throw new AlgebraicException("Invalid algebraic operation: " + expr);
}
- if (expr.getRightExpr().getType() != EvalNode.Type.CONST) {
+ if (expr.getRightExpr().getType() != EvalType.CONST) {
return splitRightTerm(expr.getRightExpr());
}
@@ -264,19 +264,19 @@ public class AlgebraicUtil {
break;
case GTH:
- expr = EvalTreeFactory.create(EvalNode.Type.LTH,
+ expr = EvalTreeFactory.create(EvalType.LTH,
inputExpr.getRightExpr(), inputExpr.getLeftExpr());
break;
case GEQ:
- expr = EvalTreeFactory.create(EvalNode.Type.LEQ,
+ expr = EvalTreeFactory.create(EvalType.LEQ,
inputExpr.getRightExpr(), inputExpr.getLeftExpr());
break;
case LTH:
- expr = EvalTreeFactory.create(EvalNode.Type.GTH,
+ expr = EvalTreeFactory.create(EvalType.GTH,
inputExpr.getRightExpr(), inputExpr.getLeftExpr());
break;
case LEQ:
- expr = EvalTreeFactory.create(EvalNode.Type.GEQ,
+ expr = EvalTreeFactory.create(EvalType.GEQ,
inputExpr.getRightExpr(), inputExpr.getLeftExpr());
break;
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/BinaryEval.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/BinaryEval.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/BinaryEval.java
index 2a95ddf..6f742b6 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/BinaryEval.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/BinaryEval.java
@@ -41,28 +41,28 @@ public class BinaryEval extends EvalNode implements Cloneable {
/**
* @param type
*/
- public BinaryEval(Type type, EvalNode left, EvalNode right) {
+ public BinaryEval(EvalType type, EvalNode left, EvalNode right) {
super(type, left, right);
Preconditions.checkNotNull(type);
Preconditions.checkNotNull(left);
Preconditions.checkNotNull(right);
if(
- type == Type.AND ||
- type == Type.OR ||
- type == Type.EQUAL ||
- type == Type.LTH ||
- type == Type.GTH ||
- type == Type.LEQ ||
- type == Type.GEQ
+ type == EvalType.AND ||
+ type == EvalType.OR ||
+ type == EvalType.EQUAL ||
+ type == EvalType.LTH ||
+ type == EvalType.GTH ||
+ type == EvalType.LEQ ||
+ type == EvalType.GEQ
) {
this.returnType = CatalogUtil.newDataTypesWithoutLen(TajoDataTypes.Type.BOOLEAN);
} else if (
- type == Type.PLUS ||
- type == Type.MINUS ||
- type == Type.MULTIPLY ||
- type == Type.DIVIDE ||
- type == Type.MODULAR
+ type == EvalType.PLUS ||
+ type == EvalType.MINUS ||
+ type == EvalType.MULTIPLY ||
+ type == EvalType.DIVIDE ||
+ type == EvalType.MODULAR
) {
this.returnType = SchemaUtil.newNoNameSchema(determineType(left.getValueType()[0],
right.getValueType()[0]));
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/CaseWhenEval.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/CaseWhenEval.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/CaseWhenEval.java
index 4bbdcb8..1cb24d2 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/CaseWhenEval.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/CaseWhenEval.java
@@ -20,7 +20,6 @@ package org.apache.tajo.engine.eval;
import com.google.common.collect.Lists;
import com.google.gson.annotations.Expose;
-import org.apache.tajo.json.GsonObject;
import org.apache.tajo.catalog.CatalogUtil;
import org.apache.tajo.catalog.Schema;
import org.apache.tajo.common.TajoDataTypes;
@@ -28,6 +27,7 @@ import org.apache.tajo.common.TajoDataTypes.DataType;
import org.apache.tajo.datum.Datum;
import org.apache.tajo.datum.DatumFactory;
import org.apache.tajo.engine.json.CoreGsonHelper;
+import org.apache.tajo.json.GsonObject;
import org.apache.tajo.storage.Tuple;
import org.apache.tajo.util.TUtil;
@@ -38,7 +38,7 @@ public class CaseWhenEval extends EvalNode implements GsonObject {
@Expose private EvalNode elseResult;
public CaseWhenEval() {
- super(Type.CASE);
+ super(EvalType.CASE);
}
public void addWhen(EvalNode condition, EvalNode result) {
@@ -145,7 +145,7 @@ public class CaseWhenEval extends EvalNode implements GsonObject {
@Expose private EvalNode result;
public WhenEval(EvalNode condition, EvalNode result) {
- super(Type.WHEN);
+ super(EvalType.WHEN);
this.condition = condition;
this.result = result;
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/ConstEval.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/ConstEval.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/ConstEval.java
index 069db2c..d677a73 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/ConstEval.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/ConstEval.java
@@ -29,7 +29,7 @@ public class ConstEval extends EvalNode implements Comparable<ConstEval>, Clonea
@Expose Datum datum = null;
public ConstEval(Datum datum) {
- super(Type.CONST);
+ super(EvalType.CONST);
this.datum = datum;
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/EvalNode.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/EvalNode.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/EvalNode.java
index 12e1cf8..c6f0f2d 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/EvalNode.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/EvalNode.java
@@ -27,15 +27,15 @@ import org.apache.tajo.engine.json.CoreGsonHelper;
import org.apache.tajo.storage.Tuple;
public abstract class EvalNode implements Cloneable, GsonObject {
- @Expose protected Type type;
+ @Expose protected EvalType type;
@Expose protected EvalNode leftExpr;
@Expose protected EvalNode rightExpr;
- public EvalNode(Type type) {
+ public EvalNode(EvalType type) {
this.type = type;
}
- public EvalNode(Type type, EvalNode left, EvalNode right) {
+ public EvalNode(EvalType type, EvalNode left, EvalNode right) {
this(type);
this.leftExpr = left;
this.rightExpr = right;
@@ -43,7 +43,7 @@ public abstract class EvalNode implements Cloneable, GsonObject {
public abstract EvalContext newContext();
- public Type getType() {
+ public EvalType getType() {
return this.type;
}
@@ -101,42 +101,6 @@ public abstract class EvalNode implements Cloneable, GsonObject {
rightExpr.postOrder(visitor);
visitor.visit(this);
}
-
- public static enum Type {
- AGG_FUNCTION,
- AND,
- OR,
- EQUAL("="),
- IS,
- NOT_EQUAL("<>"),
- LTH("<"),
- LEQ("<="),
- GTH(">"),
- GEQ(">="),
- NOT("!"),
- PLUS("+"),
- MINUS("-"),
- MODULAR("%"),
- MULTIPLY("*"),
- DIVIDE("/"),
- FIELD,
- FUNCTION,
- LIKE,
- CONST,
- CASE,
- WHEN;
-
- private String represent;
- Type() {
- }
- Type(String represent) {
- this.represent = represent;
- }
-
- public String toString() {
- return represent == null ? this.name() : represent;
- }
- }
public abstract boolean equals(Object obj);
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/EvalTreeFactory.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/EvalTreeFactory.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/EvalTreeFactory.java
index 5d5a9be..aa72f25 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/EvalTreeFactory.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/EvalTreeFactory.java
@@ -25,7 +25,7 @@ public class EvalTreeFactory {
return new ConstEval(datum);
}
- public static BinaryEval create(EvalNode.Type type, EvalNode e1,
+ public static BinaryEval create(EvalType type, EvalNode e1,
EvalNode e2) {
return new BinaryEval(type, e1, e2);
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/EvalTreeUtil.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/EvalTreeUtil.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/EvalTreeUtil.java
index 973de99..3fc41dd 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/EvalTreeUtil.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/EvalTreeUtil.java
@@ -24,7 +24,6 @@ import com.google.common.collect.Sets;
import org.apache.tajo.catalog.Column;
import org.apache.tajo.catalog.Schema;
import org.apache.tajo.common.TajoDataTypes.DataType;
-import org.apache.tajo.engine.eval.EvalNode.Type;
import org.apache.tajo.engine.planner.Target;
import org.apache.tajo.engine.utils.SchemaUtil;
import org.apache.tajo.exception.InternalException;
@@ -71,9 +70,9 @@ public class EvalTreeUtil {
private static EvalNode transformCNF2Singleton_(EvalNode [] evalNode, int idx) {
if (idx == evalNode.length - 2) {
- return new BinaryEval(Type.AND, evalNode[idx], evalNode[idx + 1]);
+ return new BinaryEval(EvalType.AND, evalNode[idx], evalNode[idx + 1]);
} else {
- return new BinaryEval(Type.AND, evalNode[idx],
+ return new BinaryEval(EvalType.AND, evalNode[idx],
transformCNF2Singleton_(evalNode, idx + 1));
}
}
@@ -91,14 +90,14 @@ public class EvalTreeUtil {
}
private static void getConjNormalForm(EvalNode node, List<EvalNode> found) {
- if (node.getType() == Type.AND) {
+ if (node.getType() == EvalType.AND) {
getConjNormalForm(node.getLeftExpr(), found);
getConjNormalForm(node.getRightExpr(), found);
} else {
found.add(node);
}
}
-
+
public static Schema getSchemaByTargets(Schema inputSchema, Target [] targets)
throws InternalException {
Schema schema = new Schema();
@@ -160,7 +159,7 @@ public class EvalTreeUtil {
* @param expr
* @return
*/
- public static Map<Type, Integer> getExprCounters(EvalNode expr) {
+ public static Map<EvalType, Integer> getExprCounters(EvalNode expr) {
VariableCounter counter = new VariableCounter();
expr.postOrder(counter);
return counter.getCounter();
@@ -209,21 +208,21 @@ public class EvalTreeUtil {
}
public static boolean isComparisonOperator(EvalNode expr) {
- return expr.getType() == Type.EQUAL ||
- expr.getType() == Type.LEQ ||
- expr.getType() == Type.LTH ||
- expr.getType() == Type.GEQ ||
- expr.getType() == Type.GTH;
+ return expr.getType() == EvalType.EQUAL ||
+ expr.getType() == EvalType.LEQ ||
+ expr.getType() == EvalType.LTH ||
+ expr.getType() == EvalType.GEQ ||
+ expr.getType() == EvalType.GTH;
}
public static boolean isJoinQual(EvalNode expr) {
return isComparisonOperator(expr) &&
- expr.getLeftExpr().getType() == Type.FIELD &&
- expr.getRightExpr().getType() == Type.FIELD;
+ expr.getLeftExpr().getType() == EvalType.FIELD &&
+ expr.getRightExpr().getType() == EvalType.FIELD;
}
public static boolean isLogicalOperator(EvalNode expr) {
- return expr.getType() == Type.AND || expr.getType() == Type.OR;
+ return expr.getType() == EvalType.AND || expr.getType() == EvalType.OR;
}
public static class ChangeColumnRefVisitor implements EvalNodeVisitor {
@@ -237,7 +236,7 @@ public class EvalTreeUtil {
@Override
public void visit(EvalNode node) {
- if (node.type == Type.FIELD) {
+ if (node.type == EvalType.FIELD) {
FieldEval field = (FieldEval) node;
if (field.getColumnName().equals(findColumn)
|| field.getName().equals(findColumn)) {
@@ -253,7 +252,7 @@ public class EvalTreeUtil {
@Override
public void visit(EvalNode node) {
- if (node.getType() == Type.FIELD) {
+ if (node.getType() == EvalType.FIELD) {
field = (FieldEval) node;
colList.add(field.getColumnRef());
}
@@ -270,7 +269,7 @@ public class EvalTreeUtil {
@Override
public void visit(EvalNode node) {
- if (node.getType() == Type.FIELD) {
+ if (node.getType() == EvalType.FIELD) {
field = (FieldEval) node;
colList.add(field.getColumnRef());
}
@@ -282,12 +281,12 @@ public class EvalTreeUtil {
}
public static class VariableCounter implements EvalNodeVisitor {
- private final Map<Type, Integer> counter;
+ private final Map<EvalType, Integer> counter;
public VariableCounter() {
counter = Maps.newHashMap();
- counter.put(Type.FUNCTION, 0);
- counter.put(Type.FIELD, 0);
+ counter.put(EvalType.FUNCTION, 0);
+ counter.put(EvalType.FIELD, 0);
}
@Override
@@ -299,7 +298,7 @@ public class EvalTreeUtil {
}
}
- public Map<Type, Integer> getCounter() {
+ public Map<EvalType, Integer> getCounter() {
return counter;
}
}
@@ -316,7 +315,7 @@ public class EvalTreeUtil {
@Override
public void visit(EvalNode node) {
- if (node.getType() == Type.AGG_FUNCTION) {
+ if (node.getType() == EvalType.AGG_FUNCTION) {
field = (AggFuncCallEval) node;
aggFucntions.add(field);
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/EvalType.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/EvalType.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/EvalType.java
new file mode 100644
index 0000000..a22da0f
--- /dev/null
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/EvalType.java
@@ -0,0 +1,63 @@
+/**
+ * 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.eval;
+
+public enum EvalType {
+ // Unary expression
+ NOT(NotEval.class),
+
+ // Binary expression
+ AND(BinaryEval.class),
+ OR(BinaryEval.class),
+ EQUAL(BinaryEval.class),
+ IS_NULL(IsNullEval.class),
+ NOT_EQUAL(BinaryEval.class),
+ LTH(BinaryEval.class),
+ LEQ(BinaryEval.class),
+ GTH(BinaryEval.class),
+ GEQ(BinaryEval.class),
+ PLUS(BinaryEval.class),
+ MINUS(BinaryEval.class),
+ MODULAR(BinaryEval.class),
+ MULTIPLY(BinaryEval.class),
+ DIVIDE(BinaryEval.class),
+
+ // Function
+ AGG_FUNCTION(AggFuncCallEval.class),
+ FUNCTION(FuncCallEval.class),
+
+ // Predicate
+ LIKE(LikeEval.class),
+ CASE(CaseWhenEval.class),
+ WHEN(CaseWhenEval.WhenEval.class),
+
+ // Value or Reference
+ FIELD(FieldEval.class),
+ CONST(ConstEval.class);
+
+ private Class<? extends EvalNode> baseClass;
+
+ EvalType(Class<? extends EvalNode> type) {
+ this.baseClass = type;
+ }
+
+ public Class<? extends EvalNode> getBaseClass() {
+ return this.baseClass;
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/FieldEval.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/FieldEval.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/FieldEval.java
index 9282497..cd9c48d 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/FieldEval.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/FieldEval.java
@@ -31,12 +31,12 @@ public class FieldEval extends EvalNode implements Cloneable {
@Expose private int fieldId = -1;
public FieldEval(String columnName, DataType domain) {
- super(Type.FIELD);
+ super(EvalType.FIELD);
this.column = new Column(columnName, domain);
}
public FieldEval(Column column) {
- super(Type.FIELD);
+ super(EvalType.FIELD);
this.column = column;
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/FuncCallEval.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/FuncCallEval.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/FuncCallEval.java
index d44385e..2e7faaa 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/FuncCallEval.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/FuncCallEval.java
@@ -35,7 +35,7 @@ public class FuncCallEval extends FuncEval {
private Schema schema;
public FuncCallEval(FunctionDesc desc, GeneralFunction instance, EvalNode [] givenArgs) {
- super(Type.FUNCTION, desc, givenArgs);
+ super(EvalType.FUNCTION, desc, givenArgs);
this.instance = instance;
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/FuncEval.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/FuncEval.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/FuncEval.java
index 2ff6d19..f6c54cb 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/FuncEval.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/FuncEval.java
@@ -31,7 +31,7 @@ public abstract class FuncEval extends EvalNode implements Cloneable {
@Expose protected FunctionDesc funcDesc;
@Expose protected EvalNode [] argEvals;
- public FuncEval(Type type, FunctionDesc funcDesc, EvalNode[] argEvals) {
+ public FuncEval(EvalType type, FunctionDesc funcDesc, EvalNode[] argEvals) {
super(type);
this.funcDesc = funcDesc;
this.argEvals = argEvals;
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/IsNullEval.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/IsNullEval.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/IsNullEval.java
index 872edf9..1064974 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/IsNullEval.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/IsNullEval.java
@@ -31,9 +31,9 @@ import org.apache.tajo.datum.NullDatum;
import org.apache.tajo.storage.Tuple;
public class IsNullEval extends BinaryEval {
- private final static ConstEval NULL_EVAL = new ConstEval(DatumFactory.createNullDatum());
- private static final DataType [] RES_TYPE =
- CatalogUtil.newDataTypesWithoutLen(TajoDataTypes.Type.BOOLEAN);
+ // it's just a hack to emulate a binary expression
+ private final static ConstEval DUMMY_EVAL = new ConstEval(DatumFactory.createBool(true));
+ private static final DataType [] RES_TYPE = CatalogUtil.newDataTypesWithoutLen(TajoDataTypes.Type.BOOLEAN);
// persistent variables
@Expose private boolean isNot;
@@ -41,7 +41,7 @@ public class IsNullEval extends BinaryEval {
@Expose private Integer fieldId = null;
public IsNullEval(boolean not, FieldEval field) {
- super(Type.IS, field, NULL_EVAL);
+ super(EvalType.IS_NULL, field, DUMMY_EVAL);
this.isNot = not;
this.columnRef = field.getColumnRef();
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/LikeEval.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/LikeEval.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/LikeEval.java
index 4c7cbe8..d3ab277 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/LikeEval.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/LikeEval.java
@@ -46,7 +46,7 @@ public class LikeEval extends BinaryEval {
public LikeEval(boolean not, FieldEval field, ConstEval pattern) {
- super(Type.LIKE, field, pattern);
+ super(EvalType.LIKE, field, pattern);
this.not = not;
this.column = field.getColumnRef();
this.pattern = pattern.getValue().asChars();
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/NotEval.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/NotEval.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/NotEval.java
index 71fac77..296850c 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/NotEval.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/NotEval.java
@@ -34,7 +34,7 @@ public class NotEval extends EvalNode implements Cloneable {
CatalogUtil.newDataTypesWithoutLen(TajoDataTypes.Type.BOOLEAN);
public NotEval(EvalNode subExpr) {
- super(Type.NOT);
+ super(EvalType.NOT);
Preconditions.checkArgument(
subExpr instanceof BinaryEval || subExpr instanceof NotEval);
this.subExpr = subExpr;
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/PartialBinaryExpr.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/PartialBinaryExpr.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/PartialBinaryExpr.java
index d43c629..ab558d9 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/PartialBinaryExpr.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/eval/PartialBinaryExpr.java
@@ -25,11 +25,11 @@ import org.apache.tajo.storage.Tuple;
public class PartialBinaryExpr extends EvalNode {
- public PartialBinaryExpr(Type type) {
+ public PartialBinaryExpr(EvalType type) {
super(type);
}
- public PartialBinaryExpr(Type type, EvalNode left, EvalNode right) {
+ public PartialBinaryExpr(EvalType type, EvalNode left, EvalNode right) {
super(type, left, right);
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/json/EvalNodeAdapter.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/json/EvalNodeAdapter.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/json/EvalNodeAdapter.java
index 74c7305..69b906f 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/json/EvalNodeAdapter.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/json/EvalNodeAdapter.java
@@ -23,34 +23,29 @@ package org.apache.tajo.engine.json;
import com.google.gson.*;
import org.apache.tajo.engine.eval.EvalNode;
+import org.apache.tajo.engine.eval.EvalType;
+import org.apache.tajo.engine.planner.logical.NodeType;
import org.apache.tajo.json.GsonSerDerAdapter;
import java.lang.reflect.Type;
public class EvalNodeAdapter implements GsonSerDerAdapter<EvalNode> {
- @Override
- public EvalNode deserialize(JsonElement json, Type type,
- JsonDeserializationContext ctx) throws JsonParseException {
- JsonObject jsonObj = json.getAsJsonObject();
- String className = jsonObj.get("type").getAsString();
- JsonElement elem = jsonObj.get("properties");
-
- try {
- return ctx.deserialize(elem, Class.forName(className));
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- }
- return null;
- }
-
- @Override
- public JsonElement serialize(EvalNode evalNode, Type type,
- JsonSerializationContext ctx) {
- JsonObject json = new JsonObject();
- json.add("type", new JsonPrimitive(evalNode.getClass().getName()));
- json.add("properties", ctx.serialize(evalNode, evalNode.getClass()));
- return json;
- }
+ @Override
+ public EvalNode deserialize(JsonElement json, Type type,
+ JsonDeserializationContext ctx) throws JsonParseException {
+ JsonObject jsonObject = json.getAsJsonObject();
+ String nodeName = jsonObject.get("type").getAsString();
+ Class clazz = EvalType.valueOf(nodeName).getBaseClass();
+ return ctx.deserialize(jsonObject.get("body"), clazz);
+ }
+ @Override
+ public JsonElement serialize(EvalNode evalNode, Type type,
+ JsonSerializationContext ctx) {
+ JsonObject json = new JsonObject();
+ json.addProperty("type", evalNode.getType().name());
+ json.add("body", ctx.serialize(evalNode));
+ return json;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/json/LogicalNodeAdapter.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/json/LogicalNodeAdapter.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/json/LogicalNodeAdapter.java
index d98bd53..e2becef 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/json/LogicalNodeAdapter.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/json/LogicalNodeAdapter.java
@@ -23,37 +23,28 @@ package org.apache.tajo.engine.json;
import com.google.gson.*;
import org.apache.tajo.engine.planner.logical.LogicalNode;
+import org.apache.tajo.engine.planner.logical.NodeType;
import org.apache.tajo.json.GsonSerDerAdapter;
import java.lang.reflect.Type;
public class LogicalNodeAdapter implements GsonSerDerAdapter<LogicalNode> {
- @Override
- public LogicalNode deserialize(JsonElement json, Type type,
- JsonDeserializationContext ctx) throws JsonParseException {
- JsonObject jsonObject = json.getAsJsonObject();
- String className = jsonObject.get("classname").getAsJsonPrimitive().getAsString();
-
- Class clazz;
- try {
- clazz = Class.forName(className);
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- throw new JsonParseException(e);
- }
- return ctx.deserialize(jsonObject.get("property"), clazz);
- }
-
- @Override
- public JsonElement serialize(LogicalNode src, Type typeOfSrc,
- JsonSerializationContext context) {
- JsonObject jsonObj = new JsonObject();
- String className = src.getClass().getCanonicalName();
- jsonObj.addProperty("classname", className);
- JsonElement jsonElem = context.serialize(src);
- jsonObj.add("property", jsonElem);
- return jsonObj;
- }
+ @Override
+ public LogicalNode deserialize(JsonElement src, Type type,
+ JsonDeserializationContext ctx) throws JsonParseException {
+ JsonObject jsonObject = src.getAsJsonObject();
+ String nodeName = jsonObject.get("type").getAsString();
+ Class clazz = NodeType.valueOf(nodeName).getBaseClass();
+ return ctx.deserialize(jsonObject.get("body"), clazz);
+ }
+ @Override
+ public JsonElement serialize(LogicalNode src, Type typeOfSrc,
+ JsonSerializationContext context) {
+ JsonObject json = new JsonObject();
+ json.addProperty("type", src.getType().name());
+ json.add("body", context.serialize(src));
+ return json;
+ }
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/BasicLogicalPlanVisitor.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/BasicLogicalPlanVisitor.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/BasicLogicalPlanVisitor.java
index a5e9530..9bc6b7d 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/BasicLogicalPlanVisitor.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/BasicLogicalPlanVisitor.java
@@ -93,7 +93,7 @@ public class BasicLogicalPlanVisitor<T> implements LogicalPlanVisitor<T> {
public LogicalNode visitRoot(LogicalPlan plan, LogicalRootNode node, Stack<LogicalNode> stack, T data)
throws PlanningException {
stack.push(node);
- visitChild(plan, node.getSubNode(), stack, data);
+ visitChild(plan, node.getChild(), stack, data);
stack.pop();
return node;
}
@@ -102,7 +102,7 @@ public class BasicLogicalPlanVisitor<T> implements LogicalPlanVisitor<T> {
public LogicalNode visitProjection(LogicalPlan plan, ProjectionNode node, Stack<LogicalNode> stack, T data)
throws PlanningException {
stack.push(node);
- visitChild(plan, node.getSubNode(), stack, data);
+ visitChild(plan, node.getChild(), stack, data);
stack.pop();
return node;
}
@@ -111,7 +111,7 @@ public class BasicLogicalPlanVisitor<T> implements LogicalPlanVisitor<T> {
public LogicalNode visitLimit(LogicalPlan plan, LimitNode node, Stack<LogicalNode> stack, T data)
throws PlanningException {
stack.push(node);
- visitChild(plan, node.getSubNode(), stack, data);
+ visitChild(plan, node.getChild(), stack, data);
stack.pop();
return node;
}
@@ -120,7 +120,7 @@ public class BasicLogicalPlanVisitor<T> implements LogicalPlanVisitor<T> {
public LogicalNode visitSort(LogicalPlan plan, SortNode node, Stack<LogicalNode> stack, T data)
throws PlanningException {
stack.push(node);
- visitChild(plan, node.getSubNode(), stack, data);
+ visitChild(plan, node.getChild(), stack, data);
stack.pop();
return node;
}
@@ -129,7 +129,7 @@ public class BasicLogicalPlanVisitor<T> implements LogicalPlanVisitor<T> {
public LogicalNode visitGroupBy(LogicalPlan plan, GroupbyNode node, Stack<LogicalNode> stack, T data)
throws PlanningException {
stack.push(node);
- visitChild(plan, node.getSubNode(), stack, data);
+ visitChild(plan, node.getChild(), stack, data);
stack.pop();
return node;
}
@@ -138,7 +138,7 @@ public class BasicLogicalPlanVisitor<T> implements LogicalPlanVisitor<T> {
public LogicalNode visitFilter(LogicalPlan plan, SelectionNode node, Stack<LogicalNode> stack, T data)
throws PlanningException {
stack.push(node);
- visitChild(plan, node.getSubNode(), stack, data);
+ visitChild(plan, node.getChild(), stack, data);
stack.pop();
return node;
}
@@ -147,8 +147,8 @@ public class BasicLogicalPlanVisitor<T> implements LogicalPlanVisitor<T> {
public LogicalNode visitJoin(LogicalPlan plan, JoinNode node, Stack<LogicalNode> stack, T data)
throws PlanningException {
stack.push(node);
- visitChild(plan, node.getOuterNode(), stack, data);
- visitChild(plan, node.getInnerNode(), stack, data);
+ visitChild(plan, node.getLeftChild(), stack, data);
+ visitChild(plan, node.getRightChild(), stack, data);
stack.pop();
return node;
}
@@ -157,8 +157,8 @@ public class BasicLogicalPlanVisitor<T> implements LogicalPlanVisitor<T> {
public LogicalNode visitUnion(LogicalPlan plan, UnionNode node, Stack<LogicalNode> stack, T data)
throws PlanningException {
stack.push(node);
- visitChild(plan, node.getOuterNode(), stack, data);
- visitChild(plan, node.getInnerNode(), stack, data);
+ visitChild(plan, node.getLeftChild(), stack, data);
+ visitChild(plan, node.getRightChild(), stack, data);
stack.pop();
return node;
}
@@ -167,8 +167,8 @@ public class BasicLogicalPlanVisitor<T> implements LogicalPlanVisitor<T> {
public LogicalNode visitExcept(LogicalPlan plan, ExceptNode node, Stack<LogicalNode> stack, T data)
throws PlanningException {
stack.push(node);
- visitChild(plan, node.getOuterNode(), stack, data);
- visitChild(plan, node.getInnerNode(), stack, data);
+ visitChild(plan, node.getLeftChild(), stack, data);
+ visitChild(plan, node.getRightChild(), stack, data);
stack.pop();
return node;
}
@@ -177,8 +177,8 @@ public class BasicLogicalPlanVisitor<T> implements LogicalPlanVisitor<T> {
public LogicalNode visitIntersect(LogicalPlan plan, IntersectNode node, Stack<LogicalNode> stack, T data)
throws PlanningException {
stack.push(node);
- visitChild(plan, node.getOuterNode(), stack, data);
- visitChild(plan, node.getInnerNode(), stack, data);
+ visitChild(plan, node.getLeftChild(), stack, data);
+ visitChild(plan, node.getRightChild(), stack, data);
stack.pop();
return node;
}
@@ -193,7 +193,7 @@ public class BasicLogicalPlanVisitor<T> implements LogicalPlanVisitor<T> {
public LogicalNode visitStoreTable(LogicalPlan plan, StoreTableNode node, Stack<LogicalNode> stack, T data)
throws PlanningException {
stack.push(node);
- visitChild(plan, node.getSubNode(), stack, data);
+ visitChild(plan, node.getChild(), stack, data);
stack.pop();
return node;
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/FromTable.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/FromTable.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/FromTable.java
index 0e3a174..3d4a607 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/FromTable.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/FromTable.java
@@ -46,11 +46,11 @@ public class FromTable implements Cloneable, GsonObject {
}
public final String getTableName() {
- return desc.getId();
+ return desc.getName();
}
public final String getTableId() {
- return alias == null ? desc.getId() : alias;
+ return alias == null ? desc.getName() : alias;
}
public final CatalogProtos.StoreType getStoreType() {
@@ -75,9 +75,9 @@ public class FromTable implements Cloneable, GsonObject {
public final String toString() {
if (alias != null)
- return desc.getId() + " as " + alias;
+ return desc.getName() + " as " + alias;
else
- return desc.getId();
+ return desc.getName();
}
public boolean equals(Object obj) {
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/49607a54/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/LogicalPlan.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/LogicalPlan.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/LogicalPlan.java
index 8c39d00..ac6cb45e 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/LogicalPlan.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/LogicalPlan.java
@@ -26,6 +26,7 @@ import org.apache.tajo.catalog.Column;
import org.apache.tajo.catalog.Schema;
import org.apache.tajo.engine.eval.EvalNode;
import org.apache.tajo.engine.eval.EvalTreeUtil;
+import org.apache.tajo.engine.eval.EvalType;
import org.apache.tajo.engine.planner.logical.*;
import java.util.*;
@@ -481,7 +482,7 @@ public class LogicalPlan {
if (canTargetEvaluated(i, node)) {
if (node instanceof ScanNode) { // for scan node
- if (expr.getType() == EvalNode.Type.FIELD) {
+ if (expr.getType() == EvalType.FIELD) {
targetListManager.setEvaluated(i);
if (targetListManager.getTarget(i).hasAlias()) {
newEvaluatedTargetIds.add(i);