#include <strings.h>
#include <glib.h>
-#include <db-util.h>
+#include <sqlite3.h>
+#include <unistd.h>
#include <tcore.h>
#include <server.h>
#define PLUGIN_VERSION 1
#endif
+#define BUSY_WAITING_USEC 50000 /* 0.05 sec */
+#define BUSY_WAITING_MAX 20 /* wait for max 1 sec */
+
+
static gboolean __update_query_database(Storage *strg, void *handle, const char *query, GHashTable *in_param)
{
int rv = 0;
}
rv = sqlite3_step(stmt);
- dbg("query executed (%d)", rv);
+ dbg("update query executed (%d)", rv);
sqlite3_finalize(stmt);
if (rv != SQLITE_DONE)
return TRUE;
}
+static int _busy_handler(void *pData, int count)
+{
+ if (count < BUSY_WAITING_MAX) {
+ usleep(BUSY_WAITING_USEC);
+ return 1;
+ }
+
+ dbg("Busy Handler will be returned SQLITE_BUSY error\n");
+ return 0;
+}
+
static void *create_handle(Storage *strg, const char *path)
{
int rv = 0;
sqlite3 *handle = NULL;
- rv = db_util_open(path, &handle, 0);
+ if (path == NULL) {
+ err("Invalid input param error");
+ return NULL;
+ }
+
+ rv = sqlite3_open(path, &handle);
+ if (rv != SQLITE_OK) {
+ err("fail to connect database err(%d), errmsg(%s)", rv, sqlite3_errmsg(handle));
+ return NULL;
+ }
+
+ rv = sqlite3_busy_handler(handle, _busy_handler, NULL);
if (rv != SQLITE_OK) {
- err("fail to connect database err(%d)", rv);
+ err("fail to register busy handler err(%d), errmsg(%s)", rv, sqlite3_errmsg(handle));
+ sqlite3_close(handle);
return NULL;
}
if (!handle)
return FALSE;
- rv = db_util_close(handle);
+ rv = sqlite3_close(handle);
if (rv != SQLITE_OK) {
err("fail to close database err(%d)", rv);
handle = NULL;
out_param_data = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free);
for (local_index = 0; local_index < out_param_cnt; local_index++) {
- char tmp_key[10];
+ char tmp_key[32];
const unsigned char *tmp;
tmp = sqlite3_column_text(stmt, local_index);
snprintf(tmp_key, sizeof(tmp_key), "%d", local_index);
GSList **temp = out_param;
*temp = g_slist_append(*temp, out_param_data);
} else {
- char tmp_key_outter[10];
+ char tmp_key_outter[32];
snprintf(tmp_key_outter, sizeof(tmp_key_outter), "%d", outter_index);
g_hash_table_insert((GHashTable*)out_param, g_strdup(tmp_key_outter), out_param_data);
}