[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/extragear/graphics/digikam/1.0-databaseext
From:       Holger Foerster <hamsi2k () freenet ! de>
Date:       2010-03-16 21:07:51
Message-ID: 1268773671.222879.25584.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1104148 by foerster:

Try to don't rely on triggers at mysql scheme. Keep it simple and delete all table \
entries manually.

 M  +41 -6     data/database/dbconfig.xml.cmake  
 M  +7 -6      libs/database/thumbnaildb.cpp  


--- branches/extragear/graphics/digikam/1.0-databaseext/data/database/dbconfig.xml.cmake \
#1104147:1104148 @@ -476,6 +476,14 @@
  			<dbaction name="Migrate_Write_Settings" mode="query"><statement mode="query">
 				INSERT INTO Settings (keyword, value) VALUES (:keyword, :value);
 			</statement></dbaction>
+
+			<dbaction name="Delete_Thumbnail_ByPath" mode="query"><statement mode="query">
+				DELETE FROM Thumbnails WHERE id IN  (SELECT thumbId FROM FilePaths WHERE \
path=:path); +			</statement></dbaction>
+
+			<dbaction name="Delete_Thumbnail_ByUniqueHashId" mode="query"><statement \
mode="query"> +				DELETE FROM Thumbnails WHERE id IN (SELECT thumbId FROM \
UniqueHashes WHERE uniqueHash=:uniqueHash AND fileSize=:filesize); \
+			</statement></dbaction>  
 		</dbactions>
 	</database>
@@ -825,11 +833,8 @@
 		     <dbaction name="CreateIndex_2" mode="transaction"><statement \
mode="plain">CREATE INDEX id_filePaths ON FilePaths (thumbId);</statement></dbaction> \
  <!-- Thumbnails Trigger DB -->
-		     <dbaction name="CreateTrigger_1" mode="transaction"><statement \
                mode="plain">CREATE TRIGGER delete_thumbnails BEFORE DELETE ON \
                Thumbnails 
-                             FOR EACH ROW BEGIN 
-                              DELETE FROM UniqueHashes WHERE UniqueHashes.thumbId = \
                OLD.id; 
-                              DELETE FROM FilePaths WHERE FilePaths.thumbId = \
                OLD.id; 
-                             END;</statement></dbaction>
+		     <dbaction name="CreateTrigger_1" mode="transaction"></dbaction>
+		     
 			<!-- Migration Statements -->
 			<dbaction name="Migrate_Cleanup_DB" mode="query"><statement mode="plain">
 				DROP TABLE IF EXISTS AlbumRoots, Albums, DownloadHistory, FilePaths, \
ImageComments, ImageCopyright, ImageHaarMatrix, ImageInformation, ImageMetadata, \
ImagePositions, ImageProperties, ImageTags, Images, Searches, Settings, Tags, \
TagsTree, Thumbnails, UniqueHashes; @@ -943,7 +948,37 @@
  			<dbaction name="Migrate_Write_Settings" mode="transaction"><statement \
mode="query">  INSERT INTO Settings (keyword, value) VALUES (:keyword, :value);
 			</statement></dbaction>			 				 
-						 				 
+
+			<dbaction name="Delete_Thumbnail_ByPath" mode="query">
+				<statement mode="query">
+					SELECT @thumbsId := thumbId FROM FilePaths WHERE path=:path
+				</statement>
+				<statement mode="query">
+					DELETE FROM UniqueHashes WHERE UniqueHashes.thumbId = @thumbsId;
+				</statement>
+				<statement mode="query">
+					DELETE FROM FilePaths WHERE FilePaths.thumbId = @thumbsId;
+				</statement>
+				<statement mode="query">
+					DELETE FROM Thumbnails WHERE id = @thumbsId;
+				</statement>
+			</dbaction>
+
+			<dbaction name="Delete_Thumbnail_ByUniqueHashId" mode="query">
+				<statement mode="query">
+					SELECT @thumbsId := thumbId FROM UniqueHashes WHERE uniqueHash=:uniqueHash AND \
fileSize=:filesize +				</statement>			
+				<statement mode="query">
+					DELETE FROM UniqueHashes WHERE UniqueHashes.thumbId = @thumbsId;
+				</statement>
+				<statement mode="query">
+					DELETE FROM FilePaths WHERE FilePaths.thumbId = @thumbsId;
+				</statement>
+				<statement mode="query">
+					DELETE FROM Thumbnails WHERE id = @thumbsId;
+				</statement>
+			</dbaction>
+			
 		</dbactions>
 	</database>
 </databaseconfig>
--- branches/extragear/graphics/digikam/1.0-databaseext/libs/database/thumbnaildb.cpp \
#1104147:1104148 @@ -165,17 +165,18 @@
 DatabaseCoreBackend::QueryState ThumbnailDB::removeByUniqueHash(const QString \
&uniqueHash, int fileSize)  {
     // UniqueHashes + FilePaths entries are removed by trigger
-    return d->db->execSql("DELETE FROM Thumbnails WHERE id IN "
-                   " (SELECT thumbId FROM UniqueHashes WHERE uniqueHash=? AND \
                fileSize=?);",
-                   uniqueHash, fileSize);
+    QMap<QString, QVariant> parameters;
+    parameters.insert(":uniqueHash", uniqueHash);
+    parameters.insert(":filesize", fileSize);
+    return d->db->execDBAction(d->db->getDBAction(QString("Delete_Thumbnail_ByUniqueHashId")), \
parameters);  }
 
 DatabaseCoreBackend::QueryState ThumbnailDB::removeByFilePath(const QString &path)
 {
     // UniqueHashes + FilePaths entries are removed by trigger
-    return d->db->execSql("DELETE FROM Thumbnails WHERE id IN "
-                   " (SELECT thumbId FROM FilePaths WHERE path=?);",
-                   path);
+    QMap<QString, QVariant> parameters;
+    parameters.insert(":path", path);
+    return d->db->execDBAction(d->db->getDBAction(QString("Delete_Thumbnail_ByPath")), \
parameters);  }
 
 DatabaseCoreBackend::QueryState ThumbnailDB::insertThumbnail(const \
DatabaseThumbnailInfo &info, QVariant *lastInsertId)


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic