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:21 UTC
[23/48] git commit: TAJO-806: CreateTableNode in CTAS uses a wrong
schema as output schema and table schema. (hyunsik)
TAJO-806: CreateTableNode in CTAS uses a wrong schema as output schema and table schema. (hyunsik)
Project: http://git-wip-us.apache.org/repos/asf/tajo/repo
Commit: http://git-wip-us.apache.org/repos/asf/tajo/commit/cde1bcaf
Tree: http://git-wip-us.apache.org/repos/asf/tajo/tree/cde1bcaf
Diff: http://git-wip-us.apache.org/repos/asf/tajo/diff/cde1bcaf
Branch: refs/heads/window_function
Commit: cde1bcaf563befb8889cafc23e72850782725488
Parents: d5347c6
Author: Hyunsik Choi <hy...@apache.org>
Authored: Wed Apr 30 18:25:55 2014 +0900
Committer: Hyunsik Choi <hy...@apache.org>
Committed: Wed Apr 30 18:25:55 2014 +0900
----------------------------------------------------------------------
CHANGES | 3 +
.../apache/tajo/cli/ConnectDatabaseCommand.java | 2 +-
.../tajo/engine/planner/LogicalPlanner.java | 7 +-
.../java/org/apache/tajo/QueryTestCaseBase.java | 2 +-
.../tajo/engine/query/TestInsertQuery.java | 197 ++++++++++---------
.../TestInsertQuery/full_table_csv_ddl.sql | 1 +
.../TestInsertQuery/full_table_parquet_ddl.sql | 1 +
.../queries/TestInsertQuery/table1_ddl.sql | 1 +
.../TestInsertQuery/testInsertOverwrite.sql | 1 +
.../testInsertOverwriteLocation.sql | 1 +
...stInsertOverwriteLocationWithCompression.sql | 1 +
.../testInsertOverwriteSmallerColumns.sql | 1 +
.../testInsertOverwriteWithAsterisk.sql | 1 +
.../testInsertOverwriteWithCompression.sql | 1 +
.../testInsertOverwriteWithCompression_ddl.sql | 4 +
.../testInsertOverwriteWithTargetColumns.sql | 1 +
...sertOverwriteWithAsteriskUsingParquet.result | 4 +
...ertOverwriteWithAsteriskUsingParquet2.result | 4 +
.../tajo/storage/parquet/ParquetScanner.java | 3 +-
.../tajo/storage/parquet/TajoReadSupport.java | 16 +-
.../tajo/storage/parquet/TajoWriteSupport.java | 4 -
21 files changed, 139 insertions(+), 117 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/tajo/blob/cde1bcaf/CHANGES
----------------------------------------------------------------------
diff --git a/CHANGES b/CHANGES
index 40f5806..b71cbc6 100644
--- a/CHANGES
+++ b/CHANGES
@@ -29,6 +29,9 @@ Release 0.9.0 - unreleased
BUG FIXES
+ TAJO-806: CreateTableNode in CTAS uses a wrong schema as output schema and
+ table schema. (hyunsik)
+
TAJO-805: Multiple constant in selection emits some columns.
(Hyoungjun Kim via hyunsik)
http://git-wip-us.apache.org/repos/asf/tajo/blob/cde1bcaf/tajo-client/src/main/java/org/apache/tajo/cli/ConnectDatabaseCommand.java
----------------------------------------------------------------------
diff --git a/tajo-client/src/main/java/org/apache/tajo/cli/ConnectDatabaseCommand.java b/tajo-client/src/main/java/org/apache/tajo/cli/ConnectDatabaseCommand.java
index 4ec4611..cb0bfdb 100644
--- a/tajo-client/src/main/java/org/apache/tajo/cli/ConnectDatabaseCommand.java
+++ b/tajo-client/src/main/java/org/apache/tajo/cli/ConnectDatabaseCommand.java
@@ -39,7 +39,7 @@ public class ConnectDatabaseCommand extends TajoShellCommand {
} else if (cmd.length == 2) {
if (!client.existDatabase(cmd[1])) {
- context.getOutput().write(cmd[1] + " database not found\n");
+ context.getOutput().write("Database '" + cmd[1] + "' not found\n");
} else {
try {
if (client.selectDatabase(cmd[1])) {
http://git-wip-us.apache.org/repos/asf/tajo/blob/cde1bcaf/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 f2ddf13..1c63354 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
@@ -1371,8 +1371,11 @@ public class LogicalPlanner extends BaseAlgebraVisitor<LogicalPlanner.PlanContex
createTableNode.setOutSchema(tableSchema);
createTableNode.setTableSchema(tableSchema);
} else {
- createTableNode.setOutSchema(subQuery.getOutSchema());
- createTableNode.setTableSchema(subQuery.getOutSchema());
+ // Convert the schema of subquery into the target table's one.
+ Schema schema = new Schema(subQuery.getOutSchema());
+ schema.setQualifier(createTableNode.getTableName());
+ createTableNode.setOutSchema(schema);
+ createTableNode.setTableSchema(schema);
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/cde1bcaf/tajo-core/src/test/java/org/apache/tajo/QueryTestCaseBase.java
----------------------------------------------------------------------
diff --git a/tajo-core/src/test/java/org/apache/tajo/QueryTestCaseBase.java b/tajo-core/src/test/java/org/apache/tajo/QueryTestCaseBase.java
index 961184c..bf5891a 100644
--- a/tajo-core/src/test/java/org/apache/tajo/QueryTestCaseBase.java
+++ b/tajo-core/src/test/java/org/apache/tajo/QueryTestCaseBase.java
@@ -224,7 +224,7 @@ public class QueryTestCaseBase {
}
protected ResultSet executeString(String sql) throws Exception {
- return testBase.execute(sql);
+ return client.executeQueryAndGetResult(sql);
}
/**
http://git-wip-us.apache.org/repos/asf/tajo/blob/cde1bcaf/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 e058943..c7df75c 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
@@ -25,90 +25,77 @@ import org.apache.hadoop.io.compress.CompressionCodec;
import org.apache.hadoop.io.compress.CompressionCodecFactory;
import org.apache.hadoop.io.compress.DeflateCodec;
import org.apache.tajo.IntegrationTest;
-import org.apache.tajo.TajoTestingCluster;
-import org.apache.tajo.TpchTestBase;
+import org.apache.tajo.QueryTestCaseBase;
import org.apache.tajo.catalog.CatalogService;
import org.apache.tajo.catalog.CatalogUtil;
import org.apache.tajo.catalog.TableDesc;
-import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.experimental.categories.Category;
-import java.io.IOException;
import java.sql.ResultSet;
import static org.apache.tajo.TajoConstants.DEFAULT_DATABASE_NAME;
import static org.junit.Assert.*;
@Category(IntegrationTest.class)
-public class TestInsertQuery {
- private static TpchTestBase tpch;
- public TestInsertQuery() throws IOException {
- super();
- }
-
- @BeforeClass
- public static void setUp() throws Exception {
- tpch = TpchTestBase.getInstance();
- }
+public class TestInsertQuery extends QueryTestCaseBase {
@Test
public final void testInsertOverwrite() throws Exception {
- String tableName = CatalogUtil.normalizeIdentifier("InsertOverwrite");
- ResultSet res = tpch.execute("create table " + tableName +" (col1 int4, col2 int4, col3 float8)");
+ ResultSet res = executeFile("table1_ddl.sql");
res.close();
- TajoTestingCluster cluster = tpch.getTestingCluster();
- CatalogService catalog = cluster.getMaster().getCatalog();
- assertTrue(catalog.existsTable(DEFAULT_DATABASE_NAME, tableName));
- res = tpch.execute("insert overwrite into " + tableName
- + " select l_orderkey, l_partkey, l_quantity from lineitem");
+ CatalogService catalog = testingCluster.getMaster().getCatalog();
+ assertTrue(catalog.existsTable(getCurrentDatabase(), "table1"));
+
+ res = executeFile("testInsertOverwrite.sql");
res.close();
- TableDesc desc = catalog.getTableDesc(DEFAULT_DATABASE_NAME, tableName);
- if (!cluster.isHCatalogStoreRunning()) {
+ TableDesc desc = catalog.getTableDesc(getCurrentDatabase(), "table1");
+ if (!testingCluster.isHCatalogStoreRunning()) {
assertEquals(5, desc.getStats().getNumRows().intValue());
}
+
+ executeString("DROP TABLE table1 PURGE");
}
@Test
public final void testInsertOverwriteSmallerColumns() throws Exception {
- String tableName = CatalogUtil.normalizeIdentifier("insertoverwritesmallercolumns");
- ResultSet res = tpch.execute("create table " + tableName + " (col1 int4, col2 int4, col3 float8)");
+ ResultSet res = executeFile("table1_ddl.sql");
res.close();
- TajoTestingCluster cluster = tpch.getTestingCluster();
- CatalogService catalog = cluster.getMaster().getCatalog();
- assertTrue(catalog.existsTable(DEFAULT_DATABASE_NAME, tableName));
- TableDesc originalDesc = catalog.getTableDesc(DEFAULT_DATABASE_NAME, tableName);
- res = tpch.execute("insert overwrite into " + tableName + " select l_orderkey from lineitem");
+ CatalogService catalog = testingCluster.getMaster().getCatalog();
+ assertTrue(catalog.existsTable(getCurrentDatabase(), "table1"));
+ TableDesc originalDesc = catalog.getTableDesc(getCurrentDatabase(), "table1");
+
+ res = executeFile("testInsertOverwriteSmallerColumns.sql");
res.close();
- TableDesc desc = catalog.getTableDesc(DEFAULT_DATABASE_NAME, tableName);
- if (!cluster.isHCatalogStoreRunning()) {
+ TableDesc desc = catalog.getTableDesc(getCurrentDatabase(), "table1");
+ if (!testingCluster.isHCatalogStoreRunning()) {
assertEquals(5, desc.getStats().getNumRows().intValue());
}
assertEquals(originalDesc.getSchema(), desc.getSchema());
+
+ executeString("DROP TABLE table1 PURGE");
}
@Test
public final void testInsertOverwriteWithTargetColumns() throws Exception {
- String tableName = CatalogUtil.normalizeIdentifier("InsertOverwriteWithTargetColumns");
- ResultSet res = tpch.execute("create table " + tableName + " (col1 int4, col2 int4, col3 float8)");
+ ResultSet res = executeFile("table1_ddl.sql");
res.close();
- TajoTestingCluster cluster = tpch.getTestingCluster();
- CatalogService catalog = cluster.getMaster().getCatalog();
- assertTrue(catalog.existsTable(DEFAULT_DATABASE_NAME, tableName));
- TableDesc originalDesc = catalog.getTableDesc(DEFAULT_DATABASE_NAME, tableName);
- res = tpch.execute(
- "insert overwrite into " + tableName + " (col1, col3) select l_orderkey, l_quantity from lineitem");
+ CatalogService catalog = testingCluster.getMaster().getCatalog();
+ assertTrue(catalog.existsTable(getCurrentDatabase(), "table1"));
+ TableDesc originalDesc = catalog.getTableDesc(getCurrentDatabase(), "table1");
+
+ res = executeFile("testInsertOverwriteWithTargetColumns.sql");
res.close();
- TableDesc desc = catalog.getTableDesc(DEFAULT_DATABASE_NAME, tableName);
- if (!cluster.isHCatalogStoreRunning()) {
+ TableDesc desc = catalog.getTableDesc(getCurrentDatabase(), "table1");
+ if (!testingCluster.isHCatalogStoreRunning()) {
assertEquals(5, desc.getStats().getNumRows().intValue());
}
- res = tpch.execute("select * from " + tableName);
+ res = executeString("select * from " + CatalogUtil.denormalizeIdentifier(getCurrentDatabase()) + ".table1");
assertTrue(res.next());
assertEquals(1, res.getLong(1));
@@ -143,21 +130,22 @@ public class TestInsertQuery {
res.close();
assertEquals(originalDesc.getSchema(), desc.getSchema());
+
+ executeString("DROP TABLE table1 PURGE");
}
@Test
public final void testInsertOverwriteWithAsterisk() throws Exception {
- String tableName = CatalogUtil.normalizeIdentifier("testinsertoverwritewithasterisk");
- ResultSet res = tpch.execute("create table " + tableName + " as select * from lineitem");
+ ResultSet res = executeFile("full_table_csv_ddl.sql");
res.close();
- TajoTestingCluster cluster = tpch.getTestingCluster();
- CatalogService catalog = cluster.getMaster().getCatalog();
- assertTrue(catalog.existsTable(DEFAULT_DATABASE_NAME, tableName));
- res = tpch.execute("insert overwrite into " + tableName + " select * from lineitem where l_orderkey = 3");
+ CatalogService catalog = testingCluster.getMaster().getCatalog();
+ assertTrue(catalog.existsTable(getCurrentDatabase(), "full_table_csv"));
+
+ res = executeString("insert overwrite into full_table_csv select * from default.lineitem where l_orderkey = 3");
res.close();
- TableDesc desc = catalog.getTableDesc(DEFAULT_DATABASE_NAME, tableName);
- if (!cluster.isHCatalogStoreRunning()) {
+ TableDesc desc = catalog.getTableDesc(getCurrentDatabase(), "full_table_csv");
+ if (!testingCluster.isHCatalogStoreRunning()) {
assertEquals(2, desc.getStats().getNumRows().intValue());
}
}
@@ -165,28 +153,26 @@ public class TestInsertQuery {
@Test
public final void testInsertOverwriteIntoSelect() throws Exception {
String tableName = CatalogUtil.normalizeIdentifier("insertoverwriteintoselect");
- ResultSet res = tpch.execute(
- "create table " + tableName + " as select l_orderkey from lineitem");
+ ResultSet res = executeString("create table " + tableName + " as select l_orderkey from default.lineitem");
assertFalse(res.next());
res.close();
- TajoTestingCluster cluster = tpch.getTestingCluster();
- CatalogService catalog = cluster.getMaster().getCatalog();
- assertTrue(catalog.existsTable(DEFAULT_DATABASE_NAME, tableName));
- TableDesc orderKeys = catalog.getTableDesc(DEFAULT_DATABASE_NAME, tableName);
- if (!cluster.isHCatalogStoreRunning()) {
+
+ CatalogService catalog = testingCluster.getMaster().getCatalog();
+ assertTrue(catalog.existsTable(getCurrentDatabase(), tableName));
+ TableDesc orderKeys = catalog.getTableDesc(getCurrentDatabase(), tableName);
+ if (!testingCluster.isHCatalogStoreRunning()) {
assertEquals(5, orderKeys.getStats().getNumRows().intValue());
}
// this query will result in the two rows.
- res = tpch.execute(
- "insert overwrite into " + tableName + " select l_orderkey from lineitem where l_orderkey = 3");
+ res = executeString("insert overwrite into " + tableName + " select l_orderkey from default.lineitem where l_orderkey = 3");
assertFalse(res.next());
res.close();
- assertTrue(catalog.existsTable(DEFAULT_DATABASE_NAME, tableName));
- orderKeys = catalog.getTableDesc(DEFAULT_DATABASE_NAME, tableName);
- if (!cluster.isHCatalogStoreRunning()) {
+ assertTrue(catalog.existsTable(getCurrentDatabase(), tableName));
+ orderKeys = catalog.getTableDesc(getCurrentDatabase(), tableName);
+ if (!testingCluster.isHCatalogStoreRunning()) {
assertEquals(2, orderKeys.getStats().getNumRows().intValue());
}
}
@@ -194,26 +180,25 @@ public class TestInsertQuery {
@Test
public final void testInsertOverwriteCapitalTableName() throws Exception {
String tableName = CatalogUtil.normalizeIdentifier("testInsertOverwriteCapitalTableName");
- ResultSet res = tpch.execute("create table " + tableName + " as select * from lineitem");
+ ResultSet res = executeString("create table " + tableName + " as select * from default.lineitem");
res.close();
- TajoTestingCluster cluster = tpch.getTestingCluster();
- CatalogService catalog = cluster.getMaster().getCatalog();
- assertTrue(catalog.existsTable(DEFAULT_DATABASE_NAME, tableName));
- res = tpch.execute("insert overwrite into " + tableName + " select * from lineitem where l_orderkey = 3");
+ CatalogService catalog = testingCluster.getMaster().getCatalog();
+ assertTrue(catalog.existsTable(getCurrentDatabase(), tableName));
+
+ res = executeString("insert overwrite into " + tableName + " select * from default.lineitem where l_orderkey = 3");
res.close();
- TableDesc desc = catalog.getTableDesc(DEFAULT_DATABASE_NAME, tableName);
- if (!cluster.isHCatalogStoreRunning()) {
+ TableDesc desc = catalog.getTableDesc(getCurrentDatabase(), tableName);
+ if (!testingCluster.isHCatalogStoreRunning()) {
assertEquals(2, desc.getStats().getNumRows().intValue());
}
}
@Test
public final void testInsertOverwriteLocation() throws Exception {
- ResultSet res =
- tpch.execute("insert overwrite into location '/tajo-data/testInsertOverwriteCapitalTableName' select * from lineitem where l_orderkey = 3");
+ ResultSet res = executeQuery();
res.close();
- FileSystem fs = FileSystem.get(tpch.getTestingCluster().getConfiguration());
+ FileSystem fs = FileSystem.get(testingCluster.getConfiguration());
assertTrue(fs.exists(new Path("/tajo-data/testInsertOverwriteCapitalTableName")));
assertEquals(1, fs.listStatus(new Path("/tajo-data/testInsertOverwriteCapitalTableName")).length);
}
@@ -221,22 +206,22 @@ public class TestInsertQuery {
@Test
public final void testInsertOverwriteWithCompression() throws Exception {
String tableName = CatalogUtil.normalizeIdentifier("testInsertOverwriteWithCompression");
- ResultSet res = tpch.execute("create table " + tableName + " (col1 int4, col2 int4, col3 float8) USING csv WITH ('csvfile.delimiter'='|','compression.codec'='org.apache.hadoop.io.compress.DeflateCodec')");
+ ResultSet res = executeFile("testInsertOverwriteWithCompression_ddl.sql");
res.close();
- TajoTestingCluster cluster = tpch.getTestingCluster();
- CatalogService catalog = cluster.getMaster().getCatalog();
- assertTrue(catalog.existsTable(DEFAULT_DATABASE_NAME, tableName));
- res = tpch.execute("insert overwrite into " + tableName + " select l_orderkey, l_partkey, l_quantity from lineitem where l_orderkey = 3");
+ CatalogService catalog = testingCluster.getMaster().getCatalog();
+ assertTrue(catalog.existsTable(getCurrentDatabase(), tableName));
+
+ res = executeQuery();
res.close();
- TableDesc desc = catalog.getTableDesc(DEFAULT_DATABASE_NAME, tableName);
- if (!cluster.isHCatalogStoreRunning()) {
+ TableDesc desc = catalog.getTableDesc(getCurrentDatabase(), tableName);
+ if (!testingCluster.isHCatalogStoreRunning()) {
assertEquals(2, desc.getStats().getNumRows().intValue());
}
- FileSystem fs = FileSystem.get(tpch.getTestingCluster().getConfiguration());
+ FileSystem fs = FileSystem.get(testingCluster.getConfiguration());
assertTrue(fs.exists(desc.getPath()));
- CompressionCodecFactory factory = new CompressionCodecFactory(tpch.getTestingCluster().getConfiguration());
+ CompressionCodecFactory factory = new CompressionCodecFactory(testingCluster.getConfiguration());
for (FileStatus file : fs.listStatus(desc.getPath())) {
CompressionCodec codec = factory.getCodec(file.getPath());
@@ -246,17 +231,45 @@ public class TestInsertQuery {
@Test
public final void testInsertOverwriteLocationWithCompression() throws Exception {
- ResultSet res = tpch.execute("insert overwrite into location '/tajo-data/testInsertOverwriteLocationWithCompression' USING csv WITH ('csvfile.delimiter'='|','compression.codec'='org.apache.hadoop.io.compress.DeflateCodec') select * from lineitem where l_orderkey = 3");
- res.close();
- FileSystem fs = FileSystem.get(tpch.getTestingCluster().getConfiguration());
- Path path = new Path("/tajo-data/testInsertOverwriteLocationWithCompression");
- assertTrue(fs.exists(path));
- assertEquals(1, fs.listStatus(path).length);
+ if (!testingCluster.isHCatalogStoreRunning()) {
+ ResultSet res = executeQuery();
+ res.close();
+ FileSystem fs = FileSystem.get(testingCluster.getConfiguration());
+ Path path = new Path("/tajo-data/testInsertOverwriteLocationWithCompression");
+ assertTrue(fs.exists(path));
+ assertEquals(1, fs.listStatus(path).length);
+
+ CompressionCodecFactory factory = new CompressionCodecFactory(testingCluster.getConfiguration());
+ for (FileStatus file : fs.listStatus(path)){
+ CompressionCodec codec = factory.getCodec(file.getPath());
+ assertTrue(codec instanceof DeflateCodec);
+ }
+ }
+ }
- CompressionCodecFactory factory = new CompressionCodecFactory(tpch.getTestingCluster().getConfiguration());
- for (FileStatus file : fs.listStatus(path)){
- CompressionCodec codec = factory.getCodec(file.getPath());
- assertTrue(codec instanceof DeflateCodec);
+ @Test
+ public final void testInsertOverwriteWithAsteriskUsingParquet() throws Exception {
+ if (!testingCluster.isHCatalogStoreRunning()) {
+ ResultSet res = executeFile("full_table_parquet_ddl.sql");
+ res.close();
+
+ 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.close();
+ TableDesc desc = catalog.getTableDesc(getCurrentDatabase(), "full_table_parquet");
+ if (!testingCluster.isHCatalogStoreRunning()) {
+ assertEquals(2, desc.getStats().getNumRows().intValue());
+ }
+
+ res = executeString("select * from full_table_parquet;");
+ assertResultSet(res);
+
+ res = executeString("select l_orderkey, l_partkey from full_table_parquet;");
+ assertResultSet(res, "testInsertOverwriteWithAsteriskUsingParquet2.result");
+
+ executeString("DROP TABLE full_table_parquet_ddl PURGE");
}
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/cde1bcaf/tajo-core/src/test/resources/queries/TestInsertQuery/full_table_csv_ddl.sql
----------------------------------------------------------------------
diff --git a/tajo-core/src/test/resources/queries/TestInsertQuery/full_table_csv_ddl.sql b/tajo-core/src/test/resources/queries/TestInsertQuery/full_table_csv_ddl.sql
new file mode 100644
index 0000000..729ca83
--- /dev/null
+++ b/tajo-core/src/test/resources/queries/TestInsertQuery/full_table_csv_ddl.sql
@@ -0,0 +1 @@
+create table full_table_csv as select * from default.lineitem
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tajo/blob/cde1bcaf/tajo-core/src/test/resources/queries/TestInsertQuery/full_table_parquet_ddl.sql
----------------------------------------------------------------------
diff --git a/tajo-core/src/test/resources/queries/TestInsertQuery/full_table_parquet_ddl.sql b/tajo-core/src/test/resources/queries/TestInsertQuery/full_table_parquet_ddl.sql
new file mode 100644
index 0000000..1025b3b
--- /dev/null
+++ b/tajo-core/src/test/resources/queries/TestInsertQuery/full_table_parquet_ddl.sql
@@ -0,0 +1 @@
+create table full_table_parquet using parquet as select * from default.lineitem;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tajo/blob/cde1bcaf/tajo-core/src/test/resources/queries/TestInsertQuery/table1_ddl.sql
----------------------------------------------------------------------
diff --git a/tajo-core/src/test/resources/queries/TestInsertQuery/table1_ddl.sql b/tajo-core/src/test/resources/queries/TestInsertQuery/table1_ddl.sql
new file mode 100644
index 0000000..b8333c4
--- /dev/null
+++ b/tajo-core/src/test/resources/queries/TestInsertQuery/table1_ddl.sql
@@ -0,0 +1 @@
+create table table1 (col1 int4, col2 int4, col3 float8)
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tajo/blob/cde1bcaf/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwrite.sql
----------------------------------------------------------------------
diff --git a/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwrite.sql b/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwrite.sql
new file mode 100644
index 0000000..db18c0e
--- /dev/null
+++ b/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwrite.sql
@@ -0,0 +1 @@
+insert overwrite into table1 select l_orderkey, l_partkey, l_quantity from default.lineitem;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tajo/blob/cde1bcaf/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwriteLocation.sql
----------------------------------------------------------------------
diff --git a/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwriteLocation.sql b/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwriteLocation.sql
new file mode 100644
index 0000000..28ac95c
--- /dev/null
+++ b/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwriteLocation.sql
@@ -0,0 +1 @@
+insert overwrite into location '/tajo-data/testInsertOverwriteCapitalTableName' select * from default.lineitem where l_orderkey = 3;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tajo/blob/cde1bcaf/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwriteLocationWithCompression.sql
----------------------------------------------------------------------
diff --git a/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwriteLocationWithCompression.sql b/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwriteLocationWithCompression.sql
new file mode 100644
index 0000000..c3c67c7
--- /dev/null
+++ b/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwriteLocationWithCompression.sql
@@ -0,0 +1 @@
+insert overwrite into location '/tajo-data/testInsertOverwriteLocationWithCompression' USING csv WITH ('csvfile.delimiter'='|','compression.codec'='org.apache.hadoop.io.compress.DeflateCodec') select * from default.lineitem where l_orderkey = 3;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tajo/blob/cde1bcaf/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwriteSmallerColumns.sql
----------------------------------------------------------------------
diff --git a/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwriteSmallerColumns.sql b/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwriteSmallerColumns.sql
new file mode 100644
index 0000000..ce3fc0d
--- /dev/null
+++ b/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwriteSmallerColumns.sql
@@ -0,0 +1 @@
+insert overwrite into table1 select l_orderkey from default.lineitem;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tajo/blob/cde1bcaf/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwriteWithAsterisk.sql
----------------------------------------------------------------------
diff --git a/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwriteWithAsterisk.sql b/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwriteWithAsterisk.sql
new file mode 100644
index 0000000..4856e18
--- /dev/null
+++ b/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwriteWithAsterisk.sql
@@ -0,0 +1 @@
+insert overwrite into full_table_csv select * from default.lineitem where l_orderkey = 3;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tajo/blob/cde1bcaf/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwriteWithCompression.sql
----------------------------------------------------------------------
diff --git a/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwriteWithCompression.sql b/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwriteWithCompression.sql
new file mode 100644
index 0000000..8157c1d
--- /dev/null
+++ b/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwriteWithCompression.sql
@@ -0,0 +1 @@
+insert overwrite into testInsertOverwriteWithCompression select l_orderkey, l_partkey, l_quantity from default.lineitem where l_orderkey = 3;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tajo/blob/cde1bcaf/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwriteWithCompression_ddl.sql
----------------------------------------------------------------------
diff --git a/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwriteWithCompression_ddl.sql b/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwriteWithCompression_ddl.sql
new file mode 100644
index 0000000..dd49f84
--- /dev/null
+++ b/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwriteWithCompression_ddl.sql
@@ -0,0 +1,4 @@
+create table
+ testInsertOverwriteWithCompression (col1 int4, col2 int4, col3 float8)
+USING csv
+WITH ('csvfile.delimiter'='|','compression.codec'='org.apache.hadoop.io.compress.DeflateCodec');
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tajo/blob/cde1bcaf/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwriteWithTargetColumns.sql
----------------------------------------------------------------------
diff --git a/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwriteWithTargetColumns.sql b/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwriteWithTargetColumns.sql
new file mode 100644
index 0000000..67f9773
--- /dev/null
+++ b/tajo-core/src/test/resources/queries/TestInsertQuery/testInsertOverwriteWithTargetColumns.sql
@@ -0,0 +1 @@
+insert overwrite into table1 (col1, col3) select l_orderkey, l_quantity from default.lineitem;
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tajo/blob/cde1bcaf/tajo-core/src/test/resources/results/TestInsertQuery/testInsertOverwriteWithAsteriskUsingParquet.result
----------------------------------------------------------------------
diff --git a/tajo-core/src/test/resources/results/TestInsertQuery/testInsertOverwriteWithAsteriskUsingParquet.result b/tajo-core/src/test/resources/results/TestInsertQuery/testInsertOverwriteWithAsteriskUsingParquet.result
new file mode 100644
index 0000000..fd79944
--- /dev/null
+++ b/tajo-core/src/test/resources/results/TestInsertQuery/testInsertOverwriteWithAsteriskUsingParquet.result
@@ -0,0 +1,4 @@
+l_orderkey,l_partkey,l_suppkey,l_linenumber,l_quantity,l_extendedprice,l_discount,l_tax,l_returnflag,l_linestatus,l_shipdate,l_commitdate,l_receiptdate,l_shipinstruct,l_shipmode,l_comment
+-------------------------------
+3,2,1798,1,45.0,54058.05,0.06,0.0,R,F,1994-02-02,1994-01-04,1994-02-23,NONE,AIR,ongside of the furiously brave acco
+3,3,6540,2,49.0,46796.47,0.1,0.0,R,F,1993-11-09,1993-12-20,1993-11-24,TAKE BACK RETURN,RAIL, unusual accounts. eve
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tajo/blob/cde1bcaf/tajo-core/src/test/resources/results/TestInsertQuery/testInsertOverwriteWithAsteriskUsingParquet2.result
----------------------------------------------------------------------
diff --git a/tajo-core/src/test/resources/results/TestInsertQuery/testInsertOverwriteWithAsteriskUsingParquet2.result b/tajo-core/src/test/resources/results/TestInsertQuery/testInsertOverwriteWithAsteriskUsingParquet2.result
new file mode 100644
index 0000000..1bbb067
--- /dev/null
+++ b/tajo-core/src/test/resources/results/TestInsertQuery/testInsertOverwriteWithAsteriskUsingParquet2.result
@@ -0,0 +1,4 @@
+l_orderkey,l_partkey
+-------------------------------
+3,2
+3,3
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tajo/blob/cde1bcaf/tajo-storage/src/main/java/org/apache/tajo/storage/parquet/ParquetScanner.java
----------------------------------------------------------------------
diff --git a/tajo-storage/src/main/java/org/apache/tajo/storage/parquet/ParquetScanner.java b/tajo-storage/src/main/java/org/apache/tajo/storage/parquet/ParquetScanner.java
index 38d8ca4..36b89b8 100644
--- a/tajo-storage/src/main/java/org/apache/tajo/storage/parquet/ParquetScanner.java
+++ b/tajo-storage/src/main/java/org/apache/tajo/storage/parquet/ParquetScanner.java
@@ -55,8 +55,7 @@ public class ParquetScanner extends FileScanner {
if (targets == null) {
targets = schema.toArray();
}
- reader = new TajoParquetReader(fragment.getPath(), schema,
- new Schema(targets));
+ reader = new TajoParquetReader(fragment.getPath(), schema, new Schema(targets));
super.init();
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/cde1bcaf/tajo-storage/src/main/java/org/apache/tajo/storage/parquet/TajoReadSupport.java
----------------------------------------------------------------------
diff --git a/tajo-storage/src/main/java/org/apache/tajo/storage/parquet/TajoReadSupport.java b/tajo-storage/src/main/java/org/apache/tajo/storage/parquet/TajoReadSupport.java
index 4733a2f..269f782 100644
--- a/tajo-storage/src/main/java/org/apache/tajo/storage/parquet/TajoReadSupport.java
+++ b/tajo-storage/src/main/java/org/apache/tajo/storage/parquet/TajoReadSupport.java
@@ -42,11 +42,6 @@ public class TajoReadSupport extends ReadSupport<Tuple> {
private Schema requestedSchema;
/**
- * The key for the Tajo schema stored in the Parquet file metadata.
- */
- public static final String TAJO_SCHEMA_METADATA_KEY = "tajo.schema";
-
- /**
* Creates a new TajoReadSupport.
*
* @param requestedSchema The Tajo schema of the requested projection passed
@@ -100,16 +95,7 @@ public class TajoReadSupport extends ReadSupport<Tuple> {
Map<String, String> keyValueMetaData,
MessageType fileSchema,
ReadContext readContext) {
- Schema tajoReadSchema = null;
- String metadataReadSchema = keyValueMetaData.get(TAJO_SCHEMA_METADATA_KEY);
- if (metadataReadSchema != null) {
- tajoReadSchema = CatalogGsonHelper.fromJson(
- metadataReadSchema, Schema.class);
- } else {
- tajoReadSchema = readSchema;
- }
MessageType parquetRequestedSchema = readContext.getRequestedSchema();
- return new TajoRecordMaterializer(parquetRequestedSchema, requestedSchema,
- tajoReadSchema);
+ return new TajoRecordMaterializer(parquetRequestedSchema, requestedSchema, readSchema);
}
}
http://git-wip-us.apache.org/repos/asf/tajo/blob/cde1bcaf/tajo-storage/src/main/java/org/apache/tajo/storage/parquet/TajoWriteSupport.java
----------------------------------------------------------------------
diff --git a/tajo-storage/src/main/java/org/apache/tajo/storage/parquet/TajoWriteSupport.java b/tajo-storage/src/main/java/org/apache/tajo/storage/parquet/TajoWriteSupport.java
index 83b2f7b..35165de 100644
--- a/tajo-storage/src/main/java/org/apache/tajo/storage/parquet/TajoWriteSupport.java
+++ b/tajo-storage/src/main/java/org/apache/tajo/storage/parquet/TajoWriteSupport.java
@@ -41,8 +41,6 @@ import org.apache.tajo.datum.Datum;
* Users should use {@link ParquetAppender} and not this class directly.
*/
public class TajoWriteSupport extends WriteSupport<Tuple> {
- private static final String TAJO_SCHEMA = "parquet.tajo.schema";
-
private RecordConsumer recordConsumer;
private MessageType rootSchema;
private Schema rootTajoSchema;
@@ -66,8 +64,6 @@ public class TajoWriteSupport extends WriteSupport<Tuple> {
@Override
public WriteContext init(Configuration configuration) {
Map<String, String> extraMetaData = new HashMap<String, String>();
- extraMetaData.put(TajoReadSupport.TAJO_SCHEMA_METADATA_KEY,
- rootTajoSchema.toJson());
return new WriteContext(rootSchema, extraMetaData);
}