Update query-related code 91/140891/1 submit/tizen/20170728.070738
authorMinje Ahn <minje.ahn@samsung.com>
Thu, 27 Jul 2017 05:33:00 +0000 (14:33 +0900)
committerMinje Ahn <minje.ahn@samsung.com>
Thu, 27 Jul 2017 05:33:39 +0000 (14:33 +0900)
Use column name instead of *
Add query for upgrade when v5 to v6

Change-Id: Id02950b71904d7123420fa7acc5e31921953bc42
Signed-off-by: Minje Ahn <minje.ahn@samsung.com>
src/common/media-svc-db-utils.c
src/common/media-svc-storage.c

index 4b3c4f1..c9c5d45 100755 (executable)
@@ -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");
index 3037b1e..5efce4d 100755 (executable)
@@ -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;