int idx = 0;
int length = g_list_length(*query_list);
char *sql = NULL;
+ char *zErrMsg = NULL;
sqlite3 *handle = NULL;
+ bool with_transaction = true;
media_svc_debug("query list length[%d]", length);
if (length == 0)
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, &zErrMsg);
+ if (SQLITE_OK != ret) {
+ media_svc_sec_error("Transaction failed[%s]. Try an individual insert.", zErrMsg);
+ SQLITE3_SAFE_FREE(zErrMsg);
+ with_transaction = false;
+ }
+
for (idx = 0; idx < length; idx++) {
sql = (char *)g_list_nth_data(*query_list, idx);
if (STRING_VALID(sql)) {
}
}
+ if (with_transaction) {
+ ret = sqlite3_exec(handle, "COMMIT;", NULL, NULL, &zErrMsg);
+ if (SQLITE_OK != ret) {
+ media_svc_sec_error("Commit failed[%s]", zErrMsg);
+ SQLITE3_SAFE_FREE(zErrMsg);
+ media_db_disconnect(handle);
+ _media_svc_sql_query_release(query_list);
+ return MS_MEDIA_ERR_DB_INTERNAL;
+ }
+ }
+
media_db_disconnect(handle);
ZERO_LEN:
/* Flag for items to be published by notification */
static __thread bool g_insert_with_noti = false;
-#define BATCH_ITEM_COUNT_MAX 30
+#define BATCH_ITEM_COUNT_MAX 100
int media_svc_get_user_version(sqlite3 *handle, int *user_version)
{