diff options
author | benakamoorthi <benaka.moorthi@gmail.com> | 2012-10-03 19:23:44 +0400 |
---|---|---|
committer | benakamoorthi <benaka.moorthi@gmail.com> | 2012-10-03 19:23:44 +0400 |
commit | 92dd264cc921727550fee8a2dadd1cdf7dcc57b9 (patch) | |
tree | 3f28cfaee1c1e38dc05470161182ccd5cd52c696 /core/Archive | |
parent | 4e780db842288f3c80f1e2732b72184f52749c78 (diff) |
Fixes #3311, use more granular SELECT in Piwik_Archive_Single::preFetchBlob & add test to make sure extra blobs are not selected.
git-svn-id: http://dev.piwik.org/svn/trunk@7095 59fd770c-687e-43c8-a1e3-f5a4ff64c105
Diffstat (limited to 'core/Archive')
-rw-r--r-- | core/Archive/Single.php | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/core/Archive/Single.php b/core/Archive/Single.php index 86492a078d..87b17688a8 100644 --- a/core/Archive/Single.php +++ b/core/Archive/Single.php @@ -98,6 +98,16 @@ class Piwik_Archive_Single extends Piwik_Archive } /** + * Returns the blob cache. For testing. + * + * @return array + */ + public function getBlobCache() + { + return $this->blobCached; + } + + /** * Returns the pretty date of this Archive, eg. 'Thursday 20th March 2008' * * @return string @@ -409,11 +419,16 @@ class Piwik_Archive_Single extends Piwik_Archive $db = Zend_Registry::get('db'); $hasBlobs = $db->hasBlobDataType(); + + // select blobs w/ name like "$name_[0-9]+" w/o using RLIKE + $nameEnd = strlen($name) + 2; $query = $db->query("SELECT value, name FROM $tableBlob WHERE idarchive = ? - AND name LIKE '$name%'", - array( $this->idArchive ) + AND (name = ? OR + (name LIKE ? AND SUBSTRING(name, $nameEnd, 1) >= '0' + AND SUBSTRING(name, $nameEnd, 1) <= '9') )", + array( $this->idArchive, $name, $name.'%' ) ); while($row = $query->fetch()) |