# http://www.sqlalchemy.org/trac/ticket/2719
diff -ur SQLAlchemy-0.8.1.orig/test/ext/test_serializer.py SQLAlchemy-0.8.1/test/ext/test_serializer.py
--- test/ext/test_serializer.py	2013-04-28 05:24:34.000000000 +0800
+++ test/ext/test_serializer.py	2013-05-02 01:02:25.376203511 +0800
@@ -114,6 +114,7 @@
             Address(email='ed@lala.com'),
             Address(email='ed@bettyboop.com')])
 
+    @testing.skip_if(lambda: util.pypy, "problems with pypy pickle reported")	
     def test_query_two(self):
         q = \
             Session.query(User).join(User.addresses).\
@@ -123,6 +124,7 @@
         eq_(q2.all(), [User(name='fred')])
         eq_(list(q2.values(User.id, User.name)), [(9, u'fred')])
 
+    @testing.skip_if(lambda: util.pypy, "problems with pypy pickle reported")		
     def test_query_three(self):
         ua = aliased(User)
         q = \
@@ -136,6 +138,7 @@
         ua_2 = q2._entities[0].entity_zero.entity
         eq_(list(q2.values(ua_2.id, ua_2.name)), [(9, u'fred')])
 
+    @testing.skip_if(lambda: util.pypy, "problems with pypy pickle reported")
     def test_orm_join(self):
         from sqlalchemy.orm.util import join
 
diff -ur SQLAlchemy-0.8.1.orig/test/orm/test_manytomany.py SQLAlchemy-0.8.1/test/orm/test_manytomany.py
--- test/orm/test_manytomany.py	2013-04-28 05:24:34.000000000 +0800
+++ test/orm/test_manytomany.py	2013-05-02 01:05:08.073213015 +0800
@@ -233,6 +233,9 @@
         p2 = Place('place2')
         p3 = Place('place3')
 
+        sess = Session()
+        sess.add_all([p3, p1, t1, t2, p2, t3])
+
         t1.inputs.append(p1)
         t1.inputs.append(p2)
         t1.outputs.append(p3)
@@ -240,8 +243,6 @@
         p2.inputs.append(t2)
         p3.inputs.append(t2)
         p1.outputs.append(t1)
-        sess = Session()
-        sess.add_all((t1, t2, t3, p1, p2, p3))
         sess.commit()
 
         self.assert_result([t1],
