aboutsummaryrefslogtreecommitdiffstats
path: root/main/owncloud/owncloud-5.0.13-remove-shares-where-files-do-not-exist-postgres.patch
blob: be239aa1d74ce6226327839e13db6f1b0099a6d3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
From 8509994c2a7f3cdddbb48b8a1f6a952b437a315c Mon Sep 17 00:00:00 2001
From: Jamie McClelland <jm@mayfirst.org>
Date: Sat, 23 Nov 2013 19:47:45 -0500
Subject: [PATCH] fix update to remove shares where file doesn't exist on
 postgres

Without patch, breaks with: Failed to upgrade "files_sharing".
Exception="SQLSTATE[22P02]: Invalid text representation: 7 ERROR:
invalid input syntax for integer: "5,179""

See: https://github.com/owncloud/core/issues/5758
---
 apps/files_sharing/appinfo/update.php | 17 +++--------------
 1 file changed, 3 insertions(+), 14 deletions(-)

diff --git a/apps/files_sharing/appinfo/update.php b/apps/files_sharing/appinfo/update.php
index 0d827da..721b53e 100644
--- a/apps/files_sharing/appinfo/update.php
+++ b/apps/files_sharing/appinfo/update.php
@@ -71,18 +71,7 @@
 
 // clean up oc_share table from files which are no longer exists
 if (version_compare($installedVersion, '0.3.5', '<')) {
-
-	// get all shares where the original file no longer exists
-	$findShares = \OC_DB::prepare('SELECT `file_source` FROM `*PREFIX*share` LEFT JOIN `*PREFIX*filecache` ON `file_source` = `*PREFIX*filecache`.`fileid` WHERE `*PREFIX*filecache`.`fileid` IS NULL AND `*PREFIX*share`.`item_type` IN (\'file\', \'folder\')');
-	$sharesFound = $findShares->execute(array())->fetchAll();
-
-	// delete those shares from the oc_share table
-	if (is_array($sharesFound) && !empty($sharesFound)) {
-		$delArray = array();
-		foreach ($sharesFound as $share) {
-			$delArray[] = $share['file_source'];
-		}
-		$removeShares = \OC_DB::prepare('DELETE FROM `*PREFIX*share` WHERE `file_source` IN (?)');
-		$result = $removeShares->execute(array(implode(',', $delArray)));
-	}
+	// delete all shares where the original file no longer exists
+	$removeShares = \OC_DB::prepare('DELETE FROM `*PREFIX*share` WHERE `file_source` IN (SELECT `file_source` FROM `*PREFIX*share` LEFT JOIN `*PREFIX*filecache` ON `file_source` = `*PREFIX*filecache`.`fileid` WHERE `*PREFIX*filecache`.`fileid` IS NULL AND `*PREFIX*share`.`item_type` IN (\'file\', \'folder\'))');
+	$result = $removeShares->execute(array(implode(',', $delArray)));
 }
-- 
1.8.4