@@ -1162,16 +1162,22 @@ defmodule Ecto.Adapters.PostgresTest do
1162
1162
~s{ WHERE ((s0."id" > 0) AND (s0."id" < $2))}
1163
1163
end
1164
1164
1165
- test "cross join" do
1166
- query = from ( p in Schema , cross_join: c in Schema2 , select: { p . id , c . id } ) |> plan ( )
1165
+ test "cross lateral join with fragment" do
1166
+ query = Schema
1167
+ |> join ( :cross_lateral , [ p ] , q in fragment ( "SELECT * FROM schema2 AS s2 WHERE s2.id = ? AND s2.field = ?" , p . x , ^ 10 ) )
1168
+ |> select ( [ p , q ] , { p . id , q . z } )
1169
+ |> where ( [ p ] , p . id > 0 and p . id < ^ 100 )
1170
+ |> plan ( )
1167
1171
assert all ( query ) ==
1168
- "SELECT s0.\" id\" , s1.\" id\" FROM \" schema\" AS s0 CROSS JOIN \" schema2\" AS s1"
1172
+ ~s{ SELECT s0."id", f1."z" FROM "schema" AS s0 CROSS JOIN LATERAL } <>
1173
+ ~s{ (SELECT * FROM schema2 AS s2 WHERE s2.id = s0."x" AND s2.field = $1) AS f1 ON TRUE } <>
1174
+ ~s{ WHERE ((s0."id" > 0) AND (s0."id" < $2))}
1169
1175
end
1170
1176
1171
- test "cross lateral join" do
1172
- query = from ( p in Schema , cross_lateral_join : c in Schema2 , select: { p . id , c . id } ) |> plan ( )
1177
+ test "cross join" do
1178
+ query = from ( p in Schema , cross_join : c in Schema2 , select: { p . id , c . id } ) |> plan ( )
1173
1179
assert all ( query ) ==
1174
- "SELECT s0.\" id\" , s1.\" id\" FROM \" schema\" AS s0 CROSS JOIN LATERAL \" schema2\" AS s1"
1180
+ "SELECT s0.\" id\" , s1.\" id\" FROM \" schema\" AS s0 CROSS JOIN \" schema2\" AS s1"
1175
1181
end
1176
1182
1177
1183
test "cross join with fragment" do
0 commit comments