From: Mike Bayer Date: Sun, 14 Aug 2011 15:55:32 +0000 (-0400) Subject: - The recreate() method in all pool classes uses X-Git-Tag: rel_0_7_3~72 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=9a2edbf3ebf04bfff3ad2a7214605503d5cdcaa2;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git - The recreate() method in all pool classes uses self.__class__ to get at the type of pool to produce, in the case of subclassing. Note there's no usual need to subclass pools. [ticket:2254] --- diff --git a/CHANGES b/CHANGES index 5b504772d8..4f244b4458 100644 --- a/CHANGES +++ b/CHANGES @@ -34,6 +34,13 @@ CHANGES on a new mapper would establish a backref on the first mapper. +- engine + - The recreate() method in all pool classes uses + self.__class__ to get at the type of pool + to produce, in the case of subclassing. Note + there's no usual need to subclass pools. + [ticket:2254] + - sqlite - Ensured that the same ValueError is raised for illegal date/time/datetime string parsed from diff --git a/lib/sqlalchemy/pool.py b/lib/sqlalchemy/pool.py index 2edafbf383..b7011366eb 100644 --- a/lib/sqlalchemy/pool.py +++ b/lib/sqlalchemy/pool.py @@ -512,7 +512,7 @@ class SingletonThreadPool(Pool): def recreate(self): self.logger.info("Pool recreating") - return SingletonThreadPool(self._creator, + return self.__class__(self._creator, pool_size=self.size, recycle=self._recycle, echo=self.echo, @@ -645,7 +645,7 @@ class QueuePool(Pool): def recreate(self): self.logger.info("Pool recreating") - return QueuePool(self._creator, pool_size=self._pool.maxsize, + return self.__class__(self._creator, pool_size=self._pool.maxsize, max_overflow=self._max_overflow, timeout=self._timeout, recycle=self._recycle, echo=self.echo, @@ -759,7 +759,7 @@ class NullPool(Pool): def recreate(self): self.logger.info("Pool recreating") - return NullPool(self._creator, + return self.__class__(self._creator, recycle=self._recycle, echo=self.echo, logging_name=self._orig_logging_name, @@ -851,7 +851,7 @@ class AssertionPool(Pool): def recreate(self): self.logger.info("Pool recreating") - return AssertionPool(self._creator, echo=self.echo, + return self.__class__(self._creator, echo=self.echo, logging_name=self._orig_logging_name, _dispatch=self.dispatch) diff --git a/test/engine/test_pool.py b/test/engine/test_pool.py index 553bc9d85f..b515de0f88 100644 --- a/test/engine/test_pool.py +++ b/test/engine/test_pool.py @@ -99,7 +99,8 @@ class PoolTest(PoolTestBase): pool.QueuePool, pool.NullPool, pool.AssertionPool): p = cls(creator=creator) p.dispose() - p.recreate() + p2 = p.recreate() + assert p2.__class__ is cls mock_dbapi = MockDBAPI() p = cls(creator=mock_dbapi.connect)