the difference is, an operation produces a BinaryExpression from which further operations
can occur whereas comparison produces the more restrictive BooleanExpression
- 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]
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)
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(