From 86d616e5342abb03c4f8cfa23fd26af05e772f9e Mon Sep 17 00:00:00 2001 From: joocer Date: Sun, 9 Feb 2025 14:14:47 +0000 Subject: [PATCH 1/2] match_against in custom dialects --- src/dialect/generic.rs | 4 ++++ src/dialect/mod.rs | 5 +++++ src/dialect/mysql.rs | 4 ++++ src/parser/mod.rs | 2 +- 4 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/dialect/generic.rs b/src/dialect/generic.rs index 7aaf00742..dbd5cab28 100644 --- a/src/dialect/generic.rs +++ b/src/dialect/generic.rs @@ -147,4 +147,8 @@ impl Dialect for GenericDialect { fn supports_array_typedef_size(&self) -> bool { true } + + fn supports_match_against(&self) -> bool { + true + } } diff --git a/src/dialect/mod.rs b/src/dialect/mod.rs index 933203605..a57c25d5e 100644 --- a/src/dialect/mod.rs +++ b/src/dialect/mod.rs @@ -479,6 +479,11 @@ pub trait Dialect: Debug + Any { false } + /// Does the dialect support the `MATCH() AGAINST()` syntax? + fn supports_match_against(&self) -> bool { + false + } + /// Dialect-specific infix parser override /// /// This method is called to parse the next infix expression. diff --git a/src/dialect/mysql.rs b/src/dialect/mysql.rs index 55b91ad22..65141b0b0 100644 --- a/src/dialect/mysql.rs +++ b/src/dialect/mysql.rs @@ -129,6 +129,10 @@ impl Dialect for MySqlDialect { fn requires_single_line_comment_whitespace(&self) -> bool { true } + + fn supports_match_against(&self) -> bool { + false + } } /// `LOCK TABLES` diff --git a/src/parser/mod.rs b/src/parser/mod.rs index 188e941b5..c4f65a1a0 100644 --- a/src/parser/mod.rs +++ b/src/parser/mod.rs @@ -1198,7 +1198,7 @@ impl<'a> Parser<'a> { }))) } Keyword::NOT => Ok(Some(self.parse_not()?)), - Keyword::MATCH if dialect_of!(self is MySqlDialect | GenericDialect) => { + Keyword::MATCH if self.dialect.supports_match_against() => { Ok(Some(self.parse_match_against()?)) } Keyword::STRUCT if self.dialect.supports_struct_literal() => { From 311e1981e91a29d925063cdb3d8d0b9658728549 Mon Sep 17 00:00:00 2001 From: joocer Date: Sun, 9 Feb 2025 14:20:58 +0000 Subject: [PATCH 2/2] match_against in support for mysql --- src/dialect/mysql.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/dialect/mysql.rs b/src/dialect/mysql.rs index 65141b0b0..8a0da87e4 100644 --- a/src/dialect/mysql.rs +++ b/src/dialect/mysql.rs @@ -131,7 +131,7 @@ impl Dialect for MySqlDialect { } fn supports_match_against(&self) -> bool { - false + true } }