From d9d4354121808ffc9904df5cf68eefe29af14509 Mon Sep 17 00:00:00 2001 From: Anton Kovalevich Date: Sat, 5 Jun 2021 05:55:37 +0300 Subject: [PATCH] okay, i have add this ugly api --- lib/sqlalchemy/dialects/mysql/base.py | 13 ++++++++++++- test/dialect/mysql/test_compiler.py | 16 ++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/lib/sqlalchemy/dialects/mysql/base.py b/lib/sqlalchemy/dialects/mysql/base.py index ee93604eb2..2396ffeeeb 100644 --- a/lib/sqlalchemy/dialects/mysql/base.py +++ b/lib/sqlalchemy/dialects/mysql/base.py @@ -1626,7 +1626,18 @@ class MySQLCompiler(compiler.SQLCompiler): "Flag combination does not make sence: %s" % flags ) - match_clause = self.process(binary.left, **kw) + match_clause = binary.left + mysql_additional_cols = modifiers.get('mysql_additional_cols') + + if mysql_additional_cols: + match_clause = (match_clause, *mysql_additional_cols) + match_clause = elements.BooleanClauseList._construct_raw( + operators.comma_op, + clauses=match_clause, + ) + match_clause.group = False + + match_clause = self.process(match_clause, **kw) against_clause = self.process(binary.right, **kw) if any(flag_combination): diff --git a/test/dialect/mysql/test_compiler.py b/test/dialect/mysql/test_compiler.py index cd7034bfe4..9adabf42bc 100644 --- a/test/dialect/mysql/test_compiler.py +++ b/test/dialect/mysql/test_compiler.py @@ -513,6 +513,22 @@ class CompileTest(fixtures.TestBase, AssertsCompiledSQL): dialect=self.__dialect__, ) + def test_match_additional_cols(self): + matchtable = table( + "matchtable", + column("title", String), + column("comment", String), + ) + + self.assert_compile( + matchtable.c.title.match( + "somstr", + mysql_additional_cols=[matchtable.c.comment], + ), + "MATCH (matchtable.title, matchtable.comment) " + "AGAINST (%s IN BOOLEAN MODE)", + ) + def test_concat_compile_kw(self): expr = literal("x", type_=String) + literal("y", type_=String) self.assert_compile(expr, "concat('x', 'y')", literal_binds=True) -- 2.47.3