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()

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