Repository: drill
Updated Branches:
  refs/heads/master 8126927fd -> 7d5a0a86e


DRILL-4392: Fix CTAS partition to remove one unnecessary internal field in 
generated parquet files.


Project: http://git-wip-us.apache.org/repos/asf/drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/7d5a0a86
Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/7d5a0a86
Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/7d5a0a86

Branch: refs/heads/master
Commit: 7d5a0a86e36932726abee49aa4c29ea9cbd576e9
Parents: 8126927
Author: Jinfeng Ni <[email protected]>
Authored: Thu Feb 18 15:38:42 2016 -0800
Committer: Jinfeng Ni <[email protected]>
Committed: Fri Feb 19 07:38:28 2016 -0800

----------------------------------------------------------------------
 .../templates/EventBasedRecordWriter.java       |  2 +-
 .../exec/store/parquet/ParquetRecordWriter.java |  2 +-
 .../org/apache/drill/exec/sql/TestCTAS.java     | 25 ++++++++++++++++++++
 3 files changed, 27 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/drill/blob/7d5a0a86/exec/java-exec/src/main/codegen/templates/EventBasedRecordWriter.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/codegen/templates/EventBasedRecordWriter.java 
b/exec/java-exec/src/main/codegen/templates/EventBasedRecordWriter.java
index c7676cb..584f4b6 100644
--- a/exec/java-exec/src/main/codegen/templates/EventBasedRecordWriter.java
+++ b/exec/java-exec/src/main/codegen/templates/EventBasedRecordWriter.java
@@ -79,7 +79,7 @@ public class EventBasedRecordWriter {
     try {
       int fieldId = 0;
       for (VectorWrapper w : batch) {
-        if 
(w.getField().getPath().equals(SchemaPath.getSimplePath(WriterPrel.PARTITION_COMPARATOR_FIELD)))
 {
+        if 
(w.getField().getPath().equalsIgnoreCase(WriterPrel.PARTITION_COMPARATOR_FIELD))
 {
           continue;
         }
         FieldReader reader = w.getValueVector().getReader();

http://git-wip-us.apache.org/repos/asf/drill/blob/7d5a0a86/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/ParquetRecordWriter.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/ParquetRecordWriter.java
 
b/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/ParquetRecordWriter.java
index 8f4f5fd..3f2defd 100644
--- 
a/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/ParquetRecordWriter.java
+++ 
b/exec/java-exec/src/main/java/org/apache/drill/exec/store/parquet/ParquetRecordWriter.java
@@ -181,7 +181,7 @@ public class ParquetRecordWriter extends 
ParquetOutputRecordWriter {
   private void newSchema() throws IOException {
     List<Type> types = Lists.newArrayList();
     for (MaterializedField field : batchSchema) {
-      if 
(field.getPath().equals(SchemaPath.getSimplePath(WriterPrel.PARTITION_COMPARATOR_FIELD)))
 {
+      if 
(field.getPath().equalsIgnoreCase(WriterPrel.PARTITION_COMPARATOR_FIELD)) {
         continue;
       }
       types.add(getType(field));

http://git-wip-us.apache.org/repos/asf/drill/blob/7d5a0a86/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestCTAS.java
----------------------------------------------------------------------
diff --git 
a/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestCTAS.java 
b/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestCTAS.java
index 33288e3..5294709 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestCTAS.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestCTAS.java
@@ -213,6 +213,31 @@ public class TestCTAS extends BaseTestQuery {
     }
   }
 
+  @Test // DRILL-4392
+  public void ctasWithPartition() throws Exception {
+    final String newTblName = "nation_ctas";
+
+    try {
+      final String ctasQuery = String.format("CREATE TABLE %s.%s   " +
+          "partition by (n_regionkey) AS SELECT n_nationkey, n_regionkey from 
cp.`tpch/nation.parquet` order by n_nationkey limit 1",
+          TEMP_SCHEMA, newTblName);
+
+      test(ctasQuery);
+
+      final String selectFromCreatedTable = String.format(" select * from 
%s.%s", TEMP_SCHEMA, newTblName);
+      final String baselineQuery = "select n_nationkey, n_regionkey from 
cp.`tpch/nation.parquet` order by n_nationkey limit 1";
+
+      testBuilder()
+          .sqlQuery(selectFromCreatedTable)
+          .ordered()
+          .sqlBaselineQuery(baselineQuery)
+          .build()
+          .run();
+    } finally {
+      FileUtils.deleteQuietly(new File(getDfsTestTmpSchemaLocation(), 
newTblName));
+    }
+  }
+
   private static void ctasErrorTestHelper(final String ctasSql, final String 
expErrorMsg) throws Exception {
     final String createTableSql = String.format(ctasSql, TEMP_SCHEMA, 
"testTableName");
     errorMsgTestHelper(createTableSql, expErrorMsg);

Reply via email to