summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBernhard Posselt <dev@bernhard-posselt.com>2014-04-06 22:16:39 +0200
committerBernhard Posselt <dev@bernhard-posselt.com>2014-04-06 22:16:39 +0200
commit3904320f95bbe5370dd0e9a59962df004f297cc5 (patch)
treefc05ecc60d6fdd75605c8c8934f55c29a29bf5d5
parentd70f905f91dd94064bd1202878dc10f054701af8 (diff)
fix probably broken sql query on sqlite and postgres for deleting items after a folder was deleted
-rw-r--r--db/foldermapper.php5
-rw-r--r--tests/unit/db/FolderMapperTest.php5
2 files changed, 4 insertions, 6 deletions
diff --git a/db/foldermapper.php b/db/foldermapper.php
index 5245a1b12..8859268e0 100644
--- a/db/foldermapper.php
+++ b/db/foldermapper.php
@@ -74,9 +74,8 @@ class FolderMapper extends Mapper implements IMapper {
$params = array($entity->getId());
$this->execute($sql, $params);
- $sql = 'DELETE FROM `*PREFIX*news_items` `items` '.
- 'LEFT JOIN `*PREFIX*news_feeds` `feeds` ON '.
- '`items`.`feed_id` = `feeds`.`id` WHERE `feeds`.`id` IS NULL';
+ $sql = 'DELETE FROM `*PREFIX*news_items` WHERE `feed_id` NOT IN '.
+ '(SELECT `feeds`.`id` FROM `*PREFIX*news_feeds` `feeds`)';
$this->execute($sql);
}
diff --git a/tests/unit/db/FolderMapperTest.php b/tests/unit/db/FolderMapperTest.php
index 0ca53ad81..6579e05a6 100644
--- a/tests/unit/db/FolderMapperTest.php
+++ b/tests/unit/db/FolderMapperTest.php
@@ -146,9 +146,8 @@ class FolderMapperTest extends \OCA\AppFramework\Utility\MapperTestUtility {
$sql2 = 'DELETE FROM `*PREFIX*news_feeds` WHERE `folder_id` = ?';
- $sql3 = 'DELETE FROM `*PREFIX*news_items` `items` '.
- 'LEFT JOIN `*PREFIX*news_feeds` `feeds` ON '.
- '`items`.`feed_id` = `feeds`.`id` WHERE `feeds`.`id` IS NULL';
+ $sql3 = 'DELETE FROM `*PREFIX*news_items` WHERE `feed_id` NOT IN '.
+ '(SELECT `feeds`.`id` FROM `*PREFIX*news_feeds` `feeds`)';
$arguments2 = array($folder->getId());
$this->setMapperResult($sql, $arguments);