Mercurial > p > roundup > code
comparison test/db_test_base.py @ 4850:6998ad77841e
Fix bug in SQL generation
Fix subtle bug when sorting by a Link that contains a Multilink from
which we also search for an attribute. In that case the LEFT OUTER JOIN
clause was missing in generated SQL.
| author | Ralf Schlatterbeck <rsc@runtux.com> |
|---|---|
| date | Wed, 18 Dec 2013 09:02:40 +0100 |
| parents | e68920390aad |
| children | 74b24b14071a |
comparison
equal
deleted
inserted
replaced
| 4849:e68920390aad | 4850:6998ad77841e |
|---|---|
| 71 init.write_select_db(dirname, backend) | 71 init.write_select_db(dirname, backend) |
| 72 tracker.init(password.Password('sekrit')) | 72 tracker.init(password.Password('sekrit')) |
| 73 return tracker | 73 return tracker |
| 74 | 74 |
| 75 def setupSchema(db, create, module): | 75 def setupSchema(db, create, module): |
| 76 status = module.Class(db, "status", name=String()) | 76 mls = module.Class(db, "mls", name=String()) |
| 77 mls.setkey("name") | |
| 78 status = module.Class(db, "status", name=String(), mls=Multilink("mls")) | |
| 77 status.setkey("name") | 79 status.setkey("name") |
| 78 priority = module.Class(db, "priority", name=String(), order=String()) | 80 priority = module.Class(db, "priority", name=String(), order=String()) |
| 79 priority.setkey("name") | 81 priority.setkey("name") |
| 80 user = module.Class(db, "user", username=String(), password=Password(), | 82 user = module.Class(db, "user", username=String(), password=Password(), |
| 81 assignable=Boolean(), age=Number(), roles=String(), address=String(), | 83 assignable=Boolean(), age=Number(), roles=String(), address=String(), |
| 102 if create: | 104 if create: |
| 103 user.create(username="admin", roles='Admin', | 105 user.create(username="admin", roles='Admin', |
| 104 password=password.Password('sekrit')) | 106 password=password.Password('sekrit')) |
| 105 user.create(username="fred", roles='User', | 107 user.create(username="fred", roles='User', |
| 106 password=password.Password('sekrit'), address='fred@example.com') | 108 password=password.Password('sekrit'), address='fred@example.com') |
| 107 status.create(name="unread") | 109 u1 = mls.create(name="unread_1") |
| 110 u2 = mls.create(name="unread_2") | |
| 111 status.create(name="unread",mls=[u1, u2]) | |
| 108 status.create(name="in-progress") | 112 status.create(name="in-progress") |
| 109 status.create(name="testing") | 113 status.create(name="testing") |
| 110 status.create(name="resolved") | 114 status.create(name="resolved") |
| 111 priority.create(name="feature", order="2") | 115 priority.create(name="feature", order="2") |
| 112 priority.create(name="wish", order="3") | 116 priority.create(name="wish", order="3") |
| 1277 ae(filt(None, {a: '-1'}, ('+','id'), grp), ['3','4']) | 1281 ae(filt(None, {a: '-1'}, ('+','id'), grp), ['3','4']) |
| 1278 ae(filt(None, {a: None}, ('+','id'), grp), ['3','4']) | 1282 ae(filt(None, {a: None}, ('+','id'), grp), ['3','4']) |
| 1279 ae(filt(None, {a: [None]}, ('+','id'), grp), ['3','4']) | 1283 ae(filt(None, {a: [None]}, ('+','id'), grp), ['3','4']) |
| 1280 ae(filt(None, {a: ['-1', None]}, ('+','id'), grp), ['3','4']) | 1284 ae(filt(None, {a: ['-1', None]}, ('+','id'), grp), ['3','4']) |
| 1281 ae(filt(None, {a: ['1', None]}, ('+','id'), grp), ['1', '3','4']) | 1285 ae(filt(None, {a: ['1', None]}, ('+','id'), grp), ['1', '3','4']) |
| 1286 | |
| 1287 def testFilteringLinkSortSearchMultilink(self): | |
| 1288 ae, filter, filter_iter = self.filteringSetup() | |
| 1289 a = 'assignedto' | |
| 1290 grp = (None, None) | |
| 1291 for filt in filter, filter_iter: | |
| 1292 ae(filt(None, {'status.mls': '1'}, ('+','status')), ['2','3']) | |
| 1293 ae(filt(None, {'status.mls': '2'}, ('+','status')), ['2','3']) | |
| 1282 | 1294 |
| 1283 def testFilteringMultilinkAndGroup(self): | 1295 def testFilteringMultilinkAndGroup(self): |
| 1284 """testFilteringMultilinkAndGroup: | 1296 """testFilteringMultilinkAndGroup: |
| 1285 See roundup Bug 1541128: apparently grouping by something and | 1297 See roundup Bug 1541128: apparently grouping by something and |
| 1286 searching a Multilink failed with MySQL 5.0 | 1298 searching a Multilink failed with MySQL 5.0 |
