Skip to content

Commit 3f486d2

Browse files
author
William Wilkinson
committed
Add support for postgres cross lateral joins.
1 parent 1f07e7b commit 3f486d2

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

lib/ecto/adapters/postgres/connection.ex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -519,6 +519,7 @@ if Code.ensure_loaded?(Postgrex) do
519519
defp join_qual(:right), do: "RIGHT OUTER JOIN "
520520
defp join_qual(:full), do: "FULL OUTER JOIN "
521521
defp join_qual(:cross), do: "CROSS JOIN "
522+
defp join_qual(:cross_lateral), do: "CROSS JOIN LATERAL "
522523

523524
defp where(%{wheres: wheres} = query, sources) do
524525
boolean(" WHERE ", wheres, sources, query)

test/ecto/adapters/postgres_test.exs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1168,6 +1168,12 @@ defmodule Ecto.Adapters.PostgresTest do
11681168
"SELECT s0.\"id\", s1.\"id\" FROM \"schema\" AS s0 CROSS JOIN \"schema2\" AS s1"
11691169
end
11701170

1171+
test "cross lateral join" do
1172+
query = from(p in Schema, cross_lateral_join: c in Schema2, select: {p.id, c.id}) |> plan()
1173+
assert all(query) ==
1174+
"SELECT s0.\"id\", s1.\"id\" FROM \"schema\" AS s0 CROSS JOIN LATERAL \"schema2\" AS s1"
1175+
end
1176+
11711177
test "cross join with fragment" do
11721178
query = from(p in Schema, cross_join: fragment("jsonb_each(?)", p.j), select: {p.id}) |> plan()
11731179
assert all(query) ==

0 commit comments

Comments
 (0)