From: Mike Bayer Date: Sat, 22 Mar 2014 23:02:37 +0000 (-0400) Subject: - restore the old behavior of the connection pool replacing itself just X-Git-Tag: rel_0_9_4~40 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8e10ab92df0d8b5d24474e00d6628d2de94b900c;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - restore the old behavior of the connection pool replacing itself just within userland engine.dispose(); as some SQLA tests already failed when the replace step was removed, due to those conns still being referenced, it's likely this will create surprises for all those users that incorrectly use dispose() and it's not really worth dealing with. This doesn't affect the change we made for ref: #2985. --- diff --git a/lib/sqlalchemy/engine/base.py b/lib/sqlalchemy/engine/base.py index 2cad2a0949..4a8719c6b6 100644 --- a/lib/sqlalchemy/engine/base.py +++ b/lib/sqlalchemy/engine/base.py @@ -1502,6 +1502,7 @@ class Engine(Connectable, log.Identified): """ self.pool.dispose() + self.pool = self.pool.recreate() def _execute_default(self, default): with self.contextual_connect() as conn: diff --git a/test/engine/test_execute.py b/test/engine/test_execute.py index 6efcdcb89c..830b62531c 100644 --- a/test/engine/test_execute.py +++ b/test/engine/test_execute.py @@ -449,6 +449,18 @@ class ExecuteTest(fixtures.TestBase): assert eng.dialect.returns_unicode_strings in (True, False) eng.dispose() + def test_works_after_dispose(self): + eng = create_engine(testing.db.url) + for i in range(3): + eq_(eng.scalar(select([1])), 1) + eng.dispose() + + def test_works_after_dispose_testing_engine(self): + eng = engines.testing_engine() + for i in range(3): + eq_(eng.scalar(select([1])), 1) + eng.dispose() + class ConvenienceExecuteTest(fixtures.TablesTest): @classmethod def define_tables(cls, metadata):