You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tajo.apache.org by ji...@apache.org on 2014/01/26 11:23:37 UTC
git commit: TAJO-551: Fix bug getFunction can get wrong function that
have invalid parameters. (DaeMyung Kang via jihoon)
Updated Branches:
refs/heads/master e23e78ccd -> 9d5be90a7
TAJO-551: Fix bug getFunction can get wrong function that have invalid parameters. (DaeMyung Kang via jihoon)
Project: http://git-wip-us.apache.org/repos/asf/incubator-tajo/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tajo/commit/9d5be90a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tajo/tree/9d5be90a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tajo/diff/9d5be90a
Branch: refs/heads/master
Commit: 9d5be90a74b04a5fa68a7924c98abcce56dec729
Parents: e23e78c
Author: Jihoon Son <ji...@apache.org>
Authored: Sun Jan 26 19:22:56 2014 +0900
Committer: Jihoon Son <ji...@apache.org>
Committed: Sun Jan 26 19:22:56 2014 +0900
----------------------------------------------------------------------
CHANGES.txt | 3 +++
.../tajo/catalog/AbstractCatalogClient.java | 7 ++-----
.../org/apache/tajo/catalog/CatalogServer.java | 9 ++++++---
.../org/apache/tajo/catalog/TestCatalog.java | 19 +++++++++++++++++++
.../apache/tajo/engine/function/string/Lpad.java | 5 +++--
.../apache/tajo/engine/function/string/Rpad.java | 3 ++-
.../tajo/engine/function/string/Substr.java | 7 +++++--
7 files changed, 40 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/9d5be90a/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index c04b2d4..35c7f26 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -229,6 +229,9 @@ Release 0.8.0 - unreleased
BUG FIXES
+ TAJO-551: Fix bug getFunction can get wrong function that have invalid
+ parameters. (DaeMyung Kang via jihoon)
+
TAJO-544: Thread pool abusing. (Min Zhou via hyunsik)
TAJO-493: maven pom.xml should enforce protobuf 2.5. (jaehwa)
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/9d5be90a/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 322faed..981e062 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
@@ -337,10 +337,7 @@ public abstract class AbstractCatalogClient implements CatalogService {
if (descProto == null) {
throw new NoSuchFunctionException(signature);
}
- if(descProto == null) {
- LOG.error("No matched function:" + signature + "," + funcType + "," + paramTypes);
- return null;
- }
+
try {
return new FunctionDesc(descProto);
} catch (ClassNotFoundException e) {
@@ -378,4 +375,4 @@ public abstract class AbstractCatalogClient implements CatalogService {
return false;
}
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/9d5be90a/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 38686e3..c69487a 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
@@ -430,6 +430,10 @@ public class CatalogServer extends AbstractService {
return found != null && found.size() > 0;
}
+ private boolean containFunction(String signature, List<DataType> params) {
+ return findFunction(signature, params) != null;
+ }
+
private boolean containFunction(String signature, FunctionType type, List<DataType> params) {
return findFunction(signature, type, params) != null;
}
@@ -441,8 +445,7 @@ public class CatalogServer extends AbstractService {
private FunctionDescProto findFunction(String signature, List<DataType> params) {
if (functions.containsKey(signature)) {
for (FunctionDescProto existing : functions.get(signature)) {
- if (existing.getParameterTypesList().containsAll(params) &&
- params.containsAll(existing.getParameterTypesList())) {
+ if (existing.getParameterTypesList() != null && existing.getParameterTypesList().equals(params)) {
return existing;
}
}
@@ -527,7 +530,7 @@ public class CatalogServer extends AbstractService {
returnValue = containFunction(request.getSignature(), request.getFunctionType(),
request.getParameterTypesList());
} else {
- returnValue = containFunction(request.getSignature());
+ returnValue = containFunction(request.getSignature(), request.getParameterTypesList());
}
return BoolProto.newBuilder().setValue(returnValue).build();
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/9d5be90a/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 a562531..9b10f90 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
@@ -174,6 +174,25 @@ 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,
+ 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));
+
+ assertEquals(retrived.getSignature(),"test10");
+ assertEquals(retrived.getFuncClass(),TestFunc2.class);
+ assertEquals(retrived.getFuncType(),FunctionType.GENERAL);
+
+ catalog.getFunction("test10", CatalogUtil.newSimpleDataTypeArray(Type.BLOB, Type.INT4));
+ }
+
+
@Test
public final void testRegisterFunc() throws Exception {
assertFalse(catalog.containFunction("test2", FunctionType.UDF));
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/9d5be90a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/string/Lpad.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/string/Lpad.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/string/Lpad.java
index 8b5b96b..bc0031e 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/string/Lpad.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/string/Lpad.java
@@ -43,7 +43,8 @@ import org.apache.tajo.storage.Tuple;
example = "> SELECT lpad('hi', 5, 'xy');\n"
+ "xyxhi",
returnType = TajoDataTypes.Type.TEXT,
- paramTypes = {@ParamTypes(paramTypes = {TajoDataTypes.Type.TEXT, TajoDataTypes.Type.INT4, TajoDataTypes.Type.TEXT})}
+ paramTypes = {@ParamTypes(paramTypes = {TajoDataTypes.Type.TEXT, TajoDataTypes.Type.INT4}),
+ @ParamTypes(paramTypes = {TajoDataTypes.Type.TEXT, TajoDataTypes.Type.INT4, TajoDataTypes.Type.TEXT})}
)
public class Lpad extends GeneralFunction {
@Expose private boolean hasFillCharacters;
@@ -86,4 +87,4 @@ public class Lpad extends GeneralFunction {
return DatumFactory.createText(StringUtils.leftPad(datum.asChars(), lengthDatum.asInt4(), fillText.asChars()));
}
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/9d5be90a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/string/Rpad.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/string/Rpad.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/string/Rpad.java
index 35c1afa..225777b 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/string/Rpad.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/string/Rpad.java
@@ -44,7 +44,8 @@ import org.apache.tajo.storage.Tuple;
example = "> SELECT rpad('hi', 5, 'xy');\n"
+ "hixyx",
returnType = TajoDataTypes.Type.TEXT,
- paramTypes = {@ParamTypes(paramTypes = {TajoDataTypes.Type.TEXT, TajoDataTypes.Type.INT4, TajoDataTypes.Type.TEXT})}
+ paramTypes = {@ParamTypes(paramTypes = {TajoDataTypes.Type.TEXT, TajoDataTypes.Type.INT4}),
+ @ParamTypes(paramTypes = {TajoDataTypes.Type.TEXT, TajoDataTypes.Type.INT4, TajoDataTypes.Type.TEXT})}
)
public class Rpad extends GeneralFunction {
@Expose private boolean hasFillCharacters;
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/9d5be90a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/string/Substr.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/string/Substr.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/string/Substr.java
index 8f6cf21..74492b1 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/string/Substr.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/function/string/Substr.java
@@ -39,8 +39,11 @@ import org.apache.tajo.storage.Tuple;
example = "> SELECT substr('alphabet', 3, 2);\n"
+ "ph",
returnType = TajoDataTypes.Type.TEXT,
- paramTypes = {@ParamTypes(paramTypes = {TajoDataTypes.Type.TEXT,
- TajoDataTypes.Type.INT4,TajoDataTypes.Type.INT4})}
+ paramTypes = {
+ @ParamTypes(paramTypes = {TajoDataTypes.Type.TEXT,TajoDataTypes.Type.INT4}),
+ @ParamTypes(paramTypes = {TajoDataTypes.Type.TEXT,TajoDataTypes.Type.INT4,
+ TajoDataTypes.Type.INT4})
+ }
)
public class Substr extends GeneralFunction {
public Substr() {