extragear/multimedia/amarok

Ian Monroe ian.monroe at gmail.com
Tue Sep 23 16:09:40 CEST 2008


SVN commit 863921 by ianmonroe:

Enable MySQL Embedded support. So now Amarok 2 requires the libmysqld.a library.
On OpenSUSE, this is installed with libmysqlclient-devel, YMMV.

We're pretty close to the beta2 tag, so if something is commonly not working
ping me and I'll revert. It'd be really nice to have this tested in the beta2
though.

The reason for the 'FindMySQLAmarok' file is that the default FindMySQL couldn't
find mysql embedded on my system. I figure there might be some more corrections
needed, then we can submit our changes upstream in ~1 month.

CCMAIL: amarok at kde.org
CCMAIL: amarok-devel at kde.org

 M  +3 -0      CMakeLists.txt  
 M  +2 -0      ChangeLog  
 A             cmake/modules/FindMySQLAmarok.cmake  
 M  +6 -19     src/browsers/servicebrowser/magnatunestore/MagnatuneDatabaseHandler.cpp  
 M  +4 -4      src/collection/sqlcollection/CMakeLists.txt  
 M  +3 -3      src/collection/sqlcollection/SqlCollection.cpp  


--- trunk/extragear/multimedia/amarok/CMakeLists.txt #863920:863921
@@ -33,6 +33,9 @@
 find_package(Strigi REQUIRED)
 macro_log_feature( STRIGI_FOUND "strigi" "Index metadata of files" "http://strigi.sourceforge.net" TRUE "" "" )
 
+find_package(MySQLAmarok REQUIRED)
+macro_log_feature( MYSQL_EMBEDDED_FOUND "mysqld" "Embedded MySQL" "http://www.mysql.com" TRUE "" "" )
+
 include_directories (${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${KDE4_INCLUDES} ${TAGLIB_INCLUDES})
 include(CheckTagLibFileName)
 
--- trunk/extragear/multimedia/amarok/ChangeLog #863920:863921
@@ -25,6 +25,8 @@
     * Add option to enable/disable automatic cover fetching.
 
   CHANGES:
+    * Switch from Sqlite to MySQL Embedded (libmysqld), resulting in faster
+      scanning and collection filtering times.
     * When saving a new user playlist, the playlist browser immediately shows
       the newly saved playlist and starts an edit operation on it.
     * Many small visual and layout tweaks.
--- trunk/extragear/multimedia/amarok/src/browsers/servicebrowser/magnatunestore/MagnatuneDatabaseHandler.cpp #863920:863921
@@ -39,24 +39,11 @@
     //Get database instance
     SqlStorage *sqlDb = CollectionManager::instance()->sqlStorage();
 
-    QString tracksAutoIncrement = "";
-    QString albumsAutoIncrement = "";
-    QString artistAutoIncrement = "";
-    QString genreAutoIncrement = "";
-    QString moodsAutoIncrement = "";
+    QString autoIncrement = "AUTO_INCREMENT";
 
-    /*
-    if ( sqlDb->type() == DbConnection::mysql )
-    {
-        tracksAutoIncrement = "AUTO_INCREMENT";
-        albumsAutoIncrement = "AUTO_INCREMENT";
-        artistAutoIncrement = "AUTO_INCREMENT";
-        moodsAutoIncrement = "AUTO_INCREMENT";
-    }*/
-
     // create table containing tracks
     QString queryString = "CREATE TABLE magnatune_tracks ("
-                          "id INTEGER PRIMARY KEY " + tracksAutoIncrement + ',' +
+                          "id INTEGER PRIMARY KEY " + autoIncrement + ',' +
                           "name " + sqlDb->textColumnType() + ',' +
                           "track_number INTEGER,"
                           "length INTEGER,"
@@ -76,7 +63,7 @@
 
     //Create album table
     queryString = "CREATE TABLE magnatune_albums ("
-                  "id INTEGER PRIMARY KEY " + albumsAutoIncrement + ',' +
+                  "id INTEGER PRIMARY KEY " + autoIncrement + ',' +
                   "name " + sqlDb->textColumnType() + ',' +
                   "year INTEGER,"
                   "artist_id INTEGER,"
@@ -94,7 +81,7 @@
 
     //Create artist table
     queryString = "CREATE TABLE magnatune_artists ("
-                  "id INTEGER PRIMARY KEY " + artistAutoIncrement + ',' +
+                  "id INTEGER PRIMARY KEY " + autoIncrement + ',' +
                   "name " + sqlDb->textColumnType() + ',' +
                   "artist_page " + sqlDb->exactTextColumnType() + ',' +
                   "description " + sqlDb->textColumnType() + ',' +
@@ -108,7 +95,7 @@
 
     //create genre table
     queryString = "CREATE TABLE magnatune_genre ("
-                  "id INTEGER PRIMARY KEY " + genreAutoIncrement + ',' +
+                  "id INTEGER PRIMARY KEY " + autoIncrement + ',' +
                   "name " + sqlDb->textColumnType() + ',' +
                   "album_id INTEGER" + ");";
 
@@ -120,7 +107,7 @@
 
     //create moods table
      queryString = "CREATE TABLE magnatune_moods ("
-                  "id INTEGER PRIMARY KEY " + moodsAutoIncrement + ',' +
+                  "id INTEGER PRIMARY KEY " + autoIncrement + ',' +
                   "track_id INTEGER," +
                   "mood " + sqlDb->textColumnType() + ");";
 
--- trunk/extragear/multimedia/amarok/src/collection/sqlcollection/CMakeLists.txt #863920:863921
@@ -16,7 +16,7 @@
         ${KDE4_INCLUDE_DIR}
         ${STRIGI_INCLUDE_DIR}
         ${QT_INCLUDES}
-	#	${MYSQL_INCLUDE_DIR}
+        ${MYSQL_INCLUDE_DIR}
         )
 
 ########### next target ###############
@@ -45,7 +45,7 @@
     SqlMeta.cpp 
     SqliteCollection.cpp
     ../../sqlite/sqlite3.c
-    #    MySqlEmbeddedCollection.cpp
+    MySqlEmbeddedCollection.cpp
    ${extra_src}
  )
 
@@ -64,7 +64,7 @@
     ${KDE4_KIO_LIBS}
     ${KDE4_THREADWEAVER_LIBRARIES}
     ${sqlite_deps}
-    #    ${MYSQL_EMBEDDED_LIBRARIES} crypt ssl crypto z
+    ${MYSQL_EMBEDDED_LIBRARIES} crypt ssl crypto z
 )
 
 if(APPLE)
@@ -77,7 +77,7 @@
 #        MySqlQueryMaker.cpp)
 #
 #    kde4_add_plugin(amarok_collection-mysql WITH_PREFIX ${amarok_mysql_SRCS})
-#    target_link_libraries(amarok_collection-mysql amaroklib ${MYSQL_LIBS} ${KDE4_KDECORE_LIBS} )
+#    target_link_libraries(amarok_collection-mysql amaroklib ${MYSQL_LIBS} ${KDE4_KDECORE_LIBS} ssl )
 #    install(TARGETS amarok_collection-mysql DESTINATION ${PLUGIN_INSTALL_DIR})
 #    install(FILES amarok_collection-mysql.desktop DESTINATION ${SERVICES_INSTALL_DIR})
 #endif(MYSQL_FOUND)
--- trunk/extragear/multimedia/amarok/src/collection/sqlcollection/SqlCollection.cpp #863920:863921
@@ -25,7 +25,7 @@
 #include "SqlCollectionLocation.h"
 #include "SqlQueryMaker.h"
 #include "SqliteCollection.h"
-//#include "MySqlEmbeddedCollection.h"
+#include "MySqlEmbeddedCollection.h"
 //#include "mysqlcollection.h"
 
 #ifdef Q_OS_WIN32
@@ -62,8 +62,8 @@
             break;
     }*/
 // uncomment next to test MySQLe (and comment the next to next)
-//    collection = new MySqlEmbeddedCollection( "localCollection", i18n( "Local Collection" ) );
-    collection = new SqliteCollection( "localCollection", i18n( "Local Collection" ) );
+    collection = new MySqlEmbeddedCollection( "localCollection", i18n( "Local Collection" ) );
+//    collection = new SqliteCollection( "localCollection", i18n( "Local Collection" ) );
     emit newCollection( collection );
 }
 


More information about the Amarok-devel mailing list