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 2015/09/10 23:20:38 UTC
tajo git commit: TAJO-1727: Avoid to create external table using
TableSpace.
Repository: tajo
Updated Branches:
refs/heads/master 508d17a2d -> 238f0b366
TAJO-1727: Avoid to create external table using TableSpace.
Closes #732
Project: http://git-wip-us.apache.org/repos/asf/tajo/repo
Commit: http://git-wip-us.apache.org/repos/asf/tajo/commit/238f0b36
Tree: http://git-wip-us.apache.org/repos/asf/tajo/tree/238f0b36
Diff: http://git-wip-us.apache.org/repos/asf/tajo/diff/238f0b36
Branch: refs/heads/master
Commit: 238f0b3662b919e9b20bdc0bcda647c0d0650ffc
Parents: 508d17a
Author: JaeHwa Jung <bl...@apache.org>
Authored: Fri Sep 11 06:17:43 2015 +0900
Committer: JaeHwa Jung <bl...@apache.org>
Committed: Fri Sep 11 06:17:43 2015 +0900
----------------------------------------------------------------------
CHANGES | 2 ++
.../engine/planner/TestQueryValidation.java | 21 ++++++++++++++++++++
.../create_external_table_with_tablespace.sql | 1 +
.../create_external_table_without_location.sql | 1 +
.../org/apache/tajo/parser/sql/SQLAnalyzer.java | 6 ++++++
5 files changed, 31 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tajo/blob/238f0b36/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 250a612..a6e8d0a 100644
--- a/CHANGES
+++ b/CHANGES
@@ -257,6 +257,8 @@ Release 0.11.0 - unreleased
BUG FIXES
+ TAJO-1727: Avoid to create external table using TableSpace. (jaehwa)
+
TAJO-1600: Invalid query planning for distinct group-by. (hyunsik)
TAJO-1782: Check ON_ERROR_STOP flag in TSQL when error is occured.
http://git-wip-us.apache.org/repos/asf/tajo/blob/238f0b36/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestQueryValidation.java
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestQueryValidation.java b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestQueryValidation.java
index f2e8e64..cb299b4 100644
--- a/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestQueryValidation.java
+++ b/tajo-core-tests/src/test/java/org/apache/tajo/engine/planner/TestQueryValidation.java
@@ -19,11 +19,16 @@
package org.apache.tajo.engine.planner;
import org.apache.tajo.QueryTestCaseBase;
+import org.apache.tajo.exception.SQLSyntaxError;
import org.junit.Test;
+import org.junit.Rule;
+import org.junit.rules.ExpectedException;
import java.io.IOException;
public class TestQueryValidation extends QueryTestCaseBase {
+ @Rule
+ public ExpectedException exception = ExpectedException.none();
@Test
public void testInsertWithWrongTargetColumn() throws Exception {
@@ -62,4 +67,20 @@ public class TestQueryValidation extends QueryTestCaseBase {
// See TAJO-1249
assertInvalidSQLFromFile("invalid_store_format.sql");
}
+
+ @Test
+ public void testCreateExternalTableWithTablespace() throws Exception {
+ exception.expect(SQLSyntaxError.class);
+ exception.expectMessage("Tablespace clause is not allowed for an external table.");
+
+ executeFile("create_external_table_with_tablespace.sql");
+ }
+
+ @Test
+ public void testCreateExternalTableWithoutLocation() throws Exception {
+ exception.expect(SQLSyntaxError.class);
+ exception.expectMessage("LOCATION clause must be required for an external table.");
+
+ executeFile("create_external_table_without_location.sql");
+ }
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/238f0b36/tajo-core-tests/src/test/resources/queries/TestQueryValidation/create_external_table_with_tablespace.sql
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/resources/queries/TestQueryValidation/create_external_table_with_tablespace.sql b/tajo-core-tests/src/test/resources/queries/TestQueryValidation/create_external_table_with_tablespace.sql
new file mode 100644
index 0000000..440d976
--- /dev/null
+++ b/tajo-core-tests/src/test/resources/queries/TestQueryValidation/create_external_table_with_tablespace.sql
@@ -0,0 +1 @@
+CREATE EXTERNAL TABLE hbase_blog (rowkey text, author text, register_date text, title text) TABLESPACE hbasecluster1 USING hbase WITH ('table'='blog', 'columns'=':key,info:author,info:date,content:title')
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tajo/blob/238f0b36/tajo-core-tests/src/test/resources/queries/TestQueryValidation/create_external_table_without_location.sql
----------------------------------------------------------------------
diff --git a/tajo-core-tests/src/test/resources/queries/TestQueryValidation/create_external_table_without_location.sql b/tajo-core-tests/src/test/resources/queries/TestQueryValidation/create_external_table_without_location.sql
new file mode 100644
index 0000000..8e19709
--- /dev/null
+++ b/tajo-core-tests/src/test/resources/queries/TestQueryValidation/create_external_table_without_location.sql
@@ -0,0 +1 @@
+CREATE EXTERNAL TABLE table1 (id int, str text, num int) using text
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tajo/blob/238f0b36/tajo-core/src/main/java/org/apache/tajo/parser/sql/SQLAnalyzer.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/parser/sql/SQLAnalyzer.java b/tajo-core/src/main/java/org/apache/tajo/parser/sql/SQLAnalyzer.java
index 188a4f5..793cb1c 100644
--- a/tajo-core/src/main/java/org/apache/tajo/parser/sql/SQLAnalyzer.java
+++ b/tajo-core/src/main/java/org/apache/tajo/parser/sql/SQLAnalyzer.java
@@ -1285,6 +1285,10 @@ public class SQLAnalyzer extends SQLParserBaseVisitor<Expr> {
if (checkIfExist(ctx.EXTERNAL())) {
createTable.setExternal();
+ if (checkIfExist(ctx.TABLESPACE())) {
+ throw new TajoRuntimeException(new SQLSyntaxError("Tablespace clause is not allowed for an external table."));
+ }
+
ColumnDefinition[] elements = getDefinitions(ctx.table_elements());
String storageType = ctx.storage_type.getText();
createTable.setTableElements(elements);
@@ -1293,6 +1297,8 @@ public class SQLAnalyzer extends SQLParserBaseVisitor<Expr> {
if (checkIfExist(ctx.LOCATION())) {
String uri = stripQuote(ctx.uri.getText());
createTable.setLocation(uri);
+ } else {
+ throw new TajoRuntimeException(new SQLSyntaxError("LOCATION clause must be required for an external table."));
}
} else {
if (checkIfExist(ctx.table_elements())) {