Skip to content

Commit 58c9e6e

Browse files
samelaminrxin
authored andcommitted
[SPARK-20145] Fix range case insensitive bug in SQL
## What changes were proposed in this pull request? Range in SQL should be case insensitive ## How was this patch tested? unit test Author: samelamin <[email protected]> Author: samelamin <[email protected]> Closes #17487 from samelamin/SPARK-20145.
1 parent 703c42c commit 58c9e6e

File tree

3 files changed

+26
-4
lines changed

3 files changed

+26
-4
lines changed

sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/analysis/ResolveTableValuedFunctions.scala

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,7 @@
1717

1818
package org.apache.spark.sql.catalyst.analysis
1919

20-
import org.apache.spark.{SparkConf, SparkContext}
2120
import org.apache.spark.sql.catalyst.expressions.Expression
22-
import org.apache.spark.sql.catalyst.plans._
2321
import org.apache.spark.sql.catalyst.plans.logical.{LogicalPlan, Range}
2422
import org.apache.spark.sql.catalyst.rules._
2523
import org.apache.spark.sql.types.{DataType, IntegerType, LongType}
@@ -105,7 +103,7 @@ object ResolveTableValuedFunctions extends Rule[LogicalPlan] {
105103

106104
override def apply(plan: LogicalPlan): LogicalPlan = plan resolveOperators {
107105
case u: UnresolvedTableValuedFunction if u.functionArgs.forall(_.resolved) =>
108-
builtinFunctions.get(u.functionName) match {
106+
builtinFunctions.get(u.functionName.toLowerCase()) match {
109107
case Some(tvf) =>
110108
val resolved = tvf.flatMap { case (argList, resolver) =>
111109
argList.implicitCast(u.functionArgs) match {

sql/core/src/test/resources/sql-tests/inputs/table-valued-functions.sql

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,9 @@ select * from range(1, 1, 1, 1, 1);
1818

1919
-- range call with null
2020
select * from range(1, null);
21+
22+
-- range call with a mixed-case function name
23+
select * from RaNgE(2);
24+
25+
-- Explain
26+
EXPLAIN select * from RaNgE(2);

sql/core/src/test/resources/sql-tests/results/table-valued-functions.sql.out

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-- Automatically generated by SQLQueryTestSuite
2-
-- Number of queries: 7
2+
-- Number of queries: 9
33

44

55
-- !query 0
@@ -85,3 +85,21 @@ struct<>
8585
-- !query 6 output
8686
java.lang.IllegalArgumentException
8787
Invalid arguments for resolved function: 1, null
88+
89+
90+
-- !query 7
91+
select * from RaNgE(2)
92+
-- !query 7 schema
93+
struct<id:bigint>
94+
-- !query 7 output
95+
0
96+
1
97+
98+
99+
-- !query 8
100+
EXPLAIN select * from RaNgE(2)
101+
-- !query 8 schema
102+
struct<plan:string>
103+
-- !query 8 output
104+
== Physical Plan ==
105+
*Range (0, 2, step=1, splits=None)

0 commit comments

Comments
 (0)