This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "SQLObject development repository".
The branch, master has been updated
via 573c8075d9a0025a7cf34b03bd146dd4384c35eb (commit)
via dfa8edbc095aa717ea2a5af3f1c0f40224f338a4 (commit)
from 6cc76f06612f0adfc3858d515767a712a5465f2a (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sourceforge.net/p/sqlobject/sqlobject/ci/573c8075d9a0025a7cf34b03bd146dd4384c35eb
commit 573c8075d9a0025a7cf34b03bd146dd4384c35eb
Merge: 6cc76f0 dfa8edb
Author: Oleg Broytman <ph...@ph...>
Date: Sat May 7 05:55:52 2016 +0300
Merge branch '2.2'
diff --cc sqlobject/sqlbuilder.py
index fd28c29,355ae57..3a11325
--- a/sqlobject/sqlbuilder.py
+++ b/sqlobject/sqlbuilder.py
@@@ -1082,17 -930,24 +1082,28 @@@ def _quote_like_special(s, db)
escape = r'\\'
else:
escape = '\\'
- s = s.replace('\\', r'\\').replace('%', escape+'%').replace('_', escape+'_')
+ s = s.replace('\\', r'\\').\
+ replace('%', escape + '%').\
+ replace('_', escape + '_')
return s
+
+ class CONCAT:
+ def __init__(self, *expressions):
+ self.expressions = expressions
+
+ def __sqlrepr__(self, db):
+ values = [sqlrepr(expr, db) for expr in self.expressions]
+ if db == "mysql":
+ return "CONCAT(%s)" % ", ".join(values)
+ else:
+ return " || ".join(values)
+
########################################
-## SQL JOINs
+# SQL JOINs
########################################
+
class SQLJoin(SQLExpression):
def __init__(self, table1, table2, op=','):
if hasattr(table1, 'sqlmeta'):
diff --cc sqlobject/tests/test_sqlbuilder.py
index fea08ae,e5bf3ef..e1dbc34
--- a/sqlobject/tests/test_sqlbuilder.py
+++ b/sqlobject/tests/test_sqlbuilder.py
@@@ -86,3 -73,18 +86,19 @@@ def test_str_or_sqlrepr()
delete = Delete('employees', where=None)
assert sqlrepr(delete, 'sqlite') == \
"DELETE FROM employees"
+
++
+ def test_CONCAT():
+ assert sqlrepr(CONCAT('a', 'b'), 'mysql') == "CONCAT('a', 'b')"
+ assert sqlrepr(CONCAT('a', 'b'), 'sqlite') == "'a' || 'b'"
+ setupClass(TestSQLBuilder)
+ assert sqlrepr(CONCAT('prefix', TestSQLBuilder.q.name), 'mysql') == \
+ "CONCAT('prefix', test_sql_builder.name)"
+ assert sqlrepr(CONCAT('prefix', TestSQLBuilder.q.name), 'sqlite') == \
+ "'prefix' || test_sql_builder.name"
+ TestSQLBuilder(name='test', value=42)
+ select = Select([CONCAT(TestSQLBuilder.q.name, '-suffix')],
+ staticTables=['test_sql_builder'])
+ connection = getConnection()
+ assert connection.queryAll(connection.sqlrepr(select))[0][0] == \
+ "test-suffix"
-----------------------------------------------------------------------
Summary of changes:
docs/News.txt | 3 +++
sqlobject/sqlbuilder.py | 11 +++++++++++
sqlobject/tests/test_sqlbuilder.py | 16 ++++++++++++++++
3 files changed, 30 insertions(+), 0 deletions(-)
hooks/post-receive
--
SQLObject development repository
|