Skip to content

Unparse inner join with no conditions as a cross join #13459

@phillipleblanc

Description

@phillipleblanc

Describe the bug

As part of the upgrade to DataFusion v43, we found that the CrossJoin logical plan node was removed in DataFusion (#12985), replacing it with a JOIN with no conditions.

i.e. in DataFusion the following two statements are logically similar:

SELECT * FROM t1 JOIN t2;
SELECT * FROM t1 CROSS JOIN t2;

This is not true for all databases systems, like Postgres/SQL Server - which will interpret the JOIN as an inner join, which then errors out that no conditions were specified:
SELECT * FROM t1 JOIN t2 -- Error: syntax error at or near "JOIN"

For the unparser, we should return an explicit CROSS JOIN when we unparser a JOIN with no conditions.

To Reproduce

Run the unparser for the following query:

SELECT * FROM t1 CROSS JOIN t2 and observe it gets unparsed to SELECT * FROM t1 JOIN t2

Expected behavior

SELECT * FROM t1 CROSS JOIN t2 and SELECT * FROM t1 JOIN t2 are unparsed to SELECT * FROM t1 CROSS JOIN t2

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions