From: Mike Bayer Date: Wed, 20 Jun 2007 21:24:34 +0000 (+0000) Subject: fixed overly eager check for ClauseElement type in filter() X-Git-Tag: rel_0_4_6~189 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=58dbbab392ea55a1486d38e80df5e6c91f92bb13;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git fixed overly eager check for ClauseElement type in filter() --- 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):