From: richard Date: Thu, 6 Mar 2003 06:03:51 +0000 (+0000) Subject: fixed sqlite rollback/caching bug (sf bug 689383) X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=ebc4e3a6091bc8fbf7dd222be30e0ea198f09441;p=roundup.git fixed sqlite rollback/caching bug (sf bug 689383) git-svn-id: http://svn.roundup-tracker.org/svnroot/roundup/trunk@1569 57a73879-2fb5-44c3-a270-3262357dd7e2 --- diff --git a/CHANGES.txt b/CHANGES.txt index b061519..c4407b6 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -59,6 +59,7 @@ Fixed: 2003-??-?? 0.5.7 - fixed Interval maths (sf bug 665357) +- fixed sqlite rollback/caching bug (sf bug 689383) 2003-02-27 0.5.6 diff --git a/roundup/backends/back_sqlite.py b/roundup/backends/back_sqlite.py index 69d2585..8d2e57f 100644 --- a/roundup/backends/back_sqlite.py +++ b/roundup/backends/back_sqlite.py @@ -1,4 +1,4 @@ -# $Id: back_sqlite.py,v 1.8 2002-12-12 09:31:04 richard Exp $ +# $Id: back_sqlite.py,v 1.9 2003-03-06 06:03:51 richard Exp $ __doc__ = ''' See https://pysqlite.sourceforge.net/ for pysqlite info ''' @@ -78,6 +78,9 @@ class Database(Database): self.rollbackStoreFile(*args) self.transactions = [] + # clear the cache + self.clearCache() + def __repr__(self): return ''%id(self) diff --git a/roundup/backends/rdbms_common.py b/roundup/backends/rdbms_common.py index 55a400b..7388dbc 100644 --- a/roundup/backends/rdbms_common.py +++ b/roundup/backends/rdbms_common.py @@ -1,4 +1,4 @@ -# $Id: rdbms_common.py,v 1.38 2003-02-28 03:33:46 richard Exp $ +# $Id: rdbms_common.py,v 1.39 2003-03-06 06:03:51 richard Exp $ ''' Relational database (SQL) backend common code. Basics: @@ -837,6 +837,9 @@ class Database(FileStorage, hyperdb.Database, roundupdb.Database): self.rollbackStoreFile(*args) self.transactions = [] + # clear the cache + self.clearCache() + def doSaveNode(self, classname, nodeid, node): ''' dummy that just generates a reindex event ''' diff --git a/test/test_db.py b/test/test_db.py index 2ca56b0..7af06e7 100644 --- a/test/test_db.py +++ b/test/test_db.py @@ -15,7 +15,7 @@ # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE, # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. # -# $Id: test_db.py,v 1.73 2003-03-03 21:05:19 richard Exp $ +# $Id: test_db.py,v 1.74 2003-03-06 06:03:51 richard Exp $ import unittest, os, shutil, time @@ -326,6 +326,15 @@ class anydbmDBTestCase(MyTestCase): self.assertNotEqual(num_files, self.db.numfiles()) self.assertEqual(num_files2, self.db.numfiles()) + # rollback / cache interaction + name1 = self.db.user.get('1', 'username') + self.db.user.set('1', username = name1+name1) + # get the prop so the info's forced into the cache (if there is one) + self.db.user.get('1', 'username') + self.db.rollback() + name2 = self.db.user.get('1', 'username') + self.assertEqual(name1, name2) + def testDestroyNoJournalling(self): self.innerTestDestroy(klass=self.db.session) @@ -653,26 +662,6 @@ class anydbmDBTestCase(MyTestCase): ae(filt(None, {'nosy': '2', 'status': '1'}, ('+','id'), (None,None)), ['3']) - def testNode1(self): - node1 = self.db.user.getnode('1') - name = node1.username - self.db.user.set('1', username = name+name) - name1 = node1.username - self.db.rollback() - node2 = self.db.user.getnode('1') - self.assertEqual(name, node1.username) - self.assertEqual(name, node2.username) - - def testNode2(self): - node1 = Node(self.db.user, '1') - name = node1.username - self.db.user.set('1', username = name+name) - name1 = node1.username - self.db.rollback() - node2 = Node(self.db.user, '1') - self.assertEqual(name, node1.username) - self.assertEqual(name, node2.username) - # TODO test auditors and reactors