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