Fixed #11623 -- Corrected table name quoting in db cache backend. Thanks to Fraser Nevett for the report and fix.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@12410 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
4d2f489bca
commit
ab828da2b9
|
@ -12,7 +12,7 @@ except ImportError:
|
||||||
class CacheClass(BaseCache):
|
class CacheClass(BaseCache):
|
||||||
def __init__(self, table, params):
|
def __init__(self, table, params):
|
||||||
BaseCache.__init__(self, params)
|
BaseCache.__init__(self, params)
|
||||||
self._table = table
|
self._table = connection.ops.quote_name(table)
|
||||||
max_entries = params.get('max_entries', 300)
|
max_entries = params.get('max_entries', 300)
|
||||||
try:
|
try:
|
||||||
self._max_entries = int(max_entries)
|
self._max_entries = int(max_entries)
|
||||||
|
|
|
@ -38,8 +38,8 @@ class Command(LabelCommand):
|
||||||
field_output.append("UNIQUE")
|
field_output.append("UNIQUE")
|
||||||
if f.db_index:
|
if f.db_index:
|
||||||
unique = f.unique and "UNIQUE " or ""
|
unique = f.unique and "UNIQUE " or ""
|
||||||
index_output.append("CREATE %sINDEX %s_%s ON %s (%s);" % \
|
index_output.append("CREATE %sINDEX %s ON %s (%s);" % \
|
||||||
(unique, tablename, f.name, qn(tablename),
|
(unique, qn('%s_%s' % (tablename, f.name)), qn(tablename),
|
||||||
qn(f.name)))
|
qn(f.name)))
|
||||||
table_output.append(" ".join(field_output))
|
table_output.append(" ".join(field_output))
|
||||||
full_statement = ["CREATE TABLE %s (" % qn(tablename)]
|
full_statement = ["CREATE TABLE %s (" % qn(tablename)]
|
||||||
|
|
|
@ -342,13 +342,15 @@ class BaseCacheTests(object):
|
||||||
|
|
||||||
class DBCacheTests(unittest.TestCase, BaseCacheTests):
|
class DBCacheTests(unittest.TestCase, BaseCacheTests):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
management.call_command('createcachetable', 'test_cache_table', verbosity=0, interactive=False)
|
# Spaces are used in the table name to ensure quoting/escaping is working
|
||||||
self.cache = get_cache('db://test_cache_table')
|
self._table_name = 'test cache table'
|
||||||
|
management.call_command('createcachetable', self._table_name, verbosity=0, interactive=False)
|
||||||
|
self.cache = get_cache('db://%s' % self._table_name)
|
||||||
|
|
||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
from django.db import connection
|
from django.db import connection
|
||||||
cursor = connection.cursor()
|
cursor = connection.cursor()
|
||||||
cursor.execute('DROP TABLE test_cache_table')
|
cursor.execute('DROP TABLE %s' % connection.ops.quote_name(self._table_name))
|
||||||
|
|
||||||
class LocMemCacheTests(unittest.TestCase, BaseCacheTests):
|
class LocMemCacheTests(unittest.TestCase, BaseCacheTests):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
|
Loading…
Reference in New Issue