Skip to content

Commit 3278d5d

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

File tree

1 file changed

+53
-2
lines changed

1 file changed

+53
-2
lines changed

src/ast/spans.rs

Lines changed: 53 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,55 @@ 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+
let stmt_span = r[0].span();
2574+
2575+
assert_eq!(stmt_span.start, (2, 11).into());
2576+
// XXX to be enabled once #2050 is fixed
2577+
// assert_eq!(stmt_span.end, (2, 60).into());
2578+
}
2579+
2580+
#[test]
2581+
fn test_replace_statement_span() {
2582+
let sql = r#"
2583+
/* foo */ REPLACE INTO public.customer (id, name, active) VALUES (1, 2, 3)
2584+
;"#;
2585+
2586+
let r = Parser::parse_sql(&crate::dialect::GenericDialect, sql).unwrap();
2587+
assert_eq!(1, r.len());
2588+
2589+
dbg!(&r[0]);
2590+
2591+
let stmt_span = r[0].span();
2592+
2593+
assert_eq!(stmt_span.start, (2, 11).into());
2594+
// XXX to be enabled once #2050 is fixed
2595+
// assert_eq!(stmt_span.end, (2, 75).into());
2596+
}
2597+
2598+
#[test]
2599+
fn test_delete_statement_span() {
2600+
let sql = r#"-- foo
2601+
DELETE /* quux */
2602+
FROM foo
2603+
WHERE foo.x = 42
2604+
;"#;
2605+
2606+
let r = Parser::parse_sql(&crate::dialect::GenericDialect, sql).unwrap();
2607+
assert_eq!(1, r.len());
2608+
2609+
let stmt_span = r[0].span();
2610+
2611+
assert_eq!(stmt_span.start, (2, 7).into());
2612+
assert_eq!(stmt_span.end, (4, 24).into());
2613+
}
25632614
}

0 commit comments

Comments
 (0)