diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-05-19 15:46:32 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-05-19 15:46:32 +0000 |
commit | dbda75ec5f98061b87cf616b468232ebc68a9133 (patch) | |
tree | f157bab2e40e63445180fe2bebf88da49a799b89 | |
parent | 89a8546d00ca5f4b59179c42a05096bc49c76c65 (diff) | |
download | sqlalchemy-dbda75ec5f98061b87cf616b468232ebc68a9133.tar.gz |
pool_threadlocal is off by default [ticket:1049]
-rw-r--r-- | lib/sqlalchemy/engine/strategies.py | 2 | ||||
-rw-r--r-- | lib/sqlalchemy/pool.py | 3 | ||||
-rw-r--r-- | test/orm/session.py | 15 | ||||
-rw-r--r-- | test/profiling/zoomark.py | 4 | ||||
-rw-r--r-- | test/profiling/zoomark_orm.py | 7 |
5 files changed, 23 insertions, 8 deletions
diff --git a/lib/sqlalchemy/engine/strategies.py b/lib/sqlalchemy/engine/strategies.py index aab191231..aa595c8e3 100644 --- a/lib/sqlalchemy/engine/strategies.py +++ b/lib/sqlalchemy/engine/strategies.py @@ -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 diff --git a/lib/sqlalchemy/pool.py b/lib/sqlalchemy/pool.py index c1b29a1d0..7a9932e8b 100644 --- a/lib/sqlalchemy/pool.py +++ b/lib/sqlalchemy/pool.py @@ -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 diff --git a/test/orm/session.py b/test/orm/session.py index c07169611..6f6dfb6b8 100644 --- a/test/orm/session.py +++ b/test/orm/session.py @@ -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): diff --git a/test/profiling/zoomark.py b/test/profiling/zoomark.py index e2833a712..69f236ef1 100644 --- a/test/profiling/zoomark.py +++ b/test/profiling/zoomark.py @@ -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}) diff --git a/test/profiling/zoomark_orm.py b/test/profiling/zoomark_orm.py index 3d69e6f58..98b616efa 100644 --- a/test/profiling/zoomark_orm.py +++ b/test/profiling/zoomark_orm.py @@ -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() |