@@ -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