@@ -734,6 +734,68 @@ mod tests {
734734 compare ( expected, tokens) ;
735735 }
736736
737+ #[ test]
738+ fn tokenize_explain_select ( ) {
739+ let sql = String :: from ( "EXPLAIN SELECT * FROM customer WHERE id = 1" ) ;
740+ let dialect = GenericDialect { } ;
741+ let mut tokenizer = Tokenizer :: new ( & dialect, & sql) ;
742+ let tokens = tokenizer. tokenize ( ) . unwrap ( ) ;
743+
744+ let expected = vec ! [
745+ Token :: make_keyword( "EXPLAIN" ) ,
746+ Token :: Whitespace ( Whitespace :: Space ) ,
747+ Token :: make_keyword( "SELECT" ) ,
748+ Token :: Whitespace ( Whitespace :: Space ) ,
749+ Token :: Mult ,
750+ Token :: Whitespace ( Whitespace :: Space ) ,
751+ Token :: make_keyword( "FROM" ) ,
752+ Token :: Whitespace ( Whitespace :: Space ) ,
753+ Token :: make_word( "customer" , None ) ,
754+ Token :: Whitespace ( Whitespace :: Space ) ,
755+ Token :: make_keyword( "WHERE" ) ,
756+ Token :: Whitespace ( Whitespace :: Space ) ,
757+ Token :: make_word( "id" , None ) ,
758+ Token :: Whitespace ( Whitespace :: Space ) ,
759+ Token :: Eq ,
760+ Token :: Whitespace ( Whitespace :: Space ) ,
761+ Token :: Number ( String :: from( "1" ) ) ,
762+ ] ;
763+
764+ compare ( expected, tokens) ;
765+ }
766+
767+ #[ test]
768+ fn tokenize_explain_analyze_select ( ) {
769+ let sql = String :: from ( "EXPLAIN ANALYZE SELECT * FROM customer WHERE id = 1" ) ;
770+ let dialect = GenericDialect { } ;
771+ let mut tokenizer = Tokenizer :: new ( & dialect, & sql) ;
772+ let tokens = tokenizer. tokenize ( ) . unwrap ( ) ;
773+
774+ let expected = vec ! [
775+ Token :: make_keyword( "EXPLAIN" ) ,
776+ Token :: Whitespace ( Whitespace :: Space ) ,
777+ Token :: make_keyword( "ANALYZE" ) ,
778+ Token :: Whitespace ( Whitespace :: Space ) ,
779+ Token :: make_keyword( "SELECT" ) ,
780+ Token :: Whitespace ( Whitespace :: Space ) ,
781+ Token :: Mult ,
782+ Token :: Whitespace ( Whitespace :: Space ) ,
783+ Token :: make_keyword( "FROM" ) ,
784+ Token :: Whitespace ( Whitespace :: Space ) ,
785+ Token :: make_word( "customer" , None ) ,
786+ Token :: Whitespace ( Whitespace :: Space ) ,
787+ Token :: make_keyword( "WHERE" ) ,
788+ Token :: Whitespace ( Whitespace :: Space ) ,
789+ Token :: make_word( "id" , None ) ,
790+ Token :: Whitespace ( Whitespace :: Space ) ,
791+ Token :: Eq ,
792+ Token :: Whitespace ( Whitespace :: Space ) ,
793+ Token :: Number ( String :: from( "1" ) ) ,
794+ ] ;
795+
796+ compare ( expected, tokens) ;
797+ }
798+
737799 #[ test]
738800 fn tokenize_string_predicate ( ) {
739801 let sql = String :: from ( "SELECT * FROM customer WHERE salary != 'Not Provided'" ) ;
0 commit comments