@@ -253,7 +253,12 @@ fn parse_delete_statement() {
253253 match verified_stmt ( sql) {
254254 Statement :: Delete { table_name, .. } => {
255255 assert_eq ! (
256- ObjectName ( vec![ Ident :: with_quote( '"' , "table" ) ] ) ,
256+ TableFactor :: Table {
257+ name: ObjectName ( vec![ Ident :: with_quote( '"' , "table" ) ] ) ,
258+ alias: None ,
259+ args: None ,
260+ with_hints: vec![ ]
261+ } ,
257262 table_name
258263 ) ;
259264 }
@@ -269,11 +274,20 @@ fn parse_where_delete_statement() {
269274 match verified_stmt ( sql) {
270275 Statement :: Delete {
271276 table_name,
277+ using,
272278 selection,
273- ..
274279 } => {
275- assert_eq ! ( ObjectName ( vec![ Ident :: new( "foo" ) ] ) , table_name) ;
280+ assert_eq ! (
281+ TableFactor :: Table {
282+ name: ObjectName ( vec![ Ident :: new( "foo" ) ] ) ,
283+ alias: None ,
284+ args: None ,
285+ with_hints: vec![ ]
286+ } ,
287+ table_name,
288+ ) ;
276289
290+ assert_eq ! ( None , using) ;
277291 assert_eq ! (
278292 Expr :: BinaryOp {
279293 left: Box :: new( Expr :: Identifier ( Ident :: new( "name" ) ) ) ,
@@ -287,6 +301,61 @@ fn parse_where_delete_statement() {
287301 }
288302}
289303
304+ #[ test]
305+ fn parse_where_delete_with_alias_statement ( ) {
306+ use self :: BinaryOperator :: * ;
307+
308+ let sql = "DELETE FROM basket AS a USING basket AS b WHERE a.id < b.id" ;
309+ match verified_stmt ( sql) {
310+ Statement :: Delete {
311+ table_name,
312+ using,
313+ selection,
314+ } => {
315+ assert_eq ! (
316+ TableFactor :: Table {
317+ name: ObjectName ( vec![ Ident :: new( "basket" ) ] ) ,
318+ alias: Some ( TableAlias {
319+ name: Ident :: new( "a" ) ,
320+ columns: vec![ ]
321+ } ) ,
322+ args: None ,
323+ with_hints: vec![ ]
324+ } ,
325+ table_name,
326+ ) ;
327+
328+ assert_eq ! (
329+ Some ( TableFactor :: Table {
330+ name: ObjectName ( vec![ Ident :: new( "basket" ) ] ) ,
331+ alias: Some ( TableAlias {
332+ name: Ident :: new( "b" ) ,
333+ columns: vec![ ]
334+ } ) ,
335+ args: None ,
336+ with_hints: vec![ ]
337+ } ) ,
338+ using
339+ ) ;
340+ assert_eq ! (
341+ Expr :: BinaryOp {
342+ left: Box :: new( Expr :: CompoundIdentifier ( vec![
343+ Ident :: new( "a" ) ,
344+ Ident :: new( "id" )
345+ ] ) ) ,
346+ op: Lt ,
347+ right: Box :: new( Expr :: CompoundIdentifier ( vec![
348+ Ident :: new( "b" ) ,
349+ Ident :: new( "id" )
350+ ] ) ) ,
351+ } ,
352+ selection. unwrap( ) ,
353+ ) ;
354+ }
355+ _ => unreachable ! ( ) ,
356+ }
357+ }
358+
290359#[ test]
291360fn parse_top_level ( ) {
292361 verified_stmt ( "SELECT 1" ) ;
0 commit comments