diff roundup/backends/rdbms_common.py @ 6155:ba0cfc1a87c9

Fix Database.find for rev_multilink
author Ralf Schlatterbeck <rsc@runtux.com>
date Sat, 02 May 2020 22:23:53 +0200
parents ff059afae50a
children 3c52093d7490
line wrap: on
line diff
--- a/roundup/backends/rdbms_common.py	Fri May 01 17:13:15 2020 +0200
+++ b/roundup/backends/rdbms_common.py	Sat May 02 22:23:53 2020 +0200
@@ -2263,18 +2263,23 @@
             nn = p.nodeid_name
             cn = '_' + self.classname
             ret = ''
-            if p.rev_property and isinstance(p.rev_property, Link):
-                ret = 'and %s.__retired__=%s ' % (tn, a)
-                allvalues += (0, )
+            dis = ''
+            ord = ''
+            if p.rev_property:
+                if isinstance(p.rev_property, Link):
+                    ret = 'and %s.__retired__=%s ' % (tn, a)
+                    allvalues += (0, )
+                dis = 'distinct '
+                ord = ' order by %s.id' % cn
             if type(values) is type(''):
                 allvalues += (values,)
                 s = a
             else:
                 allvalues += tuple(values)
                 s = ','.join([a]*len(values))
-            sql.append("""select %s.id from %s, %s where  %s.__retired__=%s
-                  %sand %s.id = %s.%s and %s.%s in (%s)"""%(cn, cn, tn, cn,
-                  a, ret, cn, tn, nn, tn, ln, s))
+            sql.append("""select %s%s.id from %s, %s where  %s.__retired__=%s
+                  %sand %s.id = %s.%s and %s.%s in (%s)%s"""%(dis, cn, cn,
+                  tn, cn, a, ret, cn, tn, nn, tn, ln, s, ord))
 
         if not sql:
             return []

Roundup Issue Tracker: http://roundup-tracker.org/