Fixed #10488: fixed DB cache backend test failures in Oracle.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@10051 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Ian Kelly 2009-03-13 21:04:48 +00:00
parent 0ae95f80b4
commit 83c1572cc4
3 changed files with 14 additions and 1 deletions

View File

@ -35,7 +35,8 @@ class CacheClass(BaseCache):
cursor.execute("DELETE FROM %s WHERE cache_key = %%s" % self._table, [key])
transaction.commit_unless_managed()
return default
return pickle.loads(base64.decodestring(row[1]))
value = connection.ops.process_clob(row[1])
return pickle.loads(base64.decodestring(value))
def set(self, key, value, timeout=None):
self._base_set('set', key, value, timeout)

View File

@ -255,6 +255,13 @@ class BaseDatabaseOperations(object):
"""
return 'DEFAULT'
def process_clob(self, value):
"""
Returns the value of a CLOB column, for backends that return a locator
object that requires additional processing.
"""
return value
def return_insert_id(self):
"""
For backends that support returning the last insert ID as part

View File

@ -123,6 +123,11 @@ WHEN (new.%(col_name)s IS NULL)
def prep_for_iexact_query(self, x):
return x
def process_clob(self, value):
if value is None:
return u''
return force_unicode(value.read())
def query_class(self, DefaultQueryClass):
return query.query_class(DefaultQueryClass, Database)