File tree Expand file tree Collapse file tree 1 file changed +25
-10
lines changed Expand file tree Collapse file tree 1 file changed +25
-10
lines changed Original file line number Diff line number Diff line change @@ -4686,21 +4686,24 @@ impl<'a> Parser<'a> {
4686
4686
format = Some ( self . parse_analyze_format ( ) ?) ;
4687
4687
}
4688
4688
4689
- if let Some ( statement) = self . maybe_parse ( |parser| parser. parse_statement ( ) ) {
4690
- Ok ( Statement :: Explain {
4689
+ match self . maybe_parse ( |parser| parser. parse_statement ( ) ) {
4690
+ Some ( Statement :: Explain { .. } ) | Some ( Statement :: ExplainTable { .. } ) => Err (
4691
+ ParserError :: ParserError ( "Explain must be root of the plan" . to_string ( ) ) ,
4692
+ ) ,
4693
+ Some ( statement) => Ok ( Statement :: Explain {
4691
4694
describe_alias,
4692
4695
analyze,
4693
4696
verbose,
4694
4697
statement : Box :: new ( statement) ,
4695
4698
format,
4696
- } )
4697
- } else {
4698
- let table_name = self . parse_object_name ( ) ?;
4699
-
4700
- Ok ( Statement :: ExplainTable {
4701
- describe_alias ,
4702
- table_name ,
4703
- } )
4699
+ } ) ,
4700
+ _ => {
4701
+ let table_name = self . parse_object_name ( ) ?;
4702
+ Ok ( Statement :: ExplainTable {
4703
+ describe_alias ,
4704
+ table_name ,
4705
+ } )
4706
+ }
4704
4707
}
4705
4708
}
4706
4709
@@ -7134,4 +7137,16 @@ mod tests {
7134
7137
) )
7135
7138
) ;
7136
7139
}
7140
+
7141
+ #[ test]
7142
+ fn test_nested_explain_error ( ) {
7143
+ let sql = "EXPLAIN EXPLAIN SELECT 1" ;
7144
+ let ast = Parser :: parse_sql ( & GenericDialect , sql) ;
7145
+ assert_eq ! (
7146
+ ast,
7147
+ Err ( ParserError :: ParserError (
7148
+ "Explain must be root of the plan" . to_string( )
7149
+ ) )
7150
+ ) ;
7151
+ }
7137
7152
}
You can’t perform that action at this time.
0 commit comments