@@ -2928,10 +2928,9 @@ fn parse_mssql_go_keyword() {
29282928 // }
29292929 // );
29302930
2931- // let actually_column_alias_no_as = "SELECT NULL GO";
2932- // let stmts = ms().parse_sql_statements(actually_column_alias_no_as).unwrap();
2933- // assert_eq!(stmts.len(), 1);
2934- // match &stmts[0] {
2931+ // let actually_column_alias = "SELECT NULL GO";
2932+ // let stmt = ms().one_statement_parses_to(actually_column_alias, "SELECT NULL AS GO");
2933+ // match &stmt {
29352934 // Statement::Query(query) => {
29362935 // let select = query.body.as_select().unwrap();
29372936 // assert_eq!(
@@ -2945,6 +2944,11 @@ fn parse_mssql_go_keyword() {
29452944 // _ => panic!("Expected Query statement"),
29462945 // }
29472946
2947+ let cte_following_go = "USE some_database;\n GO\n ;WITH cte AS (\n SELECT 1 x\n )\n SELECT * FROM cte;" ;
2948+ let stmts = ms ( ) . parse_sql_statements ( cte_following_go) . unwrap ( ) ;
2949+ assert_eq ! ( stmts. len( ) , 3 ) ;
2950+ assert_eq ! ( stmts[ 1 ] , Statement :: Go ( GoStatement { count: None } ) ) ;
2951+
29482952 let multi_line_comment_following = "USE some_database;\n GO/* okay */42" ;
29492953 let stmts =
29502954 ms ( ) . statements_parse_to ( multi_line_comment_following, 2 , "USE some_database\n GO 42" ) ;
@@ -2963,6 +2967,13 @@ fn parse_mssql_go_keyword() {
29632967 err. unwrap_err( ) . to_string( ) ,
29642968 "sql parser error: Expected: literal int or newline, found: x"
29652969 ) ;
2970+
2971+ let invalid_go_delimiter = "SELECT 1\n GO;" ;
2972+ let err = ms ( ) . parse_sql_statements ( invalid_go_delimiter) ;
2973+ assert_eq ! (
2974+ err. unwrap_err( ) . to_string( ) ,
2975+ "sql parser error: Expected: literal int or newline, found: ;"
2976+ ) ;
29662977}
29672978
29682979#[ test]
0 commit comments