Skip to content

Commit 4009fa7

Browse files
committed
fixup: add precedence tests as well
1 parent 75ba821 commit 4009fa7

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
@@ -16006,6 +16006,27 @@ fn parse_not_null_supported() {
1600616006
let _ = dialects.expr_parses_to("x NOT NULL", "x IS NOT NULL");
1600716007
}
1600816008

16009+
#[test]
16010+
fn test_not_null_precedence() {
16011+
// For dialects which support it, `NOT NULL NOT NULL` should
16012+
// parse as `(NOT (NULL IS NOT NULL))`
16013+
let supported_dialects =
16014+
all_dialects_where(|d| d.supports_is_not_null_alias(IsNotNullAlias::NotSpaceNull));
16015+
let unsuported_dialects =
16016+
all_dialects_except(|d| d.supports_is_not_null_alias(IsNotNullAlias::NotSpaceNull));
16017+
16018+
assert_matches!(
16019+
supported_dialects.expr_parses_to("NOT NULL NOT NULL", "NOT NULL IS NOT NULL"),
16020+
Expr::UnaryOp {
16021+
op: UnaryOperator::Not,
16022+
..
16023+
}
16024+
);
16025+
16026+
// for unsupported dialects, parsing should stop at `NOT NULL`
16027+
unsuported_dialects.expr_parses_to("NOT NULL NOT NULL", "NOT NULL");
16028+
}
16029+
1600916030
#[test]
1601016031
fn parse_notnull_unsupported() {
1601116032
// Only Postgres, DuckDB, and SQLite support `x NOTNULL` as an expression
@@ -16022,3 +16043,24 @@ fn parse_notnull_supported() {
1602216043
let dialects = all_dialects_where(|d| d.supports_is_not_null_alias(IsNotNullAlias::NotNull));
1602316044
let _ = dialects.expr_parses_to("x NOTNULL", "x IS NOT NULL");
1602416045
}
16046+
16047+
#[test]
16048+
fn test_notnull_precedence() {
16049+
// For dialects which support it, `NOT NULL NOTNULL` should
16050+
// parse as `(NOT (NULL IS NOT NULL))`
16051+
let supported_dialects =
16052+
all_dialects_where(|d| d.supports_is_not_null_alias(IsNotNullAlias::NotNull));
16053+
let unsuported_dialects =
16054+
all_dialects_except(|d| d.supports_is_not_null_alias(IsNotNullAlias::NotNull));
16055+
16056+
assert_matches!(
16057+
supported_dialects.expr_parses_to("NOT NULL NOTNULL", "NOT NULL IS NOT NULL"),
16058+
Expr::UnaryOp {
16059+
op: UnaryOperator::Not,
16060+
..
16061+
}
16062+
);
16063+
16064+
// for unsupported dialects, parsing should stop at `NOT NULL`
16065+
unsuported_dialects.expr_parses_to("NOT NULL NOTNULL", "NOT NULL");
16066+
}

0 commit comments

Comments
 (0)