summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy
diff options
context:
space:
mode:
Diffstat (limited to 'lib/sqlalchemy')
-rw-r--r--lib/sqlalchemy/orm/properties.py10
-rw-r--r--lib/sqlalchemy/orm/strategies.py11
-rw-r--r--lib/sqlalchemy/util.py32
3 files changed, 3 insertions, 50 deletions
diff --git a/lib/sqlalchemy/orm/properties.py b/lib/sqlalchemy/orm/properties.py
index 7198cc830..c83e03599 100644
--- a/lib/sqlalchemy/orm/properties.py
+++ b/lib/sqlalchemy/orm/properties.py
@@ -381,7 +381,6 @@ class RelationProperty(StrategizedProperty):
self.join_depth = join_depth
self.local_remote_pairs = _local_remote_pairs
self.extension = extension
- self.__join_cache = {}
self.comparator_factory = comparator_factory or RelationProperty.Comparator
self.comparator = self.comparator_factory(self, None)
util.set_creation_order(self)
@@ -1004,12 +1003,6 @@ class RelationProperty(StrategizedProperty):
return self.mapper.common_parent(self.parent)
def _create_joins(self, source_polymorphic=False, source_selectable=None, dest_polymorphic=False, dest_selectable=None, of_type=None):
- key = util.WeakCompositeKey(source_polymorphic, source_selectable, dest_polymorphic, dest_selectable, of_type)
- try:
- return self.__join_cache[key]
- except KeyError:
- pass
-
if source_selectable is None:
if source_polymorphic and self.parent.with_polymorphic:
source_selectable = self.parent._with_polymorphic_selectable
@@ -1076,10 +1069,9 @@ class RelationProperty(StrategizedProperty):
else:
target_adapter = None
- self.__join_cache[key] = ret = (primaryjoin, secondaryjoin,
+ return (primaryjoin, secondaryjoin,
(source_selectable or self.parent.local_table),
(dest_selectable or self.mapper.local_table), secondary, target_adapter)
- return ret
def _get_join(self, parent, primary=True, secondary=True, polymorphic_parent=True):
"""deprecated. use primary_join_against(), secondary_join_against(), full_join_against()"""
diff --git a/lib/sqlalchemy/orm/strategies.py b/lib/sqlalchemy/orm/strategies.py
index 5f820565f..7195310cd 100644
--- a/lib/sqlalchemy/orm/strategies.py
+++ b/lib/sqlalchemy/orm/strategies.py
@@ -594,7 +594,6 @@ class EagerLoader(AbstractRelationLoader):
def init(self):
super(EagerLoader, self).init()
- self.clauses = {}
self.join_depth = self.parent_property.join_depth
def init_class_attribute(self):
@@ -669,14 +668,8 @@ class EagerLoader(AbstractRelationLoader):
towrap = context.eager_joins.setdefault(entity_key, default_towrap)
- # create AliasedClauses object to build up the eager query. this is cached after 1st creation.
- # this also allows ORMJoin to cache the aliased joins it produces since we pass the same
- # args each time in the typical case.
- path_key = util.WeakCompositeKey(*path)
- try:
- clauses = self.clauses[path_key]
- except KeyError:
- self.clauses[path_key] = clauses = mapperutil.ORMAdapter(mapperutil.AliasedClass(self.mapper),
+ # create AliasedClauses object to build up the eager query.
+ clauses = mapperutil.ORMAdapter(mapperutil.AliasedClass(self.mapper),
equivalents=self.mapper._equivalent_columns)
if adapter:
diff --git a/lib/sqlalchemy/util.py b/lib/sqlalchemy/util.py
index 619888135..110ef21d5 100644
--- a/lib/sqlalchemy/util.py
+++ b/lib/sqlalchemy/util.py
@@ -1178,38 +1178,6 @@ class _TLocalRegistry(ScopedRegistry):
except AttributeError:
pass
-class WeakCompositeKey(object):
- """an weak-referencable, hashable collection which is strongly referenced
- until any one of its members is garbage collected.
-
- """
- keys = set()
-
- __slots__ = 'args', '__weakref__'
-
- def __init__(self, *args):
- self.args = [self.__ref(arg) for arg in args]
- WeakCompositeKey.keys.add(self)
-
- def __ref(self, arg):
- if isinstance(arg, type):
- return weakref.ref(arg, self.__remover)
- else:
- return lambda: arg
-
- def __remover(self, wr):
- WeakCompositeKey.keys.discard(self)
-
- def __hash__(self):
- return hash(tuple(self))
-
- def __cmp__(self, other):
- return cmp(tuple(self), tuple(other))
-
- def __iter__(self):
- return iter(arg() for arg in self.args)
-
-
class _symbol(object):
def __init__(self, name):
"""Construct a new named symbol."""