summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES3
-rw-r--r--lib/sqlalchemy/sql.py2
-rw-r--r--test/sql/select.py6
3 files changed, 10 insertions, 1 deletions
diff --git a/CHANGES b/CHANGES
index 81e574208..a7f3d2e04 100644
--- a/CHANGES
+++ b/CHANGES
@@ -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(