File tree Expand file tree Collapse file tree 3 files changed +30
-2
lines changed Expand file tree Collapse file tree 3 files changed +30
-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 @@ -3455,6 +3455,34 @@ fn parse_cast_integers() {
3455
3455
. expect_err ( "CAST doesn't allow display width" ) ;
3456
3456
}
3457
3457
3458
+ fn parse_match_against_with_alias ( ) {
3459
+ let sql = "SELECT tbl.ProjectID FROM surveys.tbl1 AS tbl WHERE MATCH (tbl.ReferenceID) AGAINST ('AAA' IN BOOLEAN MODE)" ;
3460
+ match mysql ( ) . verified_stmt ( sql) {
3461
+ Statement :: Query ( query) => match * query. body {
3462
+ SetExpr :: Select ( select) => match select. selection {
3463
+ Some ( Expr :: MatchAgainst {
3464
+ columns,
3465
+ match_value,
3466
+ opt_search_modifier,
3467
+ } ) => {
3468
+ assert_eq ! (
3469
+ columns,
3470
+ vec![ ObjectName :: from( vec![
3471
+ Ident :: new( "tbl" ) ,
3472
+ Ident :: new( "ReferenceID" )
3473
+ ] ) ]
3474
+ ) ;
3475
+ assert_eq ! ( match_value, Value :: SingleQuotedString ( "AAA" . to_owned( ) ) ) ;
3476
+ assert_eq ! ( opt_search_modifier, Some ( SearchModifier :: InBooleanMode ) ) ;
3477
+ }
3478
+ _ => unreachable ! ( ) ,
3479
+ } ,
3480
+ _ => unreachable ! ( ) ,
3481
+ } ,
3482
+ _ => unreachable ! ( ) ,
3483
+ }
3484
+ }
3485
+
3458
3486
#[ test]
3459
3487
fn test_variable_assignment_using_colon_equal ( ) {
3460
3488
let sql_select = "SELECT @price := price, @tax := price * 0.1 FROM products WHERE id = 1" ;
You can’t perform that action at this time.
0 commit comments