As part of the upgrade to DataFusion v43, we found that the CrossJoin logical plan node was removed in DataFusion (https://github.com/apache/datafusion/pull/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
Describe the bug
As part of the upgrade to DataFusion v43, we found that the CrossJoin logical plan node was removed in DataFusion (https://github.com/apache/datafusion/pull/12985), replacing it with a
JOIN
with no conditions.i.e. in DataFusion the following two statements are logically similar:
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 toSELECT * FROM t1 JOIN t2
Expected behavior
SELECT * FROM t1 CROSS JOIN t2
andSELECT * FROM t1 JOIN t2
are unparsed toSELECT * FROM t1 CROSS JOIN t2
Additional context
No response