You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tajo.apache.org by jh...@apache.org on 2014/02/06 10:03:24 UTC
git commit: TAJO-586: containFunction shouldn't throw
NoSuchFunctionException. (jinho)
Updated Branches:
refs/heads/master 2761436b2 -> d0206493b
TAJO-586: containFunction shouldn't throw NoSuchFunctionException. (jinho)
Project: http://git-wip-us.apache.org/repos/asf/incubator-tajo/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tajo/commit/d0206493
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tajo/tree/d0206493
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tajo/diff/d0206493
Branch: refs/heads/master
Commit: d0206493bfb2a60b647ad2d1dd555d3da50892b7
Parents: 2761436
Author: jinossy <ji...@gmail.com>
Authored: Thu Feb 6 18:02:32 2014 +0900
Committer: jinossy <ji...@gmail.com>
Committed: Thu Feb 6 18:02:32 2014 +0900
----------------------------------------------------------------------
CHANGES.txt | 2 +
.../tajo/catalog/AbstractCatalogClient.java | 9 +++-
.../org/apache/tajo/catalog/CatalogServer.java | 30 ++++++------
.../tajo/catalog/store/AbstractDBStore.java | 2 +-
.../org/apache/tajo/catalog/TestCatalog.java | 51 ++++++++++++--------
.../tajo/engine/planner/ExprAnnotator.java | 4 +-
6 files changed, 57 insertions(+), 41 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d0206493/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 9cffeee..7f58b4a 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -246,6 +246,8 @@ Release 0.8.0 - unreleased
BUG FIXES
+ TAJO-586: containFunction shouldn't throw NoSuchFunctionException. (jinho)
+
TAJO-582: Invalid split calculation. (jinho)
TAJO-581: Inline view on column partitioned table causes NPE. (hyunsik)
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d0206493/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 c711deb..1a7e54c 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
@@ -363,8 +363,13 @@ public abstract class AbstractCatalogClient implements CatalogService {
}
}
}.withRetries();
- } catch (ServiceException e) {
- LOG.error(e.getMessage(), e);
+ } catch(ServiceException e) {
+ // this is not good. we need to define user massage exception
+ if(e.getCause() instanceof NoSuchFunctionException){
+ LOG.debug(e.getMessage());
+ } else {
+ LOG.error(e.getMessage(), e);
+ }
}
if (descProto == null) {
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d0206493/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/CatalogServer.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/CatalogServer.java b/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/CatalogServer.java
index 69e0248..62d6e27 100644
--- a/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/CatalogServer.java
+++ b/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/CatalogServer.java
@@ -99,11 +99,11 @@ public class CatalogServer extends AbstractService {
}
@Override
- public void init(Configuration _conf) {
- this.conf = (TajoConf)_conf;
+ public void init(Configuration conf) {
Constructor<?> cons;
try {
+ this.conf = (TajoConf) conf;
Class<?> storeClass = this.conf.getClass(CatalogConstants.STORE_CLASS, DerbyStore.class);
LOG.info("Catalog Store Class: " + storeClass.getCanonicalName());
@@ -509,7 +509,7 @@ public class CatalogServer extends AbstractService {
}
}
}
- throw new NoSuchFunctionException(signature, params);
+ return null;
}
private FunctionDescProto findFunction(String signature, FunctionType type, List<DataType> params) {
@@ -520,7 +520,7 @@ public class CatalogServer extends AbstractService {
}
}
}
- throw new NoSuchFunctionException(signature, params);
+ return null;
}
private FunctionDescProto findFunction(FunctionDescProto target) {
@@ -533,13 +533,9 @@ public class CatalogServer extends AbstractService {
FunctionSignature signature = FunctionSignature.create(funcDesc);
if (functions.containsKey(funcDesc.getSignature())) {
- try {
- FunctionDescProto found = findFunction(funcDesc);
- if (found != null) {
- throw new AlreadyExistsFunctionException(signature.toString());
- }
- } catch (NoSuchFunctionException e) {
- //create function
+ FunctionDescProto found = findFunction(funcDesc);
+ if (found != null) {
+ throw new AlreadyExistsFunctionException(signature.toString());
}
}
@@ -568,15 +564,18 @@ public class CatalogServer extends AbstractService {
@Override
public FunctionDescProto getFunctionMeta(RpcController controller, GetFunctionMetaRequest request)
throws ServiceException {
+ FunctionDescProto function = null;
if (request.hasFunctionType()) {
if (containFunction(request.getSignature(), request.getFunctionType(), request.getParameterTypesList())) {
- FunctionDescProto desc = findFunction(request.getSignature(), request.getFunctionType(),
- request.getParameterTypesList());
- return desc;
+ function = findFunction(request.getSignature(), request.getFunctionType(), request.getParameterTypesList());
}
+ } else {
+ function = findFunction(request.getSignature(), request.getParameterTypesList());
+ }
+
+ if (function == null) {
throw new NoSuchFunctionException(request.getSignature(), request.getParameterTypesList());
} else {
- FunctionDescProto function = findFunction(request.getSignature(), request.getParameterTypesList());
return function;
}
}
@@ -591,7 +590,6 @@ public class CatalogServer extends AbstractService {
} else {
returnValue = containFunction(request.getSignature(), request.getParameterTypesList());
}
-
return BoolProto.newBuilder().setValue(returnValue).build();
}
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d0206493/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/AbstractDBStore.java
----------------------------------------------------------------------
diff --git a/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/AbstractDBStore.java b/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/AbstractDBStore.java
index 5d6f747..1ac9d80 100644
--- a/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/AbstractDBStore.java
+++ b/tajo-catalog/tajo-catalog-server/src/main/java/org/apache/tajo/catalog/store/AbstractDBStore.java
@@ -974,7 +974,7 @@ public abstract class AbstractDBStore extends CatalogConstants implements Catalo
}
proto = resultToIndexDescProto(res);
} catch (SQLException se) {
- new IOException(se);
+ throw new IOException(se);
} finally {
CatalogUtil.closeSQLWrapper(res, stmt);
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d0206493/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 4dfc97a..441ffe5 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
@@ -59,6 +59,10 @@ public class TestCatalog {
server.init(conf);
server.start();
catalog = new LocalCatalogWrapper(server);
+
+ for(String table : catalog.getAllTableNames()){
+ catalog.deleteTable(table);
+ }
}
@AfterClass
@@ -87,7 +91,7 @@ public class TestCatalog {
catalog.deleteTable("getTable");
assertFalse(catalog.existsTable("getTable"));
}
-
+
@Test
public void testAddTableNoName() throws Exception {
schema1 = new Schema();
@@ -98,9 +102,9 @@ public class TestCatalog {
TableMeta info = CatalogUtil.newTableMeta(StoreType.CSV);
TableDesc desc = new TableDesc();
desc.setMeta(info);
-
- assertFalse(catalog.addTable(desc));
- }
+
+ assertFalse(catalog.addTable(desc));
+ }
static IndexDesc desc1;
static IndexDesc desc2;
@@ -123,7 +127,7 @@ public class TestCatalog {
@Test
public void testAddAndDelIndex() throws Exception {
TableDesc desc = TestDBStore.prepareTable();
- catalog.addTable(desc);
+ assertTrue(catalog.addTable(desc));
assertFalse(catalog.existIndex(desc1.getName()));
assertFalse(catalog.existIndex("indexed", "id"));
@@ -143,7 +147,8 @@ public class TestCatalog {
assertFalse(catalog.existIndex(desc2.getName()));
catalog.deleteTable(desc.getName());
- }
+ assertFalse(catalog.existsTable(desc.getName()));
+ }
public static class TestFunc1 extends Function {
public TestFunc1() {
@@ -173,23 +178,23 @@ public class TestCatalog {
}
}
- @Test(expected = NoSuchFunctionException.class)
- public final void testRegisterAndFindFunc() throws Exception {
- assertFalse(catalog.containFunction("test10", FunctionType.GENERAL));
- FunctionDesc meta = new FunctionDesc("test10", TestFunc2.class, FunctionType.GENERAL,
+ @Test
+ public final void testRegisterAndFindFunc() throws Exception {
+ assertFalse(catalog.containFunction("test10", FunctionType.GENERAL));
+ FunctionDesc meta = new FunctionDesc("test10", TestFunc2.class, FunctionType.GENERAL,
CatalogUtil.newSimpleDataType(Type.INT4),
CatalogUtil.newSimpleDataTypeArray(Type.INT4, Type.BLOB));
catalog.createFunction(meta);
- assertTrue(catalog.containFunction("test10", CatalogUtil.newSimpleDataTypeArray(Type.INT4, Type.BLOB)));
- FunctionDesc retrived = catalog.getFunction("test10", CatalogUtil.newSimpleDataTypeArray(Type.INT4, Type.BLOB));
+ assertTrue(catalog.containFunction("test10", CatalogUtil.newSimpleDataTypeArray(Type.INT4, Type.BLOB)));
+ FunctionDesc retrived = catalog.getFunction("test10", CatalogUtil.newSimpleDataTypeArray(Type.INT4, Type.BLOB));
- assertEquals(retrived.getSignature(),"test10");
- assertEquals(retrived.getFuncClass(),TestFunc2.class);
- assertEquals(retrived.getFuncType(),FunctionType.GENERAL);
+ assertEquals(retrived.getSignature(), "test10");
+ assertEquals(retrived.getFuncClass(), TestFunc2.class);
+ assertEquals(retrived.getFuncType(), FunctionType.GENERAL);
- catalog.getFunction("test10", CatalogUtil.newSimpleDataTypeArray(Type.BLOB, Type.INT4));
- }
+ assertFalse(catalog.containFunction("test10", CatalogUtil.newSimpleDataTypeArray(Type.BLOB, Type.INT4)));
+ }
@Test
@@ -208,9 +213,17 @@ public class TestCatalog {
assertEquals(retrived.getFuncType(),FunctionType.UDF);
}
- @Test(expected = NoSuchFunctionException.class)
+ @Test
public final void testSuchFunctionException() throws Exception {
- catalog.getFunction("test123", CatalogUtil.newSimpleDataTypeArray(Type.INT4));
+ try {
+ assertFalse(catalog.containFunction("test123", CatalogUtil.newSimpleDataTypeArray(Type.INT4)));
+ catalog.getFunction("test123", CatalogUtil.newSimpleDataTypeArray(Type.INT4));
+ fail();
+ } catch (NoSuchFunctionException nsfe) {
+ // succeed test
+ } catch (Throwable e) {
+ fail(e.getMessage());
+ }
}
@Test
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/d0206493/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/ExprAnnotator.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/ExprAnnotator.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/ExprAnnotator.java
index f25064f..4c2118e 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/ExprAnnotator.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/ExprAnnotator.java
@@ -394,9 +394,7 @@ public class ExprAnnotator extends BaseAlgebraVisitor<ExprAnnotator.Context, Eva
}
FunctionDesc funcDesc = catalog.getFunction(expr.getSignature(), paramTypes);
- if (funcDesc == null) {
- throw new NoSuchFunctionException(expr.getSignature(), paramTypes);
- }
+
try {
CatalogProtos.FunctionType functionType = funcDesc.getFuncType();
if (functionType == CatalogProtos.FunctionType.GENERAL