summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES7
-rw-r--r--lib/sqlalchemy/pool.py8
-rw-r--r--test/engine/test_pool.py3
3 files changed, 13 insertions, 5 deletions
diff --git a/CHANGES b/CHANGES
index 5b504772d..4f244b445 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 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)