]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
- The recreate() method in all pool classes uses
authorMike Bayer <mike_mp@zzzcomputing.com>
Sun, 14 Aug 2011 15:55:32 +0000 (11:55 -0400)
committerMike Bayer <mike_mp@zzzcomputing.com>
Sun, 14 Aug 2011 15:55:32 +0000 (11:55 -0400)
    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]

CHANGES
lib/sqlalchemy/pool.py
test/engine/test_pool.py

diff --git a/CHANGES b/CHANGES
index 5b504772d8eac71d4d42e179460da6c959163a1e..4f244b4458b5aa4693ff2ff7164db9dd1b098e16 100644 (file)
--- 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
index 2edafbf383337a88369ec2f559e515c63f41939d..b7011366eb0c74ee8ebf2a5c6f8a7957ecb5b2ab 100644 (file)
@@ -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)
 
index 553bc9d85f56cd59b8a5df62f25111e8beb82a4d..b515de0f88a79094ed1f713d7c0e41a4e523b714 100644 (file)
@@ -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)