summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/databases/mssql.py
diff options
context:
space:
mode:
authorRick Morrison <rickmorrison@gmail.com>2007-03-19 02:00:32 +0000
committerRick Morrison <rickmorrison@gmail.com>2007-03-19 02:00:32 +0000
commit0a0925661959ffef5ef6494f8f01aaedcc192834 (patch)
tree676cfaa586875a34f63fa8f7aa579b1c6d29d3f5 /lib/sqlalchemy/databases/mssql.py
parent43b70fc86b1c7b0549a2902559be932ca361921b (diff)
downloadsqlalchemy-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.py16
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()