return media_db_request_update_db(sql_str, uid);
}
-#define MAX_RETRY 9
-#define SLEEP_TIME 1000 * 1000
-static int __media_svc_query_direct(sqlite3 *handle, const char *query, uid_t uid)
-{
- int ret = MS_MEDIA_ERR_NONE;
- sql_autoptr err = NULL;
- int retry_count = 0;
-
-EXEC_RETRY:
- ret = sqlite3_exec(handle, query, NULL, NULL, &err);
- if (SQLITE_OK != ret) {
- media_svc_sec_error("Error[%s],Query[%s]", err, query);
- if (ret == SQLITE_BUSY) {
- ret = MS_MEDIA_ERR_DB_BUSY_FAIL;
- } else if (ret == SQLITE_CONSTRAINT) {
- ret = MS_MEDIA_ERR_DB_CONSTRAINT_FAIL;
- } else if (ret == SQLITE_FULL) {
- ret = MS_MEDIA_ERR_DB_FULL_FAIL;
- } else if (ret == SQLITE_LOCKED) {
- if (retry_count < MAX_RETRY) {
- media_svc_error("Locked retry[%d]", retry_count);
- retry_count++;
- usleep(SLEEP_TIME);
- goto EXEC_RETRY;
- }
- ret = MS_MEDIA_ERR_DB_INTERNAL;
- } else {
- ret = MS_MEDIA_ERR_DB_INTERNAL;
- }
- }
-
- return ret;
-}
-
int _media_svc_sql_query_direct(const char *sql_str, uid_t uid)
{
- int ret = MS_MEDIA_ERR_NONE;
- sqlite3 *handle = NULL;
-
- ret = media_db_connect(&handle, uid, true);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "DB connection failed");
- ret = __media_svc_query_direct(handle, sql_str, uid);
- media_db_disconnect(handle);
-
- return ret;
+ return media_db_update_db_direct(sql_str, uid);
}
int _media_svc_check_table_exist(sqlite3 *db_handle, bool *exist)
return MS_MEDIA_ERR_NONE;
}
-static int __media_svc_get_result(sqlite3 *handle, const char *sql_str, sqlite3_stmt **stmt)
-{
- int err = SQLITE_OK;
-
- media_svc_retvm_if(!handle, MS_MEDIA_ERR_INVALID_PARAMETER, "handle is NULL");
- media_svc_retvm_if(!STRING_VALID(sql_str), MS_MEDIA_ERR_INVALID_PARAMETER, "invalid query");
-
- media_svc_sec_debug("Query[%s]", sql_str);
-
- err = sqlite3_prepare_v2(handle, sql_str, -1, stmt, NULL);
- if (err != SQLITE_OK) {
- media_svc_error("prepare error %d[%s]", err, sqlite3_errmsg(handle));
- if (err == SQLITE_CORRUPT)
- return MS_MEDIA_ERR_DB_CORRUPT;
-
- return MS_MEDIA_ERR_DB_INTERNAL;
- }
-
- return MS_MEDIA_ERR_NONE;
-}
-
int _media_svc_get_result_with_check_record(sqlite3 *handle, const char *sql_str, sqlite3_stmt **stmt)
{
- int ret = __media_svc_get_result(handle, sql_str, stmt);
- media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "__media_svc_get_result failed");
+ int ret = media_db_get_result(handle, sql_str, stmt);
+ media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "failed to get result");
return __media_svc_check_record(stmt);
}
int _media_svc_get_result(sqlite3 *handle, const char *sql_str, sqlite3_stmt **stmt)
{
- return __media_svc_get_result(handle, sql_str, stmt);
+ return media_db_get_result(handle, sql_str, stmt);
}
static void __media_svc_sql_query_release(GList **query_list)
ret = media_db_connect(&handle, uid, true);
media_svc_retvm_if(ret != MS_MEDIA_ERR_NONE, ret, "DB connection failed");
- ret = sqlite3_exec(handle, "BEGIN;", NULL, NULL, NULL);
- if (SQLITE_OK != ret) {
+ if (sqlite3_exec(handle, "BEGIN;", NULL, NULL, NULL) != SQLITE_OK) {
media_svc_error("transaction failed. try an individual insert.");
with_transaction = false;
}
for (idx = 0; idx < length; idx++) {
q = (char *)g_list_nth_data(*query_list, idx);
if (STRING_VALID(q)) {
- ret = __media_svc_query_direct(handle, q, uid);
- if (ret != MS_MEDIA_ERR_NONE)
- media_svc_debug("_media_svc_query_direct failed[%s]", q);
+ if (sqlite3_exec(handle, q, NULL, NULL, NULL) != SQLITE_OK)
+ media_svc_debug("query failed[%s]", sqlite3_errmsg(handle));
sqlite3_free(q);
}
}
if (with_transaction) {
- ret = sqlite3_exec(handle, "COMMIT;", NULL, NULL, NULL);
- if (SQLITE_OK != ret) {
+ if (sqlite3_exec(handle, "COMMIT;", NULL, NULL, NULL) != SQLITE_OK) {
media_svc_error("Commit failed");
- media_db_disconnect(handle);
- __media_svc_sql_query_release(query_list);
- return MS_MEDIA_ERR_DB_INTERNAL;
+ ret = MS_MEDIA_ERR_DB_INTERNAL;
}
}
ZERO_LEN:
__media_svc_sql_query_release(query_list);
- return MS_MEDIA_ERR_NONE;
+ return ret;
}
void _media_svc_sql_query_add(GList **query_list, char **query)