merging master

Project: http://git-wip-us.apache.org/repos/asf/tajo/repo
Commit: http://git-wip-us.apache.org/repos/asf/tajo/commit/3eac1578
Tree: http://git-wip-us.apache.org/repos/asf/tajo/tree/3eac1578
Diff: http://git-wip-us.apache.org/repos/asf/tajo/diff/3eac1578

Branch: refs/heads/index_support
Commit: 3eac157874a952942248cd880d33ed13335d2265
Parents: a7c2fd9
Author: Jihoon Son <[email protected]>
Authored: Wed Jul 22 19:20:54 2015 +0900
Committer: Jihoon Son <[email protected]>
Committed: Wed Jul 22 19:20:54 2015 +0900

----------------------------------------------------------------------
 .../tajo/catalog/AbstractCatalogClient.java     |  9 +++-
 .../tajo/master/TajoMasterClientService.java    | 49 ++++++++++++--------
 .../apache/tajo/master/exec/DDLExecutor.java    |  8 ++--
 .../java/org/apache/tajo/querymaster/Query.java |  3 +-
 .../planner/physical/TestSortIntersectExec.java |  3 +-
 .../apache/tajo/engine/query/TestIndexScan.java |  3 +-
 6 files changed, 47 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tajo/blob/3eac1578/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 e935312..402df0f 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
@@ -34,6 +34,7 @@ import org.apache.tajo.conf.TajoConf;
 import org.apache.tajo.error.Errors.ResultCode;
 import org.apache.tajo.exception.ReturnStateUtil;
 import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos.NullProto;
+import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos.ReturnState;
 import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos.StringListResponse;
 import org.apache.tajo.util.ProtoUtil;
 import org.apache.tajo.util.TUtil;
@@ -509,7 +510,13 @@ public abstract class AbstractCatalogClient implements 
CatalogService, Closeable
     try {
       final BlockingInterface stub = getStub();
 
-      return isSuccess(stub.createIndex(null, index.getProto()));
+      final ReturnState state = stub.createIndex(null, index.getProto());
+      if (isSuccess(state)) {
+        return true;
+      } else {
+        // TODO
+        return false;
+      }
 
     } catch (ServiceException e) {
       throw new RuntimeException(e);

http://git-wip-us.apache.org/repos/asf/tajo/blob/3eac1578/tajo-core/src/main/java/org/apache/tajo/master/TajoMasterClientService.java
----------------------------------------------------------------------
diff --git 
a/tajo-core/src/main/java/org/apache/tajo/master/TajoMasterClientService.java 
b/tajo-core/src/main/java/org/apache/tajo/master/TajoMasterClientService.java
index aee9f01..c1afbc9 100644
--- 
a/tajo-core/src/main/java/org/apache/tajo/master/TajoMasterClientService.java
+++ 
b/tajo-core/src/main/java/org/apache/tajo/master/TajoMasterClientService.java
@@ -55,14 +55,16 @@ import org.apache.tajo.querymaster.QueryJobEvent;
 import org.apache.tajo.rpc.BlockingRpcServer;
 import org.apache.tajo.rpc.protocolrecords.PrimitiveProtos.*;
 import org.apache.tajo.session.Session;
-import org.apache.tajo.util.IPCUtil;
 import org.apache.tajo.util.KeyValueSet;
 import org.apache.tajo.util.NetUtils;
 import org.apache.tajo.util.ProtoUtil;
 
 import java.io.IOException;
 import java.net.InetSocketAddress;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 
 import static org.apache.tajo.TajoConstants.DEFAULT_DATABASE_NAME;
 import static org.apache.tajo.exception.ReturnStateUtil.*;
@@ -953,7 +955,7 @@ public class TajoMasterClientService extends 
AbstractService {
           return errUndefinedIndexName(indexName);
         }
       } catch (Throwable t) {
-        throw new ServiceException(t);
+        return returnError(t);
       }
     }
 
@@ -974,14 +976,15 @@ public class TajoMasterClientService extends 
AbstractService {
           tableName = request.getValue();
         }
 
-        GetIndexesResponse.Builder builder = GetIndexesResponse.newBuilder();
+        IndexListResponse.Builder builder = 
IndexListResponse.newBuilder().setState(OK);
         for (IndexDesc index : catalog.getAllIndexesByTable(databaseName, 
tableName)) {
-          builder.addIndexes(index.getProto());
+          builder.addIndexDesc(index.getProto());
         }
-        builder.setResult(IPCUtil.buildOkRequestResult());
         return builder.build();
       } catch (Throwable t) {
-        throw new ServiceException(t);
+        return IndexListResponse.newBuilder()
+            .setState(returnError(t))
+            .build();
       }
     }
 
@@ -1007,7 +1010,7 @@ public class TajoMasterClientService extends 
AbstractService {
           return errUndefinedIndex(tableName);
         }
       } catch (Throwable t) {
-        throw new ServiceException(t);
+        return returnError(t);
       }
     }
 
@@ -1030,12 +1033,15 @@ public class TajoMasterClientService extends 
AbstractService {
         String[] columnNames = new String[request.getColumnNamesCount()];
         columnNames = request.getColumnNamesList().toArray(columnNames);
 
-        GetIndexWithColumnsResponse.Builder builder = 
GetIndexWithColumnsResponse.newBuilder();
-        builder.setResult(IPCUtil.buildOkRequestResult());
-        builder.setIndexDesc(catalog.getIndexByColumnNames(databaseName, 
tableName, columnNames).getProto());
-        return builder.build();
+        return IndexResponse.newBuilder()
+            .setState(OK)
+            .setIndexDesc(catalog.getIndexByColumnNames(databaseName, 
tableName, columnNames).getProto())
+            .build();
+
       } catch (Throwable t) {
-        throw new ServiceException(t);
+        return IndexResponse.newBuilder()
+            .setState(returnError(t))
+            .build();
       }
     }
 
@@ -1057,10 +1063,13 @@ public class TajoMasterClientService extends 
AbstractService {
         }
         String[] columnNames = new String[request.getColumnNamesCount()];
         columnNames = request.getColumnNamesList().toArray(columnNames);
-        return catalog.existIndexByColumnNames(databaseName, tableName, 
columnNames) ?
-            ProtoUtil.TRUE : ProtoUtil.FALSE;
+        if (catalog.existIndexByColumnNames(databaseName, tableName, 
columnNames)) {
+          return OK;
+        } else {
+          return errUndefinedIndex(tableName, request.getColumnNamesList());
+        }
       } catch (Throwable t) {
-        throw new ServiceException(t);
+        return returnError(t);
       }
     }
 
@@ -1070,6 +1079,7 @@ public class TajoMasterClientService extends 
AbstractService {
       try {
         context.getSessionManager().touch(request.getSessionId().getId());
         Session session = 
context.getSessionManager().getSession(request.getSessionId().getId());
+        QueryContext queryContext = new QueryContext(conf, session);
 
         String indexName, databaseName;
         if (CatalogUtil.isFQTableName(request.getValue())) {
@@ -1080,10 +1090,11 @@ public class TajoMasterClientService extends 
AbstractService {
           databaseName = session.getCurrentDatabase();
           indexName = request.getValue();
         }
-        return catalog.dropIndex(databaseName, indexName) ?
-            ProtoUtil.TRUE : ProtoUtil.FALSE;
+        catalog.dropIndex(databaseName, indexName);
+
+        return OK;
       } catch (Throwable t) {
-        throw new ServiceException(t);
+        return returnError(t);
       }
     }
   }

http://git-wip-us.apache.org/repos/asf/tajo/blob/3eac1578/tajo-core/src/main/java/org/apache/tajo/master/exec/DDLExecutor.java
----------------------------------------------------------------------
diff --git 
a/tajo-core/src/main/java/org/apache/tajo/master/exec/DDLExecutor.java 
b/tajo-core/src/main/java/org/apache/tajo/master/exec/DDLExecutor.java
index c7dc6ef..96c0812 100644
--- a/tajo-core/src/main/java/org/apache/tajo/master/exec/DDLExecutor.java
+++ b/tajo-core/src/main/java/org/apache/tajo/master/exec/DDLExecutor.java
@@ -135,7 +135,7 @@ public class DDLExecutor {
     }
 
     if (catalog.existIndexByName(databaseName, simpleIndexName)) {
-      throw new AlreadyExistsIndexException(simpleIndexName);
+      throw new DuplicateIndexException(simpleIndexName);
     }
 
     ScanNode scanNode = PlannerUtil.findTopNode(createIndexNode, 
NodeType.SCAN);
@@ -152,7 +152,7 @@ public class DDLExecutor {
       LOG.info("Index " + qualifiedIndexName + " is created for the table " + 
scanNode.getTableName() + ".");
     } else {
       LOG.info("Index creation " + qualifiedIndexName + " is failed.");
-      throw new CatalogException("Cannot create index \"" + qualifiedIndexName 
+ "\".");
+      throw new TajoInternalError("Cannot create index \"" + 
qualifiedIndexName + "\".");
     }
   }
 
@@ -168,14 +168,14 @@ public class DDLExecutor {
     }
 
     if (!catalog.existIndexByName(databaseName, simpleIndexName)) {
-      throw new NoSuchIndexException(simpleIndexName);
+      throw new UndefinedIndexException(simpleIndexName);
     }
 
     IndexDesc desc = catalog.getIndexByName(databaseName, simpleIndexName);
 
     if (!catalog.dropIndex(databaseName, simpleIndexName)) {
       LOG.info("Cannot drop index \"" + simpleIndexName + "\".");
-      throw new CatalogException("Cannot drop index \"" + simpleIndexName + 
"\".");
+      throw new TajoInternalError("Cannot drop index \"" + simpleIndexName + 
"\".");
     }
 
     Path indexPath = new Path(desc.getIndexPath());

http://git-wip-us.apache.org/repos/asf/tajo/blob/3eac1578/tajo-core/src/main/java/org/apache/tajo/querymaster/Query.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/querymaster/Query.java 
b/tajo-core/src/main/java/org/apache/tajo/querymaster/Query.java
index 99c8194..1f86917 100644
--- a/tajo-core/src/main/java/org/apache/tajo/querymaster/Query.java
+++ b/tajo-core/src/main/java/org/apache/tajo/querymaster/Query.java
@@ -45,6 +45,7 @@ import org.apache.tajo.engine.planner.global.ExecutionBlock;
 import org.apache.tajo.engine.planner.global.ExecutionBlockCursor;
 import org.apache.tajo.engine.planner.global.ExecutionQueue;
 import org.apache.tajo.engine.planner.global.MasterPlan;
+import org.apache.tajo.exception.TajoInternalError;
 import org.apache.tajo.plan.logical.*;
 import org.apache.tajo.engine.query.QueryContext;
 import org.apache.tajo.master.event.*;
@@ -566,7 +567,7 @@ public class Query implements EventHandler<QueryEvent> {
           LOG.info("Index " + qualifiedIndexName + " is created for the table 
" + scanNode.getTableName() + ".");
         } else {
           LOG.info("Index creation " + qualifiedIndexName + " is failed.");
-          throw new CatalogException("Cannot create index \"" + 
qualifiedIndexName + "\".");
+          throw new TajoInternalError("Cannot create index \"" + 
qualifiedIndexName + "\".");
         }
       }
     }

http://git-wip-us.apache.org/repos/asf/tajo/blob/3eac1578/tajo-core/src/test/java/org/apache/tajo/engine/planner/physical/TestSortIntersectExec.java
----------------------------------------------------------------------
diff --git 
a/tajo-core/src/test/java/org/apache/tajo/engine/planner/physical/TestSortIntersectExec.java
 
b/tajo-core/src/test/java/org/apache/tajo/engine/planner/physical/TestSortIntersectExec.java
index 3372651..66426df 100644
--- 
a/tajo-core/src/test/java/org/apache/tajo/engine/planner/physical/TestSortIntersectExec.java
+++ 
b/tajo-core/src/test/java/org/apache/tajo/engine/planner/physical/TestSortIntersectExec.java
@@ -23,7 +23,6 @@ import org.apache.tajo.LocalTajoTestingUtility;
 import org.apache.tajo.TajoTestingCluster;
 import org.apache.tajo.algebra.Expr;
 import org.apache.tajo.catalog.*;
-import org.apache.tajo.catalog.proto.CatalogProtos;
 import org.apache.tajo.common.TajoDataTypes;
 import org.apache.tajo.conf.TajoConf;
 import org.apache.tajo.datum.Datum;
@@ -141,7 +140,7 @@ public class TestSortIntersectExec {
 
     analyzer = new SQLAnalyzer();
     planner = new LogicalPlanner(catalog, TablespaceManager.getInstance());
-    optimizer = new LogicalOptimizer(conf);
+    optimizer = new LogicalOptimizer(conf, catalog);
   }
 
   @After

http://git-wip-us.apache.org/repos/asf/tajo/blob/3eac1578/tajo-core/src/test/java/org/apache/tajo/engine/query/TestIndexScan.java
----------------------------------------------------------------------
diff --git 
a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestIndexScan.java 
b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestIndexScan.java
index 3a4ff6f..75127d2 100644
--- a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestIndexScan.java
+++ b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestIndexScan.java
@@ -27,13 +27,14 @@ import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
 import java.sql.ResultSet;
+import java.sql.SQLException;
 import java.util.HashMap;
 import java.util.Map;
 
 @Category(IntegrationTest.class)
 public class TestIndexScan extends QueryTestCaseBase {
 
-  public TestIndexScan() throws ServiceException {
+  public TestIndexScan() throws ServiceException, SQLException {
     super(TajoConstants.DEFAULT_DATABASE_NAME);
     Map<String,String> sessionVars = new HashMap<String, String>();
     sessionVars.put(SessionVars.INDEX_ENABLED.keyname(), "true");

Reply via email to