Mercurial > p > roundup > code
comparison roundup/backends/rdbms_common.py @ 3525:7be25d75c3d5
Fixed SQL generation for sort/group by separate Link properties [SF#1417565]
Metakit fails the new test. I have no idea why.
| author | Richard Jones <richard@users.sourceforge.net> |
|---|---|
| date | Mon, 30 Jan 2006 00:36:26 +0000 |
| parents | 87e512f87bae |
| children | 5cd1c83dea50 |
comparison
equal
deleted
inserted
replaced
| 3524:ed82c2c6ee34 | 3525:7be25d75c3d5 |
|---|---|
| 1 # $Id: rdbms_common.py,v 1.163 2006-01-24 08:27:54 a1s Exp $ | 1 # $Id: rdbms_common.py,v 1.164 2006-01-30 00:36:26 richard Exp $ |
| 2 ''' Relational database (SQL) backend common code. | 2 ''' Relational database (SQL) backend common code. |
| 3 | 3 |
| 4 Basics: | 4 Basics: |
| 5 | 5 |
| 6 - map roundup classes to relational tables | 6 - map roundup classes to relational tables |
| 2156 | 2156 |
| 2157 # "grouping" is just the first-order sorting in the SQL fetch | 2157 # "grouping" is just the first-order sorting in the SQL fetch |
| 2158 orderby = [] | 2158 orderby = [] |
| 2159 ordercols = [] | 2159 ordercols = [] |
| 2160 mlsort = [] | 2160 mlsort = [] |
| 2161 rhsnum = 0 | |
| 2161 for sortby in group, sort: | 2162 for sortby in group, sort: |
| 2162 sdir, prop = sortby | 2163 sdir, prop = sortby |
| 2163 if sdir and prop: | 2164 if sdir and prop: |
| 2164 if isinstance(props[prop], Multilink): | 2165 if isinstance(props[prop], Multilink): |
| 2165 mlsort.append(sortby) | 2166 mlsort.append(sortby) |
| 2174 link = self.db.classes[lcn] | 2175 link = self.db.classes[lcn] |
| 2175 o = '_%s._%s'%(cn, prop) | 2176 o = '_%s._%s'%(cn, prop) |
| 2176 op = link.orderprop() | 2177 op = link.orderprop() |
| 2177 if op != 'id': | 2178 if op != 'id': |
| 2178 tn = '_' + lcn | 2179 tn = '_' + lcn |
| 2179 loj.append('LEFT OUTER JOIN %s as rhs_ on %s=rhs_.id' | 2180 rhs = 'rhs%s_'%rhsnum |
| 2180 %(tn, o)) | 2181 rhsnum += 1 |
| 2181 o = 'rhs_._%s'%op | 2182 loj.append('LEFT OUTER JOIN %s as %s on %s=%s.id'%( |
| 2183 tn, rhs, o, rhs)) | |
| 2184 o = '%s._%s'%(rhs, op) | |
| 2182 ordercols.append(o) | 2185 ordercols.append(o) |
| 2183 elif prop == 'id': | 2186 elif prop == 'id': |
| 2184 o = '_%s.id'%cn | 2187 o = '_%s.id'%cn |
| 2185 else: | 2188 else: |
| 2186 o = '_%s._%s'%(cn, prop) | 2189 o = '_%s._%s'%(cn, prop) |
