diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-11-03 02:52:30 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2008-11-03 02:52:30 +0000 |
commit | a5dfbeedb9f7ae148081d1dbc3e91e876526eb90 (patch) | |
tree | 070cede0b9a927c5672a7b847113a9947a2726ce /lib/sqlalchemy/orm/interfaces.py | |
parent | 334d5118bb7bcf6fcf052c1b12182009fe54ebef (diff) | |
download | sqlalchemy-a5dfbeedb9f7ae148081d1dbc3e91e876526eb90.tar.gz |
- Improved the behavior of aliased() objects such that they more
accurately adapt the expressions generated, which helps
particularly with self-referential comparisons. [ticket:1171]
- Fixed bug involving primaryjoin/secondaryjoin conditions
constructed from class-bound attributes (as often occurs
when using declarative), which later would be inappropriately
aliased by Query, particularly with the various EXISTS
based comparators.
Diffstat (limited to 'lib/sqlalchemy/orm/interfaces.py')
-rw-r--r-- | lib/sqlalchemy/orm/interfaces.py | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/lib/sqlalchemy/orm/interfaces.py b/lib/sqlalchemy/orm/interfaces.py index 631d3f582..bd934ce13 100644 --- a/lib/sqlalchemy/orm/interfaces.py +++ b/lib/sqlalchemy/orm/interfaces.py @@ -438,9 +438,21 @@ class PropComparator(expression.ColumnOperators): PropComparator. """ + def __init__(self, prop, mapper, adapter=None): + self.prop = self.property = prop + self.mapper = mapper + self.adapter = adapter + def __clause_element__(self): raise NotImplementedError("%r" % self) + def adapted(self, adapter): + """Return a copy of this PropComparator which will use the given adaption function + on the local side of generated expressions. + + """ + return self.__class__(self.prop, self.mapper, adapter) + @staticmethod def any_op(a, b, **kwargs): return a.any(b, **kwargs) @@ -449,10 +461,6 @@ class PropComparator(expression.ColumnOperators): def has_op(a, b, **kwargs): return a.has(b, **kwargs) - def __init__(self, prop, mapper): - self.prop = self.property = prop - self.mapper = mapper - @staticmethod def of_type_op(a, class_): return a.of_type(class_) |