]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- fix some identity map accessors
authorMike Bayer <mike_mp@zzzcomputing.com>
Sat, 24 May 2014 21:02:47 +0000 (17:02 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sat, 24 May 2014 21:02:47 +0000 (17:02 -0400)
- fix a bad comparison in MySQL w/ limit/offset thing

lib/sqlalchemy/dialects/mysql/base.py
lib/sqlalchemy/orm/identity.py

index e8a15fdbca7a1bac6058fc0bc26708633cc78b53..40715cc317755737bcde498e316d63a8b8379539 100644 (file)
@@ -1570,7 +1570,7 @@ class MySQLCompiler(compiler.SQLCompiler):
 
         limit_clause, offset_clause = select._limit_clause, select._offset_clause
 
-        if (limit_clause, offset_clause) == (None, None):
+        if limit_clause is None and offset_clause is None:
             return ''
         elif offset_clause is not None:
             # As suggested by the MySQL docs, need to apply an
index f75aeba55cfe15440a513db014d54e5a20c052ef..fa3a31d9c34b0553f01176706bf2652b4100b5c2 100644 (file)
@@ -14,6 +14,9 @@ class IdentityMap(object):
         self._modified = set()
         self._wr = weakref.ref(self)
 
+    def keys(self):
+        return self._dict.keys()
+
     def replace(self, state):
         raise NotImplementedError()
 
@@ -173,6 +176,10 @@ class WeakInstanceDict(IdentityMap):
 
         def itervalues(self):
             return iter(self.values())
+
+        def __iter__(self):
+            return iter(self.keys())
+
     else:
         def items(self):
             return iter(self._items())
@@ -180,6 +187,9 @@ class WeakInstanceDict(IdentityMap):
         def values(self):
             return iter(self._values())
 
+        def __iter__(self):
+            return self.keys()
+
     def all_states(self):
         if util.py2k:
             return self._dict.values()
@@ -198,6 +208,35 @@ class WeakInstanceDict(IdentityMap):
 
 
 class StrongInstanceDict(IdentityMap):
+    if util.py2k:
+        def itervalues(self):
+            return self._dict.itervalues()
+
+        def iteritems(self):
+            return self._dict.iteritems()
+
+        def __iter__(self):
+            return iter(self.keys())
+    else:
+        def __iter__(self):
+            return self.keys()
+
+    def __getitem__(self, key):
+        return self._dict[key]
+
+    def __contains__(self, key):
+        return key in self._dict
+
+    def get(self, key, default=None):
+        return self._dict.get(key, default)
+
+    def values(self):
+        return self._dict.values()
+
+    def items(self):
+        return self._dict.items()
+
+
     def all_states(self):
         return [attributes.instance_state(o) for o in self.values()]