Mercurial > p > roundup > code
changeset 2728:572746c94537 maint-0.7
merge from HEAD
| author | Richard Jones <richard@users.sourceforge.net> |
|---|---|
| date | Fri, 08 Oct 2004 00:21:31 +0000 |
| parents | 26b20d0b42fa |
| children | 8a4a2e135a73 |
| files | CHANGES.txt roundup/backends/rdbms_common.py test/db_test_base.py |
| diffstat | 3 files changed, 37 insertions(+), 20 deletions(-) [+] |
line wrap: on
line diff
--- a/CHANGES.txt Thu Oct 07 23:14:23 2004 +0000 +++ b/CHANGES.txt Fri Oct 08 00:21:31 2004 +0000 @@ -16,6 +16,7 @@ - add sanity check for sort and group on same property (sf bug 1033477) - extend OTK and session table value cols to TEXT (sf bug 1031271) - fix lookup of REMOTE_USER (sf bug 1002923) +- new Interval props weren't created properly in rdbms 2004-07-21 0.7.6
--- a/roundup/backends/rdbms_common.py Thu Oct 07 23:14:23 2004 +0000 +++ b/roundup/backends/rdbms_common.py Fri Oct 08 00:21:31 2004 +0000 @@ -1,4 +1,4 @@ -# $Id: rdbms_common.py,v 1.98.2.20 2004-10-07 06:33:57 richard Exp $ +# $Id: rdbms_common.py,v 1.98.2.21 2004-10-08 00:21:31 richard Exp $ ''' Relational database (SQL) backend common code. Basics: @@ -403,12 +403,22 @@ if isinstance(prop, Multilink): self.create_multilink_table(spec, propname) else: - sql = 'alter table _%s add column _%s varchar(255)'%( - spec.classname, propname) + # add the column + coltype = self.hyperdb_to_sql_datatypes[prop.__class__] + sql = 'alter table _%s add column _%s %s'%( + spec.classname, propname, coltype) if __debug__: print >>hyperdb.DEBUG, 'update_class', (self, sql) self.cursor.execute(sql) + # extra Interval column + if isinstance(prop, Interval): + sql = 'alter table _%s add column __%s_int__ BIGINT'%( + spec.classname, propname) + if __debug__: + print >>hyperdb.DEBUG, 'update_class', (self, sql) + self.cursor.execute(sql) + # if the new column is a key prop, we need an index! if new_spec[0] == propname: self.create_class_table_key_index(spec.classname, propname)
--- a/test/db_test_base.py Thu Oct 07 23:14:23 2004 +0000 +++ b/test/db_test_base.py Fri Oct 08 00:21:31 2004 +0000 @@ -15,7 +15,7 @@ # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. # -# $Id: db_test_base.py,v 1.27.2.10 2004-07-20 23:27:02 richard Exp $ +# $Id: db_test_base.py,v 1.27.2.11 2004-10-08 00:21:31 richard Exp $ import unittest, os, shutil, errno, imp, sys, time, pprint @@ -1200,7 +1200,9 @@ def init_amod(self): self.db = self.module.Database(config, 'admin') - a = self.module.Class(self.db, "a", name=String(), fooz=String()) + a = self.module.Class(self.db, "a", name=String(), newstr=String(), + newint=Interval(), newnum=Number(), newbool=Boolean(), + newdate=Date()) a.setkey("name") b = self.module.Class(self.db, "b", name=String()) b.setkey("name") @@ -1217,18 +1219,22 @@ # modify "a" schema self.init_amod() self.assertEqual(self.db.a.get(aid, 'name'), 'apple') - self.assertEqual(self.db.a.get(aid, 'fooz'), None) + self.assertEqual(self.db.a.get(aid, 'newstr'), None) + self.assertEqual(self.db.a.get(aid, 'newint'), None) + self.assertEqual(self.db.a.get(aid, 'newnum'), None) + self.assertEqual(self.db.a.get(aid, 'newbool'), None) + self.assertEqual(self.db.a.get(aid, 'newdate'), None) self.assertEqual(self.db.b.get(aid, 'name'), 'bear') - aid2 = self.db.a.create(name='aardvark', fooz='booz') + aid2 = self.db.a.create(name='aardvark', newstr='booz') self.db.commit(); self.db.close() # test self.init_amod() self.assertEqual(self.db.a.get(aid, 'name'), 'apple') - self.assertEqual(self.db.a.get(aid, 'fooz'), None) + self.assertEqual(self.db.a.get(aid, 'newstr'), None) self.assertEqual(self.db.b.get(aid, 'name'), 'bear') self.assertEqual(self.db.a.get(aid2, 'name'), 'aardvark') - self.assertEqual(self.db.a.get(aid2, 'fooz'), 'booz') + self.assertEqual(self.db.a.get(aid2, 'newstr'), 'booz') # confirm journal's ok self.db.getjournal('a', aid) @@ -1236,8 +1242,8 @@ def init_amodkey(self): self.db = self.module.Database(config, 'admin') - a = self.module.Class(self.db, "a", name=String(), fooz=String()) - a.setkey("fooz") + a = self.module.Class(self.db, "a", name=String(), newstr=String()) + a.setkey("newstr") b = self.module.Class(self.db, "b", name=String()) b.setkey("name") self.db.post_init() @@ -1248,12 +1254,12 @@ self.assertEqual(self.db.a.lookup('apple'), aid) self.db.commit(); self.db.close() - # change the key to fooz on a + # change the key to newstr on a self.init_amodkey() self.assertEqual(self.db.a.get(aid, 'name'), 'apple') - self.assertEqual(self.db.a.get(aid, 'fooz'), None) + self.assertEqual(self.db.a.get(aid, 'newstr'), None) self.assertRaises(KeyError, self.db.a.lookup, 'apple') - aid2 = self.db.a.create(name='aardvark', fooz='booz') + aid2 = self.db.a.create(name='aardvark', newstr='booz') self.db.commit(); self.db.close() # check @@ -1266,7 +1272,7 @@ def init_amodml(self): self.db = self.module.Database(config, 'admin') a = self.module.Class(self.db, "a", name=String(), - fooz=Multilink('a')) + newml=Multilink('a')) a.setkey('name') self.db.post_init() @@ -1278,14 +1284,14 @@ # add a multilink prop self.init_amodml() - bid = self.db.a.create(name='bear', fooz=[aid]) - self.assertEqual(self.db.a.find(fooz=aid), [bid]) + bid = self.db.a.create(name='bear', newml=[aid]) + self.assertEqual(self.db.a.find(newml=aid), [bid]) self.assertEqual(self.db.a.lookup('apple'), aid) self.db.commit(); self.db.close() # check self.init_amodml() - self.assertEqual(self.db.a.find(fooz=aid), [bid]) + self.assertEqual(self.db.a.find(newml=aid), [bid]) self.assertEqual(self.db.a.lookup('apple'), aid) self.assertEqual(self.db.a.lookup('bear'), bid) @@ -1297,8 +1303,8 @@ # add a multilink prop self.init_amodml() aid = self.db.a.create(name='apple') - bid = self.db.a.create(name='bear', fooz=[aid]) - self.assertEqual(self.db.a.find(fooz=aid), [bid]) + bid = self.db.a.create(name='bear', newml=[aid]) + self.assertEqual(self.db.a.find(newml=aid), [bid]) self.assertEqual(self.db.a.lookup('apple'), aid) self.assertEqual(self.db.a.lookup('bear'), bid) self.db.commit(); self.db.close()
