Revert "[SPARK-28310][SQL] Support (FIRST_VALUE|LAST_VALUE)(expr[ (IGNORE|RESPECT) NULLS]?) syntax"
### What changes were proposed in this pull request?
This reverts commit b89c3de1a4
.
### Why are the changes needed?
`FIRST_VALUE` is used only for window expression. Please see the discussion on https://github.com/apache/spark/pull/25082 .
### Does this PR introduce any user-facing change?
Yes.
### How was this patch tested?
Pass the Jenkins.
Closes #27458 from dongjoon-hyun/SPARK-28310.
Authored-by: Dongjoon Hyun <dhyun@apple.com>
Signed-off-by: Dongjoon Hyun <dhyun@apple.com>
This commit is contained in:
parent
7631275f97
commit
898716980d
|
@ -119,7 +119,6 @@ Below is a list of all the keywords in Spark SQL.
|
|||
<tr><td>FILTER</td><td>reserved</td><td>non-reserved</td><td>reserved</td></tr>
|
||||
<tr><td>FILEFORMAT</td><td>non-reserved</td><td>non-reserved</td><td>non-reserved</td></tr>
|
||||
<tr><td>FIRST</td><td>non-reserved</td><td>non-reserved</td><td>non-reserved</td></tr>
|
||||
<tr><td>FIRST_VALUE</td><td>reserved</td><td>non-reserved</td><td>reserved</td></tr>
|
||||
<tr><td>FOLLOWING</td><td>non-reserved</td><td>non-reserved</td><td>non-reserved</td></tr>
|
||||
<tr><td>FOR</td><td>reserved</td><td>non-reserved</td><td>reserved</td></tr>
|
||||
<tr><td>FOREIGN</td><td>reserved</td><td>non-reserved</td><td>reserved</td></tr>
|
||||
|
@ -153,7 +152,6 @@ Below is a list of all the keywords in Spark SQL.
|
|||
<tr><td>JOIN</td><td>reserved</td><td>strict-non-reserved</td><td>reserved</td></tr>
|
||||
<tr><td>KEYS</td><td>non-reserved</td><td>non-reserved</td><td>non-reserved</td></tr>
|
||||
<tr><td>LAST</td><td>non-reserved</td><td>non-reserved</td><td>non-reserved</td></tr>
|
||||
<tr><td>LAST_VALUE</td><td>reserved</td><td>non-reserved</td><td>reserved</td></tr>
|
||||
<tr><td>LATERAL</td><td>non-reserved</td><td>non-reserved</td><td>reserved</td></tr>
|
||||
<tr><td>LAZY</td><td>non-reserved</td><td>non-reserved</td><td>non-reserved</td></tr>
|
||||
<tr><td>LEADING</td><td>reserved</td><td>non-reserved</td><td>reserved</td></tr>
|
||||
|
@ -221,7 +219,6 @@ Below is a list of all the keywords in Spark SQL.
|
|||
<tr><td>REPAIR</td><td>non-reserved</td><td>non-reserved</td><td>non-reserved</td></tr>
|
||||
<tr><td>REPLACE</td><td>non-reserved</td><td>non-reserved</td><td>non-reserved</td></tr>
|
||||
<tr><td>RESET</td><td>non-reserved</td><td>non-reserved</td><td>non-reserved</td></tr>
|
||||
<tr><td>RESPECT</td><td>non-reserved</td><td>non-reserved</td><td>non-reserved</td></tr>
|
||||
<tr><td>RESTRICT</td><td>non-reserved</td><td>non-reserved</td><td>non-reserved</td></tr>
|
||||
<tr><td>REVOKE</td><td>non-reserved</td><td>non-reserved</td><td>reserved</td></tr>
|
||||
<tr><td>RIGHT</td><td>reserved</td><td>strict-non-reserved</td><td>reserved</td></tr>
|
||||
|
|
|
@ -771,8 +771,8 @@ primaryExpression
|
|||
| CASE value=expression whenClause+ (ELSE elseExpression=expression)? END #simpleCase
|
||||
| CAST '(' expression AS dataType ')' #cast
|
||||
| STRUCT '(' (argument+=namedExpression (',' argument+=namedExpression)*)? ')' #struct
|
||||
| (FIRST | FIRST_VALUE) '(' expression ((IGNORE | RESPECT) NULLS)? ')' #first
|
||||
| (LAST | LAST_VALUE) '(' expression ((IGNORE | RESPECT) NULLS)? ')' #last
|
||||
| FIRST '(' expression (IGNORE NULLS)? ')' #first
|
||||
| LAST '(' expression (IGNORE NULLS)? ')' #last
|
||||
| POSITION '(' substr=valueExpression IN str=valueExpression ')' #position
|
||||
| constant #constantDefault
|
||||
| ASTERISK #star
|
||||
|
@ -1120,7 +1120,6 @@ ansiNonReserved
|
|||
| REPAIR
|
||||
| REPLACE
|
||||
| RESET
|
||||
| RESPECT
|
||||
| RESTRICT
|
||||
| REVOKE
|
||||
| RLIKE
|
||||
|
@ -1280,7 +1279,6 @@ nonReserved
|
|||
| FIELDS
|
||||
| FILEFORMAT
|
||||
| FIRST
|
||||
| FIRST_VALUE
|
||||
| FOLLOWING
|
||||
| FOR
|
||||
| FOREIGN
|
||||
|
@ -1310,7 +1308,6 @@ nonReserved
|
|||
| ITEMS
|
||||
| KEYS
|
||||
| LAST
|
||||
| LAST_VALUE
|
||||
| LATERAL
|
||||
| LAZY
|
||||
| LEADING
|
||||
|
@ -1374,7 +1371,6 @@ nonReserved
|
|||
| REPAIR
|
||||
| REPLACE
|
||||
| RESET
|
||||
| RESPECT
|
||||
| RESTRICT
|
||||
| REVOKE
|
||||
| RLIKE
|
||||
|
@ -1531,7 +1527,6 @@ FIELDS: 'FIELDS';
|
|||
FILTER: 'FILTER';
|
||||
FILEFORMAT: 'FILEFORMAT';
|
||||
FIRST: 'FIRST';
|
||||
FIRST_VALUE: 'FIRST_VALUE';
|
||||
FOLLOWING: 'FOLLOWING';
|
||||
FOR: 'FOR';
|
||||
FOREIGN: 'FOREIGN';
|
||||
|
@ -1565,7 +1560,6 @@ ITEMS: 'ITEMS';
|
|||
JOIN: 'JOIN';
|
||||
KEYS: 'KEYS';
|
||||
LAST: 'LAST';
|
||||
LAST_VALUE: 'LAST_VALUE';
|
||||
LATERAL: 'LATERAL';
|
||||
LAZY: 'LAZY';
|
||||
LEADING: 'LEADING';
|
||||
|
@ -1632,7 +1626,6 @@ RENAME: 'RENAME';
|
|||
REPAIR: 'REPAIR';
|
||||
REPLACE: 'REPLACE';
|
||||
RESET: 'RESET';
|
||||
RESPECT: 'RESPECT';
|
||||
RESTRICT: 'RESTRICT';
|
||||
REVOKE: 'REVOKE';
|
||||
RIGHT: 'RIGHT';
|
||||
|
|
|
@ -771,15 +771,6 @@ class ExpressionParserSuite extends AnalysisTest {
|
|||
assertEqual("last(a)", Last('a, Literal(false)).toAggregateExpression())
|
||||
}
|
||||
|
||||
test("Support respect nulls keywords for first_value and last_value") {
|
||||
assertEqual("first_value(a ignore nulls)", First('a, Literal(true)).toAggregateExpression())
|
||||
assertEqual("first_value(a respect nulls)", First('a, Literal(false)).toAggregateExpression())
|
||||
assertEqual("first_value(a)", First('a, Literal(false)).toAggregateExpression())
|
||||
assertEqual("last_value(a ignore nulls)", Last('a, Literal(true)).toAggregateExpression())
|
||||
assertEqual("last_value(a respect nulls)", Last('a, Literal(false)).toAggregateExpression())
|
||||
assertEqual("last_value(a)", Last('a, Literal(false)).toAggregateExpression())
|
||||
}
|
||||
|
||||
test("timestamp literals") {
|
||||
DateTimeTestUtils.outstandingTimezones.foreach { timeZone =>
|
||||
withSQLConf(SQLConf.SESSION_LOCAL_TIMEZONE.key -> timeZone.getID) {
|
||||
|
|
|
@ -369,7 +369,6 @@ class TableIdentifierParserSuite extends SparkFunSuite with SQLHelper {
|
|||
"fields",
|
||||
"fileformat",
|
||||
"first",
|
||||
"first_value",
|
||||
"following",
|
||||
"for",
|
||||
"foreign",
|
||||
|
@ -403,7 +402,6 @@ class TableIdentifierParserSuite extends SparkFunSuite with SQLHelper {
|
|||
"join",
|
||||
"keys",
|
||||
"last",
|
||||
"last_value",
|
||||
"lateral",
|
||||
"lazy",
|
||||
"leading",
|
||||
|
@ -467,7 +465,6 @@ class TableIdentifierParserSuite extends SparkFunSuite with SQLHelper {
|
|||
"repair",
|
||||
"replace",
|
||||
"reset",
|
||||
"respect",
|
||||
"restrict",
|
||||
"revoke",
|
||||
"right",
|
||||
|
@ -562,7 +559,6 @@ class TableIdentifierParserSuite extends SparkFunSuite with SQLHelper {
|
|||
"except",
|
||||
"false",
|
||||
"fetch",
|
||||
"first_value",
|
||||
"for",
|
||||
"foreign",
|
||||
"from",
|
||||
|
@ -577,7 +573,6 @@ class TableIdentifierParserSuite extends SparkFunSuite with SQLHelper {
|
|||
"into",
|
||||
"join",
|
||||
"is",
|
||||
"last_value",
|
||||
"leading",
|
||||
"left",
|
||||
"minute",
|
||||
|
|
Loading…
Reference in a new issue