mirror of
https://github.com/apache/datafusion-sqlparser-rs.git
synced 2025-07-08 01:15:00 +00:00
Fix join precedence for non-snowflake queries
This commit is contained in:
parent
7865de015f
commit
16f7d6cf64
2 changed files with 23 additions and 1 deletions
|
@ -12467,7 +12467,7 @@ impl<'a> Parser<'a> {
|
|||
};
|
||||
let mut relation = self.parse_table_factor()?;
|
||||
|
||||
if self.peek_parens_less_nested_join() {
|
||||
if dialect_of!(self is SnowflakeDialect) && self.peek_parens_less_nested_join() {
|
||||
let joins = self.parse_joins()?;
|
||||
relation = TableFactor::NestedJoin {
|
||||
table_with_joins: Box::new(TableWithJoins { relation, joins }),
|
||||
|
|
|
@ -15356,3 +15356,25 @@ fn check_enforced() {
|
|||
"CREATE TABLE t (a INT, b INT, c INT, CHECK (a > 0) NOT ENFORCED, CHECK (b > 0) ENFORCED, CHECK (c > 0))",
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn join_precedence() {
|
||||
all_dialects_except(|d| d.is::<SnowflakeDialect>()).verified_query_with_canonical(
|
||||
"SELECT *
|
||||
FROM t1
|
||||
NATURAL JOIN t5
|
||||
INNER JOIN t0 ON (t0.v1 + t5.v0) > 0
|
||||
WHERE t0.v1 = t1.v0",
|
||||
// canonical string without parentheses
|
||||
"SELECT * FROM t1 NATURAL JOIN t5 INNER JOIN t0 ON (t0.v1 + t5.v0) > 0 WHERE t0.v1 = t1.v0",
|
||||
);
|
||||
TestedDialects::new(vec![Box::new(SnowflakeDialect {})]).verified_query_with_canonical(
|
||||
"SELECT *
|
||||
FROM t1
|
||||
NATURAL JOIN t5
|
||||
INNER JOIN t0 ON (t0.v1 + t5.v0) > 0
|
||||
WHERE t0.v1 = t1.v0",
|
||||
// canonical string with parentheses
|
||||
"SELECT * FROM t1 NATURAL JOIN (t5 INNER JOIN t0 ON (t0.v1 + t5.v0) > 0) WHERE t0.v1 = t1.v0",
|
||||
);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue