File tree 3 files changed +31
-2
lines changed
3 files changed +31
-2
lines changed Original file line number Diff line number Diff line change @@ -1027,7 +1027,7 @@ pub enum Expr {
1027
1027
/// [(1)]: https://dev.mysql.com/doc/refman/8.0/en/fulltext-search.html#function_match
1028
1028
MatchAgainst {
1029
1029
/// `(<col>, <col>, ...)`.
1030
- columns : Vec < Ident > ,
1030
+ columns : Vec < ObjectName > ,
1031
1031
/// `<expr>`.
1032
1032
match_value : Value ,
1033
1033
/// `<search modifier>`
Original file line number Diff line number Diff line change @@ -2704,7 +2704,7 @@ impl<'a> Parser<'a> {
2704
2704
/// This method will raise an error if the column list is empty or with invalid identifiers,
2705
2705
/// the match expression is not a literal string, or if the search modifier is not valid.
2706
2706
pub fn parse_match_against(&mut self) -> Result<Expr, ParserError> {
2707
- let columns = self.parse_parenthesized_column_list (Mandatory, false)?;
2707
+ let columns = self.parse_parenthesized_qualified_column_list (Mandatory, false)?;
2708
2708
2709
2709
self.expect_keyword_is(Keyword::AGAINST)?;
2710
2710
Original file line number Diff line number Diff line change @@ -3454,3 +3454,32 @@ fn parse_cast_integers() {
3454
3454
. run_parser_method ( "CAST(foo AS UNSIGNED INTEGER(3))" , |p| p. parse_expr ( ) )
3455
3455
. expect_err ( "CAST doesn't allow display width" ) ;
3456
3456
}
3457
+
3458
+ #[ test]
3459
+ fn parse_match_against_with_alias ( ) {
3460
+ let sql = "SELECT tbl.ProjectID FROM surveys.tbl1 AS tbl WHERE MATCH (tbl.ReferenceID) AGAINST ('AAA' IN BOOLEAN MODE)" ;
3461
+ match mysql ( ) . verified_stmt ( sql) {
3462
+ Statement :: Query ( query) => match * query. body {
3463
+ SetExpr :: Select ( select) => match select. selection {
3464
+ Some ( Expr :: MatchAgainst {
3465
+ columns,
3466
+ match_value,
3467
+ opt_search_modifier,
3468
+ } ) => {
3469
+ assert_eq ! (
3470
+ columns,
3471
+ vec![ ObjectName :: from( vec![
3472
+ Ident :: new( "tbl" ) ,
3473
+ Ident :: new( "ReferenceID" )
3474
+ ] ) ]
3475
+ ) ;
3476
+ assert_eq ! ( match_value, Value :: SingleQuotedString ( "AAA" . to_owned( ) ) ) ;
3477
+ assert_eq ! ( opt_search_modifier, Some ( SearchModifier :: InBooleanMode ) ) ;
3478
+ }
3479
+ _ => unreachable ! ( ) ,
3480
+ } ,
3481
+ _ => unreachable ! ( ) ,
3482
+ } ,
3483
+ _ => unreachable ! ( ) ,
3484
+ }
3485
+ }
You can’t perform that action at this time.
0 commit comments