From: Lele Gaifax Date: Wed, 12 Dec 2007 23:00:42 +0000 (+0000) Subject: Use an external UDF to implement the mod operator under Firebird X-Git-Tag: rel_0_4_2~60 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=bdc12f2468c6a227d336208c01a89f31575f1a63;p=thirdparty%2Fsqlalchemy%2Fsqlalchemy.git Use an external UDF to implement the mod operator under Firebird --- diff --git a/lib/sqlalchemy/databases/firebird.py b/lib/sqlalchemy/databases/firebird.py index 319e460626..59f435c92d 100644 --- a/lib/sqlalchemy/databases/firebird.py +++ b/lib/sqlalchemy/databases/firebird.py @@ -10,7 +10,7 @@ import warnings from sqlalchemy import exceptions, pool, schema, types as sqltypes, util from sqlalchemy.engine import base, default -from sqlalchemy.sql import compiler, text +from sqlalchemy.sql import compiler, operators as sqloperators, text _initialized_kb = False @@ -377,6 +377,13 @@ class FBDialect(default.DefaultDialect): class FBCompiler(compiler.DefaultCompiler): """Firebird specific idiosincrasies""" + # Firebird lacks a builtin modulo operator, but there is + # an equivalent function in the ib_udf library. + operators = compiler.DefaultCompiler.operators.copy() + operators.update({ + sqloperators.mod : lambda x, y:"mod(%s, %s)" % (x, y) + }) + def visit_alias(self, alias, asfrom=False, **kwargs): # Override to not use the AS keyword which FB 1.5 does not like if asfrom: