diff options
author | Lele Gaifax <lele@metapensiero.it> | 2008-04-11 22:14:34 +0000 |
---|---|---|
committer | Lele Gaifax <lele@metapensiero.it> | 2008-04-11 22:14:34 +0000 |
commit | c79342ef957fd901db41562ad13e68638a597fbe (patch) | |
tree | 2eaddccbd78774a0d4cc4d73cf1c27d0859bfe50 /lib/sqlalchemy | |
parent | ce109f7adf081c3b42802d0de1a2c92bc56f9809 (diff) | |
download | sqlalchemy-c79342ef957fd901db41562ad13e68638a597fbe.tar.gz |
Firebird 2 has a SUBSTRING() builtin, expose it thru a function
Diffstat (limited to 'lib/sqlalchemy')
-rw-r--r-- | lib/sqlalchemy/databases/firebird.py | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/sqlalchemy/databases/firebird.py b/lib/sqlalchemy/databases/firebird.py index 11a88bf18..5e1dd72bb 100644 --- a/lib/sqlalchemy/databases/firebird.py +++ b/lib/sqlalchemy/databases/firebird.py @@ -547,6 +547,15 @@ class FBDialect(default.DefaultDialect): connection.commit(True) +def _substring(s, start, length=None): + "Helper function to handle Firebird 2 SUBSTRING builtin" + + if length is None: + return "SUBSTRING(%s FROM %s)" % (s, start) + else: + return "SUBSTRING(%s FROM %s FOR %s)" % (s, start, length) + + class FBCompiler(sql.compiler.DefaultCompiler): """Firebird specific idiosincrasies""" @@ -564,6 +573,9 @@ class FBCompiler(sql.compiler.DefaultCompiler): else: return self.process(alias.original, **kwargs) + functions = sql.compiler.DefaultCompiler.functions.copy() + functions['substring'] = _substring + def function_argspec(self, func): if func.clauses: return self.process(func.clause_expr) |