]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Fixed bug whereby using "key" with Column
authorMike Bayer <mike_mp@zzzcomputing.com>
Wed, 14 Nov 2012 04:43:31 +0000 (23:43 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Wed, 14 Nov 2012 04:43:31 +0000 (23:43 -0500)
in conjunction with "schema" for the owning
Table would fail to locate result rows due
to the MSSQL dialect's "schema rendering"
logic's failure to take .key into account.
Also in 0.7.10. [ticket:2607]

doc/build/changelog/changelog_08.rst
lib/sqlalchemy/dialects/mssql/base.py
test/sql/test_query.py

index 0571798ce7bde8657c6ec5423df599ca60642e4c..9025f8c30172dd3e84b28d2fce02ba86a2ad0ef8 100644 (file)
@@ -6,6 +6,17 @@
 .. changelog::
     :version: 0.8.0b2
 
+    .. change::
+        :tags: mssql, bug
+        :tickets:2607
+
+      Fixed bug whereby using "key" with Column
+      in conjunction with "schema" for the owning
+      Table would fail to locate result rows due
+      to the MSSQL dialect's "schema rendering"
+      logic's failure to take .key into account.
+      Also in 0.7.10.
+
     .. change::
         :tags: sql, bug
         :tickets: 2603
index f9b7b944ce434d2ecf450ba85916c5ef7b6dd5fc..09db05e1fe1ffef2f28b12bde94a9399037810c2 100644 (file)
@@ -855,12 +855,11 @@ class MSSQLCompiler(compiler.SQLCompiler):
             if t is not None:
                 converted = expression._corresponding_column_or_error(
                                         t, column)
-
                 if add_to_result_map is not None:
                     add_to_result_map(
                             column.name,
                             column.name,
-                            (column, ),
+                            (column, column.name, column.key),
                             column.type
                     )
 
index f8f5953c5a47a290b46ea5f47a4fdb487e7750b6..95e1593161e84962e34820510d68b53391b50eaa 100644 (file)
@@ -1569,6 +1569,13 @@ class KeyTargetingTest(fixtures.TablesTest):
             Column('ctype', String(30), key="content_type")
         )
 
+        if testing.requires.schemas.enabled:
+            wschema = Table('wschema', metadata,
+                Column("a", CHAR(2), key="b"),
+                Column("c", CHAR(2), key="q"),
+                schema="test_schema"
+            )
+
     @classmethod
     def insert_data(cls):
         cls.tables.keyed1.insert().execute(dict(b="a1", q="c1"))
@@ -1577,6 +1584,20 @@ class KeyTargetingTest(fixtures.TablesTest):
         cls.tables.keyed4.insert().execute(dict(b="b4", q="q4"))
         cls.tables.content.insert().execute(type="t1")
 
+        if testing.requires.schemas.enabled:
+            cls.tables['test_schema.wschema'].insert().execute(dict(b="a1", q="c1"))
+
+    @testing.requires.schemas
+    def test_keyed_accessor_wschema(self):
+        keyed1 = self.tables['test_schema.wschema']
+        row = testing.db.execute(keyed1.select()).first()
+
+        eq_(row.b, "a1")
+        eq_(row.q, "c1")
+        eq_(row.a, "a1")
+        eq_(row.c, "c1")
+
+
     def test_keyed_accessor_single(self):
         keyed1 = self.tables.keyed1
         row = testing.db.execute(keyed1.select()).first()