Skip to content

Commit 5380884

Browse files
committed
fix lambda sqllogictests
1 parent f724ef5 commit 5380884

1 file changed

Lines changed: 16 additions & 14 deletions

File tree

datafusion/sqllogictest/test_files/lambda.slt

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ SELECT array_transform([[1, 2]], a -> array_transform(a, a -> a+1))
6262
query ?
6363
SELECT array_transform([[[1], [2], [3]]], a -> array_transform(a, b -> array_transform(b, c -> c*2)));
6464
----
65-
[[[4], [6], [8]]]
65+
[[[2], [4], [6]]]
6666

6767
# parameter shadows unqualified column
6868
query I?
@@ -74,20 +74,20 @@ SELECT number, array_transform([1, 2], number -> number+1) from t;
7474

7575
# type coercion inside lambda body
7676
query ?
77-
SELECT array_transform([1.0, 2.0], v -> v + 3) from t;
77+
SELECT array_transform([t.number], v -> v + 3.0) from t;
7878
----
79-
[11.0, 12.0]
80-
[41.0, 42.0]
81-
[61.0, 62.0]
79+
[13.0]
80+
[43.0]
81+
[63.0]
8282

8383
query TT
84-
EXPLAIN SELECT array_transform([1.0, 2.0], v -> v + 3) from t;
84+
EXPLAIN SELECT array_transform([t.number], v -> v + 3.0) from t;
8585
----
8686
logical_plan
87-
01)Projection: array_transform(List([1.0, 2.0]), (v) -> v + CAST(t.number AS Float64)) AS array_transform(make_array(Float64(1),Float64(2)),(v) -> v + t.number)
87+
01)Projection: array_transform(make_array(t.number), (v) -> CAST(v AS Float64) + Float64(3))
8888
02)--TableScan: t projection=[number]
8989
physical_plan
90-
01)ProjectionExec: expr=[array_transform([1.0, 2.0], (v) -> v@ + CAST(number@0 AS Float64)) as array_transform(make_array(Float64(1),Float64(2)),(v) -> v + t.number)]
90+
01)ProjectionExec: expr=[array_transform(make_array(number@0), (v) -> CAST(v@ AS Float64) + 3) as array_transform(make_array(t.number),(v) -> v + Float64(3))]
9191
02)--DataSourceExec: partitions=1, partition_sizes=[1]
9292

9393
#cse should not eliminate subtrees containing lambdas
@@ -103,14 +103,16 @@ physical_plan
103103

104104
#cse should not eliminate subtrees containing lambda variables
105105
query TT
106-
explain select array_transform([t.number], v -> v*2), array_transform([t.number+1], (v, i) -> v*2) from t;
106+
explain select array_transform([t.number], v -> v*2), array_transform([t.number], v -> v*2-1) from t;
107107
----
108108
logical_plan
109-
01)Projection: array_transform(make_array(t.number), (v) -> CAST(v AS Int64) * Int64(2)), array_transform(make_array(CAST(t.number AS Int64) + Int64(1)), (v, i) -> v * Int64(2))
110-
02)--TableScan: t projection=[number]
109+
01)Projection: array_transform(__common_expr_1 AS make_array(t.number), (v) -> CAST(v AS Int64) * Int64(2)), array_transform(__common_expr_1 AS make_array(t.number), (v) -> CAST(v AS Int64) * Int64(2) - Int64(1))
110+
02)--Projection: make_array(t.number) AS __common_expr_1
111+
03)----TableScan: t projection=[number]
111112
physical_plan
112-
01)ProjectionExec: expr=[array_transform(make_array(number@0), (v) -> CAST(v@ AS Int64) * 2) as array_transform(make_array(t.number),(v) -> v * Int64(2)), array_transform(make_array(CAST(number@0 AS Int64) + 1), (v, i) -> v@ * 2) as array_transform(make_array(t.number + Int64(1)),(v, i) -> v * Int64(2))]
113-
02)--DataSourceExec: partitions=1, partition_sizes=[1]
113+
01)ProjectionExec: expr=[array_transform(__common_expr_1@0, (v) -> CAST(v@ AS Int64) * 2) as array_transform(make_array(t.number),(v) -> v * Int64(2)), array_transform(__common_expr_1@0, (v) -> CAST(v@ AS Int64) * 2 - 1) as array_transform(make_array(t.number),(v) -> v * Int64(2) - Int64(1))]
114+
02)--ProjectionExec: expr=[make_array(number@0) as __common_expr_1]
115+
03)----DataSourceExec: partitions=1, partition_sizes=[1]
114116

115117

116118
# test that sql planner plans resolved lambda variables, as v[1] planning checks the datatype of lhs
@@ -163,7 +165,7 @@ select array_transform(1, v -> v*2);
163165
query error DataFusion error: Error during planning: array_transform expects a value followed by a lambda, got Lambda\(\(\)\) and Value\(Field \{ name: "make_array\(Int64\(1\),Int64\(2\)\)", data_type: List\(Field \{ data_type: Int64, nullable: true \}\), nullable: true \}\)
164166
select array_transform(v -> v*2, [1, 2]);
165167

166-
query error DataFusion error: Error during planning: lambda defined 3 params but UDF support only 2
168+
query error DataFusion error: Error during planning: lambda defined 3 params but UDF support only 1
167169
SELECT array_transform([1, 2], (e, i, j) -> i);
168170

169171
query error DataFusion error: Error during planning: lambda parameters names must be unique, got \(v, v\)

0 commit comments

Comments
 (0)