From 2821adc57ca46c9310ded691729843a124ddca92 Mon Sep 17 00:00:00 2001 From: Paul Johnston Date: Fri, 12 Oct 2007 20:08:54 +0000 Subject: [PATCH] Fix broken update/delete queries on MSSQL when tables have a schema --- lib/sqlalchemy/databases/mssql.py | 2 +- lib/sqlalchemy/sql/compiler.py | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/sqlalchemy/databases/mssql.py b/lib/sqlalchemy/databases/mssql.py index 748c5d9be1..7f539b42da 100644 --- a/lib/sqlalchemy/databases/mssql.py +++ b/lib/sqlalchemy/databases/mssql.py @@ -896,7 +896,7 @@ class MSSQLCompiler(compiler.DefaultCompiler): return super(MSSQLCompiler, self).visit_alias(alias, **kwargs) def visit_column(self, column): - if column.table is not None: + if column.table is not None and not self.isupdate and not self.isdelete: # translate for schema-qualified table aliases t = self._schema_aliased_table(column.table) if t is not None: diff --git a/lib/sqlalchemy/sql/compiler.py b/lib/sqlalchemy/sql/compiler.py index 572955806a..05c7a5cf41 100644 --- a/lib/sqlalchemy/sql/compiler.py +++ b/lib/sqlalchemy/sql/compiler.py @@ -104,8 +104,8 @@ class DefaultCompiler(engine.Compiled, visitors.ClauseVisitor): super(DefaultCompiler, self).__init__(dialect, statement, column_keys, **kwargs) - # if we are insert/update. set to true when we visit an INSERT or UPDATE - self.isinsert = self.isupdate = False + # if we are insert/update/delete. set to true when we visit an INSERT, UPDATE or DELETE + self.isdelete = self.isinsert = self.isupdate = False # compile INSERT/UPDATE defaults/sequences inlined (no pre-execute) self.inline = inline or getattr(statement, 'inline', False) @@ -705,6 +705,7 @@ class DefaultCompiler(engine.Compiled, visitors.ClauseVisitor): def visit_delete(self, delete_stmt): self.stack.append({'from':util.Set([delete_stmt.table])}) + self.isdelete = True text = "DELETE FROM " + self.preparer.format_table(delete_stmt.table) -- 2.47.3