summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--examples/query_caching/query_caching.py7
-rw-r--r--lib/sqlalchemy/orm/query.py3
-rw-r--r--lib/sqlalchemy/orm/shard.py5
3 files changed, 2 insertions, 13 deletions
diff --git a/examples/query_caching/query_caching.py b/examples/query_caching/query_caching.py
index 1ac8230b6..fb250acca 100644
--- a/examples/query_caching/query_caching.py
+++ b/examples/query_caching/query_caching.py
@@ -13,13 +13,6 @@ class CachingQuery(Query):
def with_cache_key(self, cachekey):
self.cachekey = cachekey
- # override the _clone() method. a future release
- # will just fix _clone() in Query to not hardcode the class so this won't be needed.
- def _clone(self):
- q = CachingQuery.__new__(CachingQuery)
- q.__dict__ = self.__dict__.copy()
- return q
-
# single point of object loading is __iter__(). objects in the cache are not associated
# with a session and are never returned directly; only merged copies.
def __iter__(self):
diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py
index 43f206f38..700d24d33 100644
--- a/lib/sqlalchemy/orm/query.py
+++ b/lib/sqlalchemy/orm/query.py
@@ -305,7 +305,8 @@ class Query(object):
return self
def _clone(self):
- q = Query.__new__(Query)
+ cls = self.__class__
+ q = cls.__new__(cls)
q.__dict__ = self.__dict__.copy()
return q
diff --git a/lib/sqlalchemy/orm/shard.py b/lib/sqlalchemy/orm/shard.py
index 6850a0bb0..b4525d8fb 100644
--- a/lib/sqlalchemy/orm/shard.py
+++ b/lib/sqlalchemy/orm/shard.py
@@ -80,11 +80,6 @@ class ShardedQuery(Query):
self.query_chooser = self.session.query_chooser
self._shard_id = None
- def _clone(self):
- q = ShardedQuery.__new__(ShardedQuery)
- q.__dict__ = self.__dict__.copy()
- return q
-
def set_shard(self, shard_id):
"""return a new query, limited to a single shard ID.