Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -718,8 +718,8 @@ primaryExpression
| '(' query ')' #subqueryExpression
| qualifiedName '(' (setQuantifier? argument+=expression (',' argument+=expression)*)? ')'
(OVER windowSpec)? #functionCall
| IDENTIFIER '->' expression #lambda
| '(' IDENTIFIER (',' IDENTIFIER)+ ')' '->' expression #lambda
| identifier '->' expression #lambda
| '(' identifier (',' identifier)+ ')' '->' expression #lambda
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ur, I see. Looks reasonable to me.

| value=primaryExpression '[' index=valueExpression ']' #subscript
| identifier #columnReference
| base=primaryExpression '.' fieldName=identifier #dereference
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1559,7 +1559,7 @@ class AstBuilder(conf: SQLConf) extends SqlBaseBaseVisitor[AnyRef] with Logging
* Create an [[LambdaFunction]].
*/
override def visitLambda(ctx: LambdaContext): Expression = withOrigin(ctx) {
val arguments = ctx.IDENTIFIER().asScala.map { name =>
val arguments = ctx.identifier().asScala.map { name =>
UnresolvedNamedLambdaVariable(UnresolvedAttribute.quoted(name.getText).nameParts)
}
val function = expression(ctx.expression).transformUp {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -83,3 +83,12 @@ select transform_values(ys, (k, v) -> v + 1) as v from nested;

-- Transform values in a map using values
select transform_values(ys, (k, v) -> k + v) as v from nested;

-- use non reversed keywords: all is non reversed only if !ansi
select transform(ys, all -> all * all) as v from values (array(32, 97)) as t(ys);
select transform(ys, (all, i) -> all + i) as v from values (array(32, 97)) as t(ys);

set spark.sql.ansi.enabled=true;
select transform(ys, all -> all * all) as v from values (array(32, 97)) as t(ys);
select transform(ys, (all, i) -> all + i) as v from values (array(32, 97)) as t(ys);
set spark.sql.ansi.enabled=false;
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
-- Automatically generated by SQLQueryTestSuite
-- Number of queries: 27
-- Number of queries: 33


-- !query 0
Expand Down Expand Up @@ -254,3 +254,63 @@ struct<v:map<int,int>>
-- !query 26 output
{1:2,2:4,3:6}
{4:8,5:10,6:12}


-- !query 27
select transform(ys, all -> all * all) as v from values (array(32, 97)) as t(ys)
-- !query 27 schema
struct<v:array<int>>
-- !query 27 output
[1024,9409]


-- !query 28
select transform(ys, (all, i) -> all + i) as v from values (array(32, 97)) as t(ys)
-- !query 28 schema
struct<v:array<int>>
-- !query 28 output
[32,98]


-- !query 29
set spark.sql.ansi.enabled=true
-- !query 29 schema
struct<key:string,value:string>
-- !query 29 output
spark.sql.ansi.enabled true


-- !query 30
select transform(ys, all -> all * all) as v from values (array(32, 97)) as t(ys)
-- !query 30 schema
struct<>
-- !query 30 output
org.apache.spark.sql.catalyst.parser.ParseException

no viable alternative at input 'all'(line 1, pos 21)

== SQL ==
select transform(ys, all -> all * all) as v from values (array(32, 97)) as t(ys)
---------------------^^^


-- !query 31
select transform(ys, (all, i) -> all + i) as v from values (array(32, 97)) as t(ys)
-- !query 31 schema
struct<>
-- !query 31 output
org.apache.spark.sql.catalyst.parser.ParseException

no viable alternative at input 'all'(line 1, pos 22)

== SQL ==
select transform(ys, (all, i) -> all + i) as v from values (array(32, 97)) as t(ys)
----------------------^^^


-- !query 32
set spark.sql.ansi.enabled=false
-- !query 32 schema
struct<key:string,value:string>
-- !query 32 output
spark.sql.ansi.enabled false