]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- primary key determination within Join maintains table PK ordering
authorMike Bayer <mike_mp@zzzcomputing.com>
Tue, 24 Apr 2007 21:45:22 +0000 (21:45 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Tue, 24 Apr 2007 21:45:22 +0000 (21:45 +0000)
CHANGES
lib/sqlalchemy/sql.py
test/orm/unitofwork.py

diff --git a/CHANGES b/CHANGES
index d094071c1bb5dd7845020a231bf8073877fb0e2b..56517e556c26ef434db1e9af0128f8200f693a71 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -1,7 +1,6 @@
 0.3.7
 - engines
-    - SA default loglevel is now "WARN".  we have a few warnings
-      for things that should be available by default.
+    - warnings module used for issuing warnings (instead of logging)
     - cleanup of DBAPI import strategies across all engines 
       [ticket:480]
     - refactoring of engine internals which reduces complexity,
index f4db66fdf3de2f9c97c91a5e1ed5be2f3d92cb83..8eb5861f0a68a14aefa5625fd9031665dff0a0fc 100644 (file)
@@ -1938,7 +1938,7 @@ class Join(FromClause):
     encodedname = property(lambda s: s.name.encode('ascii', 'backslashreplace'))
 
     def _init_primary_key(self):
-        pkcol = util.Set()
+        pkcol = util.OrderedSet()
         for col in self._adjusted_exportable_columns():
             if col.primary_key:
                 pkcol.add(col)
index 7657426776c5557567b6e58d60583df4fae725cb..7f617b536d206e4dea43ff88372853535abd0d2c 100644 (file)
@@ -1438,7 +1438,7 @@ class ManyToManyTest(UnitOfWorkTest):
         j = join(users, userkeywords, 
                 users.c.user_id==userkeywords.c.user_id).join(keywords, 
                    userkeywords.c.keyword_id==keywords.c.keyword_id)
-
+        print "PK", j.primary_key
         # a class 
         class KeywordUser(object):
             pass
@@ -1448,16 +1448,16 @@ class ManyToManyTest(UnitOfWorkTest):
         m = mapper(KeywordUser, j, properties={
             'user_id':[users.c.user_id, userkeywords.c.user_id],
             'keyword_id':[userkeywords.c.keyword_id, keywords.c.keyword_id],
-            'keyword_name':keywords.c.name
-
-        })
+            'keyword_name':keywords.c.name,
+        }, )
 
         k = KeywordUser()
         k.user_name = 'keyworduser'
         k.keyword_name = 'a keyword'
         ctx.current.flush()
         print m.instance_key(k)
-        id = (k.keyword_id, k.user_id)
+        
+        id = (k.user_id, k.keyword_id)
         ctx.current.clear()
         k = ctx.current.query(KeywordUser).get(id)
         assert k.user_name == 'keyworduser'