Skip to content

Commit b49cc8a

Browse files
committed
SPARK-2407: Added Parser of SQL SUBSTRING() #1442
1 parent 9a60ccf commit b49cc8a

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

sql/catalyst/src/main/scala/org/apache/spark/sql/catalyst/SqlParser.scala

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ class SqlParser extends StandardTokenParsers with PackratParsers {
121121
protected val INTERSECT = Keyword("INTERSECT")
122122
protected val EXCEPT = Keyword("EXCEPT")
123123
protected val SUBSTR = Keyword("SUBSTR")
124+
protected val SUBSTRING = Keyword("SUBSTRING")
124125

125126
// Use reflection to find the reserved words defined in this class.
126127
protected val reservedWords =
@@ -316,10 +317,10 @@ class SqlParser extends StandardTokenParsers with PackratParsers {
316317
IF ~> "(" ~> expression ~ "," ~ expression ~ "," ~ expression <~ ")" ^^ {
317318
case c ~ "," ~ t ~ "," ~ f => If(c,t,f)
318319
} |
319-
SUBSTR ~> "(" ~> expression ~ "," ~ expression <~ ")" ^^ {
320+
(SUBSTR | SUBSTRING) ~> "(" ~> expression ~ "," ~ expression <~ ")" ^^ {
320321
case s ~ "," ~ p => Substring(s,p,Literal(Integer.MAX_VALUE))
321322
} |
322-
SUBSTR ~> "(" ~> expression ~ "," ~ expression ~ "," ~ expression <~ ")" ^^ {
323+
(SUBSTR | SUBSTRING) ~> "(" ~> expression ~ "," ~ expression ~ "," ~ expression <~ ")" ^^ {
323324
case s ~ "," ~ p ~ "," ~ l => Substring(s,p,l)
324325
} |
325326
ident ~ "(" ~ repsep(expression, ",") <~ ")" ^^ {

sql/core/src/test/scala/org/apache/spark/sql/SQLQuerySuite.scala

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,12 @@ class SQLQuerySuite extends QueryTest {
4343
checkAnswer(
4444
sql("SELECT substr(tableName, 3) FROM tableName"),
4545
"st")
46+
checkAnswer(
47+
sql("SELECT substring(tableName, 1, 2) FROM tableName"),
48+
"te")
49+
checkAnswer(
50+
sql("SELECT substring(tableName, 3) FROM tableName"),
51+
"st")
4652
}
4753

4854
test("index into array") {

0 commit comments

Comments
 (0)