From da8595e84d6666c13bf1494598dcb4d6af12b882 Mon Sep 17 00:00:00 2001 From: Mike Bayer Date: Sat, 31 Dec 2005 07:49:33 +0000 Subject: [PATCH] added a hook in for 'binary operator', so sqlite can exchange '+' for '||' for a binary clause on a string --- lib/sqlalchemy/ansisql.py | 5 ++++- lib/sqlalchemy/databases/sqlite.py | 6 +++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/sqlalchemy/ansisql.py b/lib/sqlalchemy/ansisql.py index a4cbb43583..a06abe5987 100644 --- a/lib/sqlalchemy/ansisql.py +++ b/lib/sqlalchemy/ansisql.py @@ -209,12 +209,15 @@ class ANSICompiler(sql.Compiled): def visit_binary(self, binary): result = self.get_str(binary.left) if binary.operator is not None: - result += " " + binary.operator + result += " " + self.binary_operator_string(binary) result += " " + self.get_str(binary.right) if binary.parens: result = "(" + result + ")" self.strings[binary] = result + def binary_operator_string(self, binary): + return binary.operator + def visit_bindparam(self, bindparam): if bindparam.shortname != bindparam.key: self.binds[bindparam.shortname] = bindparam diff --git a/lib/sqlalchemy/databases/sqlite.py b/lib/sqlalchemy/databases/sqlite.py index 26cc3cf05c..0288beae89 100644 --- a/lib/sqlalchemy/databases/sqlite.py +++ b/lib/sqlalchemy/databases/sqlite.py @@ -185,7 +185,11 @@ class SQLiteCompiler(ansisql.ANSICompiler): text += " \n LIMIT -1" text += " OFFSET " + str(select.offset) return text - + def binary_operator_string(self, binary): + if isinstance(binary.type, sqltypes.String) and binary.operator == '+': + return '||' + else: + return ansisql.ANSICompiler.binary_operator_string(self, binary) class SQLiteSchemaGenerator(ansisql.ANSISchemaGenerator): def get_column_specification(self, column, override_pk=False, **kwargs): -- 2.47.2