You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@drill.apache.org by am...@apache.org on 2015/06/15 22:27:27 UTC
drill git commit: DRILL-3220: IOB Exception - Need a better error
message
Repository: drill
Updated Branches:
refs/heads/master d5dc322d5 -> 288c95223
DRILL-3220: IOB Exception - Need a better error message
Project: http://git-wip-us.apache.org/repos/asf/drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/288c9522
Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/288c9522
Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/288c9522
Branch: refs/heads/master
Commit: 288c9522327474765c0c5497ba38a63959621d77
Parents: d5dc322
Author: adeneche <ad...@gmail.com>
Authored: Fri Jun 5 17:12:57 2015 -0700
Committer: Aman Sinha <as...@maprtech.com>
Committed: Mon Jun 15 13:11:43 2015 -0700
----------------------------------------------------------------------
.../exec/planner/logical/DrillWindowRule.java | 4 +---
.../drill/exec/planner/physical/WindowPrel.java | 7 +++---
.../physical/impl/window/TestWindowFrame.java | 23 ++++++++++----------
exec/java-exec/src/test/resources/window/q1.sql | 6 +++++
exec/java-exec/src/test/resources/window/q2.sql | 10 +++++++++
.../src/test/resources/window/q3218.sql | 5 +++++
.../src/test/resources/window/q3220.sql | 3 +++
7 files changed, 41 insertions(+), 17 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/drill/blob/288c9522/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillWindowRule.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillWindowRule.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillWindowRule.java
index 76939d9..1cefcd9 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillWindowRule.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/logical/DrillWindowRule.java
@@ -18,14 +18,12 @@
package org.apache.drill.exec.planner.logical;
-import com.google.common.collect.Lists;
import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.core.Window;
import org.apache.calcite.plan.Convention;
import org.apache.calcite.plan.RelOptRule;
import org.apache.calcite.plan.RelOptRuleCall;
import org.apache.calcite.plan.RelTraitSet;
-import org.apache.calcite.rex.RexLiteral;
public class DrillWindowRule extends RelOptRule {
public static final RelOptRule INSTANCE = new DrillWindowRule();
@@ -45,7 +43,7 @@ public class DrillWindowRule extends RelOptRule {
window.getCluster(),
traits,
convertedInput,
- Lists.<RexLiteral>newArrayList(),
+ window.constants,
window.getRowType(),
window.groups));
}
http://git-wip-us.apache.org/repos/asf/drill/blob/288c9522/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/WindowPrel.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/WindowPrel.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/WindowPrel.java
index 4f6551a..122dee8 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/WindowPrel.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/physical/WindowPrel.java
@@ -109,15 +109,16 @@ public class WindowPrel extends DrillWindowRelBase implements Prel {
protected LogicalExpression toDrill(AggregateCall call, List<String> fn) {
List<LogicalExpression> args = Lists.newArrayList();
for (Integer i : call.getArgList()) {
- args.add(new FieldReference(fn.get(i)));
+ if (i < fn.size()) {
+ args.add(new FieldReference(fn.get(i)));
+ }
}
// for count(1).
if (args.isEmpty()) {
args.add(new ValueExpressions.LongExpression(1l));
}
- LogicalExpression expr = new FunctionCall(call.getAggregation().getName().toLowerCase(), args, ExpressionPosition.UNKNOWN);
- return expr;
+ return new FunctionCall(call.getAggregation().getName().toLowerCase(), args, ExpressionPosition.UNKNOWN);
}
@Override
http://git-wip-us.apache.org/repos/asf/drill/blob/288c9522/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/window/TestWindowFrame.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/window/TestWindowFrame.java b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/window/TestWindowFrame.java
index 4295002..aefe77d 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/window/TestWindowFrame.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/physical/impl/window/TestWindowFrame.java
@@ -30,10 +30,6 @@ import org.junit.Test;
public class TestWindowFrame extends BaseTestQuery {
private static final String TEST_RES_PATH = TestTools.getWorkingPath() + "/src/test/resources";
- private static final String QUERY_NO_ORDERBY =
- "select count(*) over pos_win `count`, sum(salary) over pos_win `sum` from dfs_test.`%s/window/%s` window pos_win as (partition by position_id)";
- private static final String QUERY_ORDERBY =
- "select count(*) over pos_win `count`, sum(salary) over pos_win `sum`, row_number() over pos_win `row_number`, rank() over pos_win `rank`, dense_rank() over pos_win `dense_rank`, cume_dist() over pos_win `cume_dist`, percent_rank() over pos_win `percent_rank` from dfs_test.`%s/window/%s` window pos_win as (partition by position_id order by sub)";
@BeforeClass
public static void setupMSortBatchSize() {
@@ -46,7 +42,7 @@ public class TestWindowFrame extends BaseTestQuery {
private DrillTestWrapper buildWindowQuery(final String tableName) throws Exception {
return testBuilder()
- .sqlQuery(String.format(QUERY_NO_ORDERBY, TEST_RES_PATH, tableName))
+ .sqlQuery(String.format(getFile("window/q1.sql"), TEST_RES_PATH, tableName))
.ordered()
.csvBaselineFile("window/" + tableName + ".tsv")
.baselineColumns("count", "sum")
@@ -55,7 +51,7 @@ public class TestWindowFrame extends BaseTestQuery {
private DrillTestWrapper buildWindowWithOrderByQuery(final String tableName) throws Exception {
return testBuilder()
- .sqlQuery(String.format(QUERY_ORDERBY, TEST_RES_PATH, tableName))
+ .sqlQuery(String.format(getFile("window/q2.sql"), TEST_RES_PATH, tableName))
.ordered()
.csvBaselineFile("window/" + tableName + ".subs.tsv")
.baselineColumns("count", "sum", "row_number", "rank", "dense_rank", "cume_dist", "percent_rank")
@@ -163,11 +159,6 @@ public class TestWindowFrame extends BaseTestQuery {
runTest("b4.p4", true);
}
- @Test // DRILL-3218
- public void testMaxVarChar() throws Exception {
- test("select max(cast(columns[2] as char(2))) over(partition by cast(columns[2] as char(2)) order by cast(columns[0] as int)) from dfs_test.`%s/window/allData.csv`", TEST_RES_PATH);
- }
-
@Test // DRILL-1862
public void testEmptyPartitionBy() throws Exception {
test("SELECT employee_id, position_id, salary, SUM(salary) OVER(ORDER BY position_id) FROM cp.`employee.json` LIMIT 10");
@@ -178,4 +169,14 @@ public class TestWindowFrame extends BaseTestQuery {
test("SELECT employee_id, position_id, salary, SUM(salary) OVER() FROM cp.`employee.json` LIMIT 10");
}
+ @Test // DRILL-3218
+ public void testMaxVarChar() throws Exception {
+ test(getFile("window/q3218.sql"), TEST_RES_PATH);
+ }
+
+ @Test // DRILL-3220
+ public void testCountConst() throws Exception {
+ test(getFile("window/q3220.sql"), TEST_RES_PATH);
+ }
+
}
http://git-wip-us.apache.org/repos/asf/drill/blob/288c9522/exec/java-exec/src/test/resources/window/q1.sql
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/test/resources/window/q1.sql b/exec/java-exec/src/test/resources/window/q1.sql
new file mode 100644
index 0000000..053b701
--- /dev/null
+++ b/exec/java-exec/src/test/resources/window/q1.sql
@@ -0,0 +1,6 @@
+select
+ count(*) over pos_win `count`,
+ sum(salary) over pos_win `sum`
+from
+ dfs_test.`%s/window/%s`
+window pos_win as (partition by position_id)
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/drill/blob/288c9522/exec/java-exec/src/test/resources/window/q2.sql
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/test/resources/window/q2.sql b/exec/java-exec/src/test/resources/window/q2.sql
new file mode 100644
index 0000000..0e661a7
--- /dev/null
+++ b/exec/java-exec/src/test/resources/window/q2.sql
@@ -0,0 +1,10 @@
+select
+ count(*) over pos_win `count`,
+ sum(salary) over pos_win `sum`,
+ row_number() over pos_win `row_number`,
+ rank() over pos_win `rank`,
+ dense_rank() over pos_win `dense_rank`,
+ cume_dist() over pos_win `cume_dist`,
+ percent_rank() over pos_win `percent_rank`
+from dfs_test.`%s/window/%s`
+window pos_win as (partition by position_id order by sub)
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/drill/blob/288c9522/exec/java-exec/src/test/resources/window/q3218.sql
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/test/resources/window/q3218.sql b/exec/java-exec/src/test/resources/window/q3218.sql
new file mode 100644
index 0000000..45bfd46
--- /dev/null
+++ b/exec/java-exec/src/test/resources/window/q3218.sql
@@ -0,0 +1,5 @@
+select
+ max(cast(columns[2] as char(2)))
+ over(partition by cast(columns[2] as char(2))
+ order by cast(columns[0] as int))
+from dfs_test.`%s/window/allData.csv`
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/drill/blob/288c9522/exec/java-exec/src/test/resources/window/q3220.sql
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/test/resources/window/q3220.sql b/exec/java-exec/src/test/resources/window/q3220.sql
new file mode 100644
index 0000000..3fdb047
--- /dev/null
+++ b/exec/java-exec/src/test/resources/window/q3220.sql
@@ -0,0 +1,3 @@
+select
+ count(1) over(partition by position_id order by sub)
+from dfs_test.`%s/window/b1.p1`
\ No newline at end of file