diff options
| author | mike bayer <mike_mp@zzzcomputing.com> | 2018-09-20 21:54:25 -0400 |
|---|---|---|
| committer | Gerrit Code Review <gerrit@ci.zzzcomputing.com> | 2018-09-20 21:54:25 -0400 |
| commit | 0e1ee3f5ce6af9b20dab6593f4a34f3bf1871f84 (patch) | |
| tree | d84166fbc1e51ebd8c48e4585d7e54cd988cc6d5 /lib/sqlalchemy | |
| parent | f704f47a497d2575e78ae7fe2f78216debe26743 (diff) | |
| parent | 33fccc486111fc6b41eab651cc7325c83099ad45 (diff) | |
| download | sqlalchemy-0e1ee3f5ce6af9b20dab6593f4a34f3bf1871f84.tar.gz | |
Merge "Allow dialects to customize group by clause compilation"
Diffstat (limited to 'lib/sqlalchemy')
| -rw-r--r-- | lib/sqlalchemy/sql/compiler.py | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/lib/sqlalchemy/sql/compiler.py b/lib/sqlalchemy/sql/compiler.py index e45db428a..2f68b7e2e 100644 --- a/lib/sqlalchemy/sql/compiler.py +++ b/lib/sqlalchemy/sql/compiler.py @@ -968,11 +968,7 @@ class SQLCompiler(Compiled): for i, c in enumerate(cs.selects)) ) - group_by = cs._group_by_clause._compiler_dispatch( - self, asfrom=asfrom, **kwargs) - if group_by: - text += " GROUP BY " + group_by - + text += self.group_by_clause(cs, **dict(asfrom=asfrom, **kwargs)) text += self.order_by_clause(cs, **kwargs) text += (cs._limit_clause is not None or cs._offset_clause is not None) and \ @@ -1929,10 +1925,7 @@ class SQLCompiler(Compiled): text += " \nWHERE " + t if select._group_by_clause.clauses: - group_by = select._group_by_clause._compiler_dispatch( - self, **kwargs) - if group_by: - text += " GROUP BY " + group_by + text += self.group_by_clause(select, **kwargs) if select._having is not None: t = select._having._compiler_dispatch(self, **kwargs) @@ -1988,7 +1981,18 @@ class SQLCompiler(Compiled): """ return select._distinct and "DISTINCT " or "" + def group_by_clause(self, select, **kw): + """allow dialects to customize how GROUP BY is rendered.""" + + group_by = select._group_by_clause._compiler_dispatch(self, **kw) + if group_by: + return " GROUP BY " + group_by + else: + return "" + def order_by_clause(self, select, **kw): + """allow dialects to customize how ORDER BY is rendered.""" + order_by = select._order_by_clause._compiler_dispatch(self, **kw) if order_by: return " ORDER BY " + order_by |
