1
0
Fork 0
sqlglot/tests/fixtures/optimizer/eliminate_joins.sql
Daniel Baumann e6b3d2fe54
Merging upstream version 7.1.3.
Signed-off-by: Daniel Baumann <daniel@debian.org>
2025-02-13 14:46:58 +01:00

317 lines
3.3 KiB
SQL

# title: Remove left join on distinct derived table
SELECT
x.a
FROM x
LEFT JOIN (
SELECT DISTINCT
y.b
FROM y
) AS y
ON x.b = y.b;
SELECT
x.a
FROM x;
# title: Remove left join on grouped derived table
SELECT
x.a
FROM x
LEFT JOIN (
SELECT
y.b,
SUM(y.c)
FROM y
GROUP BY y.b
) AS y
ON x.b = y.b;
SELECT
x.a
FROM x;
# title: Remove left join on aggregate derived table
SELECT
x.a
FROM x
LEFT JOIN (
SELECT
SUM(y.b) AS b
FROM y
) AS y
ON x.b = y.b;
SELECT
x.a
FROM x;
# title: Noop - not all distinct columns in condition
SELECT
x.a
FROM x
LEFT JOIN (
SELECT DISTINCT
y.b,
y.c
FROM y
) AS y
ON x.b = y.b;
SELECT
x.a
FROM x
LEFT JOIN (
SELECT DISTINCT
y.b,
y.c
FROM y
) AS y
ON x.b = y.b;
# title: Noop - not all grouped columns in condition
SELECT
x.a
FROM x
LEFT JOIN (
SELECT
y.b,
y.c
FROM y
GROUP BY
y.b,
y.c
) AS y
ON x.b = y.b;
SELECT
x.a
FROM x
LEFT JOIN (
SELECT
y.b,
y.c
FROM y
GROUP BY
y.b,
y.c
) AS y
ON x.b = y.b;
# title: Noop - not left join
SELECT
x.a
FROM x
JOIN (
SELECT DISTINCT
y.b
FROM y
) AS y
ON x.b = y.b;
SELECT
x.a
FROM x
JOIN (
SELECT DISTINCT
y.b
FROM y
) AS y
ON x.b = y.b;
# title: Noop - unqualified columns
SELECT
a
FROM x
LEFT JOIN (
SELECT DISTINCT
y.b
FROM y
) AS y
ON x.b = y.b;
SELECT
a
FROM x
LEFT JOIN (
SELECT DISTINCT
y.b
FROM y
) AS y
ON x.b = y.b;
# title: Noop - cross join
SELECT
a
FROM x
CROSS JOIN (
SELECT DISTINCT
y.b
FROM y
) AS y;
SELECT
a
FROM x
CROSS JOIN (
SELECT DISTINCT
y.b
FROM y
) AS y;
# title: Noop - column is used
SELECT
x.a,
y.b
FROM x
LEFT JOIN (
SELECT DISTINCT
y.b
FROM y
) AS y
ON x.b = y.b;
SELECT
x.a,
y.b
FROM x
LEFT JOIN (
SELECT DISTINCT
y.b
FROM y
) AS y
ON x.b = y.b;
# title: Multiple group by columns
SELECT
x.a
FROM x
LEFT JOIN (
SELECT
y.b AS b,
y.c + 1 AS d,
COUNT(1)
FROM y
GROUP BY y.b, y.c + 1
) AS y
ON x.b = y.b
AND 1 = y.d;
SELECT
x.a
FROM x;
# title: Chained left joins
SELECT
x.a
FROM x
LEFT JOIN (
SELECT
y.b AS b
FROM y
GROUP BY y.b
) AS y
ON x.b = y.b
LEFT JOIN (
SELECT
y.b AS c
FROM y
GROUP BY y.b
) AS z
ON y.b = z.c;
SELECT
x.a
FROM x;
# title: CTE
WITH z AS (
SELECT DISTINCT
y.b
FROM y
)
SELECT
x.a
FROM x
LEFT JOIN z
ON x.b = z.b;
WITH z AS (
SELECT DISTINCT
y.b
FROM y
)
SELECT
x.a
FROM x;
# title: Noop - Not all grouped expressions are in outputs
SELECT
x.a
FROM x
LEFT JOIN (
SELECT
y.b
FROM y
GROUP BY
y.b,
y.c
) AS y
ON x.b = y.b;
SELECT
x.a
FROM x
LEFT JOIN (
SELECT
y.b
FROM y
GROUP BY
y.b,
y.c
) AS y
ON x.b = y.b;
# title: Cross join on aggregate derived table
SELECT
x.a
FROM x
CROSS JOIN (
SELECT
SUM(y.b) AS b
FROM y
) AS y;
SELECT
x.a
FROM x;
# title: Cross join on derived table with LIMIT 1
SELECT
x.a
FROM x
CROSS JOIN (
SELECT
y.b AS b
FROM y
LIMIT 1
) AS y;
SELECT
x.a
FROM x;
# title: Cross join on derived table with no FROM clause
SELECT
x.a
FROM x
CROSS JOIN (
SELECT
1 AS b,
2 AS c
) AS y;
SELECT
x.a
FROM x;
# title: Noop - cross join on non-aggregate subquery
SELECT
x.a
FROM x
CROSS JOIN (
SELECT
y.b
FROM y
) AS y;
SELECT
x.a
FROM x
CROSS JOIN (
SELECT
y.b
FROM y
) AS y;