diff options
author | Bernhard Posselt <dev@bernhard-posselt.com> | 2014-04-06 22:16:39 +0200 |
---|---|---|
committer | Bernhard Posselt <dev@bernhard-posselt.com> | 2014-04-06 22:16:39 +0200 |
commit | 3904320f95bbe5370dd0e9a59962df004f297cc5 (patch) | |
tree | fc05ecc60d6fdd75605c8c8934f55c29a29bf5d5 | |
parent | d70f905f91dd94064bd1202878dc10f054701af8 (diff) |
fix probably broken sql query on sqlite and postgres for deleting items after a folder was deleted
-rw-r--r-- | db/foldermapper.php | 5 | ||||
-rw-r--r-- | tests/unit/db/FolderMapperTest.php | 5 |
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); |