diff options
| author | mike bayer <mike_mp@zzzcomputing.com> | 2020-04-20 17:15:54 +0000 |
|---|---|---|
| committer | Gerrit Code Review <gerrit@bbpush.zzzcomputing.com> | 2020-04-20 17:15:54 +0000 |
| commit | f911e191d69e649ef8280309be9b0bb4d414d53d (patch) | |
| tree | 26516fd09ed7d8db44902f59039b340cf60d600b /lib/sqlalchemy/dialects | |
| parent | e1a87f00123f97a6342af96ccc4b10a3ac51807e (diff) | |
| parent | 07d6d211f23f1d9d1d69fd54e8054bccd515bc8c (diff) | |
| download | sqlalchemy-f911e191d69e649ef8280309be9b0bb4d414d53d.tar.gz | |
Merge "Deprecate ``DISTINCT ON`` when not targeting PostgreSQL"
Diffstat (limited to 'lib/sqlalchemy/dialects')
| -rw-r--r-- | lib/sqlalchemy/dialects/firebird/base.py | 3 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/mssql/base.py | 12 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/mysql/base.py | 21 | ||||
| -rw-r--r-- | lib/sqlalchemy/dialects/postgresql/base.py | 2 |
4 files changed, 18 insertions, 20 deletions
diff --git a/lib/sqlalchemy/dialects/firebird/base.py b/lib/sqlalchemy/dialects/firebird/base.py index a43413780..5779ac885 100644 --- a/lib/sqlalchemy/dialects/firebird/base.py +++ b/lib/sqlalchemy/dialects/firebird/base.py @@ -525,8 +525,7 @@ class FBCompiler(sql.compiler.SQLCompiler): result += "FIRST %s " % self.process(select._limit_clause, **kw) if select._offset_clause is not None: result += "SKIP %s " % self.process(select._offset_clause, **kw) - if select._distinct: - result += "DISTINCT " + result += super(FBCompiler, self).get_select_precolumns(select, **kw) return result def limit_clause(self, select, **kw): diff --git a/lib/sqlalchemy/dialects/mssql/base.py b/lib/sqlalchemy/dialects/mssql/base.py index df6196bae..0dd2ac11b 100644 --- a/lib/sqlalchemy/dialects/mssql/base.py +++ b/lib/sqlalchemy/dialects/mssql/base.py @@ -1636,9 +1636,7 @@ class MSSQLCompiler(compiler.SQLCompiler): def get_select_precolumns(self, select, **kw): """ MS-SQL puts TOP, it's version of LIMIT here """ - s = "" - if select._distinct: - s += "DISTINCT " + s = super(MSSQLCompiler, self).get_select_precolumns(select, **kw) if select._simple_int_limit and ( select._offset_clause is None @@ -1649,12 +1647,8 @@ class MSSQLCompiler(compiler.SQLCompiler): # so have to use literal here. kw["literal_execute"] = True s += "TOP %s " % self.process(select._limit_clause, **kw) - if s: - return s - else: - return compiler.SQLCompiler.get_select_precolumns( - self, select, **kw - ) + + return s def get_from_hint_text(self, table, text): return text diff --git a/lib/sqlalchemy/dialects/mysql/base.py b/lib/sqlalchemy/dialects/mysql/base.py index 53c916304..38f3fa611 100644 --- a/lib/sqlalchemy/dialects/mysql/base.py +++ b/lib/sqlalchemy/dialects/mysql/base.py @@ -1450,19 +1450,22 @@ class MySQLCompiler(compiler.SQLCompiler): def get_select_precolumns(self, select, **kw): """Add special MySQL keywords in place of DISTINCT. - .. note:: - - this usage is deprecated. :meth:`_expression.Select.prefix_with` - should be used for special keywords at the start - of a SELECT. + .. deprecated 1.4:: this usage is deprecated. + :meth:`_expression.Select.prefix_with` should be used for special + keywords at the start of a SELECT. """ if isinstance(select._distinct, util.string_types): + util.warn_deprecated( + "Sending string values for 'distinct' is deprecated in the " + "MySQL dialect and will be removed in a future release. " + "Please use :meth:`.Select.prefix_with` for special keywords " + "at the start of a SELECT statement", + version="1.4", + ) return select._distinct.upper() + " " - elif select._distinct: - return "DISTINCT " - else: - return "" + + return super(MySQLCompiler, self).get_select_precolumns(select, **kw) def visit_join(self, join, asfrom=False, from_linter=None, **kwargs): if from_linter: diff --git a/lib/sqlalchemy/dialects/postgresql/base.py b/lib/sqlalchemy/dialects/postgresql/base.py index 962642e0a..61cb19c34 100644 --- a/lib/sqlalchemy/dialects/postgresql/base.py +++ b/lib/sqlalchemy/dialects/postgresql/base.py @@ -1720,6 +1720,8 @@ class PGCompiler(compiler.SQLCompiler): return "ONLY " + sqltext def get_select_precolumns(self, select, **kw): + # Do not call super().get_select_precolumns because + # it will warn/raise when distinct on is present if select._distinct or select._distinct_on: if select._distinct_on: return ( |
