summaryrefslogtreecommitdiff
path: root/lib/sqlalchemy/databases/firebird.py
diff options
context:
space:
mode:
authorLele Gaifax <lele@metapensiero.it>2007-12-12 23:00:42 +0000
committerLele Gaifax <lele@metapensiero.it>2007-12-12 23:00:42 +0000
commitbdc12f2468c6a227d336208c01a89f31575f1a63 (patch)
tree9d2855e573b26a6fec50d5c90fcaa69e8e8ff43c /lib/sqlalchemy/databases/firebird.py
parent6f6a0981351697192651ef7437fdc451c1ad71ab (diff)
downloadsqlalchemy-bdc12f2468c6a227d336208c01a89f31575f1a63.tar.gz
Use an external UDF to implement the mod operator under Firebird
Diffstat (limited to 'lib/sqlalchemy/databases/firebird.py')
-rw-r--r--lib/sqlalchemy/databases/firebird.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/sqlalchemy/databases/firebird.py b/lib/sqlalchemy/databases/firebird.py
index 319e46062..59f435c92 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: