@@ -839,9 +839,12 @@ impl<'a> Parser<'a> {
839839 Keyword :: AND => Some ( BinaryOperator :: And ) ,
840840 Keyword :: OR => Some ( BinaryOperator :: Or ) ,
841841 Keyword :: LIKE => Some ( BinaryOperator :: Like ) ,
842+ Keyword :: ILIKE => Some ( BinaryOperator :: ILike ) ,
842843 Keyword :: NOT => {
843844 if self . parse_keyword ( Keyword :: LIKE ) {
844845 Some ( BinaryOperator :: NotLike )
846+ } else if self . parse_keyword ( Keyword :: ILIKE ) {
847+ Some ( BinaryOperator :: NotILike )
845848 } else {
846849 None
847850 }
@@ -975,12 +978,14 @@ impl<'a> Parser<'a> {
975978 Token :: Word ( w) if w. keyword == Keyword :: IN => Ok ( Self :: BETWEEN_PREC ) ,
976979 Token :: Word ( w) if w. keyword == Keyword :: BETWEEN => Ok ( Self :: BETWEEN_PREC ) ,
977980 Token :: Word ( w) if w. keyword == Keyword :: LIKE => Ok ( Self :: BETWEEN_PREC ) ,
981+ Token :: Word ( w) if w. keyword == Keyword :: ILIKE => Ok ( Self :: BETWEEN_PREC ) ,
978982 _ => Ok ( 0 ) ,
979983 } ,
980984 Token :: Word ( w) if w. keyword == Keyword :: IS => Ok ( 17 ) ,
981985 Token :: Word ( w) if w. keyword == Keyword :: IN => Ok ( Self :: BETWEEN_PREC ) ,
982986 Token :: Word ( w) if w. keyword == Keyword :: BETWEEN => Ok ( Self :: BETWEEN_PREC ) ,
983987 Token :: Word ( w) if w. keyword == Keyword :: LIKE => Ok ( Self :: BETWEEN_PREC ) ,
988+ Token :: Word ( w) if w. keyword == Keyword :: ILIKE => Ok ( Self :: BETWEEN_PREC ) ,
984989 Token :: Eq
985990 | Token :: Lt
986991 | Token :: LtEq
@@ -1472,7 +1477,7 @@ impl<'a> Parser<'a> {
14721477 ) -> Result < Statement , ParserError > {
14731478 let if_not_exists = self . parse_keywords ( & [ Keyword :: IF , Keyword :: NOT , Keyword :: EXISTS ] ) ;
14741479 let table_name = self . parse_object_name ( ) ?;
1475- let like = if self . parse_keyword ( Keyword :: LIKE ) {
1480+ let like = if self . parse_keyword ( Keyword :: LIKE ) || self . parse_keyword ( Keyword :: ILIKE ) {
14761481 self . parse_object_name ( ) . ok ( )
14771482 } else {
14781483 None
@@ -2497,6 +2502,10 @@ impl<'a> Parser<'a> {
24972502 Ok ( Some ( ShowStatementFilter :: Like (
24982503 self . parse_literal_string ( ) ?,
24992504 ) ) )
2505+ } else if self . parse_keyword ( Keyword :: ILIKE ) {
2506+ Ok ( Some ( ShowStatementFilter :: ILike (
2507+ self . parse_literal_string ( ) ?,
2508+ ) ) )
25002509 } else if self . parse_keyword ( Keyword :: WHERE ) {
25012510 Ok ( Some ( ShowStatementFilter :: Where ( self . parse_expr ( ) ?) ) )
25022511 } else {
0 commit comments