summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy
diff options
context:
space:
mode:
authorMike Bayer <mike_mp@zzzcomputing.com>2007-12-06 19:15:04 +0000
committerMike Bayer <mike_mp@zzzcomputing.com>2007-12-06 19:15:04 +0000
commit4580e77da28ee9bf98c109e8f7a81cb569112dcc (patch)
tree14f1bcaccc3ed90452ab6d77ed38697227d71bd2 /lib/sqlalchemy
parent594784a20639198690f59ded0bebb3529dbadb2e (diff)
downloadsqlalchemy-4580e77da28ee9bf98c109e8f7a81cb569112dcc.tar.gz
- query.get() and query.load() do not take existing filter or other
criterion into account; these methods *always* look up the given id in the database or return the current instance from the identity map, disregarding any existing filter, join, group_by or other criterion which has been configured. [ticket:893]
Diffstat (limited to 'lib/sqlalchemy')
-rw-r--r--lib/sqlalchemy/orm/query.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py
index 054ac04e7..eb0d49147 100644
--- a/lib/sqlalchemy/orm/query.py
+++ b/lib/sqlalchemy/orm/query.py
@@ -52,6 +52,15 @@ class Query(object):
self._primary_adapter=None
self._only_load_props = None
self._refresh_instance = None
+
+ def _no_criterion(self):
+ q = self._clone()
+ q._from_obj = [self.table]
+ q._alias_ids = {}
+ q._joinpoint = self.mapper
+ q._statement = q._aliases = q._criterion = None
+ q._order_by = q._group_by = q._distinct = False
+ return q
def _clone(self):
q = Query.__new__(Query)
@@ -757,8 +766,8 @@ class Query(object):
ident = util.to_list(ident)
q = self
-
if ident is not None:
+ q = q._no_criterion()
params = {}
(_get_clause, _get_params) = self.select_mapper._get_clause
q = q.filter(_get_clause)