Mercurial > p > roundup > code
changeset 3693:a775afeeee8b
Database interface fixes.
- Fix a problem with wrong sort-order in RDBMS backend when a
sort-attribute is also searched for. We need to preserve correct sort
attribute order in that case. A test for this was added earlier.
- Added forgotten fail_ok parameter to sql_commit method in sqlite
backend to make tests work again.
- Note that this version still fails a test for the postgresql backend.
| author | Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net> |
|---|---|
| date | Wed, 30 Aug 2006 09:05:30 +0000 |
| parents | 8e52157e2073 |
| children | 595041d78104 |
| files | roundup/backends/back_sqlite.py roundup/backends/rdbms_common.py |
| diffstat | 2 files changed, 15 insertions(+), 9 deletions(-) [+] |
line wrap: on
line diff
--- a/roundup/backends/back_sqlite.py Wed Aug 30 08:50:44 2006 +0000 +++ b/roundup/backends/back_sqlite.py Wed Aug 30 09:05:30 2006 +0000 @@ -1,4 +1,4 @@ -# $Id: back_sqlite.py,v 1.45 2006-08-11 00:02:12 richard Exp $ +# $Id: back_sqlite.py,v 1.46 2006-08-30 09:05:30 schlatterbeck Exp $ '''Implements a backend for SQLite. See https://pysqlite.sourceforge.net/ for pysqlite info @@ -288,7 +288,7 @@ def __repr__(self): return '<roundlite 0x%x>'%id(self) - def sql_commit(self): + def sql_commit(self, fail_ok=False): ''' Actually commit to the database. Ignore errors if there's nothing to commit.
--- a/roundup/backends/rdbms_common.py Wed Aug 30 08:50:44 2006 +0000 +++ b/roundup/backends/rdbms_common.py Wed Aug 30 09:05:30 2006 +0000 @@ -15,7 +15,7 @@ # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. # -#$Id: rdbms_common.py,v 1.179 2006-08-29 04:32:49 richard Exp $ +#$Id: rdbms_common.py,v 1.180 2006-08-30 09:05:30 schlatterbeck Exp $ ''' Relational database (SQL) backend common code. Basics: @@ -2092,8 +2092,7 @@ if not mlseen: pt.attr_sort_done = pt.tree_sort_done = True proptree.compute_sort_done() - - orderby = [] + ordercols = [] auxcols = {} mlsort = [] @@ -2262,8 +2261,8 @@ if (self.order_by_null_values and p.name != 'id'): nv = self.order_by_null_values % oc ordercols.append(nv) - orderby.append(nv + desc) - orderby.append(oc + desc) + p.orderby.append(nv + desc) + p.orderby.append(oc + desc) props = self.getprops() @@ -2290,9 +2289,16 @@ cols = ['distinct(_%s.id)'%icn] else: cols = ['_%s.id'%icn] - if orderby: + if ordercols: cols = cols + ordercols - order = ' order by %s'%(','.join(orderby)) + order = [] + # keep correct sequence of order attributes. + for sa in proptree.sortattr: + if not sa.attr_sort_done: + continue + order.extend(sa.orderby) + if order: + order = ' order by %s'%(','.join(order)) else: order = '' for o, p in auxcols.iteritems ():
