]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
pool_threadlocal is off by default [ticket:1049]
authorMike Bayer <mike_mp@zzzcomputing.com>
Mon, 19 May 2008 15:46:32 +0000 (15:46 +0000)
committerMike Bayer <mike_mp@zzzcomputing.com>
Mon, 19 May 2008 15:46:32 +0000 (15:46 +0000)
lib/sqlalchemy/engine/strategies.py
lib/sqlalchemy/pool.py
test/orm/session.py
test/profiling/zoomark.py
test/profiling/zoomark_orm.py

index aab191231ce85635e7a9ef2189ef13719b9cda05..aa595c8e35df0acf2be03e92c7735f6b416dc8f3 100644 (file)
@@ -134,7 +134,7 @@ class PlainEngineStrategy(DefaultEngineStrategy):
         DefaultEngineStrategy.__init__(self, 'plain')
 
     def pool_threadlocal(self):
-        return True
+        return False
 
     def get_engine_cls(self):
         return base.Engine
index c1b29a1d0d0bafa267fd01a2f20b7f566e82fe62..7a9932e8b3488c45a45b86999958cf746fda9622 100644 (file)
@@ -116,8 +116,9 @@ class Pool(object):
       resources.  Disable at your own peril.
 
     """
-    def __init__(self, creator, recycle=-1, echo=None, use_threadlocal=True,
+    def __init__(self, creator, recycle=-1, echo=None, use_threadlocal=False,
                  reset_on_return=True, listeners=None):
+
         self.logger = log.instance_logger(self, echoflag=echo)
         # the WeakValueDictionary works more nicely than a regular dict of
         # weakrefs.  the latter can pile up dead reference objects which don't
index c07169611fee6f5b95a6443a3229a4da25f9db97..6f6dfb6b8a9a126741042fab55bf9f694ea4d34b 100644 (file)
@@ -357,7 +357,20 @@ class SessionTest(_fixtures.FixtureTest):
         session.commit()
         assert session.connection().execute("select count(1) from users").scalar() == 2
 
-
+    @testing.fails_on('sqlite')
+    @testing.resolve_artifact_names
+    def test_transactions_isolated(self):
+        mapper(User, users)
+        users.delete().execute()
+        
+        s1 = create_session(bind=testing.db, autocommit=False)
+        s2 = create_session(bind=testing.db, autocommit=False)
+        u1 = User(name='u1')
+        s1.add(u1)
+        s1.flush()
+        
+        assert s2.query(User).all() == []
+        
     @testing.requires.two_phase_transactions
     @testing.resolve_artifact_names
     def test_twophase(self):
index e2833a712d366ce903435cfaeeb2616e5a30217c..69f236ef19d328bd12d68f5adad58803132594d8 100644 (file)
@@ -35,7 +35,7 @@ class ZooMarkTest(TestBase):
 
         creator = testing.db.pool._creator
         recorder = lambda: dbapi_session.recorder(creator())
-        engine = engines.testing_engine(options={'creator':recorder})
+        engine = engines.testing_engine(options={'creator':recorder, 'pool_threadlocal':True}) # TODO: shouldnt need threadlocal pool
         metadata = MetaData(engine)
 
     def test_baseline_1_create_tables(self):
@@ -317,7 +317,7 @@ class ZooMarkTest(TestBase):
         global metadata
 
         player = lambda: dbapi_session.player()
-        engine = create_engine('postgres:///', creator=player)
+        engine = create_engine('postgres:///', creator=player, pool_threadlocal=True) # TODO: shouldnt need threadlocal pool
         metadata = MetaData(engine)
 
     @profiling.function_call_count(3230, {'2.4': 1796})
index 3d69e6f58429a4006c372db17b2fe396df821973..98b616efa51ea11d6ab4e8d1f3ea583a491ab2b8 100644 (file)
@@ -38,7 +38,7 @@ class ZooMarkTest(TestBase):
         recorder = lambda: dbapi_session.recorder(creator())
         engine = engines.testing_engine(options={'creator':recorder})
         metadata = MetaData(engine)
-        session = sessionmaker()()
+        session = sessionmaker(bind=engine)()  # the recorder seems to have a dependency on being bound to the engine here
 
     def test_baseline_1_create_tables(self):
         zoo = Table('Zoo', metadata,
@@ -66,7 +66,7 @@ class ZooMarkTest(TestBase):
                        Column('AlternateFoodID', Integer),
                        )
         metadata.create_all()
-        
+
         global Zoo, Animal
         class Zoo(object):
             def __init__(self, **kwargs):
@@ -270,6 +270,7 @@ class ZooMarkTest(TestBase):
             assert SDZ.Founded == datetime.date(1835, 9, 13), SDZ.Founded
 
     def test_baseline_7_drop(self):
+        session.rollback()
         metadata.drop_all()
 
     # Now, run all of these tests again with the DB-API driver factored out:
@@ -305,7 +306,7 @@ class ZooMarkTest(TestBase):
     def test_profile_4_expressions(self):
         self.test_baseline_4_expressions()
 
-    @profiling.function_call_count(1327)
+    @profiling.function_call_count(1507)
     def test_profile_5_aggregates(self):
         self.test_baseline_5_aggregates()