Reinforce line coverage
[platform/core/api/media-content.git] / src / media_db.c
index ddc5f4d..112d846 100755 (executable)
@@ -63,16 +63,8 @@ static const char * __media_db_get_group_name(media_group_e group)
        case MEDIA_CONTENT_GROUP_RATING:
                return DB_FIELD_MEDIA_RATING;
 #ifdef _USE_TVPD_MODE
-       case MEDIA_CONTENT_GROUP_MODIFIED_MONTH:
-               return DB_FIELD_MEDIA_MODIFIED_DATE;
        case MEDIA_CONTENT_GROUP_MODIFIED_DATE:
                return DB_FIELD_MEDIA_MODIFIED_DATE;
-#endif
-#ifdef _USE_SENIOR_MODE
-       case MEDIA_CONTENT_GROUP_CONTACT:
-               return DB_FIELD_MEDIA_CONTACT;
-#endif
-#ifdef _USE_TVPD_MODE
        case MEDIA_CONTENT_GROUP_ALBUM:
                return DB_FIELD_MEDIA_ALBUM;
        case MEDIA_PVR_GROUP_DURATION:
@@ -165,8 +157,6 @@ static const char * __media_db_get_group_name(media_group_e group)
                return DB_FIELD_UHD_CONTENT_TITLE;
        case MEDIA_UHD_GROUP_RELEASE_DATE:
                return DB_FIELD_UHD_RELEASE_DATE;
-       case MEDIA_UHD_GROUP_SUB_TYPE:
-               return DB_FIELD_UHD_SUB_TYPE;
        case MEDIA_UHD_GROUP_FILE_NAME:
                return DB_FIELD_UHD_FILE_NAME;
        case MEDIA_UHD_GROUP_PLAYED_COUNT:
@@ -184,11 +174,11 @@ static int __media_db_make_query(filter_h filter, char **condition_query, char *
        int ret = MEDIA_CONTENT_ERROR_NONE;
        filter_s *_filter = (filter_s *)filter;
 
-       media_content_retv_if(!_filter, MEDIA_CONTENT_ERROR_NONE);
+       content_retv_if(!_filter, MEDIA_CONTENT_ERROR_NONE);
 
        if (STRING_VALID(_filter->condition)) {
                ret = _media_filter_build_condition(_filter->is_full_condition, _filter->condition, _filter->condition_collate_type, condition_query);
-               media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+               content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
        }
 
        ret = _media_filter_build_option(filter, option_query);
@@ -203,71 +193,65 @@ int _media_db_get_group_count(filter_h filter, group_list_e group_type, int *gro
 {
        int ret = MEDIA_CONTENT_ERROR_NONE;
        sqlite3_stmt *stmt = NULL;
-       char select_query[MAX_QUERY_SIZE] = {0, };
+       char *select_query = NULL;
        char *condition_query = NULL;
        char *option_query = NULL;
        filter_s *_filter = (filter_s *)filter;
 
-       memset(select_query, 0x00, sizeof(select_query));
-
        switch (group_type) {
        case MEDIA_GROUP_ALBUM:
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       snprintf(select_query, sizeof(select_query), SELECT_ALBUM_COUNT, _filter->storage_id);
+               if (_filter && STRING_VALID(_filter->storage_id))
+                       select_query = g_strdup_printf(SELECT_ALBUM_COUNT, _filter->storage_id);
                else
-                       snprintf(select_query, sizeof(select_query), SELECT_ALBUM_COUNT, DB_VIEW_MEDIA);
-
+                       select_query = g_strdup_printf(SELECT_ALBUM_COUNT, DB_VIEW_MEDIA);
                break;
+
        case MEDIA_GROUP_FOLDER:
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       snprintf(select_query, sizeof(select_query), SELECT_FOLDER_COUNT_BY_STORAGE_ID, _filter->storage_id, _filter->storage_id);
+               if (_filter && STRING_VALID(_filter->storage_id))
+                       select_query = g_strdup_printf(SELECT_FOLDER_COUNT_BY_STORAGE_ID, _filter->storage_id, _filter->storage_id);
                else
-                       snprintf(select_query, sizeof(select_query), SELECT_FOLDER_COUNT, DB_VIEW_MEDIA);
-
+                       select_query = g_strdup_printf(SELECT_FOLDER_COUNT, DB_VIEW_MEDIA);
                break;
+
        case MEDIA_GROUP_PLAYLIST:
-               if (!SAFE_STRLCPY(select_query, SELECT_PLAYLIST_COUNT, sizeof(select_query))) {
-                       media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
-                       return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-               }
+               select_query = g_strdup(SELECT_PLAYLIST_COUNT);
                break;
+
        case MEDIA_GROUP_TAG:
-               if (!SAFE_STRLCPY(select_query, SELECT_TAG_COUNT, sizeof(select_query))) {
-                       media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
-                       return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-               }
+               select_query = g_strdup(SELECT_TAG_COUNT);
                break;
+
        case MEDIA_GROUP_BOOKMARK:
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       snprintf(select_query, sizeof(select_query), SELECT_BOOKMARK_COUNT, _filter->storage_id);
+               if (_filter && STRING_VALID(_filter->storage_id))
+                       select_query = g_strdup_printf(SELECT_BOOKMARK_COUNT, _filter->storage_id);
                else
-                       snprintf(select_query, sizeof(select_query), SELECT_BOOKMARK_COUNT, DB_VIEW_MEDIA);
+                       select_query = g_strdup_printf(SELECT_BOOKMARK_COUNT, DB_VIEW_MEDIA);
 
                break;
-       case MEDIA_GROUP_STORAGE:
-               if (!SAFE_STRLCPY(select_query, SELECT_STORAGE_COUNT, sizeof(select_query))) {
-                       media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
-                       return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-               }
-               break;
+
        case MEDIA_GROUP_FACE:
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       snprintf(select_query, sizeof(select_query), SELECT_FACE_COUNT, _filter->storage_id);
+               if (_filter && STRING_VALID(_filter->storage_id))
+                       select_query = g_strdup_printf(SELECT_FACE_COUNT, _filter->storage_id);
                else
-                       snprintf(select_query, sizeof(select_query), SELECT_FACE_COUNT, DB_VIEW_MEDIA);
+                       select_query = g_strdup_printf(SELECT_FACE_COUNT, DB_VIEW_MEDIA);
                break;
+
        default:
-               media_content_error("Invalid group type [%d]", group_type);
+               content_error("Invalid group type [%d]", group_type);
                return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
        }
 
        ret = __media_db_make_query(filter, &condition_query, &option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       if (ret != MEDIA_CONTENT_ERROR_NONE) {
+               g_free(select_query);
+               return ret;
+       }
 
        ret = _content_query_prepare(select_query, condition_query, option_query, &stmt);
-       SAFE_FREE(condition_query);
-       SAFE_FREE(option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       g_free(select_query);
+       g_free(condition_query);
+       g_free(option_query);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        if (sqlite3_step(stmt) == SQLITE_ROW)
                *group_count = sqlite3_column_int(stmt, 0);
@@ -287,25 +271,24 @@ int _media_db_get_media_group_count(media_group_e group, filter_h filter, int *g
        char *tmp_option = NULL;
        filter_s *_filter = (filter_s *)filter;
 
-       memset(select_query, 0x00, sizeof(select_query));
        if (group < MEDIA_PVR_GROUP_DURATION) { /*media content*/
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
+               if (_filter && STRING_VALID(_filter->storage_id))
                        snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_COUNT, __media_db_get_group_name(group), _filter->storage_id);
                else
                        snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_COUNT, __media_db_get_group_name(group), DB_VIEW_MEDIA);
        } else if (group < MEDIA_UHD_GROUP_CONTENT_TITLE) { /*pvr content*/
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
+               if (_filter && STRING_VALID(_filter->storage_id))
                        snprintf(select_query, sizeof(select_query), SELECT_PVR_GROUP_COUNT_BY_STORAGE_ID, __media_db_get_group_name(group), _filter->storage_id);
                else
                        snprintf(select_query, sizeof(select_query), SELECT_PVR_GROUP_COUNT, __media_db_get_group_name(group));
        } else { /*uhd content*/
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
+               if (_filter && STRING_VALID(_filter->storage_id))
                        snprintf(select_query, sizeof(select_query), SELECT_UHD_GROUP_COUNT_BY_STORAGE_ID, __media_db_get_group_name(group), _filter->storage_id);
                else
                        snprintf(select_query, sizeof(select_query), SELECT_UHD_GROUP_COUNT, __media_db_get_group_name(group));
        }
        ret = __media_db_make_query(filter, &condition_query, &option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        if (option_query) {
                tmp_option = g_strconcat(option_query, ")", NULL);
@@ -316,9 +299,9 @@ int _media_db_get_media_group_count(media_group_e group, filter_h filter, int *g
        }
 
        ret = _content_query_prepare(select_query, condition_query, option_query, &stmt);
-       SAFE_FREE(condition_query);
-       SAFE_FREE(option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       g_free(condition_query);
+       g_free(option_query);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        if (sqlite3_step(stmt) == SQLITE_ROW)
                *group_count = sqlite3_column_int(stmt, 0);
@@ -337,40 +320,40 @@ int _media_db_get_media_group(media_group_e group, filter_h filter, media_group_
        char *name = NULL;
        sqlite3_stmt *stmt = NULL;
        filter_s *_filter = (filter_s *)filter;
-       memset(select_query, 0x00, sizeof(select_query));
+
        if (group < MEDIA_PVR_GROUP_DURATION) { /*media content */
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
+               if (_filter && STRING_VALID(_filter->storage_id))
                        snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_LIST, __media_db_get_group_name(group), _filter->storage_id);
                else
                        snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_LIST, __media_db_get_group_name(group), DB_VIEW_MEDIA);
        } else if (group < MEDIA_UHD_GROUP_CONTENT_TITLE) { /*pvr content */
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
+               if (_filter && STRING_VALID(_filter->storage_id))
                        snprintf(select_query, sizeof(select_query), SELECT_PVR_GROUP_LIST_BY_STORAGE_ID, __media_db_get_group_name(group), _filter->storage_id);
                else
                        snprintf(select_query, sizeof(select_query), SELECT_PVR_GROUP_LIST, __media_db_get_group_name(group));
        } else { /* uhd content */
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
+               if (_filter && STRING_VALID(_filter->storage_id))
                        snprintf(select_query, sizeof(select_query), SELECT_UHD_GROUP_LIST_BY_STORAGE_ID, __media_db_get_group_name(group), _filter->storage_id);
                else
                        snprintf(select_query, sizeof(select_query), SELECT_UHD_GROUP_LIST, __media_db_get_group_name(group));
        }
        ret = __media_db_make_query(filter, &condition_query, &option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        ret = _content_query_prepare(select_query, condition_query, option_query, &stmt);
-       SAFE_FREE(condition_query);
-       SAFE_FREE(option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       g_free(condition_query);
+       g_free(option_query);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        while (sqlite3_step(stmt) == SQLITE_ROW) {
                name = g_strdup((const char *)sqlite3_column_text(stmt, 0));
 
                if (callback(name, user_data) == false) {
-                       SAFE_FREE(name);
+                       g_free(name);
                        break;
                }
 
-               SAFE_FREE(name);
+               g_free(name);
        }
 
        SQLITE3_FINALIZE(stmt);
@@ -389,34 +372,28 @@ int _media_db_get_media_group_and_count(media_group_e group, filter_h filter, me
        sqlite3_stmt *stmt = NULL;
        filter_s *_filter = (filter_s *)filter;
 
-       memset(select_query, 0x00, sizeof(select_query));
-       memset(group_query, 0x00, sizeof(group_query));
-
-       char* group_name = __media_db_get_group_name(group);
-       if (!STRING_VALID(group_name)) {
-               ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-               media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
-       }
+       const char* group_name = __media_db_get_group_name(group);
+       content_retip_if_fail(STRING_VALID(group_name));
 
        if (group < MEDIA_PVR_GROUP_DURATION) { /*media content*/
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
+               if (_filter && STRING_VALID(_filter->storage_id))
                        snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_AND_COUNT, group_name, _filter->storage_id);
                else
                        snprintf(select_query, sizeof(select_query), SELECT_MEDIA_GROUP_AND_COUNT, group_name, DB_VIEW_MEDIA);
        } else if (group < MEDIA_UHD_GROUP_CONTENT_TITLE) {/*pvr content*/
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
+               if (_filter && STRING_VALID(_filter->storage_id))
                        snprintf(select_query, sizeof(select_query), SELECT_PVR_GROUP_AND_COUNT_BY_STORAGE_ID, group_name, _filter->storage_id);
                else
                        snprintf(select_query, sizeof(select_query), SELECT_PVR_GROUP_AND_COUNT, group_name);
        } else {/*uhd content*/
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
+               if (_filter && STRING_VALID(_filter->storage_id))
                        snprintf(select_query, sizeof(select_query), SELECT_UHD_GROUP_AND_COUNT_BY_STORAGE_ID, group_name, _filter->storage_id);
                else
                        snprintf(select_query, sizeof(select_query), SELECT_UHD_GROUP_AND_COUNT, group_name);
        }
 
        ret = __media_db_make_query(filter, &condition_query, &option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        if (STRING_VALID(option_query))
                snprintf(group_query, sizeof(group_query), "GROUP BY %s %s", group_name, option_query);
@@ -424,20 +401,19 @@ int _media_db_get_media_group_and_count(media_group_e group, filter_h filter, me
                snprintf(group_query, sizeof(group_query), "GROUP BY %s", group_name);
 
        ret = _content_query_prepare(select_query, condition_query, group_query, &stmt);
-       SAFE_FREE(condition_query);
-       SAFE_FREE(option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       g_free(condition_query);
+       g_free(option_query);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        while (sqlite3_step(stmt) == SQLITE_ROW) {
-               if (STRING_VALID((const char *)sqlite3_column_text(stmt, 0)))
-                       name = strdup((const char *)sqlite3_column_text(stmt, 0));
+               name = g_strdup((const char *)sqlite3_column_text(stmt, 0));
 
                if (callback(name, sqlite3_column_int(stmt, 1), user_data) == false) {
-                       SAFE_FREE(name);
+                       g_free(name);
                        break;
                }
 
-               SAFE_FREE(name);
+               g_free(name);
        }
 
        SQLITE3_FINALIZE(stmt);
@@ -452,47 +428,34 @@ int _media_db_get_group_count(filter_h filter, group_list_e group_type, int *gro
        char *select_query = NULL;
        char *condition_query = NULL;
        char *option_query = NULL;
-       filter_s *_filter = (filter_s *)filter;
 
        switch (group_type) {
        case MEDIA_GROUP_ALBUM:
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       select_query = g_strdup_printf(SELECT_ALBUM_COUNT_BY_STORAGE_ID, _filter->storage_id);
-               else
-                       select_query = g_strdup(SELECT_ALBUM_COUNT);
-
+               select_query = g_strdup(SELECT_ALBUM_COUNT);
                break;
-       case MEDIA_GROUP_FOLDER:
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       select_query = g_strdup_printf(SELECT_FOLDER_COUNT_BY_STORAGE_ID, _filter->storage_id);
-               else
-                       select_query = g_strdup(SELECT_FOLDER_COUNT);
 
+       case MEDIA_GROUP_FOLDER:
+               select_query = g_strdup(SELECT_FOLDER_COUNT);
                break;
+// LCOV_EXCL_START
        case MEDIA_GROUP_PLAYLIST:
                select_query = g_strdup(SELECT_PLAYLIST_COUNT);
                break;
+
        case MEDIA_GROUP_TAG:
                select_query = g_strdup(SELECT_TAG_COUNT);
                break;
-       case MEDIA_GROUP_BOOKMARK:
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       select_query = g_strdup_printf(SELECT_BOOKMARK_COUNT_BY_STORAGE_ID, _filter->storage_id);
-               else
-                       select_query = g_strdup(SELECT_BOOKMARK_COUNT);
 
+       case MEDIA_GROUP_BOOKMARK:
+               select_query = g_strdup(SELECT_BOOKMARK_COUNT);
                break;
-       case MEDIA_GROUP_STORAGE:
-               select_query = g_strdup(SELECT_STORAGE_COUNT);
-               break;
+
        case MEDIA_GROUP_FACE:
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       select_query = g_strdup_printf(SELECT_FACE_COUNT_BY_STORAGE_ID, _filter->storage_id);
-               else
-                       select_query = g_strdup(SELECT_FACE_COUNT);
+               select_query = g_strdup(SELECT_FACE_COUNT);
                break;
+// LCOV_EXCL_STOP
        default:
-               media_content_error("Invalid group type [%d]", group_type);
+               content_error("Invalid group type [%d]", group_type);
                return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
        }
 
@@ -506,7 +469,7 @@ int _media_db_get_group_count(filter_h filter, group_list_e group_type, int *gro
        g_free(select_query);
        g_free(condition_query);
        g_free(option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        if (sqlite3_step(stmt) == SQLITE_ROW)
                *group_count = sqlite3_column_int(stmt, 0);
@@ -523,12 +486,8 @@ int _media_db_get_media_group_count(media_group_e group, filter_h filter, int *g
        char *select_query = NULL;
        char *condition_query = NULL;
        char *option_query = NULL;
-       filter_s *_filter = (filter_s *)filter;
 
-       if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-               select_query = g_strdup_printf(SELECT_MEDIA_GROUP_COUNT_BY_STORAGE_ID, __media_db_get_group_name(group), __media_db_get_group_name(group), _filter->storage_id);
-       else
-               select_query = g_strdup_printf(SELECT_MEDIA_GROUP_COUNT, __media_db_get_group_name(group), __media_db_get_group_name(group));
+       select_query = g_strdup_printf(SELECT_MEDIA_GROUP_COUNT, __media_db_get_group_name(group), __media_db_get_group_name(group));
 
        ret = __media_db_make_query(filter, &condition_query, &option_query);
        if (ret != MEDIA_CONTENT_ERROR_NONE) {
@@ -540,7 +499,7 @@ int _media_db_get_media_group_count(media_group_e group, filter_h filter, int *g
        g_free(select_query);
        g_free(condition_query);
        g_free(option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        if (sqlite3_step(stmt) == SQLITE_ROW)
                *group_count = sqlite3_column_int(stmt, 0);
@@ -558,12 +517,8 @@ int _media_db_get_media_group(media_group_e group, filter_h filter, media_group_
        char *option_query = NULL;
        char *name = NULL;
        sqlite3_stmt *stmt = NULL;
-       filter_s *_filter = (filter_s *)filter;
 
-       if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-               select_query = g_strdup_printf(SELECT_MEDIA_GROUP_LIST_BY_STORAGE_ID, __media_db_get_group_name(group), _filter->storage_id);
-       else
-               select_query = g_strdup_printf(SELECT_MEDIA_GROUP_LIST, __media_db_get_group_name(group));
+       select_query = g_strdup_printf(SELECT_MEDIA_GROUP_LIST, __media_db_get_group_name(group));
 
        ret = __media_db_make_query(filter, &condition_query, &option_query);
        if (ret != MEDIA_CONTENT_ERROR_NONE) {
@@ -575,17 +530,17 @@ int _media_db_get_media_group(media_group_e group, filter_h filter, media_group_
        g_free(select_query);
        g_free(condition_query);
        g_free(option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        while (sqlite3_step(stmt) == SQLITE_ROW) {
                name = g_strdup((const char *)sqlite3_column_text(stmt, 0));
 
                if (callback(name, user_data) == false) {
-                       SAFE_FREE(name);
+                       g_free(name);
                        break;
                }
 
-               SAFE_FREE(name);
+               g_free(name);
        }
 
        SQLITE3_FINALIZE(stmt);
@@ -597,40 +552,33 @@ int _media_db_get_media_group(media_group_e group, filter_h filter, media_group_
 int _media_db_get_album(filter_h filter, media_album_cb callback, void *user_data)
 {
        int ret = MEDIA_CONTENT_ERROR_NONE;
-       char select_query[MAX_QUERY_SIZE] = {0, };
+       char *select_query = NULL;
        char *condition_query = NULL;
        char *option_query = NULL;
        sqlite3_stmt *stmt = NULL;
-       filter_s *_filter = (filter_s *)filter;
-
-       memset(select_query, 0x00, sizeof(select_query));
 #ifdef _USE_TVPD_MODE
-       if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-               snprintf(select_query, sizeof(select_query), SELECT_ALBUM_LIST, _filter->storage_id);
+       filter_s *_filter = (filter_s *)filter;
+       if (_filter && STRING_VALID(_filter->storage_id))
+               select_query = g_strdup_printf(SELECT_ALBUM_LIST, _filter->storage_id);
        else
-               snprintf(select_query, sizeof(select_query), SELECT_ALBUM_LIST, DB_VIEW_MEDIA);
+               select_query = g_strdup_printf(SELECT_ALBUM_LIST, DB_VIEW_MEDIA);
 #else
-       if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-               snprintf(select_query, sizeof(select_query), SELECT_ALBUM_LIST_BY_STORAGE_ID, _filter->storage_id);
-       else
-               snprintf(select_query, sizeof(select_query), SELECT_ALBUM_LIST);
+       select_query = g_strdup(SELECT_ALBUM_LIST);
 #endif
        ret = __media_db_make_query(filter, &condition_query, &option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       if (ret != MEDIA_CONTENT_ERROR_NONE) {
+               g_free(select_query);
+               return ret;
+       }
 
        ret = _content_query_prepare(select_query, condition_query, option_query, &stmt);
-       SAFE_FREE(condition_query);
-       SAFE_FREE(option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       g_free(select_query);
+       g_free(condition_query);
+       g_free(option_query);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        while (sqlite3_step(stmt) == SQLITE_ROW) {
-               media_album_s *album = (media_album_s*)calloc(1, sizeof(media_album_s));
-
-               if (album == NULL) {
-                       media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
-                       SQLITE3_FINALIZE(stmt);
-                       return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
-               }
+               media_album_s *album = g_new0(media_album_s, 1);
 
                album->album_id = sqlite3_column_int(stmt, 0);
                album->name = g_strdup((const char *)sqlite3_column_text(stmt, 1));
@@ -653,46 +601,37 @@ int _media_db_get_album(filter_h filter, media_album_cb callback, void *user_dat
 int _media_db_get_folder(filter_h filter, media_folder_cb callback, void *user_data)
 {
        int ret = MEDIA_CONTENT_ERROR_NONE;
-       char select_query[MAX_QUERY_SIZE] = {0, };
+       char *select_query = NULL;
        char *condition_query = NULL;
        char *option_query = NULL;
        sqlite3_stmt *stmt = NULL;
-       filter_s *_filter = (filter_s *)filter;
-
-       memset(select_query, 0x00, sizeof(select_query));
 #ifdef _USE_TVPD_MODE
-       if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-               snprintf(select_query, sizeof(select_query), SELECT_FOLDER_LIST_BY_STORAGE_ID, _filter->storage_id, _filter->storage_id);
+       filter_s *_filter = (filter_s *)filter;
+       if (_filter && STRING_VALID(_filter->storage_id))
+               select_query = g_strdup_printf(SELECT_FOLDER_LIST_BY_STORAGE_ID, _filter->storage_id, _filter->storage_id);
        else
-               snprintf(select_query, sizeof(select_query), SELECT_FOLDER_LIST, DB_VIEW_MEDIA);
+               select_query = g_strdup_printf(SELECT_FOLDER_LIST, DB_VIEW_MEDIA);
 #else
-       if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-               snprintf(select_query, sizeof(select_query), SELECT_FOLDER_LIST_BY_STORAGE_ID, _filter->storage_id);
-       else
-               snprintf(select_query, sizeof(select_query), SELECT_FOLDER_LIST);
+       select_query = g_strdup(SELECT_FOLDER_LIST);
 #endif
        ret = __media_db_make_query(filter, &condition_query, &option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       if (ret != MEDIA_CONTENT_ERROR_NONE) {
+               g_free(select_query);
+               return ret;
+       }
 
        ret = _content_query_prepare(select_query, condition_query, option_query, &stmt);
-       SAFE_FREE(condition_query);
-       SAFE_FREE(option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       g_free(select_query);
+       g_free(condition_query);
+       g_free(option_query);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        while (sqlite3_step(stmt) == SQLITE_ROW) {
-               media_folder_s *_folder = (media_folder_s*)calloc(1, sizeof(media_folder_s));
-
-               if (_folder == NULL) {
-                       media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
-                       SQLITE3_FINALIZE(stmt);
-                       return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
-               }
-
-               _folder->folder_id = g_strdup((const char *)sqlite3_column_text(stmt, 0));
+               media_folder_s *_folder = g_new0(media_folder_s, 1);
+               _folder->folder_id = g_strdup_printf("%lld", sqlite3_column_int64(stmt, 0));
                _folder->path = g_strdup((const char *)sqlite3_column_text(stmt, 1));
                _folder->name = g_strdup((const char *)sqlite3_column_text(stmt, 2));
-               _folder->storage_type = sqlite3_column_int(stmt, 3);
-               _folder->storage_uuid = g_strdup((const char *)sqlite3_column_text(stmt, 4));
+               _folder->storage_uuid = g_strdup((const char *)sqlite3_column_text(stmt, 3));
 
                if (callback((media_folder_h)_folder, user_data) == false) {
                        media_folder_destroy((media_folder_h) _folder);
@@ -706,7 +645,7 @@ int _media_db_get_folder(filter_h filter, media_folder_cb callback, void *user_d
 
        return ret;
 }
-
+// LCOV_EXCL_START
 int _media_db_get_playlist(filter_h filter, media_playlist_cb callback, void *user_data)
 {
        int ret = MEDIA_CONTENT_ERROR_NONE;
@@ -715,21 +654,15 @@ int _media_db_get_playlist(filter_h filter, media_playlist_cb callback, void *us
        sqlite3_stmt *stmt = NULL;
 
        ret = __media_db_make_query(filter, &condition_query, &option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        ret = _content_query_prepare(SELECT_PLAYLIST_LIST, condition_query, option_query, &stmt);
-       SAFE_FREE(condition_query);
-       SAFE_FREE(option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       g_free(condition_query);
+       g_free(option_query);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        while (sqlite3_step(stmt) == SQLITE_ROW) {
-               media_playlist_s *_playlist = (media_playlist_s*)calloc(1, sizeof(media_playlist_s));
-
-               if (_playlist == NULL) {
-                       media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
-                       SQLITE3_FINALIZE(stmt);
-                       return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
-               }
+               media_playlist_s *_playlist = g_new0(media_playlist_s, 1);
 
                _playlist->playlist_id = sqlite3_column_int(stmt, 0);
                _playlist->name = g_strdup((const char *)sqlite3_column_text(stmt, 1));
@@ -767,19 +700,13 @@ int _media_db_get_playlist_item(int playlist_id, filter_h filter, playlist_membe
        g_free(select_query);
        g_free(condition_query);
        g_free(option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        while (sqlite3_step(stmt) == SQLITE_ROW) {
                int playlist_member_id = 0;
                playlist_member_id = sqlite3_column_int(stmt, MEDIA_INFO_ITEM_MAX);     /*MEDIA_INFO_ITEM_MAX is pm_id*/
 
-               media_info_s *_media = (media_info_s*)calloc(1, sizeof(media_info_s));
-
-               if (_media == NULL) {
-                       media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
-                       SQLITE3_FINALIZE(stmt);
-                       return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
-               }
+               media_info_s *_media = g_new0(media_info_s, 1);
 
                _media_info_item_get_detail(stmt, (media_info_h)_media);
 
@@ -819,16 +746,10 @@ int _media_db_get_tag(const char *media_id, filter_h filter, media_tag_cb callba
        g_free(select_query);
        g_free(condition_query);
        g_free(option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        while (sqlite3_step(stmt) == SQLITE_ROW) {
-               media_tag_s *_tag = (media_tag_s*)calloc(1, sizeof(media_tag_s));
-
-               if (_tag == NULL) {
-                       media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
-                       SQLITE3_FINALIZE(stmt);
-                       return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
-               }
+               media_tag_s *_tag = g_new0(media_tag_s, 1);
 
                _tag->tag_id = sqlite3_column_int(stmt, 0);
                _tag->name = g_strdup((const char *)sqlite3_column_text(stmt, 1));
@@ -848,52 +769,44 @@ int _media_db_get_tag(const char *media_id, filter_h filter, media_tag_cb callba
 int _media_db_get_bookmark(const char *media_id, filter_h filter, media_bookmark_cb callback, void *user_data)
 {
        int ret = MEDIA_CONTENT_ERROR_NONE;
-       char select_query[MAX_QUERY_SIZE] = {0, };
+       char *select_query = NULL;
        char *condition_query = NULL;
        char *option_query = NULL;
        sqlite3_stmt *stmt = NULL;
-       filter_s *_filter = (filter_s *)filter;
-
-       memset(select_query, 0x00, sizeof(select_query));
 #ifdef _USE_TVPD_MODE
+       filter_s *_filter = (filter_s *)filter;
        if (STRING_VALID(media_id)) {   //get bookmark by media_id
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       snprintf(select_query, sizeof(select_query), SELECT_BOOKMARK_LIST_BY_MEDIA_ID, _filter->storage_id, media_id);
+               if (_filter && STRING_VALID(_filter->storage_id))
+                       select_query = g_strdup_printf(SELECT_BOOKMARK_LIST_BY_MEDIA_ID, _filter->storage_id, media_id);
                else
-                       snprintf(select_query, sizeof(select_query), SELECT_BOOKMARK_LIST_BY_MEDIA_ID, DB_VIEW_MEDIA, media_id);
+                       select_query = g_strdup_printf(SELECT_BOOKMARK_LIST_BY_MEDIA_ID, DB_VIEW_MEDIA, media_id);
        } else {
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       snprintf(select_query, sizeof(select_query), SELECT_BOOKMARK_LIST, _filter->storage_id);
+               if (_filter && STRING_VALID(_filter->storage_id))
+                       select_query = g_strdup_printf(SELECT_BOOKMARK_LIST, _filter->storage_id);
                else
-                       snprintf(select_query, sizeof(select_query), SELECT_BOOKMARK_LIST, DB_VIEW_MEDIA);
+                       select_query = g_strdup_printf(SELECT_BOOKMARK_LIST, DB_VIEW_MEDIA);
        }
 #else
-       if (STRING_VALID(media_id)) {   //get bookmark by media_id
-               snprintf(select_query, sizeof(select_query), SELECT_BOOKMARK_LIST_BY_MEDIA_ID, media_id);
-       } else {
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       snprintf(select_query, sizeof(select_query), SELECT_BOOKMARK_LIST_BY_STORAGE_ID, _filter->storage_id);
-               else
-                       snprintf(select_query, sizeof(select_query), SELECT_BOOKMARK_LIST);
-       }
+       if (STRING_VALID(media_id))
+               select_query = g_strdup_printf(SELECT_BOOKMARK_LIST_BY_MEDIA_ID, media_id);
+       else
+               select_query = g_strdup(SELECT_BOOKMARK_LIST);
 #endif
 
        ret = __media_db_make_query(filter, &condition_query, &option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       if (ret != MEDIA_CONTENT_ERROR_NONE) {
+               g_free(select_query);
+               return ret;
+       }
 
        ret = _content_query_prepare(select_query, condition_query, option_query, &stmt);
-       SAFE_FREE(condition_query);
-       SAFE_FREE(option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       g_free(select_query);
+       g_free(condition_query);
+       g_free(option_query);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        while (sqlite3_step(stmt) == SQLITE_ROW) {
-               media_bookmark_s *bookmark = (media_bookmark_s*)calloc(1, sizeof(media_bookmark_s));
-
-               if (bookmark == NULL) {
-                       media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
-                       SQLITE3_FINALIZE(stmt);
-                       return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
-               }
+               media_bookmark_s *bookmark = g_new0(media_bookmark_s, 1);
 
                bookmark->bookmark_id = sqlite3_column_int(stmt, 0);
                bookmark->media_id = g_strdup((const char *)sqlite3_column_text(stmt, 1));
@@ -918,51 +831,43 @@ int _media_db_get_bookmark(const char *media_id, filter_h filter, media_bookmark
 int _media_db_get_face(const char *media_id, filter_h filter, media_face_cb callback, void *user_data)
 {
        int ret = MEDIA_CONTENT_ERROR_NONE;
-       char select_query[MAX_QUERY_SIZE] = {0, };
+       char *select_query = NULL;
        char *condition_query = NULL;
        char *option_query = NULL;
        sqlite3_stmt *stmt = NULL;
-       filter_s *_filter = (filter_s *)filter;
-
-       memset(select_query, 0x00, sizeof(select_query));
 #ifdef _USE_TVPD_MODE
+       filter_s *_filter = (filter_s *)filter;
        if (STRING_VALID(media_id)) {   //get face by media_id
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       snprintf(select_query, sizeof(select_query), SELECT_FACE_LIST_BY_MEDIA_ID, _filter->storage_id, media_id);
+               if (_filter && STRING_VALID(_filter->storage_id))
+                       select_query = g_strdup_printf(SELECT_FACE_LIST_BY_MEDIA_ID, _filter->storage_id, media_id);
                else
-                       snprintf(select_query, sizeof(select_query), SELECT_FACE_LIST_BY_MEDIA_ID, DB_VIEW_MEDIA, media_id);
+                       select_query = g_strdup_printf(SELECT_FACE_LIST_BY_MEDIA_ID, DB_VIEW_MEDIA, media_id);
        } else {
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       snprintf(select_query, sizeof(select_query), SELECT_FACE_LIST, _filter->storage_id);
+               if (_filter && STRING_VALID(_filter->storage_id))
+                       select_query = g_strdup_printf(SELECT_FACE_LIST, _filter->storage_id);
                else
-                       snprintf(select_query, sizeof(select_query), SELECT_FACE_LIST, DB_VIEW_MEDIA);
+                       select_query = g_strdup_printf(SELECT_FACE_LIST, DB_VIEW_MEDIA);
        }
 #else
-       if (STRING_VALID(media_id)) {   //get face by media_id
-               snprintf(select_query, sizeof(select_query), SELECT_FACE_LIST_BY_MEDIA_ID, media_id);
-       } else {
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       snprintf(select_query, sizeof(select_query), SELECT_FACE_LIST_BY_STORAGE_ID, _filter->storage_id);
-               else
-                       snprintf(select_query, sizeof(select_query), SELECT_FACE_LIST);
-       }
+       if (STRING_VALID(media_id))
+               select_query = g_strdup_printf(SELECT_FACE_LIST_BY_MEDIA_ID, media_id);
+       else
+               select_query = g_strdup(SELECT_FACE_LIST);
 #endif
        ret = __media_db_make_query(filter, &condition_query, &option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       if (ret != MEDIA_CONTENT_ERROR_NONE) {
+               g_free(select_query);
+               return ret;
+       }
 
        ret = _content_query_prepare(select_query, condition_query, option_query, &stmt);
-       SAFE_FREE(condition_query);
-       SAFE_FREE(option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       g_free(select_query);
+       g_free(condition_query);
+       g_free(option_query);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        while (sqlite3_step(stmt) == SQLITE_ROW) {
-               media_face_s *face = (media_face_s*)calloc(1, sizeof(media_face_s));
-
-               if (face == NULL) {
-                       media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
-                       SQLITE3_FINALIZE(stmt);
-                       return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
-               }
+               media_face_s *face = g_new0(media_face_s, 1);
 
                face->face_id = sqlite3_column_int(stmt, 0);
                face->media_id = g_strdup((const char *)sqlite3_column_text(stmt, 1));
@@ -986,46 +891,53 @@ int _media_db_get_face(const char *media_id, filter_h filter, media_face_cb call
        return ret;
 
 }
-
+// LCOV_EXCL_STOP
 int _media_db_get_group_item_count_by_id(int group_id, filter_h filter, group_list_e group_type, int *item_count)
 {
        int ret = MEDIA_CONTENT_ERROR_NONE;
        sqlite3_stmt *stmt = NULL;
-       char select_query[MAX_QUERY_SIZE] = {0, };
+       char *select_query = NULL;
        char *condition_query = NULL;
        char *option_query = NULL;
+#ifdef _USE_TVPD_MODE
        filter_s *_filter = (filter_s *)filter;
-
-       memset(select_query, 0x00, sizeof(select_query));
-
-       if (group_type == MEDIA_GROUP_ALBUM) {
+#endif
+       switch (group_type) {
+       case MEDIA_GROUP_ALBUM:
 #ifdef _USE_TVPD_MODE
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_ALBUM, _filter->storage_id, group_id);
+               if (_filter && STRING_VALID(_filter->storage_id))
+                       select_query = g_strdup_printf(SELECT_MEDIA_COUNT_FROM_ALBUM, _filter->storage_id, group_id);
                else
-                       snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_ALBUM, DB_VIEW_MEDIA, group_id);
+                       select_query = g_strdup_printf(SELECT_MEDIA_COUNT_FROM_ALBUM, DB_VIEW_MEDIA, group_id);
 #else
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_ALBUM_BY_STORAGE_ID, group_id, _filter->storage_id);
-               else
-                       snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_ALBUM, group_id);
+               select_query = g_strdup_printf(SELECT_MEDIA_COUNT_FROM_ALBUM, group_id);
 #endif
-       } else if (group_type == MEDIA_GROUP_PLAYLIST) {
-               snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_PLAYLIST, group_id);
-       } else if (group_type == MEDIA_GROUP_TAG) {
-               snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_TAG, group_id);
-       } else {
-               media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
+               break;
+// LCOV_EXCL_START
+       case MEDIA_GROUP_PLAYLIST:
+               select_query = g_strdup_printf(SELECT_MEDIA_COUNT_FROM_PLAYLIST, group_id);
+               break;
+
+       case MEDIA_GROUP_TAG:
+               select_query = g_strdup_printf(SELECT_MEDIA_COUNT_FROM_TAG, group_id);
+               break;
+// LCOV_EXCL_STOP
+       default:
+               content_error("INVALID_PARAMETER");
                return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
        }
 
        ret = __media_db_make_query(filter, &condition_query, &option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       if (ret != MEDIA_CONTENT_ERROR_NONE) {
+               g_free(select_query);
+               return ret;
+       }
 
        ret = _content_query_prepare(select_query, condition_query, option_query, &stmt);
-       SAFE_FREE(condition_query);
-       SAFE_FREE(option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       g_free(select_query);
+       g_free(condition_query);
+       g_free(option_query);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        if (sqlite3_step(stmt) == SQLITE_ROW)
                *item_count = sqlite3_column_int(stmt, 0);
@@ -1039,108 +951,93 @@ int _media_db_get_group_item_count(const char *group_name, filter_h filter, grou
 {
        int ret = MEDIA_CONTENT_ERROR_NONE;
        sqlite3_stmt *stmt = NULL;
-       char select_query[MAX_QUERY_SIZE] = {0, };
+       char *select_query = NULL;
        char *condition_query = NULL;
        char *option_query = NULL;
        char *tmp_option = NULL;
        bool need_bracket = false;
        filter_s *_filter = (filter_s *)filter;
 
-       memset(select_query, 0x00, sizeof(select_query));
-
-       if (group_type == MEDIA_GROUP_NONE) {
-               /* There are 2 ways to get count for media table for performance
-                       If user wants to set offset and count, use SQL SELECT_MEDIA_COUNT_FROM_MEDIA.
-                       If user wants to get count without setting count, SELECT_MEDIA_COUNT_FROM_MEDIA_SIMPLE */
-               if (_filter) {
-                       if (_filter->offset < 0 && _filter->count < 0) {
+       switch (group_type) {
+       case MEDIA_GROUP_NONE:
+               if (!_filter) {
 #ifdef _USE_TVPD_MODE
-                               if (STRING_VALID(_filter->storage_id))
-                                       snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_MEDIA_SIMPLE, _filter->storage_id);
-                               else
-                                       snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_MEDIA_SIMPLE, DB_VIEW_MEDIA);
+                       select_query = g_strdup_printf(SELECT_MEDIA_COUNT_FROM_MEDIA_SIMPLE, DB_VIEW_MEDIA);
 #else
-                               if (STRING_VALID(_filter->storage_id))
-                                       snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_MEDIA_SIMPLE_BY_STORAGE_ID, _filter->storage_id);
-                               else
-                                       snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_MEDIA_SIMPLE);
+                       select_query = g_strdup(SELECT_MEDIA_COUNT_FROM_MEDIA_SIMPLE);
 #endif
-                       } else {
+                       break;
+               }
+
+               if (_filter->offset < 0 && _filter->count < 0) {
 #ifdef _USE_TVPD_MODE
-                               snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_MEDIA, DB_VIEW_MEDIA);
+                       if (STRING_VALID(_filter->storage_id))
+                               select_query = g_strdup_printf(SELECT_MEDIA_COUNT_FROM_MEDIA_SIMPLE, _filter->storage_id);
+                       else
+                               select_query = g_strdup_printf(SELECT_MEDIA_COUNT_FROM_MEDIA_SIMPLE, DB_VIEW_MEDIA);
 #else
-                               snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_MEDIA);
+                       select_query = g_strdup(SELECT_MEDIA_COUNT_FROM_MEDIA_SIMPLE);
 #endif
-                               need_bracket = true;
-                       }
                } else {
 #ifdef _USE_TVPD_MODE
-                       snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_MEDIA_SIMPLE, DB_VIEW_MEDIA);
+                       if (STRING_VALID(_filter->storage_id))
+                               select_query = g_strdup_printf(SELECT_MEDIA_COUNT_FROM_MEDIA, _filter->storage_id);
+                       else
+                               select_query = g_strdup_printf(SELECT_MEDIA_COUNT_FROM_MEDIA, DB_VIEW_MEDIA);
 #else
-                       snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_MEDIA_SIMPLE);
+                       select_query = g_strdup(SELECT_MEDIA_COUNT_FROM_MEDIA);
 #endif
+                       need_bracket = true;
                }
-       } else if (group_type == MEDIA_GROUP_FOLDER) {
-#ifdef _USE_TVPD_MODE
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       sqlite3_snprintf(sizeof(select_query), select_query, SELECT_MEDIA_COUNT_FROM_FOLDER, _filter->storage_id, group_name);
-               else
-                       sqlite3_snprintf(sizeof(select_query), select_query, SELECT_MEDIA_COUNT_FROM_FOLDER, DB_VIEW_MEDIA, group_name);
-#else
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       sqlite3_snprintf(sizeof(select_query), select_query, SELECT_MEDIA_COUNT_FROM_FOLDER_BY_STORAGE_ID, group_name, _filter->storage_id);
-               else
-                       sqlite3_snprintf(sizeof(select_query), select_query, SELECT_MEDIA_COUNT_FROM_FOLDER, group_name);
-#endif
+               break;
 
-       } else if (group_type == MEDIA_GROUP_TAG_BY_MEDIA_ID) {
-               snprintf(select_query, sizeof(select_query), SELECT_TAG_COUNT_BY_MEDIA_ID, group_name);
-       } else if (group_type == MEDIA_GROUP_BOOKMARK_BY_MEDIA_ID) {
+       case MEDIA_GROUP_FOLDER:
 #ifdef _USE_TVPD_MODE
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       sqlite3_snprintf(sizeof(select_query), select_query, SELECT_BOOKMARK_COUNT_BY_MEDIA_ID, _filter->storage_id, group_name);
+               if (_filter && STRING_VALID(_filter->storage_id))
+                       select_query = g_strdup_printf(SELECT_MEDIA_COUNT_FROM_FOLDER, _filter->storage_id, group_name);
                else
-                       sqlite3_snprintf(sizeof(select_query), select_query, SELECT_BOOKMARK_COUNT_BY_MEDIA_ID, DB_VIEW_MEDIA, group_name);
+                       select_query = g_strdup_printf(SELECT_MEDIA_COUNT_FROM_FOLDER, DB_VIEW_MEDIA, group_name);
 #else
-               sqlite3_snprintf(sizeof(select_query), select_query, SELECT_BOOKMARK_COUNT_BY_MEDIA_ID, group_name);
+               select_query = g_strdup_printf(SELECT_MEDIA_COUNT_FROM_FOLDER, group_name);
 #endif
+               break;
 
-       } else if (group_type == MEDIA_GROUP_STORAGE) {
-#ifdef _USE_TVPD_MODE
-               sqlite3_snprintf(sizeof(select_query), select_query, SELECT_MEDIA_COUNT_FROM_STORAGE, group_name, group_name);
-#else
-               sqlite3_snprintf(sizeof(select_query), select_query, SELECT_MEDIA_COUNT_FROM_STORAGE, group_name);
-#endif
+       case MEDIA_GROUP_TAG_BY_MEDIA_ID:
+               select_query = g_strdup_printf(SELECT_TAG_COUNT_BY_MEDIA_ID, group_name);
+               break;
 
-       } else if (group_type == MEDIA_GROUP_FACE_BY_MEDIA_ID) {
+       case MEDIA_GROUP_BOOKMARK_BY_MEDIA_ID:
 #ifdef _USE_TVPD_MODE
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       sqlite3_snprintf(sizeof(select_query), select_query, SELECT_FACE_COUNT_BY_MEDIA_ID, _filter->storage_id, group_name);
+               if (_filter && STRING_VALID(_filter->storage_id))
+                       select_query = g_strdup_printf(SELECT_BOOKMARK_COUNT_BY_MEDIA_ID, _filter->storage_id, group_name);
                else
-                       sqlite3_snprintf(sizeof(select_query), select_query, SELECT_FACE_COUNT_BY_MEDIA_ID, DB_VIEW_MEDIA, group_name);
+                       select_query = g_strdup_printf(SELECT_BOOKMARK_COUNT_BY_MEDIA_ID, DB_VIEW_MEDIA, group_name);
 #else
-               sqlite3_snprintf(sizeof(select_query), select_query, SELECT_FACE_COUNT_BY_MEDIA_ID, group_name);
+               select_query = g_strdup_printf(SELECT_BOOKMARK_COUNT_BY_MEDIA_ID, group_name);
 #endif
+               break;
 
+       case MEDIA_GROUP_FACE_BY_MEDIA_ID:
 #ifdef _USE_TVPD_MODE
-       } else if (group_type == MEDIA_GROUP_PVR) {
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       snprintf(select_query, sizeof(select_query), SELECT_PVR_COUNT_BY_STORAGE_ID, _filter->storage_id);
+               if (_filter && STRING_VALID(_filter->storage_id))
+                       select_query = g_strdup_printf(SELECT_FACE_COUNT_BY_MEDIA_ID, _filter->storage_id, group_name);
                else
-                       SAFE_STRLCAT(select_query, SELECT_PVR_COUNT, sizeof(select_query));
-       } else if (group_type == MEDIA_GROUP_UHD) {
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       snprintf(select_query, sizeof(select_query), SELECT_UHD_COUNT_BY_STORAGE_ID, _filter->storage_id);
-               else
-                       SAFE_STRLCAT(select_query, SELECT_UHD_COUNT, sizeof(select_query));
+                       select_query = g_strdup_printf(SELECT_FACE_COUNT_BY_MEDIA_ID, DB_VIEW_MEDIA, group_name);
+#else
+               select_query = g_strdup_printf(SELECT_FACE_COUNT_BY_MEDIA_ID, group_name);
 #endif
-       } else {
-               media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
+               break;
+
+       default:
+               content_error("INVALID_PARAMETER");
                return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
        }
 
        ret = __media_db_make_query(filter, &condition_query, &option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       if (ret != MEDIA_CONTENT_ERROR_NONE) {
+               g_free(select_query);
+               return ret;
+       }
 
        if (need_bracket) {
                tmp_option = g_strconcat(option_query, ")", NULL);
@@ -1149,9 +1046,10 @@ int _media_db_get_group_item_count(const char *group_name, filter_h filter, grou
        }
 
        ret = _content_query_prepare(select_query, condition_query, option_query, &stmt);
-       SAFE_FREE(condition_query);
-       SAFE_FREE(option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       g_free(select_query);
+       g_free(condition_query);
+       g_free(option_query);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        if (sqlite3_step(stmt) == SQLITE_ROW)
                *item_count = sqlite3_column_int(stmt, 0);
@@ -1164,70 +1062,67 @@ int _media_db_get_group_item_count(const char *group_name, filter_h filter, grou
 int _media_db_get_group_item_by_id(int group_id, filter_h filter, media_info_cb callback, void *user_data, group_list_e group_type)
 {
        int ret = MEDIA_CONTENT_ERROR_NONE;
-       char select_query[MAX_QUERY_SIZE] = {0, };
+       char *select_query = NULL;
        char *condition_query = NULL;
        char *option_query = NULL;
        sqlite3_stmt *stmt = NULL;
+#ifdef _USE_TVPD_MODE
        filter_s *_filter = (filter_s *)filter;
+#endif
 
-       memset(select_query, 0x00, sizeof(select_query));
-
+       switch (group_type) {
+       case MEDIA_GROUP_ALBUM:
 #ifdef _USE_TVPD_MODE
-       if (group_type == MEDIA_GROUP_ALBUM) {
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_ALBUM, _filter->storage_id, group_id);
-               else
-                       snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_ALBUM, DB_VIEW_MEDIA, group_id);
-       } else if (group_type == MEDIA_GROUP_PLAYLIST) {
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_PLAYLIST, _filter->storage_id, group_id);
+               if (_filter && STRING_VALID(_filter->storage_id))
+                       select_query = g_strdup_printf(SELECT_MEDIA_FROM_ALBUM, _filter->storage_id, group_id);
                else
-                       snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_PLAYLIST, DB_VIEW_MEDIA, group_id);
-       } else if (group_type == MEDIA_GROUP_TAG) {
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_TAG, _filter->storage_id, group_id);
-               else
-                       snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_TAG, DB_VIEW_MEDIA, group_id);
-       } else {
-               media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
-               return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-       }
+                       select_query = g_strdup_printf(SELECT_MEDIA_FROM_ALBUM, DB_VIEW_MEDIA, group_id);
 #else
-       if (group_type == MEDIA_GROUP_ALBUM) {
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_ALBUM_BY_STORAGE_ID, group_id, _filter->storage_id);
-               else
-                       snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_ALBUM, group_id);
-       } else if (group_type == MEDIA_GROUP_PLAYLIST) {
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_PLAYLIST_BY_STORAGE_ID, group_id, _filter->storage_id);
+               select_query = g_strdup_printf(SELECT_MEDIA_FROM_ALBUM, group_id);
+#endif
+               break;
+// LCOV_EXCL_START
+       case MEDIA_GROUP_PLAYLIST:
+#ifdef _USE_TVPD_MODE
+               if (_filter && STRING_VALID(_filter->storage_id))
+                       select_query = g_strdup_printf(SELECT_MEDIA_FROM_PLAYLIST, _filter->storage_id, group_id);
                else
-                       snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_PLAYLIST, group_id);
-       } else if (group_type == MEDIA_GROUP_TAG) {
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_TAG_BY_STORAGE_ID, group_id, _filter->storage_id);
+                       select_query = g_strdup_printf(SELECT_MEDIA_FROM_PLAYLIST, DB_VIEW_MEDIA, group_id);
+#else
+               select_query = g_strdup_printf(SELECT_MEDIA_FROM_PLAYLIST, group_id);
+#endif
+               break;
+
+       case MEDIA_GROUP_TAG:
+#ifdef _USE_TVPD_MODE
+               if (_filter && STRING_VALID(_filter->storage_id))
+                       select_query = g_strdup_printf(SELECT_MEDIA_FROM_TAG, _filter->storage_id, group_id);
                else
-                       snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_TAG, group_id);
-       } else {
-               media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
+                       select_query = g_strdup_printf(SELECT_MEDIA_FROM_TAG, DB_VIEW_MEDIA, group_id);
+#else
+               select_query = g_strdup_printf(SELECT_MEDIA_FROM_TAG, group_id);
+#endif
+               break;
+// LCOV_EXCL_STOP
+       default:
+               content_error("INVALID_PARAMETER");
                return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
        }
-#endif
+
        ret = __media_db_make_query(filter, &condition_query, &option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       if (ret != MEDIA_CONTENT_ERROR_NONE) {
+               g_free(select_query);
+               return ret;
+       }
 
        ret = _content_query_prepare(select_query, condition_query, option_query, &stmt);
-       SAFE_FREE(condition_query);
-       SAFE_FREE(option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       g_free(select_query);
+       g_free(condition_query);
+       g_free(option_query);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        while (sqlite3_step(stmt) == SQLITE_ROW) {
-               media_info_s *item = (media_info_s*)calloc(1, sizeof(media_info_s));
-               if (item == NULL) {
-                       media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
-                       SQLITE3_FINALIZE(stmt);
-                       return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
-               }
+               media_info_s *item = g_new0(media_info_s, 1);
 
                _media_info_item_get_detail(stmt, (media_info_h)item);
 
@@ -1247,136 +1142,56 @@ int _media_db_get_group_item_by_id(int group_id, filter_h filter, media_info_cb
 int _media_db_get_group_item(const char *group_name, filter_h filter, media_info_cb callback, void *user_data, group_list_e group_type)
 {
        int ret = MEDIA_CONTENT_ERROR_NONE;
-       char select_query[MAX_QUERY_SIZE] = {0, };
+       char *select_query = NULL;
        char *condition_query = NULL;
        char *option_query = NULL;
        sqlite3_stmt *stmt = NULL;
+#ifdef _USE_TVPD_MODE
        filter_s *_filter = (filter_s *)filter;
+#endif
 
-       memset(select_query, 0x00, sizeof(select_query));
+       switch (group_type) {
+       case MEDIA_GROUP_NONE:
 #ifdef _USE_TVPD_MODE
-       if (group_type == MEDIA_GROUP_NONE) {
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       snprintf(select_query, sizeof(select_query), SELECT_MEDIA_ITEM, _filter->storage_id);
-               else
-                       snprintf(select_query, sizeof(select_query), SELECT_MEDIA_ITEM, DB_VIEW_MEDIA);
-       } else if (group_type == MEDIA_GROUP_FOLDER) {
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_FOLDER, _filter->storage_id, group_name);
+               if (_filter && STRING_VALID(_filter->storage_id))
+                       select_query = g_strdup_printf(SELECT_MEDIA_ITEM, _filter->storage_id);
                else
-                       snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_FOLDER, DB_VIEW_MEDIA, group_name);
-       } else if (group_type == MEDIA_GROUP_STORAGE) {
-               snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_STORAGE, group_name, group_name);
-       } else {
-               media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
-               return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-       }
+                       select_query = g_strdup_printf(SELECT_MEDIA_ITEM, DB_VIEW_MEDIA);
 #else
-       if (group_type == MEDIA_GROUP_NONE) {
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       snprintf(select_query, sizeof(select_query), SELECT_MEDIA_ITEM_BY_STORAGE_ID, _filter->storage_id);
-               else
-                       snprintf(select_query, sizeof(select_query), SELECT_MEDIA_ITEM);
-       } else if (group_type == MEDIA_GROUP_FOLDER) {
-               snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_FOLDER, group_name);
-       } else if (group_type == MEDIA_GROUP_STORAGE) {
-               snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_STORAGE, group_name);
-       } else {
-               media_content_error("INVALID_PARAMETER(0x%08x)", MEDIA_CONTENT_ERROR_INVALID_PARAMETER);
-               return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
-       }
+               select_query = g_strdup(SELECT_MEDIA_ITEM);
 #endif
-       ret = __media_db_make_query(filter, &condition_query, &option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
-
-       ret = _content_query_prepare(select_query, condition_query, option_query, &stmt);
-       SAFE_FREE(condition_query);
-       SAFE_FREE(option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
-
-       while (sqlite3_step(stmt) == SQLITE_ROW) {
-               media_info_s *item = (media_info_s*)calloc(1, sizeof(media_info_s));
-               if (item == NULL) {
-                       media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
-                       SQLITE3_FINALIZE(stmt);
-                       return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
-               }
-
-               _media_info_item_get_detail(stmt, (media_info_h)item);
-
-               if (callback((media_info_h)item, user_data) == false) {
-                       media_info_destroy((media_info_h)item);
-                       break;
-               }
-
-               media_info_destroy((media_info_h)item);
-       }
-
-       SQLITE3_FINALIZE(stmt);
-
-       return ret;
-}
-
-#ifdef _USE_SENIOR_MODE
-int _media_db_get_group_item_by_union_select(const char *group_name, filter_h filter1, filter_h filter2, media_info_cb callback, void *user_data)
-{
-       int ret = MEDIA_CONTENT_ERROR_NONE;
-       char select_query1[MAX_QUERY_SIZE] = {0, };
-       char *condition_query1 = NULL;
-       char *option_query1 = NULL;
-       char select_query2[MAX_QUERY_SIZE] = {0, };
-       char *condition_query2 = NULL;
-       char *option_query2 = NULL;
-       sqlite3_stmt *stmt = NULL;
-       filter_s *_filter1 = (filter_s *)filter1;
-       filter_s *_filter2 = (filter_s *)filter2;
-
-       memset(select_query1, 0x00, sizeof(select_query1));
+               break;
 
-       if ((_filter1 != NULL) && STRING_VALID(_filter1->storage_id))
-               snprintf(select_query1, sizeof(select_query1), SELECT_MEDIA_FROM_FOLDER, _filter1->storage_id, group_name);
-       else
-               snprintf(select_query1, sizeof(select_query1), SELECT_MEDIA_FROM_FOLDER, DB_VIEW_MEDIA, group_name);
+       case MEDIA_GROUP_FOLDER:
+#ifdef _USE_TVPD_MODE
+               if (_filter && STRING_VALID(_filter->storage_id))
+                       select_query = g_strdup_printf(SELECT_MEDIA_FROM_FOLDER, _filter->storage_id, group_name);
+               else
+                       select_query = g_strdup_printf(SELECT_MEDIA_FROM_FOLDER, DB_VIEW_MEDIA, group_name);
+#else
+               select_query = g_strdup_printf(SELECT_MEDIA_FROM_FOLDER, group_name);
+#endif
+               break;
 
-       ret = __media_db_make_query(filter, &condition_query, &option_query);
-       if (ret != MEDIA_CONTENT_ERROR_NONE) {
-               SAFE_FREE(condition_query1);
-               SAFE_FREE(option_query1);
-               media_content_error("create select_query1 failed");
-               return ret;
+       default:
+               content_error("INVALID_PARAMETER");
+               return MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
        }
 
-       memset(select_query2, 0x00, sizeof(select_query2));
-
-       if ((_filter2 != NULL) && STRING_VALID(_filter2->storage_id))
-               snprintf(select_query2, sizeof(select_query2), SELECT_MEDIA_FROM_FOLDER, _filter2->storage_id, group_name);
-       else
-               snprintf(select_query2, sizeof(select_query2), SELECT_MEDIA_FROM_FOLDER, DB_VIEW_MEDIA, group_name);
-
        ret = __media_db_make_query(filter, &condition_query, &option_query);
        if (ret != MEDIA_CONTENT_ERROR_NONE) {
-               SAFE_FREE(condition_query1);
-               SAFE_FREE(option_query1);
-               SAFE_FREE(condition_query2);
-               SAFE_FREE(option_query2);
-               media_content_error("create select_query2 failed");
+               g_free(select_query);
                return ret;
        }
 
-       ret = _content_query_prepare_by_union_select(&stmt, select_query1, condition_query1, option_query1, select_query2, condition_query2, option_query2);
-       SAFE_FREE(condition_query1);
-       SAFE_FREE(option_query1);
-       SAFE_FREE(condition_query2);
-       SAFE_FREE(option_query2);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       ret = _content_query_prepare(select_query, condition_query, option_query, &stmt);
+       g_free(select_query);
+       g_free(condition_query);
+       g_free(option_query);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        while (sqlite3_step(stmt) == SQLITE_ROW) {
-               media_info_s *item = (media_info_s*)calloc(1, sizeof(media_info_s));
-               if (item == NULL) {
-                       media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
-                       SQLITE3_FINALIZE(stmt);
-                       return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
-               }
+               media_info_s *item = g_new0(media_info_s, 1);
 
                _media_info_item_get_detail(stmt, (media_info_h)item);
 
@@ -1392,7 +1207,6 @@ int _media_db_get_group_item_by_union_select(const char *group_name, filter_h fi
 
        return ret;
 }
-#endif
 
 int _media_db_get_media_group_item_count(const char *group_name, filter_h filter, media_group_e group, int *item_count)
 {
@@ -1402,73 +1216,55 @@ int _media_db_get_media_group_item_count(const char *group_name, filter_h filter
        char *tmp_option = NULL;
        char *condition_query = NULL;
        char *option_query = NULL;
-       filter_s *_filter = (filter_s *)filter;
-
-       memset(select_query, 0x00, sizeof(select_query));
 #ifdef _USE_TVPD_MODE
+       filter_s *_filter = (filter_s *)filter;
        if (group < MEDIA_PVR_GROUP_DURATION) { /*media content */
-               if (group_name != NULL) {
-                       if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
+               if (group_name) {
+                       if (_filter && STRING_VALID(_filter->storage_id))
                                sqlite3_snprintf(sizeof(select_query), select_query, SELECT_MEDIA_COUNT_FROM_GROUP, _filter->storage_id, __media_db_get_group_name(group), group_name);
                        else
                                sqlite3_snprintf(sizeof(select_query), select_query, SELECT_MEDIA_COUNT_FROM_GROUP, DB_VIEW_MEDIA, __media_db_get_group_name(group), group_name);
-
-
                } else {
-                       if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
+                       if (_filter && STRING_VALID(_filter->storage_id))
                                snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_GROUP_NULL, _filter->storage_id, __media_db_get_group_name(group));
                        else
                                snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_GROUP_NULL, DB_VIEW_MEDIA, __media_db_get_group_name(group));
                }
        } else if (group < MEDIA_UHD_GROUP_CONTENT_TITLE) {/*pvr content*/
-               if (group_name != NULL) {
-                       if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
+               if (group_name) {
+                       if (_filter && STRING_VALID(_filter->storage_id))
                                sqlite3_snprintf(sizeof(select_query), select_query, SELECT_PVR_COUNT_FROM_GROUP_BY_STORAGE_ID, _filter->storage_id, __media_db_get_group_name(group), group_name);
                        else
                                sqlite3_snprintf(sizeof(select_query), select_query, SELECT_PVR_COUNT_FROM_GROUP, __media_db_get_group_name(group), group_name);
-
-
                } else {
-                       if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
+                       if (_filter && STRING_VALID(_filter->storage_id))
                                snprintf(select_query, sizeof(select_query), SELECT_PVR_COUNT_FROM_GROUP_NULL_BY_STORAGE_ID, _filter->storage_id, __media_db_get_group_name(group));
                        else
                                snprintf(select_query, sizeof(select_query), SELECT_PVR_COUNT_FROM_GROUP_NULL, __media_db_get_group_name(group));
                }
        } else {/*uhd content*/
-               if (group_name != NULL) {
-                       if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
+               if (group_name) {
+                       if (_filter && STRING_VALID(_filter->storage_id))
                                sqlite3_snprintf(sizeof(select_query), select_query, SELECT_UHD_COUNT_FROM_GROUP_BY_STORAGE_ID, _filter->storage_id, __media_db_get_group_name(group), group_name);
                        else
                                sqlite3_snprintf(sizeof(select_query), select_query, SELECT_UHD_COUNT_FROM_GROUP, __media_db_get_group_name(group), group_name);
-
-
                } else {
-                       if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
+                       if (_filter && STRING_VALID(_filter->storage_id))
                                snprintf(select_query, sizeof(select_query), SELECT_UHD_COUNT_FROM_GROUP_NULL_BY_STORAGE_ID, _filter->storage_id, __media_db_get_group_name(group));
                        else
                                snprintf(select_query, sizeof(select_query), SELECT_UHD_COUNT_FROM_GROUP_NULL, __media_db_get_group_name(group));
                }
        }
 #else
-       if (group_name != NULL) {
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id)) {
-                       sqlite3_snprintf(sizeof(select_query), select_query, SELECT_MEDIA_COUNT_FROM_GROUP_BY_STORAGE_ID, __media_db_get_group_name(group), group_name, _filter->storage_id);
-
-               } else {
-                       sqlite3_snprintf(sizeof(select_query), select_query, SELECT_MEDIA_COUNT_FROM_GROUP, __media_db_get_group_name(group), group_name);
-
-               }
-       } else {
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_GROUP_NULL_BY_STORAGE_ID, __media_db_get_group_name(group), _filter->storage_id);
-               else
-                       snprintf(select_query, sizeof(select_query), SELECT_MEDIA_COUNT_FROM_GROUP_NULL, __media_db_get_group_name(group));
-       }
+       if (group_name)
+               sqlite3_snprintf(MAX_QUERY_SIZE, select_query, SELECT_MEDIA_COUNT_FROM_GROUP, __media_db_get_group_name(group), group_name);
+       else
+               snprintf(select_query, MAX_QUERY_SIZE, SELECT_MEDIA_COUNT_FROM_GROUP_NULL, __media_db_get_group_name(group));
 #endif
-
        ret = __media_db_make_query(filter, &condition_query, &option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
+       /* If 'filter' is not NULL, 'option_query' must be created. */
        if (option_query) {
                tmp_option = g_strconcat(option_query, ")", NULL);
                g_free(option_query);
@@ -1478,9 +1274,9 @@ int _media_db_get_media_group_item_count(const char *group_name, filter_h filter
        }
 
        ret = _content_query_prepare(select_query, condition_query, option_query, &stmt);
-       SAFE_FREE(condition_query);
-       SAFE_FREE(option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       g_free(condition_query);
+       g_free(option_query);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        if (sqlite3_step(stmt) == SQLITE_ROW)
                *item_count = sqlite3_column_int(stmt, 0);
@@ -1497,53 +1293,35 @@ int _media_db_get_media_group_item(const char *group_name, filter_h filter, medi
        char *condition_query = NULL;
        char *option_query = NULL;
        sqlite3_stmt *stmt = NULL;
-       filter_s *_filter = (filter_s *)filter;
-
-       memset(select_query, 0x00, sizeof(select_query));
 #ifdef _USE_TVPD_MODE
-       if (group_name != NULL) {
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
+       filter_s *_filter = (filter_s *)filter;
+       if (group_name) {
+               if (_filter && STRING_VALID(_filter->storage_id))
                        sqlite3_snprintf(sizeof(select_query), select_query, SELECT_MEDIA_FROM_GROUP, _filter->storage_id, __media_db_get_group_name(group), group_name);
                else
                        sqlite3_snprintf(sizeof(select_query), select_query, SELECT_MEDIA_FROM_GROUP, DB_VIEW_MEDIA, __media_db_get_group_name(group), group_name);
-
-
        } else {
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
+               if (_filter && STRING_VALID(_filter->storage_id))
                        snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_GROUP_NULL, _filter->storage_id, __media_db_get_group_name(group));
                else
                        snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_GROUP_NULL, DB_VIEW_MEDIA, __media_db_get_group_name(group));
        }
 #else
-       if (group_name != NULL) {
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       sqlite3_snprintf(sizeof(select_query), select_query, SELECT_MEDIA_FROM_GROUP_BY_STORAGE_ID, __media_db_get_group_name(group), group_name, _filter->storage_id);
-               else
-                       sqlite3_snprintf(sizeof(select_query), select_query, SELECT_MEDIA_FROM_GROUP, __media_db_get_group_name(group), group_name);
-
-
-       } else {
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_GROUP_NULL_BY_STORAGE_ID, __media_db_get_group_name(group), _filter->storage_id);
-               else
-                       snprintf(select_query, sizeof(select_query), SELECT_MEDIA_FROM_GROUP_NULL, __media_db_get_group_name(group));
-       }
+       if (group_name)
+               sqlite3_snprintf(MAX_QUERY_SIZE, select_query, SELECT_MEDIA_FROM_GROUP, __media_db_get_group_name(group), group_name);
+       else
+               snprintf(select_query, MAX_QUERY_SIZE, SELECT_MEDIA_FROM_GROUP_NULL, __media_db_get_group_name(group));
 #endif
        ret = __media_db_make_query(filter, &condition_query, &option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        ret = _content_query_prepare(select_query, condition_query, option_query, &stmt);
-       SAFE_FREE(condition_query);
-       SAFE_FREE(option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       g_free(condition_query);
+       g_free(option_query);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        while (sqlite3_step(stmt) == SQLITE_ROW) {
-               media_info_s *item = (media_info_s*)calloc(1, sizeof(media_info_s));
-               if (item == NULL) {
-                       media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
-                       SQLITE3_FINALIZE(stmt);
-                       return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
-               }
+               media_info_s *item = g_new0(media_info_s, 1);
 
                _media_info_item_get_detail(stmt, (media_info_h)item);
 
@@ -1560,47 +1338,7 @@ int _media_db_get_media_group_item(const char *group_name, filter_h filter, medi
        return ret;
 }
 
-int _media_db_get_storage(filter_h filter, media_storage_cb callback, void *user_data)
-{
-       int ret = MEDIA_CONTENT_ERROR_NONE;
-       char *condition_query = NULL;
-       char *option_query = NULL;
-       sqlite3_stmt *stmt = NULL;
-
-       ret = __media_db_make_query(filter, &condition_query, &option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
-
-       ret = _content_query_prepare(SELECT_STORAGE_LIST, condition_query, option_query, &stmt);
-       SAFE_FREE(condition_query);
-       SAFE_FREE(option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
-
-       while (sqlite3_step(stmt) == SQLITE_ROW) {
-               media_storage_s *_storage = (media_storage_s*)calloc(1, sizeof(media_storage_s));
-
-               if (_storage == NULL) {
-                       media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
-                       SQLITE3_FINALIZE(stmt);
-                       return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
-               }
-
-               _storage->storage_id = g_strdup((const char *)sqlite3_column_text(stmt, 0));
-               _storage->storage_path = g_strdup((const char *)sqlite3_column_text(stmt, 1));
-               _storage->storage_type = sqlite3_column_int(stmt, 2);
-
-               if (callback((media_storage_h)_storage, user_data) == false) {
-                       media_storage_destroy((media_storage_h) _storage);
-                       break;
-               }
-
-               media_storage_destroy((media_storage_h) _storage);
-       }
-
-       SQLITE3_FINALIZE(stmt);
-
-       return ret;
-}
-
+#ifdef _USE_TVPD_MODE
 int _media_db_get_storage_id_by_media_id(const char *media_id, char **storage_id)
 {
        int ret = MEDIA_CONTENT_ERROR_NONE;
@@ -1611,12 +1349,12 @@ int _media_db_get_storage_id_by_media_id(const char *media_id, char **storage_id
 
        ret = _content_get_result(select_query, &stmt);
        SQLITE3_SAFE_FREE(select_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        if (sqlite3_step(stmt) == SQLITE_ROW) {
                *storage_id = g_strdup((const char *)sqlite3_column_text(stmt, 0));
        } else {
-               media_content_error("Invalid media_id[%s]", media_id);
+               content_error("Invalid media_id[%s]", media_id);
                ret = MEDIA_CONTENT_ERROR_INVALID_PARAMETER;
        }
 
@@ -1625,63 +1363,6 @@ int _media_db_get_storage_id_by_media_id(const char *media_id, char **storage_id
        return ret;
 }
 
-#ifdef _USE_TVPD_MODE
-int _media_db_get_pvr_group_item(const char *group_name, filter_h filter, media_group_e group, media_pvr_cb callback, void *user_data)
-{
-       int ret = MEDIA_CONTENT_ERROR_NONE;
-       char select_query[DEFAULT_QUERY_SIZE] = {0, };
-       char *condition_query = NULL;
-       char *option_query = NULL;
-       sqlite3_stmt *stmt = NULL;
-       filter_s *_filter = (filter_s *)filter;
-
-       memset(select_query, 0x00, sizeof(select_query));
-
-       if (group_name != NULL) {
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       sqlite3_snprintf(sizeof(select_query), select_query, SELECT_PVR_FROM_GROUP_BY_STORAGE_ID, _filter->storage_id, __media_db_get_group_name(group), group_name);
-               else
-                       sqlite3_snprintf(sizeof(select_query), select_query, SELECT_PVR_FROM_GROUP, __media_db_get_group_name(group), group_name);
-
-
-       } else {
-               if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
-                       snprintf(select_query, sizeof(select_query), SELECT_PVR_FROM_GROUP_NULL_BY_STORAGE_ID, _filter->storage_id, __media_db_get_group_name(group));
-               else
-                       snprintf(select_query, sizeof(select_query), SELECT_PVR_FROM_GROUP_NULL, __media_db_get_group_name(group));
-       }
-
-       ret = __media_db_make_query(filter, &condition_query, &option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
-
-       ret = _content_query_prepare(select_query, condition_query, option_query, &stmt);
-       SAFE_FREE(condition_query);
-       SAFE_FREE(option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
-
-       while (sqlite3_step(stmt) == SQLITE_ROW) {
-               media_pvr_s *item = (media_pvr_s*)calloc(1, sizeof(media_pvr_s));
-               if (item == NULL) {
-                       media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
-                       SQLITE3_FINALIZE(stmt);
-                       return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
-               }
-
-               _media_pvr_item_get_detail(stmt, (media_pvr_h)item);
-
-               if (callback((media_pvr_h)item, user_data) == false) {
-                       media_info_destroy((media_pvr_h)item);
-                       break;
-               }
-
-               media_pvr_destroy((media_pvr_h)item);
-       }
-
-       SQLITE3_FINALIZE(stmt);
-
-       return ret;
-}
-
 typedef enum {
        MEDIA_PVR_MEDIA_ID = 0,
        MEDIA_PVR_STORAGE_ID,
@@ -1730,122 +1411,60 @@ typedef enum {
        MEDIA_PVR_TVMODE,
        MEDIA_PVR_PLAY_COUNT,
        MEDIA_PVR_PRIVATE_DATA,
-       MEDIA_PVR_HIGHLIGHT,
 } media_pvr_field_e;
 
 void _media_pvr_item_get_detail(sqlite3_stmt* stmt, media_pvr_h pvr)
 {
        media_pvr_s *_pvr = (media_pvr_s*)pvr;
 
-       if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_MEDIA_ID)))
-               _pvr->media_id = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_MEDIA_ID));
-
-       if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_STORAGE_ID)))
-               _pvr->storage_id = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_STORAGE_ID));
-
-       if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_PATH)))
-               _pvr->path = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_PATH));
-
+       _pvr->media_id = g_strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_MEDIA_ID));
+       _pvr->storage_id = g_strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_STORAGE_ID));
+       _pvr->path = g_strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_PATH));
        _pvr->size = (unsigned long long)sqlite3_column_int64(stmt, MEDIA_PVR_SIZE);
-
        _pvr->duration = sqlite3_column_int(stmt, MEDIA_PVR_DURATION);
-
        _pvr->timezone = sqlite3_column_int(stmt, MEDIA_PVR_TIME_ZONE);
-
        _pvr->ptc = sqlite3_column_int(stmt, MEDIA_PVR_PTC);
-
        _pvr->major = sqlite3_column_int(stmt, MEDIA_PVR_MAJOR);
-
        _pvr->minor = sqlite3_column_int(stmt, MEDIA_PVR_MINOR);
-
        _pvr->channel_type = sqlite3_column_int(stmt, MEDIA_PVR_CHANNEL_TYPE);
-
        _pvr->service_profile = (unsigned int)sqlite3_column_int(stmt, MEDIA_PVR_SERVICE_PROFILE);
-
-       if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_CHANNEL_NAME)))
-               _pvr->channel_name = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_CHANNEL_NAME));
-
-       if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_CHANNEL_NUM)))
-               _pvr->channel_num = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_CHANNEL_NUM));
-
-       if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_PROGRAM_TITLE)))
-               _pvr->program_title = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_PROGRAM_TITLE));
-
+       _pvr->channel_name = g_strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_CHANNEL_NAME));
+       _pvr->channel_num = g_strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_CHANNEL_NUM));
+       _pvr->program_title = g_strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_PROGRAM_TITLE));
        _pvr->program_num = sqlite3_column_int(stmt, MEDIA_PVR_PROGRAM_NUM);
-
-       if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_PROGRAM_CRID)))
-               _pvr->program_crid = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_PROGRAM_CRID));
-
-       if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_GUIDANCE)))
-               _pvr->guidance = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_GUIDANCE));
-
-       if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_SYNOPSIS)))
-               _pvr->synopsis = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_SYNOPSIS));
-
-       if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_GENRE)))
-               _pvr->genre = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_GENRE));
-
-       if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_LANGUAGE)))
-               _pvr->language = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_LANGUAGE));
-
-       if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_MODIFIED_MONTH)))
-               _pvr->modified_month = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_MODIFIED_MONTH));
-
-       if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_PVR_PRIVATE_DATA)))
-               _pvr->private_data = strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_PRIVATE_DATA));
-
+       _pvr->program_crid = g_strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_PROGRAM_CRID));
+       _pvr->guidance = g_strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_GUIDANCE));
+       _pvr->synopsis = g_strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_SYNOPSIS));
+       _pvr->genre = g_strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_GENRE));
+       _pvr->language = g_strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_LANGUAGE));
+       _pvr->modified_month = g_strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_MODIFIED_MONTH));
+       _pvr->private_data = g_strdup((const char *)sqlite3_column_text(stmt, MEDIA_PVR_PRIVATE_DATA));
        _pvr->embargo_time = sqlite3_column_int(stmt, MEDIA_PVR_EMBARGO_TIME);
-
        _pvr->expiry_time = sqlite3_column_int(stmt, MEDIA_PVR_EXPIRY_TIME);
-
        _pvr->start_time = sqlite3_column_int(stmt, MEDIA_PVR_START_TIME);
-
        _pvr->program_start_time = sqlite3_column_int(stmt, MEDIA_PVR_PROGRAM_START_TIME);
-
        _pvr->program_end_time = sqlite3_column_int(stmt, MEDIA_PVR_PROGRAM_END_TIME);
-
        _pvr->program_date = sqlite3_column_int(stmt, MEDIA_PVR_PROGRAM_DATE);
-
        _pvr->parental_rating = sqlite3_column_int(stmt, MEDIA_PVR_PARENTAL_RATING);
-
        _pvr->timer_record = sqlite3_column_int(stmt, MEDIA_PVR_TIMER_RECORD);
-
        _pvr->series_record = sqlite3_column_int(stmt, MEDIA_PVR_SERIES_RECORD);
-
        _pvr->hd = sqlite3_column_int(stmt, MEDIA_PVR_HD);
-
        _pvr->subtitle = sqlite3_column_int(stmt, MEDIA_PVR_SUBTITLE);
-
        _pvr->ttx = sqlite3_column_int(stmt, MEDIA_PVR_TTX);
-
        _pvr->ad = sqlite3_column_int(stmt, MEDIA_PVR_AD);
-
        _pvr->hard_of_hearing_radio = sqlite3_column_int(stmt, MEDIA_PVR_HARDOF_HEARINGRADIO);
-
        _pvr->data_service = sqlite3_column_int(stmt, MEDIA_PVR_DATA_SERVICE);
-
        _pvr->content_lock = sqlite3_column_int(stmt, MEDIA_PVR_CONTENT_LOCK);
-
        _pvr->content_watch = sqlite3_column_int(stmt, MEDIA_PVR_CONTENT_WATCH);
-
        _pvr->has_audio_only = sqlite3_column_int(stmt, MEDIA_PVR_HAS_AUDIO_ONLY);
-
        _pvr->is_local_record = sqlite3_column_int(stmt, MEDIA_PVR_IS_LOCAL_RECORDED);
-
        _pvr->resolution = sqlite3_column_int(stmt, MEDIA_PVR_RESOLUTION);
-
        _pvr->aspectratio = sqlite3_column_int(stmt, MEDIA_PVR_ASPECTRATIO);
-
        _pvr->sports_type = sqlite3_column_int(stmt, MEDIA_PVR_SPORTS_TYPE);
-
        _pvr->guidance_length = sqlite3_column_int(stmt, MEDIA_PVR_GUIDANCE_LENGTH);
-
        _pvr->tvmode = sqlite3_column_int(stmt, MEDIA_PVR_TVMODE);
-
        _pvr->play_count = sqlite3_column_int(stmt, MEDIA_PVR_PLAY_COUNT);
 
-       _pvr->highlight = sqlite3_column_int(stmt, MEDIA_PVR_HIGHLIGHT);
-
        return;
 }
 
@@ -1858,29 +1477,21 @@ int _media_db_get_pvr(filter_h filter, media_pvr_cb callback, void *user_data)
        sqlite3_stmt *stmt = NULL;
        filter_s *_filter = (filter_s *)filter;
 
-       memset(select_query, 0x00, sizeof(select_query));
-
-       if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
+       if (_filter && STRING_VALID(_filter->storage_id))
                snprintf(select_query, sizeof(select_query), SELECT_PVR_LIST_BY_STORAGE_ID, _filter->storage_id);
        else
                SAFE_STRLCAT(select_query, SELECT_PVR_LIST, sizeof(select_query));
 
        ret = __media_db_make_query(filter, &condition_query, &option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        ret = _content_query_prepare(select_query, condition_query, option_query, &stmt);
-       SAFE_FREE(condition_query);
-       SAFE_FREE(option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       g_free(condition_query);
+       g_free(option_query);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        while (sqlite3_step(stmt) == SQLITE_ROW) {
-               media_pvr_s *_pvr = (media_pvr_s*)calloc(1, sizeof(media_pvr_s));
-
-               if (_pvr == NULL) {
-                       media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
-                       SQLITE3_FINALIZE(stmt);
-                       return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
-               }
+               media_pvr_s *_pvr = g_new0(media_pvr_s, 1);
 
                _media_pvr_item_get_detail(stmt, (media_pvr_h)_pvr);
 
@@ -1909,7 +1520,6 @@ typedef enum {
        MEDIA_UHD_RELEASE_DATE,
        MEDIA_UHD_MODIFIED_TIME,
        MEDIA_UHD_PLAYED_POSITION,
-       MEDIA_UHD_SUB_TYPE,
        MEDIA_UHD_PLAYED_COUNT,
 } media_uhd_field_e;
 
@@ -1917,32 +1527,15 @@ void _media_uhd_item_get_detail(sqlite3_stmt* stmt, media_uhd_h uhd)
 {
        media_uhd_s *_uhd = (media_uhd_s*)uhd;
 
-       if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_UHD_MEDIA_ID)))
-               _uhd->media_id = strdup((const char *)sqlite3_column_text(stmt, MEDIA_UHD_MEDIA_ID));
-
-       if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_UHD_STORAGE_ID)))
-               _uhd->storage_id = strdup((const char *)sqlite3_column_text(stmt, MEDIA_UHD_STORAGE_ID));
-
-       if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_UHD_PATH)))
-               _uhd->path = strdup((const char *)sqlite3_column_text(stmt, MEDIA_UHD_PATH));
-
+       _uhd->media_id = g_strdup((const char *)sqlite3_column_text(stmt, MEDIA_UHD_MEDIA_ID));
+       _uhd->path = g_strdup((const char *)sqlite3_column_text(stmt, MEDIA_UHD_PATH));
        _uhd->size = (unsigned long long)sqlite3_column_int64(stmt, MEDIA_UHD_SIZE);
-
-       if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_UHD_CONTENT_ID)))
-               _uhd->content_id = strdup((const char *)sqlite3_column_text(stmt, MEDIA_UHD_CONTENT_ID));
-
-       if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_UHD_CONTENT_TITLE)))
-               _uhd->content_title = strdup((const char *)sqlite3_column_text(stmt, MEDIA_UHD_CONTENT_TITLE));
-
-       if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_UHD_FILE_NAME)))
-               _uhd->file_name = strdup((const char *)sqlite3_column_text(stmt, MEDIA_UHD_FILE_NAME));
-
-       if (STRING_VALID((const char *)sqlite3_column_text(stmt, MEDIA_UHD_RELEASE_DATE)))
-               _uhd->release_date = strdup((const char *)sqlite3_column_text(stmt, MEDIA_UHD_RELEASE_DATE));
-
+       _uhd->content_id = g_strdup((const char *)sqlite3_column_text(stmt, MEDIA_UHD_CONTENT_ID));
+       _uhd->content_title = g_strdup((const char *)sqlite3_column_text(stmt, MEDIA_UHD_CONTENT_TITLE));
+       _uhd->file_name = g_strdup((const char *)sqlite3_column_text(stmt, MEDIA_UHD_FILE_NAME));
+       _uhd->release_date = g_strdup((const char *)sqlite3_column_text(stmt, MEDIA_UHD_RELEASE_DATE));
        _uhd->modified_time = sqlite3_column_int(stmt, MEDIA_UHD_MODIFIED_TIME);
        _uhd->played_position = sqlite3_column_int(stmt, MEDIA_UHD_PLAYED_POSITION);
-       _uhd->sub_type = sqlite3_column_int(stmt, MEDIA_UHD_SUB_TYPE);
        _uhd->played_count = sqlite3_column_int(stmt, MEDIA_UHD_PLAYED_COUNT);
 
        return;
@@ -1957,29 +1550,21 @@ int _media_db_get_uhd(filter_h filter, media_uhd_cb callback, void *user_data)
        sqlite3_stmt *stmt = NULL;
        filter_s *_filter = (filter_s *)filter;
 
-       memset(select_query, 0x00, sizeof(select_query));
-
-       if ((_filter != NULL) && STRING_VALID(_filter->storage_id))
+       if (_filter && STRING_VALID(_filter->storage_id))
                snprintf(select_query, sizeof(select_query), SELECT_UHD_LIST_BY_STORAGE_ID, _filter->storage_id);
        else
                SAFE_STRLCAT(select_query, SELECT_UHD_LIST, sizeof(select_query));
 
        ret = __media_db_make_query(filter, &condition_query, &option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        ret = _content_query_prepare(select_query, condition_query, option_query, &stmt);
-       SAFE_FREE(condition_query);
-       SAFE_FREE(option_query);
-       media_content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+       g_free(condition_query);
+       g_free(option_query);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
 
        while (sqlite3_step(stmt) == SQLITE_ROW) {
-               media_uhd_s *_uhd = (media_uhd_s*)calloc(1, sizeof(media_uhd_s));
-
-               if (_uhd == NULL) {
-                       media_content_error("OUT_OF_MEMORY(0x%08x)", MEDIA_CONTENT_ERROR_OUT_OF_MEMORY);
-                       SQLITE3_FINALIZE(stmt);
-                       return MEDIA_CONTENT_ERROR_OUT_OF_MEMORY;
-               }
+               media_uhd_s *_uhd = g_new0(media_uhd_s, 1);
 
                _media_uhd_item_get_detail(stmt, (media_uhd_h)_uhd);
 
@@ -1994,4 +1579,38 @@ int _media_db_get_uhd(filter_h filter, media_uhd_cb callback, void *user_data)
 
        return ret;
 }
+
+int _media_db_get_storage(filter_h filter, media_storage_cb callback, void *user_data)
+{
+       int ret = MEDIA_CONTENT_ERROR_NONE;
+       char *condition_query = NULL;
+       char *option_query = NULL;
+       sqlite3_stmt *stmt = NULL;
+
+       ret = __media_db_make_query(filter, &condition_query, &option_query);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+
+       ret = _content_query_prepare(SELECT_STORAGE_LIST, condition_query, option_query, &stmt);
+       g_free(condition_query);
+       g_free(option_query);
+       content_retv_if(ret != MEDIA_CONTENT_ERROR_NONE, ret);
+
+       while (sqlite3_step(stmt) == SQLITE_ROW) {
+               media_storage_s *_storage = g_new0(media_storage_s, 1);
+
+               _storage->storage_id = g_strdup((const char *)sqlite3_column_text(stmt, 0));
+               _storage->storage_path = g_strdup((const char *)sqlite3_column_text(stmt, 1));
+
+               if (callback((media_storage_h)_storage, user_data) == false) {
+                       media_storage_destroy((media_storage_h) _storage);
+                       break;
+               }
+
+               media_storage_destroy((media_storage_h) _storage);
+       }
+
+       SQLITE3_FINALIZE(stmt);
+
+       return ret;
+}
 #endif