Skip to content

Commit 0548734

Browse files
author
Ralf Schlatterbeck
committed
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.
1 parent a0cab8e commit 0548734

File tree

2 files changed

+15
-9
lines changed

2 files changed

+15
-9
lines changed

roundup/backends/back_sqlite.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# $Id: back_sqlite.py,v 1.45 2006-08-11 00:02:12 richard Exp $
1+
# $Id: back_sqlite.py,v 1.46 2006-08-30 09:05:30 schlatterbeck Exp $
22
'''Implements a backend for SQLite.
33
44
See https://pysqlite.sourceforge.net/ for pysqlite info
@@ -288,7 +288,7 @@ def sql_rollback(self):
288288
def __repr__(self):
289289
return '<roundlite 0x%x>'%id(self)
290290

291-
def sql_commit(self):
291+
def sql_commit(self, fail_ok=False):
292292
''' Actually commit to the database.
293293
294294
Ignore errors if there's nothing to commit.

roundup/backends/rdbms_common.py

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
# BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
1616
# SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
1717
#
18-
#$Id: rdbms_common.py,v 1.179 2006-08-29 04:32:49 richard Exp $
18+
#$Id: rdbms_common.py,v 1.180 2006-08-30 09:05:30 schlatterbeck Exp $
1919
''' Relational database (SQL) backend common code.
2020
2121
Basics:
@@ -2092,8 +2092,7 @@ def filter(self, search_matches, filterspec, sort=[], group=[]):
20922092
if not mlseen:
20932093
pt.attr_sort_done = pt.tree_sort_done = True
20942094
proptree.compute_sort_done()
2095-
2096-
orderby = []
2095+
20972096
ordercols = []
20982097
auxcols = {}
20992098
mlsort = []
@@ -2262,8 +2261,8 @@ def filter(self, search_matches, filterspec, sort=[], group=[]):
22622261
if (self.order_by_null_values and p.name != 'id'):
22632262
nv = self.order_by_null_values % oc
22642263
ordercols.append(nv)
2265-
orderby.append(nv + desc)
2266-
orderby.append(oc + desc)
2264+
p.orderby.append(nv + desc)
2265+
p.orderby.append(oc + desc)
22672266

22682267
props = self.getprops()
22692268

@@ -2290,9 +2289,16 @@ def filter(self, search_matches, filterspec, sort=[], group=[]):
22902289
cols = ['distinct(_%s.id)'%icn]
22912290
else:
22922291
cols = ['_%s.id'%icn]
2293-
if orderby:
2292+
if ordercols:
22942293
cols = cols + ordercols
2295-
order = ' order by %s'%(','.join(orderby))
2294+
order = []
2295+
# keep correct sequence of order attributes.
2296+
for sa in proptree.sortattr:
2297+
if not sa.attr_sort_done:
2298+
continue
2299+
order.extend(sa.orderby)
2300+
if order:
2301+
order = ' order by %s'%(','.join(order))
22962302
else:
22972303
order = ''
22982304
for o, p in auxcols.iteritems ():

0 commit comments

Comments
 (0)