summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/sqlalchemy/engine/strategies.py2
-rw-r--r--lib/sqlalchemy/pool.py3
-rw-r--r--test/orm/session.py15
-rw-r--r--test/profiling/zoomark.py4
-rw-r--r--test/profiling/zoomark_orm.py7
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()