Skip to content

Commit beb7c71

Browse files
author
Richard Jones
committed
new Interval props weren't created properly in rdbms
(also, fix logging datestamp)
1 parent 581abff commit beb7c71

File tree

6 files changed

+46
-27
lines changed

6 files changed

+46
-27
lines changed

CHANGES.txt

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

4849

4950
2004-07-21 0.7.6

demo.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
#
33
# Copyright (c) 2003 Richard Jones ([email protected])
44
#
5-
# $Id: demo.py,v 1.17 2004-10-07 06:04:26 richard Exp $
5+
# $Id: demo.py,v 1.18 2004-10-08 00:18:27 richard Exp $
66

77
import sys, os, string, re, urlparse, ConfigParser
88
import shutil, socket, errno, BaseHTTPServer
@@ -80,9 +80,9 @@ def run_demo():
8080
'''
8181
home = os.path.abspath('demo')
8282
backend = 'anydbm'
83-
if not os.path.exists(home) or (len(sys.argv) > 1 and sys.argv[1] == 'nuke'):
83+
if not os.path.exists(home) or sys.argv[-1] == 'nuke':
8484
if len(sys.argv) > 2:
85-
backend = sys.argv[2]
85+
backend = sys.argv[-2]
8686
install_demo(home, backend)
8787

8888
cfg = ConfigParser.ConfigParser()

roundup/backends/back_mysql.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,8 +175,8 @@ def create_version_2_tables(self):
175175
self.sql('CREATE INDEX otks_key_idx ON otks(otk_key)')
176176

177177
# Sessions store
178-
self.sql('''CREATE TABLE sessions (session_key TEXT,
179-
session_time FLOAT(20), session_value VARCHAR(255))
178+
self.sql('''CREATE TABLE sessions (session_key VARCHAR(255),
179+
session_time FLOAT(20), session_value TEXT)
180180
TYPE=%s'''%self.mysql_backend)
181181
self.sql('''CREATE INDEX sessions_key_idx ON
182182
sessions(session_key)''')

roundup/backends/rdbms_common.py

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# $Id: rdbms_common.py,v 1.133 2004-10-07 06:30:20 richard Exp $
1+
# $Id: rdbms_common.py,v 1.134 2004-10-08 00:18:28 richard Exp $
22
''' Relational database (SQL) backend common code.
33
44
Basics:
@@ -378,7 +378,11 @@ def update_class(self, spec, old_spec, force=0):
378378
# no changes
379379
return 0
380380

381-
self.config.logging.getLogger('hyperdb').info('update_class %s'%spec.classname)
381+
logger = self.config.logging.getLogger('hyperdb')
382+
logger.info('update_class %s'%spec.classname)
383+
384+
logger.debug('old_spec %r'%(old_spec,))
385+
logger.debug('new_spec %r'%(new_spec,))
382386

383387
# detect key prop change for potential index change
384388
keyprop_changes = {}
@@ -424,10 +428,18 @@ def update_class(self, spec, old_spec, force=0):
424428
if isinstance(prop, Multilink):
425429
self.create_multilink_table(spec, propname)
426430
else:
427-
sql = 'alter table _%s add column _%s varchar(255)'%(
428-
spec.classname, propname)
431+
# add the column
432+
coltype = self.hyperdb_to_sql_datatypes[prop.__class__]
433+
sql = 'alter table _%s add column _%s %s'%(
434+
spec.classname, propname, coltype)
429435
self.sql(sql)
430436

437+
# extra Interval column
438+
if isinstance(prop, Interval):
439+
sql = 'alter table _%s add column __%s_int__ BIGINT'%(
440+
spec.classname, propname)
441+
self.sql(sql)
442+
431443
# if the new column is a key prop, we need an index!
432444
if new_spec[0] == propname:
433445
self.create_class_table_key_index(spec.classname, propname)

roundup/rlog.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ def setFormat(self, format):
102102
self.format = format
103103
def write(self, level, message):
104104
info = {
105-
'time': time.strftime('%Y-%m-%d %H:%M:%D'),
105+
'time': time.strftime('%Y-%m-%d %H:%M:%S'),
106106
'level': BasicLogging.NAMES[level],
107107
'message': message
108108
}

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.47 2004-09-28 10:29:37 a1s Exp $
18+
# $Id: db_test_base.py,v 1.48 2004-10-08 00:18:28 richard Exp $
1919

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

@@ -1201,7 +1201,9 @@ def test_addNewClass(self):
12011201

12021202
def init_amod(self):
12031203
self.db = self.module.Database(config, 'admin')
1204-
a = self.module.Class(self.db, "a", name=String(), fooz=String())
1204+
a = self.module.Class(self.db, "a", name=String(), newstr=String(),
1205+
newint=Interval(), newnum=Number(), newbool=Boolean(),
1206+
newdate=Date())
12051207
a.setkey("name")
12061208
b = self.module.Class(self.db, "b", name=String())
12071209
b.setkey("name")
@@ -1218,27 +1220,31 @@ def test_modifyClass(self):
12181220
# modify "a" schema
12191221
self.init_amod()
12201222
self.assertEqual(self.db.a.get(aid, 'name'), 'apple')
1221-
self.assertEqual(self.db.a.get(aid, 'fooz'), None)
1223+
self.assertEqual(self.db.a.get(aid, 'newstr'), None)
1224+
self.assertEqual(self.db.a.get(aid, 'newint'), None)
1225+
self.assertEqual(self.db.a.get(aid, 'newnum'), None)
1226+
self.assertEqual(self.db.a.get(aid, 'newbool'), None)
1227+
self.assertEqual(self.db.a.get(aid, 'newdate'), None)
12221228
self.assertEqual(self.db.b.get(aid, 'name'), 'bear')
1223-
aid2 = self.db.a.create(name='aardvark', fooz='booz')
1229+
aid2 = self.db.a.create(name='aardvark', newstr='booz')
12241230
self.db.commit(); self.db.close()
12251231

12261232
# test
12271233
self.init_amod()
12281234
self.assertEqual(self.db.a.get(aid, 'name'), 'apple')
1229-
self.assertEqual(self.db.a.get(aid, 'fooz'), None)
1235+
self.assertEqual(self.db.a.get(aid, 'newstr'), None)
12301236
self.assertEqual(self.db.b.get(aid, 'name'), 'bear')
12311237
self.assertEqual(self.db.a.get(aid2, 'name'), 'aardvark')
1232-
self.assertEqual(self.db.a.get(aid2, 'fooz'), 'booz')
1238+
self.assertEqual(self.db.a.get(aid2, 'newstr'), 'booz')
12331239

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

12381244
def init_amodkey(self):
12391245
self.db = self.module.Database(config, 'admin')
1240-
a = self.module.Class(self.db, "a", name=String(), fooz=String())
1241-
a.setkey("fooz")
1246+
a = self.module.Class(self.db, "a", name=String(), newstr=String())
1247+
a.setkey("newstr")
12421248
b = self.module.Class(self.db, "b", name=String())
12431249
b.setkey("name")
12441250
self.db.post_init()
@@ -1249,12 +1255,12 @@ def test_changeClassKey(self):
12491255
self.assertEqual(self.db.a.lookup('apple'), aid)
12501256
self.db.commit(); self.db.close()
12511257

1252-
# change the key to fooz on a
1258+
# change the key to newstr on a
12531259
self.init_amodkey()
12541260
self.assertEqual(self.db.a.get(aid, 'name'), 'apple')
1255-
self.assertEqual(self.db.a.get(aid, 'fooz'), None)
1261+
self.assertEqual(self.db.a.get(aid, 'newstr'), None)
12561262
self.assertRaises(KeyError, self.db.a.lookup, 'apple')
1257-
aid2 = self.db.a.create(name='aardvark', fooz='booz')
1263+
aid2 = self.db.a.create(name='aardvark', newstr='booz')
12581264
self.db.commit(); self.db.close()
12591265

12601266
# check
@@ -1267,7 +1273,7 @@ def test_changeClassKey(self):
12671273
def init_amodml(self):
12681274
self.db = self.module.Database(config, 'admin')
12691275
a = self.module.Class(self.db, "a", name=String(),
1270-
fooz=Multilink('a'))
1276+
newml=Multilink('a'))
12711277
a.setkey('name')
12721278
self.db.post_init()
12731279

@@ -1279,14 +1285,14 @@ def test_makeNewMultilink(self):
12791285

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

12871293
# check
12881294
self.init_amodml()
1289-
self.assertEqual(self.db.a.find(fooz=aid), [bid])
1295+
self.assertEqual(self.db.a.find(newml=aid), [bid])
12901296
self.assertEqual(self.db.a.lookup('apple'), aid)
12911297
self.assertEqual(self.db.a.lookup('bear'), bid)
12921298

@@ -1298,8 +1304,8 @@ def test_removeMultilink(self):
12981304
# add a multilink prop
12991305
self.init_amodml()
13001306
aid = self.db.a.create(name='apple')
1301-
bid = self.db.a.create(name='bear', fooz=[aid])
1302-
self.assertEqual(self.db.a.find(fooz=aid), [bid])
1307+
bid = self.db.a.create(name='bear', newml=[aid])
1308+
self.assertEqual(self.db.a.find(newml=aid), [bid])
13031309
self.assertEqual(self.db.a.lookup('apple'), aid)
13041310
self.assertEqual(self.db.a.lookup('bear'), bid)
13051311
self.db.commit(); self.db.close()

0 commit comments

Comments
 (0)