diff options
| -rw-r--r-- | CHANGES | 7 | ||||
| -rw-r--r-- | lib/sqlalchemy/pool.py | 8 | ||||
| -rw-r--r-- | test/engine/test_pool.py | 3 |
3 files changed, 13 insertions, 5 deletions
@@ -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 2edafbf38..b7011366e 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 553bc9d85..b515de0f8 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) |
