You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tajo.apache.org by bl...@apache.org on 2014/03/06 10:07:39 UTC
git commit: TAJO-663: CREATE TABLE USING RAW doesn't throw ERROR.
(jaehwa)
Repository: incubator-tajo
Updated Branches:
refs/heads/master 887252b25 -> 9c920d894
TAJO-663: CREATE TABLE USING RAW doesn't throw ERROR. (jaehwa)
Project: http://git-wip-us.apache.org/repos/asf/incubator-tajo/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tajo/commit/9c920d89
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tajo/tree/9c920d89
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tajo/diff/9c920d89
Branch: refs/heads/master
Commit: 9c920d894d5f6205e4ecec5d37fd7e15ecc59272
Parents: 887252b
Author: blrunner <jh...@gruter.com>
Authored: Thu Mar 6 18:05:08 2014 +0900
Committer: blrunner <jh...@gruter.com>
Committed: Thu Mar 6 18:05:08 2014 +0900
----------------------------------------------------------------------
CHANGES.txt | 2 ++
.../engine/planner/PreLogicalPlanVerifier.java | 10 +++++++
.../apache/tajo/engine/eval/ExprTestBase.java | 31 ++++++++++++++++----
.../apache/tajo/engine/eval/TestPredicates.java | 6 ++++
.../TestStringOperatorsAndFunctions.java | 6 ++--
5 files changed, 46 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/9c920d89/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 26afdc4..968681e 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -269,6 +269,8 @@ Release 0.8.0 - unreleased
BUG FIXES
+ TAJO-663: CREATE TABLE USING RAW doesn't throw ERROR. (jaehwa)
+
TAJO-665: sort buffer size must be dealt as long type values.
(hyoungjunkim via hyunsik)
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/9c920d89/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/PreLogicalPlanVerifier.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/PreLogicalPlanVerifier.java b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/PreLogicalPlanVerifier.java
index 024a9ae..b225012 100644
--- a/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/PreLogicalPlanVerifier.java
+++ b/tajo-core/tajo-core-backend/src/main/java/org/apache/tajo/engine/planner/PreLogicalPlanVerifier.java
@@ -21,6 +21,7 @@ package org.apache.tajo.engine.planner;
import com.google.common.collect.ObjectArrays;
import org.apache.tajo.algebra.*;
import org.apache.tajo.catalog.CatalogService;
+import org.apache.tajo.catalog.proto.CatalogProtos;
import org.apache.tajo.util.TUtil;
import java.util.Arrays;
@@ -138,6 +139,14 @@ public class PreLogicalPlanVerifier extends BaseAlgebraVisitor <VerificationStat
return true;
}
+ private boolean assertUnsupportedStoreType(VerificationState state, String name) {
+ if (name.equals(CatalogProtos.StoreType.RAW.name())) {
+ state.addVerification(String.format("Unsupported store type :%s", name));
+ return false;
+ }
+ return true;
+ }
+
///////////////////////////////////////////////////////////////////////////////////////////////////////////
// Data Definition Language Section
///////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -146,6 +155,7 @@ public class PreLogicalPlanVerifier extends BaseAlgebraVisitor <VerificationStat
public Expr visitCreateTable(VerificationState state, Stack<Expr> stack, CreateTable expr) throws PlanningException {
super.visitCreateTable(state, stack, expr);
assertRelationNoExistence(state, expr.getTableName());
+ assertUnsupportedStoreType(state, expr.getStorageType());
return expr;
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/9c920d89/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java b/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java
index 622da90..2982f83 100644
--- a/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java
+++ b/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/eval/ExprTestBase.java
@@ -80,11 +80,22 @@ public class ExprTestBase {
assertEquals(expr, fromJson);
}
- private static Target[] getRawTargets(String query) throws PlanningException {
+ /**
+ * verify query syntax and get raw targets.
+ *
+ * @param query a query for execution
+ * @param condition this parameter means whether it is for success case or is not for failure case.
+ * @return
+ * @throws PlanningException
+ */
+ private static Target[] getRawTargets(String query, boolean condition) throws PlanningException {
Expr expr = analyzer.parse(query);
VerificationState state = new VerificationState();
preLogicalPlanVerifier.visit(state, new Stack<Expr>(), expr);
if (state.getErrorMessages().size() > 0) {
+ if (!condition && state.getErrorMessages().size() > 0) {
+ throw new PlanningException(state.getErrorMessages().get(0));
+ }
assertFalse(state.getErrorMessages().get(0), true);
}
LogicalPlan plan = planner.createPlan(expr, true);
@@ -109,13 +120,17 @@ public class ExprTestBase {
testEval(null, null, null, query, expected);
}
+ public void testSimpleEval(String query, String [] expected, boolean condition) throws IOException {
+ testEval(null, null, null, query, expected, ',', condition);
+ }
+
public void testEval(Schema schema, String tableName, String csvTuple, String query, String [] expected)
throws IOException {
- testEval(schema, tableName, csvTuple, query, expected, ',');
+ testEval(schema, tableName, csvTuple, query, expected, ',', true);
}
public void testEval(Schema schema, String tableName, String csvTuple, String query, String [] expected,
- char delimiter) throws IOException {
+ char delimiter, boolean condition) throws IOException {
LazyTuple lazyTuple;
VTuple vtuple = null;
Schema inputSchema = null;
@@ -146,7 +161,7 @@ public class ExprTestBase {
Target [] targets;
try {
- targets = getRawTargets(query);
+ targets = getRawTargets(query, condition);
Tuple outTuple = new VTuple(targets.length);
for (int i = 0; i < targets.length; i++) {
@@ -158,7 +173,13 @@ public class ExprTestBase {
assertEquals(query, expected[i], outTuple.get(i).asChars());
}
} catch (PlanningException e) {
- assertFalse(e.getMessage(), true);
+ // In failure test case, an exception must occur while executing query.
+ // So, we should check an error message, and return it.
+ if (!condition) {
+ assertEquals(expected[0], e.getMessage());
+ } else {
+ assertFalse(e.getMessage(), true);
+ }
} finally {
if (schema != null) {
cat.deleteTable(tableName);
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/9c920d89/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/eval/TestPredicates.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/eval/TestPredicates.java b/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/eval/TestPredicates.java
index 86b921f..39c7492 100644
--- a/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/eval/TestPredicates.java
+++ b/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/eval/TestPredicates.java
@@ -353,4 +353,10 @@ public class TestPredicates extends ExprTestBase {
testEval(schema, "table1", "t,f", "select not col1 is not true, not col2 is not false from table1",
new String [] {"t", "t"});
}
+
+ @Test
+ public void testCreateTableWithUnsupportedStoreType() throws IOException {
+ testSimpleEval("create table table1 (name text, age int) using RAW;", new String[] {"Unsupported store type :RAW"}, false);
+ }
+
}
http://git-wip-us.apache.org/repos/asf/incubator-tajo/blob/9c920d89/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/function/TestStringOperatorsAndFunctions.java
----------------------------------------------------------------------
diff --git a/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/function/TestStringOperatorsAndFunctions.java b/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/function/TestStringOperatorsAndFunctions.java
index f1d0ce3..71d7b85 100644
--- a/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/function/TestStringOperatorsAndFunctions.java
+++ b/tajo-core/tajo-core-backend/src/test/java/org/apache/tajo/engine/function/TestStringOperatorsAndFunctions.java
@@ -21,14 +21,12 @@ package org.apache.tajo.engine.function;
import org.apache.commons.lang.StringEscapeUtils;
import org.apache.tajo.catalog.Schema;
-import org.apache.tajo.catalog.exception.NoSuchFunctionException;
import org.apache.tajo.engine.eval.ExprTestBase;
import org.junit.Test;
import java.io.IOException;
import static org.apache.tajo.common.TajoDataTypes.Type.*;
-import static org.junit.Assert.fail;
public class TestStringOperatorsAndFunctions extends ExprTestBase {
@@ -594,8 +592,8 @@ public class TestStringOperatorsAndFunctions extends ExprTestBase {
schema.addColumn("col1", TEXT);
schema.addColumn("col2", TEXT);
testEval(schema, "table1", "|crt,c,cr,c,def", "select find_in_set(col1, col2) is null from table1",
- new String[]{"t"}, '|');
+ new String[]{"t"}, '|', true);
testEval(schema, "table1", "cr|", "select find_in_set(col1, col2) is null from table1",
- new String[]{"t"}, '|');
+ new String[]{"t"}, '|', true);
}
}