You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@drill.apache.org by jn...@apache.org on 2015/06/27 08:23:24 UTC
drill git commit: DRILL-3382: Fix IOOB error for CTAS order by
statement.
Repository: drill
Updated Branches:
refs/heads/master e347a5287 -> 53d09a0b9
DRILL-3382: Fix IOOB error for CTAS order by statement.
Project: http://git-wip-us.apache.org/repos/asf/drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/53d09a0b
Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/53d09a0b
Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/53d09a0b
Branch: refs/heads/master
Commit: 53d09a0b9c5c9dbc7ee6642c3d2d9ac7f9bc0912
Parents: e347a52
Author: Jinfeng Ni <jn...@apache.org>
Authored: Fri Jun 26 11:04:11 2015 -0700
Committer: Jinfeng Ni <jn...@apache.org>
Committed: Fri Jun 26 16:29:32 2015 -0700
----------------------------------------------------------------------
.../sql/handlers/CreateTableHandler.java | 7 ++++--
.../org/apache/drill/exec/sql/TestCTAS.java | 25 ++++++++++++++++++++
2 files changed, 30 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/drill/blob/53d09a0b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/CreateTableHandler.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/CreateTableHandler.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/CreateTableHandler.java
index 5a0e40e..e39074e 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/CreateTableHandler.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/CreateTableHandler.java
@@ -26,6 +26,7 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import org.apache.calcite.plan.RelOptCluster;
import org.apache.calcite.plan.RelOptUtil;
+import org.apache.calcite.plan.RelTraitSet;
import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.type.RelDataType;
import org.apache.calcite.rel.type.RelDataTypeField;
@@ -45,6 +46,7 @@ import org.apache.drill.exec.planner.logical.CreateTableEntry;
import org.apache.drill.exec.planner.logical.DrillRel;
import org.apache.drill.exec.planner.logical.DrillScreenRel;
import org.apache.drill.exec.planner.logical.DrillWriterRel;
+import org.apache.drill.exec.planner.physical.DrillDistributionTrait;
import org.apache.drill.exec.planner.physical.Prel;
import org.apache.drill.exec.planner.physical.ProjectAllowDupPrel;
import org.apache.drill.exec.planner.physical.ProjectPrel;
@@ -114,8 +116,9 @@ public class CreateTableHandler extends DefaultSqlHandler {
final DrillRel topPreservedNameProj = queryRowType.getFieldCount() == convertedRelNode.getRowType().getFieldCount() ?
addRenamedProject(convertedRelNode, queryRowType) : convertedRelNode;
- final DrillWriterRel writerRel = new DrillWriterRel(convertedRelNode.getCluster(), convertedRelNode.getTraitSet(),
- topPreservedNameProj, schema.createNewTable(tableName, partitionColumns));
+ final RelTraitSet traits = convertedRelNode.getCluster().traitSet().plus(DrillRel.DRILL_LOGICAL);
+ final DrillWriterRel writerRel = new DrillWriterRel(convertedRelNode.getCluster(),
+ traits, topPreservedNameProj, schema.createNewTable(tableName, partitionColumns));
return new DrillScreenRel(writerRel.getCluster(), writerRel.getTraitSet(), writerRel);
}
http://git-wip-us.apache.org/repos/asf/drill/blob/53d09a0b/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 aec2237..33288e3 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
@@ -188,6 +188,31 @@ public class TestCTAS extends BaseTestQuery {
}
}
+ @Test // DRILL-3382
+ public void ctasWithQueryOrderby() throws Exception {
+ final String newTblName = "ctasWithQueryOrderby";
+
+ try {
+ final String ctasQuery = String.format("CREATE TABLE %s.%s " +
+ "AS SELECT n_nationkey, n_name, n_comment from cp.`tpch/nation.parquet` order by n_nationkey",
+ TEMP_SCHEMA, newTblName);
+
+ test(ctasQuery);
+
+ final String selectFromCreatedTable = String.format(" select n_nationkey, n_name, n_comment from %s.%s", TEMP_SCHEMA, newTblName);
+ final String baselineQuery = "select n_nationkey, n_name, n_comment from cp.`tpch/nation.parquet` order by n_nationkey";
+
+ 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);