]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- Fixed a recursive pickling issue in serializer, triggered
authorMike Bayer <mike_mp@zzzcomputing.com>
Tue, 17 Feb 2009 12:56:48 +0000 (12:56 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Tue, 17 Feb 2009 12:56:48 +0000 (12:56 +0000)
  by an EXISTS or other embedded FROM construct.

CHANGES
lib/sqlalchemy/sql/expression.py
test/ext/serializer.py

diff --git a/CHANGES b/CHANGES
index d14859960f5484070409118938e6c517affdfdfa..7834d578268455b02da65d9111ebab6f4aa55be1 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -54,11 +54,6 @@ CHANGES
        been loaded from the database.   Helps with the creation of 
        homegrown collection loaders and such.
 
-     - Declarative figures out joined-table inheritance primary join
-       condition even if "inherits" mapper argument is given 
-       explicitly.  Allows mixins to be used with joined table
-       inheritance.
-       
 - sql
     - Fixed missing _label attribute on Function object, others
       when used in a select() with use_labels (such as when used
@@ -85,7 +80,17 @@ CHANGES
 
 - mssql
     - Preliminary support for pymssql 1.0.1
-    
+
+- extensions
+
+    - Fixed a recursive pickling issue in serializer, triggered
+      by an EXISTS or other embedded FROM construct.
+
+    - Declarative figures out joined-table inheritance primary join
+      condition even if "inherits" mapper argument is given 
+      explicitly.  Allows mixins to be used with joined table
+      inheritance.
+
 0.5.2
 ======
 
index f790555bc9980e638e4c4a4c79f780b08ce1e818..903b3052d597ec6368bbfa251a34cb514423d0a5 100644 (file)
@@ -2697,6 +2697,12 @@ class _FromGrouping(FromClause):
     def __getattr__(self, attr):
         return getattr(self.element, attr)
 
+    def __getstate__(self):
+        return {'element':self.element}
+
+    def __setstate__(self, state):
+        self.element = state['element']
+
 class _Label(ColumnElement):
     """Represents a column label (AS).
 
index 21765ff9c6e17ff8dde8eb0dc83a33dd89e8e174..dc0a029c1d5bd02c5aca7ef2a84de9cd1443ab78 100644 (file)
@@ -124,6 +124,12 @@ class SerializeTest(testing.ORMTest):
         q2 = serializer.loads(serializer.dumps(q), users.metadata, Session)
         
         eq_(list(q2.all()), [(u7, u8), (u7, u9), (u7, u10), (u8, u9), (u8, u10)])
+
+    def test_any(self):
+        r = User.addresses.any(Address.email=='x')
+        ser = serializer.dumps(r)
+        x = serializer.loads(ser, users.metadata)
+        eq_(str(r), str(x))
         
 if __name__ == '__main__':
     testing.main()