From: Minje Ahn Date: Thu, 27 Jul 2017 05:33:00 +0000 (+0900) Subject: Update query-related code X-Git-Tag: submit/tizen/20170728.070738^0 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4e355564ca908918b2150dc42fed8d101f988735;p=platform%2Fcore%2Fmultimedia%2Flibmedia-service.git Update query-related code Use column name instead of * Add query for upgrade when v5 to v6 Change-Id: Id02950b71904d7123420fa7acc5e31921953bc42 Signed-off-by: Minje Ahn --- diff --git a/src/common/media-svc-db-utils.c b/src/common/media-svc-db-utils.c index 4b3c4f1..c9c5d45 100755 --- a/src/common/media-svc-db-utils.c +++ b/src/common/media-svc-db-utils.c @@ -1092,7 +1092,7 @@ static int __media_svc_db_upgrade(sqlite3 *db_handle, int cur_version, uid_t uid goto ERROR; } - /* Upgrade issue in folder table */ + /* 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); @@ -1226,8 +1226,107 @@ static int __media_svc_db_upgrade(sqlite3 *db_handle, int cur_version, uid_t uid SQLITE3_SAFE_FREE(sql); } + /* Upgrade issue tizen 3.0 to 4.0 */ + if (cur_version < USER_V6) { + /* remove "storage_account" 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; + 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; + } + + 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"); + 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); + 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; + } + + 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); + SQLITE3_SAFE_FREE(sql); + if (ret != MS_MEDIA_ERR_NONE) { + media_svc_error("_media_svc_sql_query failed"); + goto ERROR; + } + + /* remove "parent_folder_uuid" 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"); + 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; + } + + 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; + } + + 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); + 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; + } + + 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); + SQLITE3_SAFE_FREE(sql); + } + + /* Rebuilding view */ ret = __media_svc_rebuild_view_query(db_handle, uid); + /* Update user version */ sql = sqlite3_mprintf("PRAGMA user_version=%d;", LATEST_VERSION_NUMBER); if (sql == NULL) { media_svc_error("Query creation failed"); diff --git a/src/common/media-svc-storage.c b/src/common/media-svc-storage.c index 3037b1e..5efce4d 100755 --- a/src/common/media-svc-storage.c +++ b/src/common/media-svc-storage.c @@ -32,7 +32,7 @@ int _media_svc_get_mmc_info(MediaSvcHandle *handle, char **storage_name, char ** sqlite3_stmt *sql_stmt = NULL; char *sql = NULL; - sql = sqlite3_mprintf("SELECT * FROM '%s' WHERE storage_uuid=%Q", MEDIA_SVC_DB_TABLE_STORAGE, MEDIA_SVC_DB_TABLE_MEDIA); + sql = sqlite3_mprintf("SELECT storage_name, storage_path, validity FROM '%s' WHERE storage_uuid=%Q", MEDIA_SVC_DB_TABLE_STORAGE, MEDIA_SVC_DB_TABLE_MEDIA); ret = _media_svc_sql_prepare_to_step(handle, sql, &sql_stmt); if (ret != MS_MEDIA_ERR_NONE) { @@ -41,15 +41,12 @@ int _media_svc_get_mmc_info(MediaSvcHandle *handle, char **storage_name, char ** *validity = 0; *info_exist = FALSE; - if (ret == MS_MEDIA_ERR_DB_NO_RECORD) - *info_exist = FALSE; - return ret; } - *storage_name = g_strdup((const char *)sqlite3_column_text(sql_stmt, 1)); - *storage_path = g_strdup((const char *)sqlite3_column_text(sql_stmt, 2)); - *validity = sqlite3_column_int(sql_stmt, 6); + *storage_name = g_strdup((const char *)sqlite3_column_text(sql_stmt, 0)); + *storage_path = g_strdup((const char *)sqlite3_column_text(sql_stmt, 1)); + *validity = sqlite3_column_int(sql_stmt, 2); *info_exist = TRUE;