diff --git a/VERSION b/VERSION index d0630f6d..84bc7c3e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.0.8 (2012-09-08 15:46:21) stable +Version 2.0.8 (2012-09-08 16:04:03) stable diff --git a/gluon/dal.py b/gluon/dal.py index 61c03178..00e4e91e 100644 --- a/gluon/dal.py +++ b/gluon/dal.py @@ -1551,22 +1551,20 @@ class BaseAdapter(ConnectionPool): return 'SELECT %s %s FROM %s%s%s;' % \ (sql_s, sql_f, sql_t, sql_w, sql_o) - def _select_aux2(self,sql): - self.execute(sql) - return self.cursor.fetchall() - def _select_aux(self,sql,fields,attributes): args_get = attributes.get cache = args_get('cache',None) if not cache: - rows = self._select_aux2(sql) + self.execute(sql) + rows = self.cursor.fetchall() else: (cache_model, time_expire) = cache key = self.uri + '/' + sql + '/rows' if len(key)>200: key = hashlib.md5(key).hexdigest() - rows = cache_model(key, - lambda sql=sql: self._select_aux2(sql), - time_expire) + def _select_aux2(): + self.execute(sql) + return self.cursor.fetchall() + rows = cache_model(key,_select_aux2,time_expire) if isinstance(rows,tuple): rows = list(rows) limitby = args_get('limitby', None) or (0,) diff --git a/gluon/tests/test_dal.py b/gluon/tests/test_dal.py index 70cb09c1..9fdeccd3 100644 --- a/gluon/tests/test_dal.py +++ b/gluon/tests/test_dal.py @@ -422,17 +422,23 @@ class TestMinMaxSum(unittest.TestCase): db.t.drop() -#class TestCache(unittest. -# def testRun(self): -# cache = cache.ram -# db = DAL('sqlite:memory:') -# db.define_table('t', Field('a')) -# db.t.insert(a='1') -# r1 = db().select(db.t.ALL, cache=(cache, 1000)) -# db.t.insert(a='1') -# r2 = db().select(db.t.ALL, cache=(cache, 1000)) -# self.assertEqual(r1.response, r2.response) -# db.t.drop() +class TestCache(unittest.TestCase): + def testRun(self): + from gluon.cache import CacheInRam + cache = CacheInRam() + db = DAL('sqlite:memory:') + db.define_table('t', Field('a')) + db.t.insert(a='1') + r0 = db().select(db.t.ALL) + r1 = db().select(db.t.ALL, cache=(cache, 1000)) + self.assertEqual(len(r0),len(r1)) + r2 = db().select(db.t.ALL, cache=(cache, 1000)) + self.assertEqual(len(r0),len(r2)) + r3 = db().select(db.t.ALL, cache=(cache, 1000), cacheable=True) + self.assertEqual(len(r0),len(r3)) + r4 = db().select(db.t.ALL, cache=(cache, 1000), cacheable=True) + self.assertEqual(len(r0),len(r4)) + db.t.drop() class TestMigrations(unittest.TestCase):