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/04/01 19:46:18 UTC
[1/2] drill git commit: DRILL-2590: In implicit casting rule,
make boolean to be implicitly castable from boolean only
Repository: drill
Updated Branches:
refs/heads/master 7b11e3e8f -> d05ff9d84
DRILL-2590: In implicit casting rule, make boolean to be implicitly castable from boolean only
Project: http://git-wip-us.apache.org/repos/asf/drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/451bc5ae
Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/451bc5ae
Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/451bc5ae
Branch: refs/heads/master
Commit: 451bc5ae024defec4e2f61e6fc0c3886cd80ec4c
Parents: 7b11e3e
Author: Hsuan-Yi Chu <hs...@usc.edu>
Authored: Fri Mar 27 13:38:50 2015 -0700
Committer: Aman Sinha <as...@maprtech.com>
Committed: Wed Apr 1 10:32:37 2015 -0700
----------------------------------------------------------------------
.../drill/exec/resolver/TypeCastRules.java | 23 --------------------
.../java/org/apache/drill/TestUnionAll.java | 14 ++++++++++++
.../test/resources/store/json/booleanData.json | 2 ++
.../src/test/resources/store/json/intData.json | 2 ++
4 files changed, 18 insertions(+), 23 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/drill/blob/451bc5ae/exec/java-exec/src/main/java/org/apache/drill/exec/resolver/TypeCastRules.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/resolver/TypeCastRules.java b/exec/java-exec/src/main/java/org/apache/drill/exec/resolver/TypeCastRules.java
index 8fc6612..d8652f2 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/resolver/TypeCastRules.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/resolver/TypeCastRules.java
@@ -546,30 +546,7 @@ public class TypeCastRules {
/** BIT cast able from **/
rule = new HashSet<MinorType>();
rule.add(MinorType.TINYINT);
- rule.add(MinorType.SMALLINT);
- rule.add(MinorType.INT);
- rule.add(MinorType.BIGINT);
- rule.add(MinorType.UINT1);
- rule.add(MinorType.UINT2);
- rule.add(MinorType.UINT4);
- rule.add(MinorType.UINT8);
- rule.add(MinorType.DECIMAL9);
- rule.add(MinorType.DECIMAL18);
- rule.add(MinorType.DECIMAL28SPARSE);
- rule.add(MinorType.DECIMAL28DENSE);
- rule.add(MinorType.DECIMAL38SPARSE);
- rule.add(MinorType.DECIMAL38DENSE);
- rule.add(MinorType.MONEY);
- rule.add(MinorType.TIMESTAMPTZ);
- rule.add(MinorType.FLOAT4);
- rule.add(MinorType.FLOAT8);
rule.add(MinorType.BIT);
- rule.add(MinorType.FIXEDCHAR);
- rule.add(MinorType.FIXED16CHAR);
- rule.add(MinorType.VARCHAR);
- rule.add(MinorType.VAR16CHAR);
- rule.add(MinorType.VARBINARY);
- rule.add(MinorType.FIXEDBINARY);
rules.put(MinorType.BIT, rule);
/** FIXEDCHAR cast able from **/
http://git-wip-us.apache.org/repos/asf/drill/blob/451bc5ae/exec/java-exec/src/test/java/org/apache/drill/TestUnionAll.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/test/java/org/apache/drill/TestUnionAll.java b/exec/java-exec/src/test/java/org/apache/drill/TestUnionAll.java
index 1ebb534..fcf5c9f 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/TestUnionAll.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/TestUnionAll.java
@@ -19,6 +19,7 @@ package org.apache.drill;
import org.apache.drill.common.types.TypeProtos;
import org.apache.drill.common.util.FileUtils;
+import org.apache.drill.exec.rpc.RpcException;
import org.apache.drill.exec.work.foreman.SqlUnsupportedException;
import org.apache.drill.exec.work.foreman.UnsupportedRelOperatorException;
import org.junit.Test;
@@ -354,4 +355,17 @@ public class TestUnionAll extends BaseTestQuery{
.baselineColumns("calc1", "min", "max", "count")
.build().run();
}
+
+ @Test(expected = RpcException.class) // see DRILL-2590
+ public void testUnionAllImplicitCastingFailure() throws Exception {
+ String rootInt = FileUtils.getResourceAsFile("/store/json/intData.json").toURI().toString();
+ String rootBoolean = FileUtils.getResourceAsFile("/store/json/booleanData.json").toURI().toString();
+
+ String query = String.format(
+ "(select key from dfs_test.`%s` " +
+ "union all " +
+ "select key from dfs_test.`%s` )", rootInt, rootBoolean);
+
+ test(query);
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/drill/blob/451bc5ae/exec/java-exec/src/test/resources/store/json/booleanData.json
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/test/resources/store/json/booleanData.json b/exec/java-exec/src/test/resources/store/json/booleanData.json
new file mode 100644
index 0000000..63be3a1
--- /dev/null
+++ b/exec/java-exec/src/test/resources/store/json/booleanData.json
@@ -0,0 +1,2 @@
+{"key":true}
+{"key":false}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/drill/blob/451bc5ae/exec/java-exec/src/test/resources/store/json/intData.json
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/test/resources/store/json/intData.json b/exec/java-exec/src/test/resources/store/json/intData.json
new file mode 100644
index 0000000..b28b287
--- /dev/null
+++ b/exec/java-exec/src/test/resources/store/json/intData.json
@@ -0,0 +1,2 @@
+{"key":52459253098448904}
+{"key":1116675951}
\ No newline at end of file
[2/2] drill git commit: DRILL-2559: In case window functions are
disabled, throw UnsupportedFunctionException
Posted by am...@apache.org.
DRILL-2559: In case window functions are disabled, throw UnsupportedFunctionException
Project: http://git-wip-us.apache.org/repos/asf/drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/d05ff9d8
Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/d05ff9d8
Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/d05ff9d8
Branch: refs/heads/master
Commit: d05ff9d841b9a8f47ed522dfab5dd59fb1fdbfd1
Parents: 451bc5a
Author: Hsuan-Yi Chu <hs...@usc.edu>
Authored: Wed Mar 25 09:45:47 2015 -0700
Committer: Aman Sinha <as...@maprtech.com>
Committed: Wed Apr 1 10:33:06 2015 -0700
----------------------------------------------------------------------
.../exec/physical/impl/window/OverFinder.java | 53 --------------------
.../planner/sql/handlers/DefaultSqlHandler.java | 11 +---
.../sql/parser/UnsupportedOperatorsVisitor.java | 23 ++++++---
.../apache/drill/TestDisabledFunctionality.java | 13 +++++
4 files changed, 30 insertions(+), 70 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/drill/blob/d05ff9d8/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/window/OverFinder.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/window/OverFinder.java b/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/window/OverFinder.java
deleted file mode 100644
index 40e5920..0000000
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/physical/impl/window/OverFinder.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.drill.exec.physical.impl.window;
-
-import org.eigenbase.sql.SqlCall;
-import org.eigenbase.sql.SqlKind;
-import org.eigenbase.sql.SqlNode;
-import org.eigenbase.sql.SqlOperator;
-import org.eigenbase.sql.util.SqlBasicVisitor;
-import org.eigenbase.util.Util;
-
-/**
- * Visitor which looks for an over clause inside a tree of {@link
- * SqlNode} objects.
- */
-public class OverFinder extends SqlBasicVisitor<Void> {
-
- public boolean findOver(SqlNode node) {
- try {
- node.accept(this);
- return false;
- } catch (Util.FoundOne e) {
- Util.swallow(e, null);
- return true;
- }
- }
-
- @Override
- public Void visit(SqlCall call) {
- final SqlOperator operator = call.getOperator();
-
- if (operator.getKind().equals(SqlKind.OVER)) {
- throw new Util.FoundOne(call);
- }
-
- return super.visit(call);
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/drill/blob/d05ff9d8/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DefaultSqlHandler.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DefaultSqlHandler.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DefaultSqlHandler.java
index 37003f1..5ee502d 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DefaultSqlHandler.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/handlers/DefaultSqlHandler.java
@@ -37,7 +37,6 @@ import org.apache.drill.exec.physical.PhysicalPlan;
import org.apache.drill.exec.physical.base.AbstractPhysicalVisitor;
import org.apache.drill.exec.physical.base.PhysicalOperator;
import org.apache.drill.exec.physical.impl.join.JoinUtils;
-import org.apache.drill.exec.physical.impl.window.OverFinder;
import org.apache.drill.exec.planner.logical.DrillRel;
import org.apache.drill.exec.planner.logical.DrillScreenRel;
import org.apache.drill.exec.planner.logical.DrillStoreRel;
@@ -146,18 +145,10 @@ public class DefaultSqlHandler extends AbstractSqlHandler {
}
protected SqlNode validateNode(SqlNode sqlNode) throws ValidationException, RelConversionException, ForemanSetupException {
- final boolean enableWindow = context.getOptions().getOption(ExecConstants.ENABLE_WINDOW_FUNCTIONS).bool_val;
- if (!enableWindow) {
- final OverFinder overFinder = new OverFinder();
- if (overFinder.findOver(sqlNode)) {
- throw new ValidationException("Window Functions have been disabled");
- }
- }
-
SqlNode sqlNodeValidated = planner.validate(sqlNode);
// Check if the unsupported functionality is used
- UnsupportedOperatorsVisitor visitor = UnsupportedOperatorsVisitor.createVisitor();
+ UnsupportedOperatorsVisitor visitor = UnsupportedOperatorsVisitor.createVisitor(context);
try {
sqlNodeValidated.accept(visitor);
} catch (UnsupportedOperationException ex) {
http://git-wip-us.apache.org/repos/asf/drill/blob/d05ff9d8/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/UnsupportedOperatorsVisitor.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/UnsupportedOperatorsVisitor.java b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/UnsupportedOperatorsVisitor.java
index 81734dc..4830fe1 100644
--- a/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/UnsupportedOperatorsVisitor.java
+++ b/exec/java-exec/src/main/java/org/apache/drill/exec/planner/sql/parser/UnsupportedOperatorsVisitor.java
@@ -19,15 +19,13 @@ package org.apache.drill.exec.planner.sql.parser;
import org.apache.drill.exec.ExecConstants;
import org.apache.drill.exec.exception.UnsupportedOperatorCollector;
-import org.apache.drill.exec.planner.StarColumnHelper;
+import org.apache.drill.exec.ops.QueryContext;
import org.apache.drill.exec.work.foreman.SqlUnsupportedException;
import org.eigenbase.sql.SqlCall;
import org.eigenbase.sql.SqlKind;
import org.eigenbase.sql.SqlJoin;
import org.eigenbase.sql.JoinType;
import org.eigenbase.sql.SqlNode;
-import org.eigenbase.sql.SqlNodeList;
-import org.eigenbase.sql.SqlSelect;
import org.eigenbase.sql.type.SqlTypeName;
import org.eigenbase.sql.util.SqlShuttle;
import org.eigenbase.sql.SqlDataTypeSpec;
@@ -36,6 +34,7 @@ import java.util.List;
import com.google.common.collect.Lists;
public class UnsupportedOperatorsVisitor extends SqlShuttle {
+ private QueryContext context;
private static List<String> disabledType = Lists.newArrayList();
private static List<String> disabledOperators = Lists.newArrayList();
@@ -48,12 +47,13 @@ public class UnsupportedOperatorsVisitor extends SqlShuttle {
private UnsupportedOperatorCollector unsupportedOperatorCollector;
- private UnsupportedOperatorsVisitor() {
- unsupportedOperatorCollector = new UnsupportedOperatorCollector();
+ private UnsupportedOperatorsVisitor(QueryContext context) {
+ this.context = context;
+ this.unsupportedOperatorCollector = new UnsupportedOperatorCollector();
}
- public static UnsupportedOperatorsVisitor createVisitor() {
- return new UnsupportedOperatorsVisitor();
+ public static UnsupportedOperatorsVisitor createVisitor(QueryContext context) {
+ return new UnsupportedOperatorsVisitor(context);
}
public void convertException() throws SqlUnsupportedException {
@@ -116,6 +116,15 @@ public class UnsupportedOperatorsVisitor extends SqlShuttle {
}
}
+ // Throw exceptions if window functions are disabled
+ if(sqlCall.getOperator().getKind().equals(SqlKind.OVER)
+ && !context.getOptions().getOption(ExecConstants.ENABLE_WINDOW_FUNCTIONS).bool_val) {
+ unsupportedOperatorCollector.setException(SqlUnsupportedException.ExceptionType.FUNCTION,
+ "Window functions are disabled\n" +
+ "See Apache Drill JIRA: DRILL-2559");
+ throw new UnsupportedOperationException();
+ }
+
// Disable Function
for(String strOperator : disabledOperators) {
if(sqlCall.getOperator().isName(strOperator)) {
http://git-wip-us.apache.org/repos/asf/drill/blob/d05ff9d8/exec/java-exec/src/test/java/org/apache/drill/TestDisabledFunctionality.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/test/java/org/apache/drill/TestDisabledFunctionality.java b/exec/java-exec/src/test/java/org/apache/drill/TestDisabledFunctionality.java
index f64d3e5..f62f060 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/TestDisabledFunctionality.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/TestDisabledFunctionality.java
@@ -312,4 +312,17 @@ public class TestDisabledFunctionality extends BaseTestQuery{
throw ex;
}
}
+
+ @Test(expected = UnsupportedFunctionException.class) // see DRILL-2441
+ public void testDisabledWindowFunctions() throws Exception {
+ try {
+ test("SELECT employee_id,position_id, salary, avg(salary) " +
+ "OVER (PARTITION BY position_id order by position_id) " +
+ "FROM cp.`employee.json` " +
+ "order by employee_id;");
+ } catch(Exception ex) {
+ SqlUnsupportedException.errorMessageToException(ex.getMessage());
+ throw ex;
+ }
+ }
}
\ No newline at end of file