summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/dialects
diff options
context:
space:
mode:
authorFederico Caselli <cfederico87@gmail.com>2022-09-09 21:29:53 +0200
committerFederico Caselli <cfederico87@gmail.com>2022-09-09 21:29:53 +0200
commitefbe38d8e8186c1816d2d3b052f92965787649da (patch)
treeabb85a8da5515de279b3dd57b72badcf2c1c71b9 /lib/sqlalchemy/dialects
parent479dbc99e7fc5a60f846992c0cca8542047a8933 (diff)
downloadsqlalchemy-efbe38d8e8186c1816d2d3b052f92965787649da.tar.gz
Support GROUP BY ROLLUP on MySql/MariaDB
The ``ROLLUP`` function will now correctly render ``WITH ROLLUP`` on MySql and MariaDB, allowing the use of group by rollup with these backend. Fixes: #8503 Change-Id: I9289af3a39ca667a2f0f84f73346ebd4b091fedd
Diffstat (limited to 'lib/sqlalchemy/dialects')
-rw-r--r--lib/sqlalchemy/dialects/mysql/base.py6
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/sqlalchemy/dialects/mysql/base.py b/lib/sqlalchemy/dialects/mysql/base.py
index 4b0a5e6c5..c0521f61e 100644
--- a/lib/sqlalchemy/dialects/mysql/base.py
+++ b/lib/sqlalchemy/dialects/mysql/base.py
@@ -1210,6 +1210,12 @@ class MySQLCompiler(compiler.SQLCompiler):
def visit_random_func(self, fn, **kw):
return "rand%s" % self.function_argspec(fn)
+ def visit_rollup_func(self, fn, **kw):
+ clause = ", ".join(
+ elem._compiler_dispatch(self, **kw) for elem in fn.clauses
+ )
+ return f"{clause} WITH ROLLUP"
+
def visit_sequence(self, seq, **kw):
return "nextval(%s)" % self.preparer.format_sequence(seq)