]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
further fixes for column/table errors
authorMike Bayer <mike_mp@zzzcomputing.com>
Thu, 12 Jan 2012 01:47:53 +0000 (20:47 -0500)
committerMike Bayer <mike_mp@zzzcomputing.com>
Thu, 12 Jan 2012 01:47:53 +0000 (20:47 -0500)
lib/sqlalchemy/exc.py
test/engine/test_execute.py

index 4ce0bfe7f4413c5c92218c8d51d0a1e2db40549a..4f776b8371e13fb9706862504a13534f2176b531 100644 (file)
@@ -102,6 +102,9 @@ class NoReferencedTableError(NoReferenceError):
         NoReferenceError.__init__(self, message)
         self.table_name = tname
 
+    def __reduce__(self):
+        return self.__class__, (self.args[0], self.table_name)
+
 class NoReferencedColumnError(NoReferenceError):
     """Raised by ``ForeignKey`` when the referred ``Column`` cannot be located."""
 
@@ -110,6 +113,10 @@ class NoReferencedColumnError(NoReferenceError):
         self.table_name = tname
         self.column_name = cname
 
+    def __reduce__(self):
+        return self.__class__, (self.args[0], self.table_name, 
+                            self.column_name)
+
 class NoSuchTableError(InvalidRequestError):
     """Table does not exist or is not visible to a connection."""
 
index 361c38c2fe04fff4617c0453779f653ba64e3272..44e44982fe729eb751a1f0a33cf0480c8b406c8a 100644 (file)
@@ -219,16 +219,19 @@ class ExecuteTest(fixtures.TestBase):
             tsa.exc.InterfaceError("select * from table", 
                             {"foo":"bar"}, 
                             orig),
+            tsa.exc.NoReferencedTableError("message", "tname"),
+            tsa.exc.NoReferencedColumnError("message", "tname", "cname")
         ):
             for loads, dumps in picklers():
                 repickled = loads(dumps(sa_exc))
                 eq_(repickled.args[0], sa_exc.args[0])
-                eq_(repickled.params, {"foo":"bar"})
-                eq_(repickled.statement, sa_exc.statement)
-                if hasattr(sa_exc, "connection_invalidated"):
-                    eq_(repickled.connection_invalidated, 
-                        sa_exc.connection_invalidated)
-                eq_(repickled.orig.args[0], orig.args[0])
+                if isinstance(sa_exc, tsa.exc.StatementError):
+                    eq_(repickled.params, {"foo":"bar"})
+                    eq_(repickled.statement, sa_exc.statement)
+                    if hasattr(sa_exc, "connection_invalidated"):
+                        eq_(repickled.connection_invalidated, 
+                            sa_exc.connection_invalidated)
+                    eq_(repickled.orig.args[0], orig.args[0])
 
     def test_dont_wrap_mixin(self):
         class MyException(Exception, tsa.exc.DontWrapMixin):