diff options
| author | Mike Bayer <mike_mp@zzzcomputing.com> | 2011-08-14 11:55:32 -0400 |
|---|---|---|
| committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2011-08-14 11:55:32 -0400 |
| commit | 9a2edbf3ebf04bfff3ad2a7214605503d5cdcaa2 (patch) | |
| tree | a58d89e58845a25846d925766a8373c57ebba4dd | |
| parent | dccdff721c9d9b5fed5dc5124479f21f723c153c (diff) | |
| download | sqlalchemy-9a2edbf3ebf04bfff3ad2a7214605503d5cdcaa2.tar.gz | |
- 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]
| -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) |
