Add for upgrade tizen 4.0 to 5.5 22/211922/1 accepted/tizen/unified/20190816.112301 submit/tizen/20190816.014658
authorMinje Ahn <minje.ahn@samsung.com>
Mon, 12 Aug 2019 04:49:56 +0000 (13:49 +0900)
committerMinje Ahn <minje.ahn@samsung.com>
Mon, 12 Aug 2019 04:49:56 +0000 (13:49 +0900)
Change-Id: Id1b57ba2df4d045a11ac15b2627552c485348caa
Signed-off-by: Minje Ahn <minje.ahn@samsung.com>
src/common/media-svc-db-utils.c
src/common/media-svc-media.c

index f90825f..57a9c19 100755 (executable)
@@ -909,75 +909,6 @@ static int __media_svc_db_upgrade(sqlite3 *db_handle, int cur_version, uid_t uid
                goto ERROR;
        }
 
-       /* Upgrade issue in folder table tizen 2.3(unique:path, name, storage_type) to 2.4(unique:path, name, storage_uuid) */
-       if (cur_version < USER_V4) {
-               /* Create tmp table */
-               sql = sqlite3_mprintf("CREATE TABLE '%q' AS SELECT * FROM '%q';", MEDIA_SVC_DB_TABLE_TMP_TABLE, MEDIA_SVC_DB_TABLE_FOLDER);
-               if (sql == NULL) {
-                        media_svc_error("_media_svc_upgrade_table_query failed");
-                        ret = MS_MEDIA_ERR_OUT_OF_MEMORY;
-                       goto ERROR;
-               }
-
-               ret = _media_svc_sql_query(sql, uid);
-               if (ret != MS_MEDIA_ERR_NONE)
-                       media_svc_error("Error when create backup folder table");
-               SQLITE3_SAFE_FREE(sql);
-
-               /* Drop original table */
-               sql = sqlite3_mprintf("DROP TABLE '%q';", MEDIA_SVC_DB_TABLE_FOLDER);
-               if (sql == NULL) {
-                        media_svc_error("_media_svc_upgrade_table_query failed");
-                        ret = MS_MEDIA_ERR_OUT_OF_MEMORY;
-                       goto ERROR;
-               }
-
-               ret = _media_svc_sql_query(sql, uid);
-               if (ret != MS_MEDIA_ERR_NONE)
-                       media_svc_error("Error when drop table");
-               SQLITE3_SAFE_FREE(sql);
-
-               /* Create new table */
-               ret = _media_svc_make_table_query(MEDIA_SVC_DB_TABLE_FOLDER, MEDIA_SVC_DB_LIST_FOLDER, uid);
-               if (ret != MS_MEDIA_ERR_NONE) {
-                        media_svc_error("_media_svc_make_table_query failed");
-                       goto ERROR;
-               }
-
-               /* Insert into new table */
-               sql = sqlite3_mprintf("INSERT INTO '%q'(folder_uuid, path, name, modified_time, name_pinyin, storage_type) SELECT folder_uuid, path, name, modified_time, name_pinyin, storage_type FROM '%q';", MEDIA_SVC_DB_TABLE_FOLDER, MEDIA_SVC_DB_TABLE_TMP_TABLE);
-               if (sql == NULL) {
-                        media_svc_error("Query creation failed");
-                        ret = MS_MEDIA_ERR_OUT_OF_MEMORY;
-                       goto ERROR;
-               }
-
-               ret = _media_svc_sql_query(sql, uid);
-               if (ret != MS_MEDIA_ERR_NONE)
-                       media_svc_error("Error when backup folder table");
-               SQLITE3_SAFE_FREE(sql);
-
-               /* Drop tmp table*/
-               sql = sqlite3_mprintf("DROP TABLE '%q';", MEDIA_SVC_DB_TABLE_TMP_TABLE);
-               if (sql == NULL) {
-                        media_svc_error("Query creation failed");
-                        ret = MS_MEDIA_ERR_OUT_OF_MEMORY;
-                       goto ERROR;
-               }
-
-               ret = _media_svc_sql_query(sql, uid);
-               if (ret != MS_MEDIA_ERR_NONE)
-                       media_svc_error("Error when drop backup folder table");
-               SQLITE3_SAFE_FREE(sql);
-
-       } else {
-               ret = _media_svc_upgrade_table_query(db_handle, MEDIA_SVC_DB_TABLE_FOLDER, MEDIA_SVC_DB_LIST_FOLDER, uid);
-               if (ret != MS_MEDIA_ERR_NONE) {
-                        media_svc_error("_media_svc_upgrade_table_query failed");
-                       goto ERROR;
-               }
-       }
-
        ret = _media_svc_upgrade_table_query(db_handle, MEDIA_SVC_DB_TABLE_PLAYLIST_MAP, MEDIA_SVC_DB_LIST_PLAYLIST_MAP, uid);
        if (ret != MS_MEDIA_ERR_NONE) {
                 media_svc_error("_media_svc_upgrade_table_query failed");
@@ -1020,83 +951,78 @@ static int __media_svc_db_upgrade(sqlite3 *db_handle, int cur_version, uid_t uid
                goto ERROR;
        }
 
-       if (cur_version < USER_V4) {
-               /* Need to default value in storage_uuid */
-               sql = sqlite3_mprintf("UPDATE %q SET storage_uuid = '%q';", MEDIA_SVC_DB_TABLE_MEDIA, "media");
+       /* Upgrade issue tizen 4.0 to 5.5 */
+       if (cur_version == USER_V6) {
+               /*Drop view first*/
+               sql = sqlite3_mprintf("DROP VIEW IF EXISTS %q;DROP VIEW IF EXISTS %q;DROP VIEW IF EXISTS %q",
+                       MEDIA_SVC_DB_VIEW_PLAYLIST, MEDIA_SVC_DB_VIEW_TAG, MEDIA_SVC_DB_VIEW_MEDIA);
                if (sql == NULL) {
-                        media_svc_error("Query creation failed");
-                        ret = MS_MEDIA_ERR_OUT_OF_MEMORY;
+                       media_svc_error("Query creation failed");
+                       ret = MS_MEDIA_ERR_OUT_OF_MEMORY;
                        goto ERROR;
                }
 
                ret = _media_svc_sql_query(sql, uid);
                SQLITE3_SAFE_FREE(sql);
-
-               sql = sqlite3_mprintf("UPDATE %q SET storage_uuid = '%q';", MEDIA_SVC_DB_TABLE_FOLDER, "media");
-               if (sql == NULL) {
-                        media_svc_error("Query creation failed");
-                        ret = MS_MEDIA_ERR_OUT_OF_MEMORY;
+               if (ret != MS_MEDIA_ERR_NONE) {
+                       media_svc_error("_media_svc_sql_query failed");
                        goto ERROR;
                }
 
-               ret = _media_svc_sql_query(sql, uid);
-               SQLITE3_SAFE_FREE(sql);
-       }
-
-       /* Upgrade issue tizen 3.0 to 4.0 */
-       if (cur_version < USER_V6) {
-               /******Upgrade Storage Table******/
-               /* remove  "storage_account" column */
-               sql = sqlite3_mprintf("ALTER TABLE %q RENAME TO %q;", MEDIA_SVC_DB_TABLE_STORAGE, MEDIA_SVC_DB_TABLE_TMP_TABLE);
+               /******Upgrade Media Table******/
+               /* remove user data columns */
+               sql = sqlite3_mprintf("ALTER TABLE %q RENAME TO %q;", MEDIA_SVC_DB_TABLE_MEDIA, MEDIA_SVC_DB_TABLE_TMP_TABLE);
                if (sql == NULL) {
-                        media_svc_error("Query creation failed");
-                        ret = MS_MEDIA_ERR_OUT_OF_MEMORY;
+                       media_svc_error("Query creation failed");
+                       ret = MS_MEDIA_ERR_OUT_OF_MEMORY;
                        goto ERROR;
                }
 
                ret = _media_svc_sql_query(sql, uid);
                SQLITE3_SAFE_FREE(sql);
                if (ret != MS_MEDIA_ERR_NONE) {
-                        media_svc_error("_media_svc_sql_query failed");
+                       media_svc_error("_media_svc_sql_query failed");
                        goto ERROR;
                }
 
-               ret = _media_svc_make_table_query(MEDIA_SVC_DB_TABLE_STORAGE, MEDIA_SVC_DB_LIST_STORAGE, uid);
+               ret = _media_svc_make_table_query(MEDIA_SVC_DB_TABLE_MEDIA, MEDIA_SVC_DB_LIST_MEDIA, uid);
                if (ret != MS_MEDIA_ERR_NONE) {
-                        media_svc_error("_media_svc_make_table_query failed");
+                       media_svc_error("_media_svc_make_table_query failed");
                        goto ERROR;
                }
 
-               sql = sqlite3_mprintf("INSERT INTO %q (storage_uuid, storage_name, storage_path, storage_type, scan_status, validity) SELECT storage_uuid, storage_name, storage_path, storage_type, scan_status, validity FROM %q;", MEDIA_SVC_DB_TABLE_STORAGE, MEDIA_SVC_DB_TABLE_TMP_TABLE);
+               sql = sqlite3_mprintf("INSERT INTO %q (media_id, media_path, media_display_name, media_type, media_mime_type, media_size, media_added_time, media_modified_time, folder_id, media_thumbnail_path, media_title, album_id, media_album, media_artist, media_album_artist, media_genre, media_composer, media_year, media_recorded_date, media_copyright, media_track_num, media_description, media_bitrate, media_bitpersample, media_samplerate, media_channel, media_duration, media_longitude, media_latitude, media_altitude, exposure_time, fnumber, iso, model, media_width, media_height, media_datetaken, media_orientation, media_rating, media_favourite, media_is_drm, media_storage_type, media_timeline, sync_status, media_file_name_pinyin, media_title_pinyin, media_album_pinyin, media_artist_pinyin, media_album_artist_pinyin, media_genre_pinyin, media_composer_pinyin, media_copyright_pinyin, media_description_pinyin, age_rating_pinyin, keyword_pinyin, storage_uuid, validity, media_360) \
+                       SELECT media_uuid, path, file_name, media_type, mime_type, size, added_time, modified_time, folder_uuid, thumbnail_path, title, album_id, album, artist, album_artist, genre, composer, year, recorded_date, copyright, track_num, description, bitrate, bitpersample, samplerate, channel, duration, longitude, latitude, altitude, exposure_time, fnumber, iso, model, width, height, datetaken, orientation, rating, favourite, is_drm, storage_type, timeline, sync_status, file_name_pinyin, title_pinyin, album_pinyin, artist_pinyin, album_artist_pinyin, genre_pinyin, composer_pinyin, copyright_pinyin, description_pinyin, age_rating_pinyin, keyword_pinyin, storage_uuid, validity, is_360 FROM %q;",
+                       MEDIA_SVC_DB_TABLE_MEDIA, MEDIA_SVC_DB_TABLE_TMP_TABLE);
                if (sql == NULL) {
-                        media_svc_error("Query creation failed");
-                        ret = MS_MEDIA_ERR_OUT_OF_MEMORY;
+                       media_svc_error("Query creation failed");
+                       ret = MS_MEDIA_ERR_OUT_OF_MEMORY;
                        goto ERROR;
                }
 
                ret = _media_svc_sql_query(sql, uid);
                SQLITE3_SAFE_FREE(sql);
                if (ret != MS_MEDIA_ERR_NONE) {
-                        media_svc_error("_media_svc_sql_query failed");
+                       media_svc_error("_media_svc_sql_query failed");
                        goto ERROR;
                }
 
                sql = sqlite3_mprintf("DROP TABLE %q;", MEDIA_SVC_DB_TABLE_TMP_TABLE);
                if (sql == NULL) {
-                        media_svc_error("Query creation failed");
-                        ret = MS_MEDIA_ERR_OUT_OF_MEMORY;
+                       media_svc_error("Query creation failed");
+                       ret = MS_MEDIA_ERR_OUT_OF_MEMORY;
                        goto ERROR;
                }
 
                ret = _media_svc_sql_query(sql, uid);
                SQLITE3_SAFE_FREE(sql);
                if (ret != MS_MEDIA_ERR_NONE) {
-                        media_svc_error("_media_svc_sql_query failed");
+                       media_svc_error("_media_svc_sql_query failed");
                        goto ERROR;
                }
 
                /******Upgrade Folder Table******/
-               /* remove  "parent_folder_uuid" column */
+               /* remove  "scan_status" column */
                sql = sqlite3_mprintf("ALTER TABLE %q RENAME TO %q;", MEDIA_SVC_DB_TABLE_FOLDER, MEDIA_SVC_DB_TABLE_TMP_TABLE);
                if (sql == NULL) {
                        media_svc_error("Query creation failed");
@@ -1117,7 +1043,7 @@ static int __media_svc_db_upgrade(sqlite3 *db_handle, int cur_version, uid_t uid
                        goto ERROR;
                }
 
-               sql = sqlite3_mprintf("INSERT INTO %q (folder_uuid, path, name, modified_time, name_pinyin, storage_type, storage_uuid, folder_order, validity, scan_status) SELECT folder_uuid, path, name, modified_time, name_pinyin, storage_type, storage_uuid, folder_order, validity, scan_status FROM %q;", MEDIA_SVC_DB_TABLE_FOLDER, MEDIA_SVC_DB_TABLE_TMP_TABLE);
+               sql = sqlite3_mprintf("INSERT INTO %q (folder_id, folder_path, folder_name, folder_modified_time, folder_name_pinyin, folder_storage_type, storage_uuid, validity) SELECT folder_uuid, path, name, modified_time, name_pinyin, storage_type, storage_uuid, validity FROM %q;", MEDIA_SVC_DB_TABLE_FOLDER, MEDIA_SVC_DB_TABLE_TMP_TABLE);
                if (sql == NULL) {
                        media_svc_error("Query creation failed");
                        ret = MS_MEDIA_ERR_OUT_OF_MEMORY;
@@ -1145,8 +1071,9 @@ static int __media_svc_db_upgrade(sqlite3 *db_handle, int cur_version, uid_t uid
                        goto ERROR;
                }
 
-               /******Upgrade Face Table******/
-               sql = sqlite3_mprintf("DROP TABLE %q; DROP TABLE %q; ", MEDIA_SVC_DB_TABLE_FACE_SCAN_LIST, MEDIA_SVC_DB_TABLE_FACE);
+               /******Upgrade Storage Table******/
+               /* remove  "scan_status", "storage_name" column */
+               sql = sqlite3_mprintf("ALTER TABLE %q RENAME TO %q;", MEDIA_SVC_DB_TABLE_STORAGE, MEDIA_SVC_DB_TABLE_TMP_TABLE);
                if (sql == NULL) {
                        media_svc_error("Query creation failed");
                        ret = MS_MEDIA_ERR_OUT_OF_MEMORY;
@@ -1160,25 +1087,43 @@ static int __media_svc_db_upgrade(sqlite3 *db_handle, int cur_version, uid_t uid
                        goto ERROR;
                }
 
-               ret = _media_svc_make_table_query(MEDIA_SVC_DB_TABLE_FACE_SCAN_LIST, MEDIA_SVC_DB_LIST_FACE_SCAN_LIST, uid);
+               ret = _media_svc_make_table_query(MEDIA_SVC_DB_TABLE_STORAGE, MEDIA_SVC_DB_LIST_STORAGE, uid);
                if (ret != MS_MEDIA_ERR_NONE) {
-                       media_svc_error("_media_svc_make_table_query failed");
+                        media_svc_error("_media_svc_make_table_query failed");
                        goto ERROR;
                }
 
-               ret = _media_svc_make_table_query(MEDIA_SVC_DB_TABLE_FACE, MEDIA_SVC_DB_LIST_FACE, uid);
+               sql = sqlite3_mprintf("INSERT INTO %q (storage_id, storage_path, storage_type, validity) SELECT storage_uuid, storage_path, storage_type, validity FROM %q;", MEDIA_SVC_DB_TABLE_STORAGE, MEDIA_SVC_DB_TABLE_TMP_TABLE);
+               if (sql == NULL) {
+                       media_svc_error("Query creation failed");
+                       ret = MS_MEDIA_ERR_OUT_OF_MEMORY;
+                       goto ERROR;
+               }
+
+               ret = _media_svc_sql_query(sql, uid);
+               SQLITE3_SAFE_FREE(sql);
                if (ret != MS_MEDIA_ERR_NONE) {
-                       media_svc_error("_media_svc_make_table_query failed");
+                       media_svc_error("_media_svc_sql_query failed");
                        goto ERROR;
                }
 
-       }
+               sql = sqlite3_mprintf("DROP TABLE %q;", MEDIA_SVC_DB_TABLE_TMP_TABLE);
+               if (sql == NULL) {
+                       media_svc_error("Query creation failed");
+                       ret = MS_MEDIA_ERR_OUT_OF_MEMORY;
+                       goto ERROR;
+               }
 
-       /* Upgrade issue tizen 4.0 to 5.0 */
-       if (cur_version < USER_V7) {
-               /******Upgrade Folder Table******/
-               /* remove  "scan_status" column */
-               sql = sqlite3_mprintf("ALTER TABLE %q RENAME TO %q;", MEDIA_SVC_DB_TABLE_FOLDER, MEDIA_SVC_DB_TABLE_TMP_TABLE);
+               ret = _media_svc_sql_query(sql, uid);
+               SQLITE3_SAFE_FREE(sql);
+               if (ret != MS_MEDIA_ERR_NONE) {
+                       media_svc_error("_media_svc_sql_query failed");
+                       goto ERROR;
+               }
+
+               /******Upgrade face Table******/
+               /* Change  "face_uuid" to "face_id" (face_uuid is TEXT, face_id is INTEGER) */
+               sql = sqlite3_mprintf("ALTER TABLE %q RENAME TO %q;", MEDIA_SVC_DB_TABLE_FACE, MEDIA_SVC_DB_TABLE_TMP_TABLE);
                if (sql == NULL) {
                        media_svc_error("Query creation failed");
                        ret = MS_MEDIA_ERR_OUT_OF_MEMORY;
@@ -1192,13 +1137,13 @@ static int __media_svc_db_upgrade(sqlite3 *db_handle, int cur_version, uid_t uid
                        goto ERROR;
                }
 
-               ret = _media_svc_make_table_query(MEDIA_SVC_DB_TABLE_FOLDER, MEDIA_SVC_DB_LIST_FOLDER, uid);
+               ret = _media_svc_make_table_query(MEDIA_SVC_DB_TABLE_FACE, MEDIA_SVC_DB_LIST_FACE, uid);
                if (ret != MS_MEDIA_ERR_NONE) {
-                       media_svc_error("_media_svc_make_table_query failed");
+                        media_svc_error("_media_svc_make_table_query failed");
                        goto ERROR;
                }
 
-               sql = sqlite3_mprintf("INSERT INTO %q (folder_uuid, path, name, modified_time, name_pinyin, storage_type, storage_uuid, folder_order, validity) SELECT folder_uuid, path, name, modified_time, name_pinyin, storage_type, storage_uuid, folder_order, validity FROM %q;", MEDIA_SVC_DB_TABLE_FOLDER, MEDIA_SVC_DB_TABLE_TMP_TABLE);
+               sql = sqlite3_mprintf("INSERT INTO %q (media_id, face_rect_x, face_rect_y, face_rect_w, face_rect_h, face_orientation, media_face_tag) SELECT media_uuid, face_rect_x, face_rect_y, face_rect_w, face_rect_h, orientation, face_tag FROM %q;", MEDIA_SVC_DB_TABLE_FACE, MEDIA_SVC_DB_TABLE_TMP_TABLE);
                if (sql == NULL) {
                        media_svc_error("Query creation failed");
                        ret = MS_MEDIA_ERR_OUT_OF_MEMORY;
@@ -1226,10 +1171,25 @@ static int __media_svc_db_upgrade(sqlite3 *db_handle, int cur_version, uid_t uid
                        goto ERROR;
                }
 
+               /******Upgrade face_scan_list Table******/
+               /* Drop trigger first */
+               sql = sqlite3_mprintf("DROP TRIGGER IF EXISTS %q_%q;DROP TRIGGER IF EXISTS %q_%q;",
+                       MEDIA_SVC_DB_TRIGGER_FACE, MEDIA_SVC_DB_TABLE_FACE_SCAN_LIST, MEDIA_SVC_DB_TRIGGER_FACE_SCAN_LIST, MEDIA_SVC_DB_TABLE_MEDIA);
+               if (sql == NULL) {
+                       media_svc_error("Query creation failed");
+                       ret = MS_MEDIA_ERR_OUT_OF_MEMORY;
+                       goto ERROR;
+               }
+
+               ret = _media_svc_sql_query(sql, uid);
+               SQLITE3_SAFE_FREE(sql);
+               if (ret != MS_MEDIA_ERR_NONE) {
+                       media_svc_error("_media_svc_sql_query failed");
+                       goto ERROR;
+               }
 
-               /******Upgrade Storage Table******/
-               /* remove  "scan_status", "storage_name" column */
-               sql = sqlite3_mprintf("ALTER TABLE %q RENAME TO %q;", MEDIA_SVC_DB_TABLE_STORAGE, MEDIA_SVC_DB_TABLE_TMP_TABLE);
+               /* remove  "storage_uuid" column */
+               sql = sqlite3_mprintf("ALTER TABLE %q RENAME TO %q;", MEDIA_SVC_DB_TABLE_FACE_SCAN_LIST, MEDIA_SVC_DB_TABLE_TMP_TABLE);
                if (sql == NULL) {
                        media_svc_error("Query creation failed");
                        ret = MS_MEDIA_ERR_OUT_OF_MEMORY;
@@ -1243,13 +1203,13 @@ static int __media_svc_db_upgrade(sqlite3 *db_handle, int cur_version, uid_t uid
                        goto ERROR;
                }
 
-               ret = _media_svc_make_table_query(MEDIA_SVC_DB_TABLE_STORAGE, MEDIA_SVC_DB_LIST_STORAGE, uid);
+               ret = _media_svc_make_table_query(MEDIA_SVC_DB_TABLE_FACE_SCAN_LIST, MEDIA_SVC_DB_LIST_FACE_SCAN_LIST, uid);
                if (ret != MS_MEDIA_ERR_NONE) {
                         media_svc_error("_media_svc_make_table_query failed");
                        goto ERROR;
                }
 
-               sql = sqlite3_mprintf("INSERT INTO %q (storage_uuid, storage_path, storage_type, validity) SELECT storage_uuid, storage_path, storage_type, validity FROM %q;", MEDIA_SVC_DB_TABLE_STORAGE, MEDIA_SVC_DB_TABLE_TMP_TABLE);
+               sql = sqlite3_mprintf("INSERT INTO %q (media_id, modified_time) SELECT media_uuid, modified_time FROM %q;", MEDIA_SVC_DB_TABLE_FACE_SCAN_LIST, MEDIA_SVC_DB_TABLE_TMP_TABLE);
                if (sql == NULL) {
                        media_svc_error("Query creation failed");
                        ret = MS_MEDIA_ERR_OUT_OF_MEMORY;
@@ -1295,6 +1255,23 @@ static int __media_svc_db_upgrade(sqlite3 *db_handle, int cur_version, uid_t uid
                        media_svc_error("_media_svc_sql_query failed");
                        goto ERROR;
                }
+               if (cur_version == USER_V6) {
+                       /* Drop trigger first */
+                       sql = sqlite3_mprintf("DROP TRIGGER IF EXISTS %q_%q;DROP TRIGGER IF EXISTS %q_%q;",
+                               MEDIA_SVC_DB_TRIGGER_FACE, MEDIA_SVC_DB_TABLE_FACE_SCAN_LIST, MEDIA_SVC_DB_TRIGGER_FACE_SCAN_LIST, MEDIA_SVC_DB_TABLE_MEDIA);
+                       if (sql == NULL) {
+                               media_svc_error("Query creation failed");
+                               ret = MS_MEDIA_ERR_OUT_OF_MEMORY;
+                               goto ERROR;
+                       }
+
+                       ret = _media_svc_sql_query(sql, uid);
+                       SQLITE3_SAFE_FREE(sql);
+                       if (ret != MS_MEDIA_ERR_NONE) {
+                               media_svc_error("_media_svc_sql_query failed");
+                               goto ERROR;
+                       }
+               }
 
                /*playlist */
                sql = sqlite3_mprintf("ALTER TABLE %q RENAME COLUMN play_order TO playlist_member_order;\
@@ -1331,27 +1308,6 @@ static int __media_svc_db_upgrade(sqlite3 *db_handle, int cur_version, uid_t uid
                        goto ERROR;
                }
 
-               /*face */
-               sql = sqlite3_mprintf("ALTER TABLE %q RENAME COLUMN face_id TO media_face_id;\
-                       ALTER TABLE %q RENAME COLUMN orientation TO face_orientation;\
-                       ALTER TABLE %q RENAME COLUMN face_tag TO media_face_tag;\
-                       ALTER TABLE %q RENAME COLUMN media_uuid TO media_id;\
-                       ALTER TABLE %q RENAME COLUMN media_uuid TO media_id;",
-                       MEDIA_SVC_DB_TABLE_FACE, MEDIA_SVC_DB_TABLE_FACE, MEDIA_SVC_DB_TABLE_FACE,
-                       MEDIA_SVC_DB_TABLE_FACE_SCAN_LIST, MEDIA_SVC_DB_TABLE_FACE);
-               if (sql == NULL) {
-                       media_svc_error("Query creation failed");
-                       ret = MS_MEDIA_ERR_OUT_OF_MEMORY;
-                       goto ERROR;
-               }
-
-               ret = _media_svc_sql_query(sql, uid);
-               SQLITE3_SAFE_FREE(sql);
-               if (ret != MS_MEDIA_ERR_NONE) {
-                       media_svc_error("_media_svc_sql_query failed");
-                       goto ERROR;
-               }
-
                /*bookmark */
                sql = sqlite3_mprintf("ALTER TABLE %q RENAME COLUMN marked_time TO bookmark_marked_time;\
                        ALTER TABLE %q RENAME COLUMN name TO bookmark_name;\
@@ -1372,31 +1328,180 @@ static int __media_svc_db_upgrade(sqlite3 *db_handle, int cur_version, uid_t uid
                        goto ERROR;
                }
 
-               /*folder */
-               sql = sqlite3_mprintf("ALTER TABLE %q RENAME COLUMN modified_time TO folder_modified_time;\
-                       ALTER TABLE %q RENAME COLUMN path TO folder_path;\
-                       ALTER TABLE %q RENAME COLUMN name TO folder_name;\
-                       ALTER TABLE %q RENAME COLUMN name_pinyin TO folder_name_pinyin;\
-                       ALTER TABLE %q RENAME COLUMN storage_type TO folder_storage_type;\
-                       ALTER TABLE %q RENAME COLUMN folder_uuid TO folder_id;",
-                       MEDIA_SVC_DB_TABLE_FOLDER, MEDIA_SVC_DB_TABLE_FOLDER, MEDIA_SVC_DB_TABLE_FOLDER,
-                       MEDIA_SVC_DB_TABLE_FOLDER, MEDIA_SVC_DB_TABLE_FOLDER, MEDIA_SVC_DB_TABLE_FOLDER);
-               if (sql == NULL) {
-                       media_svc_error("Query creation failed");
-                       ret = MS_MEDIA_ERR_OUT_OF_MEMORY;
-                       goto ERROR;
-               }
 
-               ret = _media_svc_sql_query(sql, uid);
-               SQLITE3_SAFE_FREE(sql);
-               if (ret != MS_MEDIA_ERR_NONE) {
-                       media_svc_error("_media_svc_sql_query failed");
-                       goto ERROR;
+               if (cur_version == USER_V7) {
+                       /*face */
+                       sql = sqlite3_mprintf("ALTER TABLE %q RENAME COLUMN face_id TO media_face_id;\
+                               ALTER TABLE %q RENAME COLUMN orientation TO face_orientation;\
+                               ALTER TABLE %q RENAME COLUMN face_tag TO media_face_tag;\
+                               ALTER TABLE %q RENAME COLUMN media_uuid TO media_id;\
+                               ALTER TABLE %q RENAME COLUMN media_uuid TO media_id;",
+                               MEDIA_SVC_DB_TABLE_FACE, MEDIA_SVC_DB_TABLE_FACE, MEDIA_SVC_DB_TABLE_FACE,
+                               MEDIA_SVC_DB_TABLE_FACE_SCAN_LIST, MEDIA_SVC_DB_TABLE_FACE);
+                       if (sql == NULL) {
+                               media_svc_error("Query creation failed");
+                               ret = MS_MEDIA_ERR_OUT_OF_MEMORY;
+                               goto ERROR;
+                       }
+
+                       ret = _media_svc_sql_query(sql, uid);
+                       SQLITE3_SAFE_FREE(sql);
+                       if (ret != MS_MEDIA_ERR_NONE) {
+                               media_svc_error("_media_svc_sql_query failed");
+                               goto ERROR;
+                       }
+
+                       /*folder */
+                       sql = sqlite3_mprintf("ALTER TABLE %q RENAME COLUMN modified_time TO folder_modified_time;\
+                               ALTER TABLE %q RENAME COLUMN path TO folder_path;\
+                               ALTER TABLE %q RENAME COLUMN name TO folder_name;\
+                               ALTER TABLE %q RENAME COLUMN name_pinyin TO folder_name_pinyin;\
+                               ALTER TABLE %q RENAME COLUMN storage_type TO folder_storage_type;\
+                               ALTER TABLE %q RENAME COLUMN folder_uuid TO folder_id;",
+                               MEDIA_SVC_DB_TABLE_FOLDER, MEDIA_SVC_DB_TABLE_FOLDER, MEDIA_SVC_DB_TABLE_FOLDER,
+                               MEDIA_SVC_DB_TABLE_FOLDER, MEDIA_SVC_DB_TABLE_FOLDER, MEDIA_SVC_DB_TABLE_FOLDER);
+                       if (sql == NULL) {
+                               media_svc_error("Query creation failed");
+                               ret = MS_MEDIA_ERR_OUT_OF_MEMORY;
+                               goto ERROR;
+                       }
+
+                       ret = _media_svc_sql_query(sql, uid);
+                       SQLITE3_SAFE_FREE(sql);
+                       if (ret != MS_MEDIA_ERR_NONE) {
+                               media_svc_error("_media_svc_sql_query failed");
+                               goto ERROR;
+                       }
+
+                       /*storage */
+                       sql = sqlite3_mprintf("ALTER TABLE %q RENAME COLUMN storage_uuid TO storage_id;",
+                               MEDIA_SVC_DB_TABLE_STORAGE);
+                       if (sql == NULL) {
+                               media_svc_error("Query creation failed");
+                               ret = MS_MEDIA_ERR_OUT_OF_MEMORY;
+                               goto ERROR;
+                       }
+
+                       ret = _media_svc_sql_query(sql, uid);
+                       SQLITE3_SAFE_FREE(sql);
+                       if (ret != MS_MEDIA_ERR_NONE) {
+                               media_svc_error("_media_svc_sql_query failed");
+                               goto ERROR;
+                       }
+
+                       /*media */
+                       sql = sqlite3_mprintf("ALTER TABLE %q RENAME COLUMN file_name_pinyin TO media_file_name_pinyin;\
+                               ALTER TABLE %q RENAME COLUMN title_pinyin TO media_title_pinyin;\
+                               ALTER TABLE %q RENAME COLUMN album_pinyin TO media_album_pinyin;\
+                               ALTER TABLE %q RENAME COLUMN artist_pinyin TO media_artist_pinyin;\
+                               ALTER TABLE %q RENAME COLUMN album_artist_pinyin TO media_album_artist_pinyin;\
+                               ALTER TABLE %q RENAME COLUMN genre_pinyin TO media_genre_pinyin;\
+                               ALTER TABLE %q RENAME COLUMN composer_pinyin TO media_composer_pinyin;\
+                               ALTER TABLE %q RENAME COLUMN copyright_pinyin TO media_copyright_pinyin;\
+                               ALTER TABLE %q RENAME COLUMN description_pinyin TO media_description_pinyin;\
+                               ALTER TABLE %q RENAME COLUMN folder_uuid TO folder_id;\
+                               ALTER TABLE %q RENAME COLUMN media_uuid TO media_id;\
+                               ALTER TABLE %q RENAME COLUMN path TO media_path;\
+                               ALTER TABLE %q RENAME COLUMN file_name TO media_display_name;\
+                               ALTER TABLE %q RENAME COLUMN mime_type TO media_mime_type;\
+                               ALTER TABLE %q RENAME COLUMN size TO media_size;\
+                               ALTER TABLE %q RENAME COLUMN added_time TO media_added_time;\
+                               ALTER TABLE %q RENAME COLUMN modified_time TO media_modified_time;\
+                               ALTER TABLE %q RENAME COLUMN thumbnail_path TO media_thumbnail_path;\
+                               ALTER TABLE %q RENAME COLUMN title TO media_title;\
+                               ALTER TABLE %q RENAME COLUMN album TO media_album;\
+                               ALTER TABLE %q RENAME COLUMN artist TO media_artist;\
+                               ALTER TABLE %q RENAME COLUMN album_artist TO media_album_artist;\
+                               ALTER TABLE %q RENAME COLUMN genre TO media_genre;\
+                               ALTER TABLE %q RENAME COLUMN composer TO media_composer;\
+                               ALTER TABLE %q RENAME COLUMN year TO media_year;\
+                               ALTER TABLE %q RENAME COLUMN recorded_date TO media_recorded_date;\
+                               ALTER TABLE %q RENAME COLUMN copyright TO media_copyright;\
+                               ALTER TABLE %q RENAME COLUMN track_num TO media_track_num;\
+                               ALTER TABLE %q RENAME COLUMN description TO media_description;\
+                               ALTER TABLE %q RENAME COLUMN bitrate TO media_bitrate;\
+                               ALTER TABLE %q RENAME COLUMN bitpersample TO media_bitpersample;\
+                               ALTER TABLE %q RENAME COLUMN samplerate TO media_samplerate;\
+                               ALTER TABLE %q RENAME COLUMN channel TO media_channel;\
+                               ALTER TABLE %q RENAME COLUMN duration TO media_duration;\
+                               ALTER TABLE %q RENAME COLUMN longitude TO media_longitude;\
+                               ALTER TABLE %q RENAME COLUMN latitude TO media_latitude;\
+                               ALTER TABLE %q RENAME COLUMN altitude TO media_altitude;\
+                               ALTER TABLE %q RENAME COLUMN width TO media_width;\
+                               ALTER TABLE %q RENAME COLUMN height TO media_height;\
+                               ALTER TABLE %q RENAME COLUMN datetaken TO media_datetaken;\
+                               ALTER TABLE %q RENAME COLUMN orientation TO media_orientation;\
+                               ALTER TABLE %q RENAME COLUMN rating TO media_rating;\
+                               ALTER TABLE %q RENAME COLUMN favourite TO media_favourite;\
+                               ALTER TABLE %q RENAME COLUMN is_drm TO media_is_drm;\
+                               ALTER TABLE %q RENAME COLUMN storage_type TO media_storage_type;\
+                               ALTER TABLE %q RENAME COLUMN timeline TO media_timeline;\
+                               ALTER TABLE %q RENAME COLUMN is_360 TO media_360;",
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA,
+                               MEDIA_SVC_DB_TABLE_MEDIA);
+                       if (sql == NULL) {
+                               media_svc_error("Query creation failed");
+                               ret = MS_MEDIA_ERR_OUT_OF_MEMORY;
+                               goto ERROR;
+                       }
+
+                       ret = _media_svc_sql_query(sql, uid);
+                       SQLITE3_SAFE_FREE(sql);
+                       if (ret != MS_MEDIA_ERR_NONE) {
+                               media_svc_error("_media_svc_sql_query failed");
+                               goto ERROR;
+                       }
                }
+       }
 
-               /*storage */
-               sql = sqlite3_mprintf("ALTER TABLE %q RENAME COLUMN storage_uuid TO storage_id;",
-                       MEDIA_SVC_DB_TABLE_STORAGE);
+       if (cur_version == USER_V6) {
+               /* Create the removed trigger */
+               sql = sqlite3_mprintf(MEDIA_SVC_DB_QUERY_TRIGGER, "face_cleanup_face_scan_list", MEDIA_SVC_DB_TABLE_FACE_SCAN_LIST, MEDIA_SVC_DB_TABLE_FACE, "media_id", "media_id");
                if (sql == NULL) {
                        media_svc_error("Query creation failed");
                        ret = MS_MEDIA_ERR_OUT_OF_MEMORY;
@@ -1410,101 +1515,7 @@ static int __media_svc_db_upgrade(sqlite3 *db_handle, int cur_version, uid_t uid
                        goto ERROR;
                }
 
-               /*media */
-               sql = sqlite3_mprintf("ALTER TABLE %q RENAME COLUMN file_name_pinyin TO media_file_name_pinyin;\
-                       ALTER TABLE %q RENAME COLUMN title_pinyin TO media_title_pinyin;\
-                       ALTER TABLE %q RENAME COLUMN album_pinyin TO media_album_pinyin;\
-                       ALTER TABLE %q RENAME COLUMN artist_pinyin TO media_artist_pinyin;\
-                       ALTER TABLE %q RENAME COLUMN album_artist_pinyin TO media_album_artist_pinyin;\
-                       ALTER TABLE %q RENAME COLUMN genre_pinyin TO media_genre_pinyin;\
-                       ALTER TABLE %q RENAME COLUMN composer_pinyin TO media_composer_pinyin;\
-                       ALTER TABLE %q RENAME COLUMN copyright_pinyin TO media_copyright_pinyin;\
-                       ALTER TABLE %q RENAME COLUMN description_pinyin TO media_description_pinyin;\
-                       ALTER TABLE %q RENAME COLUMN folder_uuid TO folder_id;\
-                       ALTER TABLE %q RENAME COLUMN media_uuid TO media_id;\
-                       ALTER TABLE %q RENAME COLUMN path TO media_path;\
-                       ALTER TABLE %q RENAME COLUMN file_name TO media_display_name;\
-                       ALTER TABLE %q RENAME COLUMN mime_type TO media_mime_type;\
-                       ALTER TABLE %q RENAME COLUMN size TO media_size;\
-                       ALTER TABLE %q RENAME COLUMN added_time TO media_added_time;\
-                       ALTER TABLE %q RENAME COLUMN modified_time TO media_modified_time;\
-                       ALTER TABLE %q RENAME COLUMN thumbnail_path TO media_thumbnail_path;\
-                       ALTER TABLE %q RENAME COLUMN title TO media_title;\
-                       ALTER TABLE %q RENAME COLUMN album TO media_album;\
-                       ALTER TABLE %q RENAME COLUMN artist TO media_artist;\
-                       ALTER TABLE %q RENAME COLUMN album_artist TO media_album_artist;\
-                       ALTER TABLE %q RENAME COLUMN genre TO media_genre;\
-                       ALTER TABLE %q RENAME COLUMN composer TO media_composer;\
-                       ALTER TABLE %q RENAME COLUMN year TO media_year;\
-                       ALTER TABLE %q RENAME COLUMN recorded_date TO media_recorded_date;\
-                       ALTER TABLE %q RENAME COLUMN copyright TO media_copyright;\
-                       ALTER TABLE %q RENAME COLUMN track_num TO media_track_num;\
-                       ALTER TABLE %q RENAME COLUMN description TO media_description;\
-                       ALTER TABLE %q RENAME COLUMN bitrate TO media_bitrate;\
-                       ALTER TABLE %q RENAME COLUMN bitpersample TO media_bitpersample;\
-                       ALTER TABLE %q RENAME COLUMN samplerate TO media_samplerate;\
-                       ALTER TABLE %q RENAME COLUMN channel TO media_channel;\
-                       ALTER TABLE %q RENAME COLUMN duration TO media_duration;\
-                       ALTER TABLE %q RENAME COLUMN longitude TO media_longitude;\
-                       ALTER TABLE %q RENAME COLUMN latitude TO media_latitude;\
-                       ALTER TABLE %q RENAME COLUMN altitude TO media_altitude;\
-                       ALTER TABLE %q RENAME COLUMN width TO media_width;\
-                       ALTER TABLE %q RENAME COLUMN height TO media_height;\
-                       ALTER TABLE %q RENAME COLUMN datetaken TO media_datetaken;\
-                       ALTER TABLE %q RENAME COLUMN orientation TO media_orientation;\
-                       ALTER TABLE %q RENAME COLUMN rating TO media_rating;\
-                       ALTER TABLE %q RENAME COLUMN favourite TO media_favourite;\
-                       ALTER TABLE %q RENAME COLUMN is_drm TO media_is_drm;\
-                       ALTER TABLE %q RENAME COLUMN storage_type TO media_storage_type;\
-                       ALTER TABLE %q RENAME COLUMN timeline TO media_timeline;\
-                       ALTER TABLE %q RENAME COLUMN is_360 TO media_360;",
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA,
-                       MEDIA_SVC_DB_TABLE_MEDIA);
+               sql = sqlite3_mprintf(MEDIA_SVC_DB_QUERY_TRIGGER, "face_scan_list_cleanup_media", MEDIA_SVC_DB_TABLE_MEDIA, MEDIA_SVC_DB_TABLE_FACE_SCAN_LIST, "media_id", "media_id");
                if (sql == NULL) {
                        media_svc_error("Query creation failed");
                        ret = MS_MEDIA_ERR_OUT_OF_MEMORY;
index 1a38e37..17bcfac 100755 (executable)
@@ -46,7 +46,7 @@ int _media_svc_count_record_with_path(sqlite3 *handle, const char *storage_id, c
        media_svc_retvm_if(!STRING_VALID(storage_id), MS_MEDIA_ERR_INVALID_PARAMETER, "storage_id is NULL");
        media_svc_retvm_if(!STRING_VALID(path), MS_MEDIA_ERR_INVALID_PARAMETER, "Path is NULL");
 
-       sql = sqlite3_mprintf("SELECT count(*) FROM '%q' WHERE MEDIA_path='%q'", storage_id, path);
+       sql = sqlite3_mprintf("SELECT count(*) FROM '%q' WHERE media_path='%q'", storage_id, path);
        ret = _media_svc_sql_prepare_to_step(handle, sql, &sql_stmt);
        media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);
 
@@ -66,7 +66,7 @@ int _media_svc_get_modified_time(sqlite3 *handle, const char *storage_id, const
        media_svc_retvm_if(!STRING_VALID(storage_id), MS_MEDIA_ERR_INVALID_PARAMETER, "storage_id is NULL");
        media_svc_retvm_if(!STRING_VALID(path), MS_MEDIA_ERR_INVALID_PARAMETER, "Path is NULL");
 
-       sql = sqlite3_mprintf("SELECT media_modified_time FROM '%q' WHERE MEDIA_path='%q'", storage_id, path);
+       sql = sqlite3_mprintf("SELECT media_modified_time FROM '%q' WHERE media_path='%q'", storage_id, path);
        ret = _media_svc_sql_prepare_to_step(handle, sql, &sql_stmt);
        media_svc_retv_if(ret != MS_MEDIA_ERR_NONE, ret);