diff options
author | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-01-08 19:09:02 +0000 |
---|---|---|
committer | Mike Bayer <mike_mp@zzzcomputing.com> | 2007-01-08 19:09:02 +0000 |
commit | a4c73cc8ae154c3a54678fec7f2e11798ee25b7f (patch) | |
tree | 01cf9f02a30a33419a86aaac51e2fda3a72f10fe | |
parent | c691513dc887899e8d046b03a125dcf0ae17943e (diff) | |
download | sqlalchemy-a4c73cc8ae154c3a54678fec7f2e11798ee25b7f.tar.gz |
- the "op()" function is now treated as an "operation", rather than a "comparison".
the difference is, an operation produces a BinaryExpression from which further operations
can occur whereas comparison produces the more restrictive BooleanExpression
-rw-r--r-- | CHANGES | 3 | ||||
-rw-r--r-- | lib/sqlalchemy/sql.py | 2 | ||||
-rw-r--r-- | test/sql/select.py | 6 |
3 files changed, 10 insertions, 1 deletions
@@ -15,6 +15,9 @@ - default "timezone" setting is now False. this corresponds to Python's datetime behavior as well as Postgres' timestamp/time types (which is the only timezone-sensitive dialect at the moment) [ticket:414] + - the "op()" function is now treated as an "operation", rather than a "comparison". + the difference is, an operation produces a BinaryExpression from which further operations + can occur whereas comparison produces the more restrictive BooleanExpression - firebird: - order of constraint creation puts primary key first before all other constraints; required for firebird, not a bad idea for others [ticket:408] diff --git a/lib/sqlalchemy/sql.py b/lib/sqlalchemy/sql.py index 98191552b..f6e23d583 100644 --- a/lib/sqlalchemy/sql.py +++ b/lib/sqlalchemy/sql.py @@ -562,7 +562,7 @@ class _CompareMixin(object): def between(self, cleft, cright): return _BooleanExpression(self, and_(self._check_literal(cleft), self._check_literal(cright)), 'BETWEEN') def op(self, operator): - return lambda other: self._compare(operator, other) + return lambda other: self._operate(operator, other) # and here come the math operators: def __add__(self, other): return self._operate('+', other) diff --git a/test/sql/select.py b/test/sql/select.py index 5d91276e2..f11736652 100644 --- a/test/sql/select.py +++ b/test/sql/select.py @@ -220,6 +220,12 @@ sq.myothertable_othername AS sq_myothertable_othername FROM (" + sqstring + ") A literal("a") + literal("b") * literal("c"), ":literal + (:liter_1 * :liter_2)" ) + # test the op() function, also that its results are further usable in expressions + self.runtest( + table1.select(table1.c.myid.op('hoho')(12)==14), + "SELECT mytable.myid, mytable.name, mytable.description FROM mytable WHERE (mytable.myid hoho :mytable_myid) = :literal" + ) + def testunicodestartswith(self): string = u"hi \xf6 \xf5" self.runtest( |