summaryrefslogtreecommitdiffstats
path: root/sqlglot/optimizer/expand_multi_table_selects.py
blob: 86f0c2d1d2854cfdd9430756b55a9d006151214e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from sqlglot import exp


def expand_multi_table_selects(expression):
    """
    Replace multiple FROM expressions with JOINs.

    Example:
        >>> from sqlglot import parse_one
        >>> expand_multi_table_selects(parse_one("SELECT * FROM x, y")).sql()
        'SELECT * FROM x CROSS JOIN y'
    """
    for from_ in expression.find_all(exp.From):
        parent = from_.parent

        for query in from_.expressions[1:]:
            parent.join(
                query,
                join_type="CROSS",
                copy=False,
            )
            from_.expressions.remove(query)

    return expression