Merge pull request #13478 from owncloud/tags-chunkedquery

Fix chunked query for tags + unit test
This commit is contained in:
Lukas Reschke 2015-01-19 18:15:13 +01:00
commit 6c1e13a6ed
2 changed files with 30 additions and 4 deletions

View File

@ -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` ' .

View File

@ -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);