@@ -2536,7 +2536,6 @@ DECLARE @Y AS NVARCHAR(MAX)='y'
2536
2536
#[ test]
2537
2537
fn test_supports_statements_without_semicolon_delimiter ( ) {
2538
2538
use sqlparser:: ast:: Ident ;
2539
-
2540
2539
use sqlparser:: tokenizer:: Location ;
2541
2540
2542
2541
fn parse_n_statements ( n : usize , sql : & str ) -> Vec < Statement > {
@@ -2846,4 +2845,120 @@ fn test_supports_statements_without_semicolon_delimiter() {
2846
2845
} ,
2847
2846
}
2848
2847
) ;
2848
+
2849
+ let exec_then_update = "\
2850
+ EXEC my_sp \
2851
+ UPDATE my_table SET col = 1 \
2852
+ ";
2853
+ assert_eq ! (
2854
+ parse_n_statements( 2 , exec_then_update) ,
2855
+ vec![
2856
+ Statement :: Execute {
2857
+ name: Some ( ObjectName :: from( vec![ Ident :: new( "my_sp" ) ] ) ) ,
2858
+ parameters: vec![ ] ,
2859
+ has_parentheses: false ,
2860
+ immediate: false ,
2861
+ into: vec![ ] ,
2862
+ using: vec![ ] ,
2863
+ output: false ,
2864
+ default : false ,
2865
+ } ,
2866
+ Statement :: Update {
2867
+ table: TableWithJoins {
2868
+ relation: TableFactor :: Table {
2869
+ name: ObjectName :: from( vec![ Ident :: new( "my_table" ) ] ) ,
2870
+ alias: None ,
2871
+ with_hints: vec![ ] ,
2872
+ args: None ,
2873
+ version: None ,
2874
+ with_ordinality: false ,
2875
+ partitions: vec![ ] ,
2876
+ json_path: None ,
2877
+ sample: None ,
2878
+ index_hints: vec![ ]
2879
+ } ,
2880
+ joins: vec![ ] ,
2881
+ } ,
2882
+ assignments: vec![ Assignment {
2883
+ value: Expr :: Value (
2884
+ number( "1" )
2885
+ . with_span( Span :: new( Location :: new( 3 , 16 ) , Location :: new( 3 , 17 ) ) )
2886
+ ) ,
2887
+ target: AssignmentTarget :: ColumnName ( ObjectName :: from( vec![ Ident :: new( "col" ) ] ) ) ,
2888
+ } , ] ,
2889
+ selection: None ,
2890
+ returning: None ,
2891
+ from: None ,
2892
+ or: None ,
2893
+ limit: None ,
2894
+ } ,
2895
+ ]
2896
+ ) ;
2897
+
2898
+ let exec_params_then_update = "\
2899
+ EXEC my_sp 1, 2 \
2900
+ UPDATE my_table SET col = 1 \
2901
+ ";
2902
+ assert_eq ! (
2903
+ parse_n_statements( 2 , exec_params_then_update) ,
2904
+ vec![
2905
+ Statement :: Execute {
2906
+ name: Some ( ObjectName :: from( vec![ Ident :: with_span(
2907
+ Span :: new( Location :: new( 1 , 6 ) , Location :: new( 1 , 11 ) ) ,
2908
+ "my_sp"
2909
+ ) ] ) ) ,
2910
+ parameters: vec![
2911
+ Expr :: Value (
2912
+ number( "1" )
2913
+ . with_span( Span :: new( Location :: new( 1 , 12 ) , Location :: new( 1 , 13 ) ) )
2914
+ ) ,
2915
+ Expr :: Value (
2916
+ number( "2" )
2917
+ . with_span( Span :: new( Location :: new( 1 , 15 ) , Location :: new( 1 , 17 ) ) )
2918
+ ) ,
2919
+ ] ,
2920
+ has_parentheses: false ,
2921
+ immediate: false ,
2922
+ into: vec![ ] ,
2923
+ using: vec![ ] ,
2924
+ output: false ,
2925
+ default : false ,
2926
+ } ,
2927
+ Statement :: Update {
2928
+ table: TableWithJoins {
2929
+ relation: TableFactor :: Table {
2930
+ name: ObjectName :: from( vec![ Ident :: with_span(
2931
+ Span :: new( Location :: new( 1 , 24 ) , Location :: new( 1 , 32 ) ) ,
2932
+ "my_table"
2933
+ ) ] ) ,
2934
+ alias: None ,
2935
+ with_hints: vec![ ] ,
2936
+ args: None ,
2937
+ version: None ,
2938
+ with_ordinality: false ,
2939
+ partitions: vec![ ] ,
2940
+ json_path: None ,
2941
+ sample: None ,
2942
+ index_hints: vec![ ]
2943
+ } ,
2944
+ joins: vec![ ] ,
2945
+ } ,
2946
+ assignments: vec![ Assignment {
2947
+ value: Expr :: Value (
2948
+ number( "1" )
2949
+ . with_span( Span :: new( Location :: new( 3 , 16 ) , Location :: new( 3 , 17 ) ) )
2950
+ ) ,
2951
+ target: AssignmentTarget :: ColumnName ( ObjectName :: from( vec![ Ident :: with_span(
2952
+ Span :: new( Location :: new( 1 , 37 ) , Location :: new( 1 , 40 ) ) ,
2953
+ "col"
2954
+ ) ] ) ) ,
2955
+ } , ] ,
2956
+ selection: None ,
2957
+ returning: None ,
2958
+ from: None ,
2959
+ or: None ,
2960
+ limit: None ,
2961
+ } ,
2962
+ ]
2963
+ ) ;
2849
2964
}
0 commit comments