Skip to content

Commit 637fb69

Browse files
committed
fixup: add precedence tests as well
1 parent 431fca3 commit 637fb69

File tree

1 file changed

+42
-0
lines changed

1 file changed

+42
-0
lines changed

tests/sqlparser_common.rs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15992,6 +15992,27 @@ fn parse_not_null_supported() {
1599215992
let _ = dialects.expr_parses_to("x NOT NULL", "x IS NOT NULL");
1599315993
}
1599415994

15995+
#[test]
15996+
fn test_not_null_precedence() {
15997+
// For dialects which support it, `NOT NULL NOT NULL` should
15998+
// parse as `(NOT (NULL IS NOT NULL))`
15999+
let supported_dialects =
16000+
all_dialects_where(|d| d.supports_is_not_null_alias(IsNotNullAlias::NotSpaceNull));
16001+
let unsuported_dialects =
16002+
all_dialects_except(|d| d.supports_is_not_null_alias(IsNotNullAlias::NotSpaceNull));
16003+
16004+
assert_matches!(
16005+
supported_dialects.expr_parses_to("NOT NULL NOT NULL", "NOT NULL IS NOT NULL"),
16006+
Expr::UnaryOp {
16007+
op: UnaryOperator::Not,
16008+
..
16009+
}
16010+
);
16011+
16012+
// for unsupported dialects, parsing should stop at `NOT NULL`
16013+
unsuported_dialects.expr_parses_to("NOT NULL NOT NULL", "NOT NULL");
16014+
}
16015+
1599516016
#[test]
1599616017
fn parse_notnull_unsupported() {
1599716018
// Only Postgres, DuckDB, and SQLite support `x NOTNULL` as an expression
@@ -16008,3 +16029,24 @@ fn parse_notnull_supported() {
1600816029
let dialects = all_dialects_where(|d| d.supports_is_not_null_alias(IsNotNullAlias::NotNull));
1600916030
let _ = dialects.expr_parses_to("x NOTNULL", "x IS NOT NULL");
1601016031
}
16032+
16033+
#[test]
16034+
fn test_notnull_precedence() {
16035+
// For dialects which support it, `NOT NULL NOTNULL` should
16036+
// parse as `(NOT (NULL IS NOT NULL))`
16037+
let supported_dialects =
16038+
all_dialects_where(|d| d.supports_is_not_null_alias(IsNotNullAlias::NotNull));
16039+
let unsuported_dialects =
16040+
all_dialects_except(|d| d.supports_is_not_null_alias(IsNotNullAlias::NotNull));
16041+
16042+
assert_matches!(
16043+
supported_dialects.expr_parses_to("NOT NULL NOTNULL", "NOT NULL IS NOT NULL"),
16044+
Expr::UnaryOp {
16045+
op: UnaryOperator::Not,
16046+
..
16047+
}
16048+
);
16049+
16050+
// for unsupported dialects, parsing should stop at `NOT NULL`
16051+
unsuported_dialects.expr_parses_to("NOT NULL NOTNULL", "NOT NULL");
16052+
}

0 commit comments

Comments
 (0)