From 40a7440d6b7133edd4cf737e55f5e371af0b59a3 Mon Sep 17 00:00:00 2001 From: Alex Pott Date: Tue, 25 Nov 2014 21:41:36 +0000 Subject: [PATCH] Issue #2352207 by martin107, Berdir: Database cache backend does not treat cid as case sensitive --- core/lib/Drupal/Core/Cache/CacheBackendInterface.php | 2 ++ core/lib/Drupal/Core/Cache/DatabaseBackend.php | 1 + .../src/Tests/Cache/GenericCacheBackendUnitTestBase.php | 5 +++++ 3 files changed, 8 insertions(+) diff --git a/core/lib/Drupal/Core/Cache/CacheBackendInterface.php b/core/lib/Drupal/Core/Cache/CacheBackendInterface.php index 753e6a3e27e..39c8c2624de 100644 --- a/core/lib/Drupal/Core/Cache/CacheBackendInterface.php +++ b/core/lib/Drupal/Core/Cache/CacheBackendInterface.php @@ -14,6 +14,8 @@ namespace Drupal\Core\Cache; * Drupal\Core\Cache\DatabaseBackend provides the default implementation, which * can be consulted as an example. * + * The cache indentifiers are case sensitive. + * * @ingroup cache */ interface CacheBackendInterface { diff --git a/core/lib/Drupal/Core/Cache/DatabaseBackend.php b/core/lib/Drupal/Core/Cache/DatabaseBackend.php index 1e249683306..813c00a1e69 100644 --- a/core/lib/Drupal/Core/Cache/DatabaseBackend.php +++ b/core/lib/Drupal/Core/Cache/DatabaseBackend.php @@ -564,6 +564,7 @@ class DatabaseBackend implements CacheBackendInterface { 'length' => 255, 'not null' => TRUE, 'default' => '', + 'binary' => TRUE, ), 'data' => array( 'description' => 'A collection of data to cache.', diff --git a/core/modules/system/src/Tests/Cache/GenericCacheBackendUnitTestBase.php b/core/modules/system/src/Tests/Cache/GenericCacheBackendUnitTestBase.php index 958acff0a7e..91b75ba5c47 100644 --- a/core/modules/system/src/Tests/Cache/GenericCacheBackendUnitTestBase.php +++ b/core/modules/system/src/Tests/Cache/GenericCacheBackendUnitTestBase.php @@ -213,6 +213,11 @@ abstract class GenericCacheBackendUnitTestBase extends DrupalUnitTestBase { $backend->set($cid, 'test'); $this->assertEqual('test', $backend->get($cid)->data); + // Check that the cache key is case sensitive. + $backend->set('TEST8', 'value'); + $this->assertEqual('value', $backend->get('TEST8')->data); + $this->assertFalse($backend->get('test8')); + // Calling ::set() with invalid cache tags. try { $backend->set('exception_test', 'value', Cache::PERMANENT, ['node' => [3, 5, 7]]);