summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLukas Reschke <lukas@owncloud.com>2015-01-19 18:15:13 +0100
committerLukas Reschke <lukas@owncloud.com>2015-01-19 18:15:13 +0100
commit6c1e13a6ed5ed725a06c62cc09a12acd62315790 (patch)
tree7c00ebdc76489b8c9fd716f77969b5544504b7be
parentfcf4e2a44c7af6e507582aa260e0d87ded39a89c (diff)
parentef8d38ca27d24ff1c2b2b499f74c24dae9d9e906 (diff)
downloadnextcloud-server-6c1e13a6ed5ed725a06c62cc09a12acd62315790.tar.gz
nextcloud-server-6c1e13a6ed5ed725a06c62cc09a12acd62315790.zip
Merge pull request #13478 from owncloud/tags-chunkedquery
Fix chunked query for tags + unit test
-rw-r--r--lib/private/tags.php2
-rw-r--r--tests/lib/tags.php32
2 files changed, 30 insertions, 4 deletions
diff --git a/lib/private/tags.php b/lib/private/tags.php
index 9ff433b6984..4d737e47e07 100644
--- a/lib/private/tags.php
+++ b/lib/private/tags.php
@@ -211,7 +211,7 @@ class Tags implements \OCP\ITags {
try {
$conn = \OC_DB::getConnection();
- $chunks = array_chunk($objIds, 1000, false);
+ $chunks = array_chunk($objIds, 900, false);
foreach ($chunks as $chunk) {
$result = $conn->executeQuery(
'SELECT `category`, `categoryid`, `objid` ' .
diff --git a/tests/lib/tags.php b/tests/lib/tags.php
index 71296d2e346..547cd302d5d 100644
--- a/tests/lib/tags.php
+++ b/tests/lib/tags.php
@@ -30,7 +30,7 @@ class Test_Tags extends \Test\TestCase {
protected $backupGlobals = FALSE;
/** @var \OC\Tagging\TagMapper */
protected $tagMapper;
- /** @var \OC\TagManager */
+ /** @var \OCP\ITagManager */
protected $tagMgr;
protected function setUp() {
@@ -55,8 +55,9 @@ class Test_Tags extends \Test\TestCase {
}
protected function tearDown() {
- //$query = OC_DB::prepare('DELETE FROM `*PREFIX*vcategories` WHERE `item_type` = ?');
- //$query->execute(array('test'));
+ $conn = \OC_DB::getConnection();
+ $conn->executeQuery('DELETE FROM `*PREFIX*vcategory_to_object`');
+ $conn->executeQuery('DELETE FROM `*PREFIX*vcategory`');
parent::tearDown();
}
@@ -176,6 +177,31 @@ class Test_Tags extends \Test\TestCase {
);
}
+ public function testGetTagsForObjectsMassiveResults() {
+ $defaultTags = array('tag1');
+ $tagger = $this->tagMgr->load($this->objectType, $defaultTags);
+ $tagData = $tagger->getTags();
+ $tagId = $tagData[0]['id'];
+ $tagType = $tagData[0]['type'];
+
+ $conn = \OC_DB::getConnection();
+ $statement = $conn->prepare(
+ 'INSERT INTO `*PREFIX*vcategory_to_object` ' .
+ '(`objid`, `categoryid`, `type`) VALUES ' .
+ '(?, ?, ?)'
+ );
+
+ // insert lots of entries
+ $idsArray = array();
+ for($i = 1; $i <= 1500; $i++) {
+ $statement->execute(array($i, $tagId, $tagType));
+ $idsArray[] = $i;
+ }
+
+ $tags = $tagger->getTagsForObjects($idsArray);
+ $this->assertEquals(1500, count($tags));
+ }
+
public function testDeleteTags() {
$defaultTags = array('Friends', 'Family', 'Work', 'Other');
$tagger = $this->tagMgr->load($this->objectType, $defaultTags);