diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-11-27 05:44:16 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-11-27 05:44:16 +0000 |
commit | 329703a371d3a2ed356d0f0717b660cc7e975bfa (patch) | |
tree | 4bb325914b0c12c270349ca7ccd65fbeeb4026ae /lib/sqlalchemy/databases/mssql.py | |
parent | 4cc7b51e2039eea1d8a773cf92255588bd2ad9c8 (diff) | |
download | sqlalchemy-329703a371d3a2ed356d0f0717b660cc7e975bfa.tar.gz |
un-screw up the attribute manager checkin
Diffstat (limited to 'lib/sqlalchemy/databases/mssql.py')
-rw-r--r-- | lib/sqlalchemy/databases/mssql.py | 32 |
1 files changed, 2 insertions, 30 deletions
diff --git a/lib/sqlalchemy/databases/mssql.py b/lib/sqlalchemy/databases/mssql.py index 2e17c2495..098bd33c8 100644 --- a/lib/sqlalchemy/databases/mssql.py +++ b/lib/sqlalchemy/databases/mssql.py @@ -877,6 +877,8 @@ class MSSQLCompiler(compiler.DefaultCompiler): s = select._distinct and "DISTINCT " or "" if select._limit: s += "TOP %s " % (select._limit,) + if select._offset: + raise exceptions.InvalidRequestError('MSSQL does not support LIMIT with an offset') return s def limit_clause(self, select): @@ -949,36 +951,6 @@ class MSSQLCompiler(compiler.DefaultCompiler): else: return "" - def visit_select(self, select, **kwargs): - """Look for OFFSET in a select statement, and if so tries to wrap - it in a subquery with ``row_number()`` criterion. - """ - - if not getattr(select, '_mssql_visit', None) and select._offset is not None: - # to use ROW_NUMBER(), an ORDER BY is required. - orderby = self.process(select._order_by_clause) - if not orderby: - raise exceptions.InvalidRequestError("OFFSET in MS-SQL requires an ORDER BY clause") - - oldselect = select - select = select.column(sql.literal_column("ROW_NUMBER() OVER (ORDER BY %s)" % orderby).label("mssql_rn")).order_by(None) - select._mssql_visit = True - - select_alias = select.alias() - limitselect = sql.select([c.label(list(c.proxies)[0].name) for c in select_alias.c if c.key!='mssql_rn']) - #limitselect._order_by_clause = select._order_by_clause - select._order_by_clause = expression.ClauseList(None) - - if select._offset is not None: - limitselect.append_whereclause("mssql_rn>%d" % select._offset) - if select._limit is not None: - limitselect.append_whereclause("mssql_rn<=%d" % (select._limit + select._offset)) - select._limit = None - return self.process(limitselect, **kwargs) - else: - return compiler.DefaultCompiler.visit_select(self, select, **kwargs) - - class MSSQLSchemaGenerator(compiler.SchemaGenerator): def get_column_specification(self, column, **kwargs): |