- changed status to resolved
mssql aliasing of schema-tables in subqueries with nesting
Issue #1943
resolved
test + patch:
diff -r ee9102622c8538bd7e2594b05dd8bdc72317d3d0 lib/sqlalchemy/dialects/mssql/base.py
--- a/lib/sqlalchemy/dialects/mssql/base.py Sun Oct 03 13:11:41 2010 -0400
+++ b/lib/sqlalchemy/dialects/mssql/base.py Sat Oct 09 11:18:02 2010 -0400
@@ -755,20 +755,20 @@
return None
def visit_table(self, table, mssql_aliased=False, **kwargs):
- if mssql_aliased:
+ if mssql_aliased is table:
return super(MSSQLCompiler, self).visit_table(table, **kwargs)
# alias schema-qualified tables
alias = self._schema_aliased_table(table)
if alias is not None:
- return self.process(alias, mssql_aliased=True, **kwargs)
+ return self.process(alias, mssql_aliased=table, **kwargs)
else:
return super(MSSQLCompiler, self).visit_table(table, **kwargs)
def visit_alias(self, alias, **kwargs):
# translate for schema-qualified table aliases
self.tablealiases[alias.original](alias.original) = alias
- kwargs['mssql_aliased']('mssql_aliased') = True
+ kwargs['mssql_aliased']('mssql_aliased') = alias.original
return super(MSSQLCompiler, self).visit_alias(alias, **kwargs)
def visit_extract(self, extract, **kw):
diff -r ee9102622c8538bd7e2594b05dd8bdc72317d3d0 test/dialect/test_mssql.py
--- a/test/dialect/test_mssql.py Sun Oct 03 13:11:41 2010 -0400
+++ b/test/dialect/test_mssql.py Sat Oct 09 11:18:02 2010 -0400
@@ -127,7 +127,6 @@
s = table4.select(use_labels=True)
c = s.compile(dialect=self.__dialect__)
- print c.result_map
assert table4.c.rem_id \
in set(c.result_map['remote_owner_remotetable_rem_id']('remote_owner_remotetable_rem_id')[1](1))
self.assert_compile(table4.select(),
@@ -151,7 +150,20 @@
'remotetable_1.value FROM mytable JOIN '
'remote_owner.remotetable AS remotetable_1 '
'ON remotetable_1.rem_id = mytable.myid')
-
+
+ self.assert_compile(select([ table4.c.value](table4.c.rem_id,
+)).apply_labels().union(select([ table1.c.description](table1.c.myid,
+)).apply_labels()).alias().select(),
+ "SELECT anon_1.remote_owner_remotetable_rem_id, "
+ "anon_1.remote_owner_remotetable_value FROM "
+ "(SELECT remotetable_1.rem_id AS remote_owner_remotetable_rem_id, "
+ "remotetable_1.value AS remote_owner_remotetable_value "
+ "FROM remote_owner.remotetable AS remotetable_1 UNION "
+ "SELECT mytable.myid AS mytable_myid, mytable.description "
+ "AS mytable_description FROM mytable) AS anon_1"
+ )
+
+
def test_delete_schema(self):
metadata = MetaData()
tbl = Table('test', metadata, Column('id', Integer,
Comments (2)
-
reporter -
reporter - removed milestone
Removing milestone: 0.6.5 (automated comment)
- Log in to comment
db318240d12becdf183af869b5b863979c55b050