Sync from SPIN branch 88/47288/1 tizen_3.0.m1_mobile tizen_3.0.m1_tv accepted/tizen/ivi/20160218.023945 accepted/tizen/mobile/20150903.053558 accepted/tizen/tv/20150903.053710 accepted/tizen/wearable/20150903.053831 submit/tizen/20150903.021205 submit/tizen_common/20151023.083358 submit/tizen_common/20151026.085049 submit/tizen_ivi/20160217.000000 submit/tizen_ivi/20160217.000003 tizen_3.0.m1_mobile_release tizen_3.0.m1_tv_release tizen_3.0.m2.a1_mobile_release tizen_3.0.m2.a1_tv_release
authorWootak Jung <wootak.jung@samsung.com>
Wed, 2 Sep 2015 03:59:40 +0000 (12:59 +0900)
committerWootak Jung <wootak.jung@samsung.com>
Wed, 2 Sep 2015 03:59:55 +0000 (12:59 +0900)
Change-Id: Ib091eca91e40cf75487dc6943e915f8eae7d104e

packaging/tel-plugin-database.spec
src/database_main.c

index 212ed09..94575bb 100644 (file)
@@ -1,6 +1,6 @@
 %define major 0
 %define minor 1
-%define patchlevel 20
+%define patchlevel 21
 
 Name:           tel-plugin-database
 Version:        %{major}.%{minor}.%{patchlevel}
index 74b3775..41595a8 100644 (file)
@@ -112,8 +112,8 @@ static gboolean update_query_database(Storage *strg, void *handle, const char *q
        return TRUE;
 }
 
-static gboolean read_query_database(Storage *strg, void *handle, const char *query, GHashTable *in_param,
-       GHashTable *out_param, int out_param_cnt)
+static gboolean _read_query_database_internal(Storage *strg, void *handle, const char *query, GHashTable *in_param,
+               gpointer out_param, int out_param_cnt, gboolean in_order)
 {
        int rv = 0, local_index = 0, outter_index = 0;
        sqlite3_stmt *stmt = NULL;
@@ -155,11 +155,9 @@ static gboolean read_query_database(Storage *strg, void *handle, const char *que
        }
 
        rv = sqlite3_step(stmt);
-       dbg("read query executed (%d)", rv);
+       dbg("read query executed (%d), in_order (%d)", rv, in_order);
 
        while (rv == SQLITE_ROW) {
-
-               char tmp_key_outter[10];
                GHashTable *out_param_data;
 
                out_param_data = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, g_free);
@@ -172,8 +170,14 @@ static gboolean read_query_database(Storage *strg, void *handle, const char *que
                        g_hash_table_insert(out_param_data, g_strdup(tmp_key), g_strdup((const char *)tmp));
                }
 
-               snprintf(tmp_key_outter, sizeof(tmp_key_outter), "%d", outter_index);
-               g_hash_table_insert(out_param, g_strdup(tmp_key_outter), out_param_data);
+               if (in_order) {
+                       GSList **temp = out_param;
+                       *temp = g_slist_append(*temp, out_param_data);
+               } else {
+                       char tmp_key_outter[10];
+                       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);
+               }
                outter_index++;
                rv = sqlite3_step(stmt);
        }
@@ -182,6 +186,20 @@ static gboolean read_query_database(Storage *strg, void *handle, const char *que
        return TRUE;
 }
 
+static gboolean read_query_database(Storage *strg, void *handle, const char *query, GHashTable *in_param,
+               GHashTable *out_param, int out_param_cnt)
+{
+       _read_query_database_internal(strg, handle, query, in_param, out_param, out_param_cnt, FALSE);
+       return TRUE;
+}
+
+static gboolean read_query_database_in_order(Storage *strg, void *handle, const char *query, GHashTable *in_param,
+               GSList **out_param, int out_param_cnt)
+{
+       _read_query_database_internal(strg, handle, query, in_param, out_param, out_param_cnt, TRUE);
+       return TRUE;
+}
+
 static gboolean insert_query_database(Storage *strg, void *handle, const char *query, GHashTable *in_param)
 {
        int rv = 0;
@@ -287,6 +305,7 @@ static struct storage_operations ops = {
        .remove_handle = remove_handle,
        .update_query_database = update_query_database,
        .read_query_database = read_query_database,
+       .read_query_database_in_order = read_query_database_in_order,
        .insert_query_database = insert_query_database,
        .remove_query_database = remove_query_database,
 };