You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tajo.apache.org by hy...@apache.org on 2014/05/20 20:46:25 UTC
[27/48] git commit: TAJO-792: Insert table error with database name.
(Hyoungjun Kim via hyunsik)
TAJO-792: Insert table error with database name. (Hyoungjun Kim via hyunsik)
Project: http://git-wip-us.apache.org/repos/asf/tajo/repo
Commit: http://git-wip-us.apache.org/repos/asf/tajo/commit/08bcc2d8
Tree: http://git-wip-us.apache.org/repos/asf/tajo/tree/08bcc2d8
Diff: http://git-wip-us.apache.org/repos/asf/tajo/diff/08bcc2d8
Branch: refs/heads/window_function
Commit: 08bcc2d8282fd3b066ed37eafc2c2b142227015d
Parents: bd03209
Author: Hyunsik Choi <hy...@apache.org>
Authored: Wed Apr 30 20:20:32 2014 +0900
Committer: Hyunsik Choi <hy...@apache.org>
Committed: Wed Apr 30 20:20:32 2014 +0900
----------------------------------------------------------------------
CHANGES | 3 +++
.../tajo/engine/planner/LogicalPlanner.java | 17 ++++++++++++----
.../org/apache/tajo/master/GlobalEngine.java | 2 +-
.../tajo/engine/query/TestInsertQuery.java | 21 ++++++++++++++++++--
.../testInsertOverwriteWithDatabase.sql | 1 +
5 files changed, 37 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tajo/blob/08bcc2d8/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 7ac546e..f1bacf4 100644
--- a/CHANGES
+++ b/CHANGES
@@ -31,6 +31,9 @@ Release 0.9.0 - unreleased
BUG FIXES
+ TAJO-792: Insert table error with database name.
+ (Hyoungjun Kim via hyunsik)
+
TAJO-806: CreateTableNode in CTAS uses a wrong schema as output schema and
table schema. (hyunsik)
http://git-wip-us.apache.org/repos/asf/tajo/blob/08bcc2d8/tajo-core/src/main/java/org/apache/tajo/engine/planner/LogicalPlanner.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/engine/planner/LogicalPlanner.java b/tajo-core/src/main/java/org/apache/tajo/engine/planner/LogicalPlanner.java
index 1c63354..63ac515 100644
--- a/tajo-core/src/main/java/org/apache/tajo/engine/planner/LogicalPlanner.java
+++ b/tajo-core/src/main/java/org/apache/tajo/engine/planner/LogicalPlanner.java
@@ -1153,15 +1153,24 @@ public class LogicalPlanner extends BaseAlgebraVisitor<LogicalPlanner.PlanContex
*
* We use the following terms, such target table, target column
* <pre>
- * INSERT INTO TB_NAME (col1, col2) SELECT c1, c2 FROM ...
- * ^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^
- * target table target columns (or schema) projected columns (or schema)
+ * INSERT INTO [DATABASE_NAME.]TB_NAME (col1, col2) SELECT c1, c2 FROM ...
+ * ^^^^^^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^
+ * target database target table target columns (or schema) projected columns (or schema)
* </pre>
*/
private InsertNode buildInsertIntoTablePlan(PlanContext context, InsertNode insertNode, Insert expr)
throws PlanningException {
// Get and set a target table
- TableDesc desc = catalog.getTableDesc(context.session.getCurrentDatabase(), expr.getTableName());
+ String databaseName;
+ String tableName;
+ if (CatalogUtil.isFQTableName(expr.getTableName())) {
+ databaseName = CatalogUtil.extractQualifier(expr.getTableName());
+ tableName = CatalogUtil.extractSimpleName(expr.getTableName());
+ } else {
+ databaseName = context.session.getCurrentDatabase();
+ tableName = expr.getTableName();
+ }
+ TableDesc desc = catalog.getTableDesc(databaseName, tableName);
insertNode.setTargetTable(desc);
//
http://git-wip-us.apache.org/repos/asf/tajo/blob/08bcc2d8/tajo-core/src/main/java/org/apache/tajo/master/GlobalEngine.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/main/java/org/apache/tajo/master/GlobalEngine.java b/tajo-core/src/main/java/org/apache/tajo/master/GlobalEngine.java
index 35b8ab8..c87ad84 100644
--- a/tajo-core/src/main/java/org/apache/tajo/master/GlobalEngine.java
+++ b/tajo-core/src/main/java/org/apache/tajo/master/GlobalEngine.java
@@ -289,7 +289,7 @@ public class GlobalEngine extends AbstractService {
return QueryIdFactory.NULL_QUERY_ID;
}
} catch (Exception e) {
- e.printStackTrace();
+ LOG.error(e.getMessage(), e);
throw new IOException(e.getMessage(), e);
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/08bcc2d8/tajo-core/src/test/java/org/apache/tajo/engine/query/TestInsertQuery.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestInsertQuery.java b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestInsertQuery.java
index c7df75c..06ce973 100644
--- a/tajo-core/src/test/java/org/apache/tajo/engine/query/TestInsertQuery.java
+++ b/tajo-core/src/test/java/org/apache/tajo/engine/query/TestInsertQuery.java
@@ -34,7 +34,6 @@ import org.junit.experimental.categories.Category;
import java.sql.ResultSet;
-import static org.apache.tajo.TajoConstants.DEFAULT_DATABASE_NAME;
import static org.junit.Assert.*;
@Category(IntegrationTest.class)
@@ -256,7 +255,8 @@ public class TestInsertQuery extends QueryTestCaseBase {
CatalogService catalog = testingCluster.getMaster().getCatalog();
assertTrue(catalog.existsTable(getCurrentDatabase(), "full_table_parquet"));
- res = executeString("insert overwrite into full_table_parquet select * from default.lineitem where l_orderkey = 3");
+ res = executeString(
+ "insert overwrite into full_table_parquet select * from default.lineitem where l_orderkey = 3");
res.close();
TableDesc desc = catalog.getTableDesc(getCurrentDatabase(), "full_table_parquet");
if (!testingCluster.isHCatalogStoreRunning()) {
@@ -272,4 +272,21 @@ public class TestInsertQuery extends QueryTestCaseBase {
executeString("DROP TABLE full_table_parquet_ddl PURGE");
}
}
+
+ @Test
+ public final void testInsertOverwriteWithDatabase() throws Exception {
+ ResultSet res = executeFile("table1_ddl.sql");
+ res.close();
+
+ CatalogService catalog = testingCluster.getMaster().getCatalog();
+ assertTrue(catalog.existsTable(getCurrentDatabase(), "table1"));
+
+ res = executeQuery();
+ res.close();
+
+ TableDesc desc = catalog.getTableDesc(getCurrentDatabase(), "table1");
+ if (!testingCluster.isHCatalogStoreRunning()) {
+ assertEquals(5, desc.getStats().getNumRows().intValue());
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/08bcc2d8/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwriteWithDatabase.sql
----------------------------------------------------------------------
diff --git a/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwriteWithDatabase.sql b/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwriteWithDatabase.sql
new file mode 100644
index 0000000..db18c0e
--- /dev/null
+++ b/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwriteWithDatabase.sql
@@ -0,0 +1 @@
+insert overwrite into table1 select l_orderkey, l_partkey, l_quantity from default.lineitem;
\ No newline at end of file