From 58dbbab392ea55a1486d38e80df5e6c91f92bb13 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Wed, 20 Jun 2007 21:24:34 +0000 Subject: [PATCH] fixed overly eager check for ClauseElement type in filter() --- lib/sqlalchemy/orm/query.py | 7 +++++-- test/orm/query.py | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/sqlalchemy/orm/query.py b/lib/sqlalchemy/orm/query.py index 16dd1eebaa..37f3232486 100644 --- a/lib/sqlalchemy/orm/query.py +++ b/lib/sqlalchemy/orm/query.py @@ -244,8 +244,11 @@ class Query(object): the criterion is any sql.ClauseElement applicable to the WHERE clause of a select. """ - if not isinstance(criterion, sql.ClauseElement): - raise exceptions.ArgumentError("filter() argument must be of type sqlalchemy.sql.ClauseElement") + if isinstance(criterion, basestring): + criterion = sql.text(criterion) + + if criterion is not None and not isinstance(criterion, sql.ClauseElement): + raise exceptions.ArgumentError("filter() argument must be of type sqlalchemy.sql.ClauseElement or string") q = self._clone() if q._criterion is not None: diff --git a/test/orm/query.py b/test/orm/query.py index f3e7914966..7ed8d402ef 100644 --- a/test/orm/query.py +++ b/test/orm/query.py @@ -163,7 +163,7 @@ class FilterTest(QueryTest): create_session().query(User).filter(User.name==5) assert False except exceptions.ArgumentError, e: - assert str(e) == "filter() argument must be of type sqlalchemy.sql.ClauseElement" + assert str(e) == "filter() argument must be of type sqlalchemy.sql.ClauseElement or string" class ParentTest(QueryTest): def test_o2m(self): -- 2.47.3