Skip to content

Commit fc53869

Browse files
author
Richard Jones
committed
merge from HEAD
1 parent 02ddc08 commit fc53869

File tree

3 files changed

+37
-20
lines changed

3 files changed

+37
-20
lines changed

CHANGES.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ Fixed:
1616
- add sanity check for sort and group on same property (sf bug 1033477)
1717
- extend OTK and session table value cols to TEXT (sf bug 1031271)
1818
- fix lookup of REMOTE_USER (sf bug 1002923)
19+
- new Interval props weren't created properly in rdbms
1920

2021

2122
2004-07-21 0.7.6

roundup/backends/rdbms_common.py

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# $Id: rdbms_common.py,v 1.98.2.20 2004-10-07 06:33:57 richard Exp $
1+
# $Id: rdbms_common.py,v 1.98.2.21 2004-10-08 00:21:31 richard Exp $
22
''' Relational database (SQL) backend common code.
33
44
Basics:
@@ -403,12 +403,22 @@ def update_class(self, spec, old_spec, force=0):
403403
if isinstance(prop, Multilink):
404404
self.create_multilink_table(spec, propname)
405405
else:
406-
sql = 'alter table _%s add column _%s varchar(255)'%(
407-
spec.classname, propname)
406+
# add the column
407+
coltype = self.hyperdb_to_sql_datatypes[prop.__class__]
408+
sql = 'alter table _%s add column _%s %s'%(
409+
spec.classname, propname, coltype)
408410
if __debug__:
409411
print >>hyperdb.DEBUG, 'update_class', (self, sql)
410412
self.cursor.execute(sql)
411413

414+
# extra Interval column
415+
if isinstance(prop, Interval):
416+
sql = 'alter table _%s add column __%s_int__ BIGINT'%(
417+
spec.classname, propname)
418+
if __debug__:
419+
print >>hyperdb.DEBUG, 'update_class', (self, sql)
420+
self.cursor.execute(sql)
421+
412422
# if the new column is a key prop, we need an index!
413423
if new_spec[0] == propname:
414424
self.create_class_table_key_index(spec.classname, propname)

test/db_test_base.py

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
# BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
1616
# SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
1717
#
18-
# $Id: db_test_base.py,v 1.27.2.10 2004-07-20 23:27:02 richard Exp $
18+
# $Id: db_test_base.py,v 1.27.2.11 2004-10-08 00:21:31 richard Exp $
1919

2020
import unittest, os, shutil, errno, imp, sys, time, pprint
2121

@@ -1200,7 +1200,9 @@ def test_addNewClass(self):
12001200

12011201
def init_amod(self):
12021202
self.db = self.module.Database(config, 'admin')
1203-
a = self.module.Class(self.db, "a", name=String(), fooz=String())
1203+
a = self.module.Class(self.db, "a", name=String(), newstr=String(),
1204+
newint=Interval(), newnum=Number(), newbool=Boolean(),
1205+
newdate=Date())
12041206
a.setkey("name")
12051207
b = self.module.Class(self.db, "b", name=String())
12061208
b.setkey("name")
@@ -1217,27 +1219,31 @@ def test_modifyClass(self):
12171219
# modify "a" schema
12181220
self.init_amod()
12191221
self.assertEqual(self.db.a.get(aid, 'name'), 'apple')
1220-
self.assertEqual(self.db.a.get(aid, 'fooz'), None)
1222+
self.assertEqual(self.db.a.get(aid, 'newstr'), None)
1223+
self.assertEqual(self.db.a.get(aid, 'newint'), None)
1224+
self.assertEqual(self.db.a.get(aid, 'newnum'), None)
1225+
self.assertEqual(self.db.a.get(aid, 'newbool'), None)
1226+
self.assertEqual(self.db.a.get(aid, 'newdate'), None)
12211227
self.assertEqual(self.db.b.get(aid, 'name'), 'bear')
1222-
aid2 = self.db.a.create(name='aardvark', fooz='booz')
1228+
aid2 = self.db.a.create(name='aardvark', newstr='booz')
12231229
self.db.commit(); self.db.close()
12241230

12251231
# test
12261232
self.init_amod()
12271233
self.assertEqual(self.db.a.get(aid, 'name'), 'apple')
1228-
self.assertEqual(self.db.a.get(aid, 'fooz'), None)
1234+
self.assertEqual(self.db.a.get(aid, 'newstr'), None)
12291235
self.assertEqual(self.db.b.get(aid, 'name'), 'bear')
12301236
self.assertEqual(self.db.a.get(aid2, 'name'), 'aardvark')
1231-
self.assertEqual(self.db.a.get(aid2, 'fooz'), 'booz')
1237+
self.assertEqual(self.db.a.get(aid2, 'newstr'), 'booz')
12321238

12331239
# confirm journal's ok
12341240
self.db.getjournal('a', aid)
12351241
self.db.getjournal('a', aid2)
12361242

12371243
def init_amodkey(self):
12381244
self.db = self.module.Database(config, 'admin')
1239-
a = self.module.Class(self.db, "a", name=String(), fooz=String())
1240-
a.setkey("fooz")
1245+
a = self.module.Class(self.db, "a", name=String(), newstr=String())
1246+
a.setkey("newstr")
12411247
b = self.module.Class(self.db, "b", name=String())
12421248
b.setkey("name")
12431249
self.db.post_init()
@@ -1248,12 +1254,12 @@ def test_changeClassKey(self):
12481254
self.assertEqual(self.db.a.lookup('apple'), aid)
12491255
self.db.commit(); self.db.close()
12501256

1251-
# change the key to fooz on a
1257+
# change the key to newstr on a
12521258
self.init_amodkey()
12531259
self.assertEqual(self.db.a.get(aid, 'name'), 'apple')
1254-
self.assertEqual(self.db.a.get(aid, 'fooz'), None)
1260+
self.assertEqual(self.db.a.get(aid, 'newstr'), None)
12551261
self.assertRaises(KeyError, self.db.a.lookup, 'apple')
1256-
aid2 = self.db.a.create(name='aardvark', fooz='booz')
1262+
aid2 = self.db.a.create(name='aardvark', newstr='booz')
12571263
self.db.commit(); self.db.close()
12581264

12591265
# check
@@ -1266,7 +1272,7 @@ def test_changeClassKey(self):
12661272
def init_amodml(self):
12671273
self.db = self.module.Database(config, 'admin')
12681274
a = self.module.Class(self.db, "a", name=String(),
1269-
fooz=Multilink('a'))
1275+
newml=Multilink('a'))
12701276
a.setkey('name')
12711277
self.db.post_init()
12721278

@@ -1278,14 +1284,14 @@ def test_makeNewMultilink(self):
12781284

12791285
# add a multilink prop
12801286
self.init_amodml()
1281-
bid = self.db.a.create(name='bear', fooz=[aid])
1282-
self.assertEqual(self.db.a.find(fooz=aid), [bid])
1287+
bid = self.db.a.create(name='bear', newml=[aid])
1288+
self.assertEqual(self.db.a.find(newml=aid), [bid])
12831289
self.assertEqual(self.db.a.lookup('apple'), aid)
12841290
self.db.commit(); self.db.close()
12851291

12861292
# check
12871293
self.init_amodml()
1288-
self.assertEqual(self.db.a.find(fooz=aid), [bid])
1294+
self.assertEqual(self.db.a.find(newml=aid), [bid])
12891295
self.assertEqual(self.db.a.lookup('apple'), aid)
12901296
self.assertEqual(self.db.a.lookup('bear'), bid)
12911297

@@ -1297,8 +1303,8 @@ def test_removeMultilink(self):
12971303
# add a multilink prop
12981304
self.init_amodml()
12991305
aid = self.db.a.create(name='apple')
1300-
bid = self.db.a.create(name='bear', fooz=[aid])
1301-
self.assertEqual(self.db.a.find(fooz=aid), [bid])
1306+
bid = self.db.a.create(name='bear', newml=[aid])
1307+
self.assertEqual(self.db.a.find(newml=aid), [bid])
13021308
self.assertEqual(self.db.a.lookup('apple'), aid)
13031309
self.assertEqual(self.db.a.lookup('bear'), bid)
13041310
self.db.commit(); self.db.close()

0 commit comments

Comments
 (0)