From a86398fdcfb9f3336fb2c63de1f712b38e6d5860 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Tue, 24 Apr 2007 21:45:22 +0000 Subject: [PATCH] - primary key determination within Join maintains table PK ordering --- CHANGES | 3 +-- lib/sqlalchemy/sql.py | 2 +- test/orm/unitofwork.py | 10 +++++----- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/CHANGES b/CHANGES index d094071c1b..56517e556c 100644 --- 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, diff --git a/lib/sqlalchemy/sql.py b/lib/sqlalchemy/sql.py index f4db66fdf3..8eb5861f0a 100644 --- a/lib/sqlalchemy/sql.py +++ b/lib/sqlalchemy/sql.py @@ -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) diff --git a/test/orm/unitofwork.py b/test/orm/unitofwork.py index 7657426776..7f617b536d 100644 --- a/test/orm/unitofwork.py +++ b/test/orm/unitofwork.py @@ -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' -- 2.47.2