Skip to content

Commit ab14de1

Browse files
committed
Add test coverage for INSERT/DELETE statement spans
1 parent 8db9865 commit ab14de1

File tree

1 file changed

+37
-2
lines changed

1 file changed

+37
-2
lines changed

src/ast/spans.rs

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1240,8 +1240,8 @@ impl Spanned for Insert {
12401240
} = self;
12411241

12421242
union_spans(
1243-
core::iter::once(table.span())
1244-
.chain(core::iter::once(insert_token.0.span))
1243+
core::iter::once(insert_token.0.span)
1244+
.chain(core::iter::once(table.span()))
12451245
.chain(table_alias.as_ref().map(|i| i.span))
12461246
.chain(columns.iter().map(|i| i.span))
12471247
.chain(source.as_ref().map(|q| q.span()))
@@ -2560,4 +2560,39 @@ ALTER TABLE users
25602560
assert_eq!(stmt_span.start, (2, 7).into());
25612561
assert_eq!(stmt_span.end, (5, 17).into());
25622562
}
2563+
2564+
#[test]
2565+
fn test_insert_statement_span() {
2566+
let sql = r#"
2567+
/* foo */ INSERT INTO FOO (X, Y, Z) VALUES (1, 2, 3 )
2568+
;"#;
2569+
2570+
let r = Parser::parse_sql(&crate::dialect::GenericDialect, sql).unwrap();
2571+
assert_eq!(1, r.len());
2572+
2573+
dbg!(&r[0]);
2574+
2575+
let stmt_span = r[0].span();
2576+
2577+
assert_eq!(stmt_span.start, (2, 11).into());
2578+
// XXX to be enabled once #2050 is fixed
2579+
// assert_eq!(stmt_span.end, (2, 60).into());
2580+
}
2581+
2582+
#[test]
2583+
fn test_delete_statement_span() {
2584+
let sql = r#"-- foo
2585+
DELETE /* quux */
2586+
FROM foo
2587+
WHERE foo.x = 42
2588+
;"#;
2589+
2590+
let r = Parser::parse_sql(&crate::dialect::GenericDialect, sql).unwrap();
2591+
assert_eq!(1, r.len());
2592+
2593+
let stmt_span = r[0].span();
2594+
2595+
assert_eq!(stmt_span.start, (2, 7).into());
2596+
assert_eq!(stmt_span.end, (4, 24).into());
2597+
}
25632598
}

0 commit comments

Comments
 (0)