diff options
author | Rick Morrison <rickmorrison@gmail.com> | 2007-03-19 02:00:32 +0000 |
---|---|---|
committer | Rick Morrison <rickmorrison@gmail.com> | 2007-03-19 02:00:32 +0000 |
commit | 0a0925661959ffef5ef6494f8f01aaedcc192834 (patch) | |
tree | 676cfaa586875a34f63fa8f7aa579b1c6d29d3f5 /lib/sqlalchemy/databases/mssql.py | |
parent | 43b70fc86b1c7b0549a2902559be932ca361921b (diff) | |
download | sqlalchemy-0a0925661959ffef5ef6494f8f01aaedcc192834.tar.gz |
mssql: now passes still more unit tests, [ticket:481]
Diffstat (limited to 'lib/sqlalchemy/databases/mssql.py')
-rw-r--r-- | lib/sqlalchemy/databases/mssql.py | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/lib/sqlalchemy/databases/mssql.py b/lib/sqlalchemy/databases/mssql.py index f16fcdc97..aa39e3e09 100644 --- a/lib/sqlalchemy/databases/mssql.py +++ b/lib/sqlalchemy/databases/mssql.py @@ -245,9 +245,9 @@ class MSSQLExecutionContext(default.DefaultExecutionContext): self.HASIDENT = bool(tbl.has_sequence) if engine.dialect.auto_identity_insert and self.HASIDENT: if isinstance(parameters, list): - self.IINSERT = parameters[0].has_key(tbl.has_sequence.name) + self.IINSERT = parameters[0].has_key(tbl.has_sequence.key) else: - self.IINSERT = parameters.has_key(tbl.has_sequence.name) + self.IINSERT = parameters.has_key(tbl.has_sequence.key) else: self.IINSERT = False @@ -540,7 +540,7 @@ class MSSQLDialect(ansisql.ANSIDialect): R.c.constraint_name == RR.c.unique_constraint_name, C.c.ordinal_position == R.c.ordinal_position ), - order_by = [RR.c.constraint_name]) + order_by = [RR.c.constraint_name, R.c.ordinal_position]) rows = connection.execute(s).fetchall() # group rows by constraint ID, to handle multi-column FKs @@ -747,6 +747,16 @@ class MSSQLCompiler(ansisql.ANSICompiler): # "FOR UPDATE" is only allowed on "DECLARE CURSOR" which SQLAlchemy doesn't use return '' + def order_by_clause(self, select): + order_by = self.get_str(select.order_by_clause) + + # MSSQL only allows ORDER BY in subqueries if there is a LIMIT + if order_by and (not select.is_subquery or select.limit): + return " ORDER BY " + order_by + else: + return "" + + class MSSQLSchemaGenerator(ansisql.ANSISchemaGenerator): def get_column_specification(self, column, **kwargs): colspec = self.preparer.format_column(column) + " " + column.type.engine_impl(self.engine).get_col_spec() |