- visit_mods all seemed to not propagate **kw down to process().
this is [ticket:2548] which may be backported to 0.7 pending
a test case to illustrate wrong behavior.
return self.cursor.rowcount
class MySQLDBCompiler(Connector):
- def visit_mod(self, binary, **kw):
- return self.process(binary.left) + " %% " + self.process(binary.right)
+ def visit_mod_binary(self, binary, operator, **kw):
+ return self.process(binary.left, **kw) + " %% " + \
+ self.process(binary.right, **kw)
def post_process_text(self, text):
return text.replace('%', '%%')
class FBCompiler(sql.compiler.SQLCompiler):
"""Firebird specific idiosyncrasies"""
- def visit_mod(self, binary, **kw):
- # Firebird lacks a builtin modulo operator, but there is
- # an equivalent function in the ib_udf library.
+ def visit_mod_binary(self, binary, operator, **kw):
return "mod(%s, %s)" % (
- self.process(binary.left),
- self.process(binary.right))
+ self.process(binary.left, **kw),
+ self.process(binary.right, **kw))
def visit_alias(self, alias, asfrom=False, **kwargs):
if self.dialect._version_two:
else:
return compiler.SQLCompiler.visit_function(self, func, **kw)
- def visit_mod(self, binary, **kw):
- return "MOD(%s, %s)" % (self.process(binary.left), self.process(binary.right))
+ def visit_mod_binary(self, binary, operator, **kw):
+ return "MOD(%s, %s)" % (self.process(binary.left, **kw),
+ self.process(binary.right, **kw))
class InfoDDLCompiler(compiler.DDLCompiler):
'TIMEZONE', 'TRANSACTION', 'TRUE', 'USER', 'UID', 'USERGROUP',
'UTCDATE', 'UTCDIFF'])
- def visit_mod(self, binary, **kw):
+ def visit_mod_binary(self, binary, operator, **kw):
return "mod(%s, %s)" % \
- (self.process(binary.left), self.process(binary.right))
+ (self.process(binary.left, **kw),
+ self.process(binary.right, **kw))
def default_from(self):
return ' FROM DUAL'
class MySQLCompiler_mysqlconnector(MySQLCompiler):
- def visit_mod(self, binary, **kw):
- return self.process(binary.left) + " %% " + self.process(binary.right)
+ def visit_mod_binary(self, binary, operator, **kw):
+ return self.process(binary.left, **kw) + " %% " + \
+ self.process(binary.right, **kw)
def post_process_text(self, text):
return text.replace('%', '%%')
self._quoted_bind_names = {}
super(OracleCompiler, self).__init__(*args, **kwargs)
- def visit_mod(self, binary, **kw):
- return "mod(%s, %s)" % (self.process(binary.left), self.process(binary.right))
+ def visit_mod_binary(self, binary, operator, **kw):
+ return "mod(%s, %s)" % (self.process(binary.left, **kw),
+ self.process(binary.right, **kw))
def visit_now_func(self, fn, **kw):
return "CURRENT_TIMESTAMP"
class PGCompiler_pg8000(PGCompiler):
- def visit_mod(self, binary, **kw):
- return self.process(binary.left) + " %% " + self.process(binary.right)
+ def visit_mod_binary(self, binary, operator, **kw):
+ return self.process(binary.left, **kw) + " %% " + \
+ self.process(binary.right, **kw)
def post_process_text(self, text):
if '%%' in text:
class PGCompiler_psycopg2(PGCompiler):
- def visit_mod(self, binary, **kw):
- return self.process(binary.left) + " %% " + self.process(binary.right)
+ def visit_mod_binary(self, binary, operator, **kw):
+ return self.process(binary.left, **kw) + " %% " + \
+ self.process(binary.right, **kw)
def post_process_text(self, text):
return text.replace('%', '%%')