[tracker/tracker-0.6] Do not use default values for numeric null fields
- From: Mikael Ottela <mottela src gnome org>
- To: svn-commits-list gnome org
- Subject: [tracker/tracker-0.6] Do not use default values for numeric null fields
- Date: Thu, 14 May 2009 01:22:50 -0400 (EDT)
commit 5544e53d943725ec12870c955162bb06c6608279
Author: Mikael Ottela <mikael ottela ixonos com>
Date: Thu May 14 08:19:39 2009 +0300
Do not use default values for numeric null fields
Instead of setting a default value for numeric fields with null content we
just return an empty string in this case as well.
Fixes NB#115978
---
src/libtracker-db/tracker-db-dbus.c | 13 +++++++++----
src/libtracker-db/tracker-db-interface.c | 24 +++---------------------
2 files changed, 12 insertions(+), 25 deletions(-)
diff --git a/src/libtracker-db/tracker-db-dbus.c b/src/libtracker-db/tracker-db-dbus.c
index da0e0ea..86f488f 100644
--- a/src/libtracker-db/tracker-db-dbus.c
+++ b/src/libtracker-db/tracker-db-dbus.c
@@ -306,7 +306,7 @@ tracker_dbus_query_result_columns_to_strv (TrackerDBResultSet *result_set,
g_value_init (&transform, G_TYPE_STRING);
_tracker_db_result_set_get_value (result_set, i, &value);
- if (g_value_transform (&value, &transform)) {
+ if (G_IS_VALUE (&value) && g_value_transform (&value, &transform)) {
if (row_counter == 0) {
strv[i] = g_value_dup_string (&transform);
} else {
@@ -326,8 +326,11 @@ tracker_dbus_query_result_columns_to_strv (TrackerDBResultSet *result_set,
}
}
+ g_value_unset (&value);
+ } else {
+ strv[i] = g_strdup ("");
}
- g_value_unset (&value);
+
g_value_unset (&transform);
}
@@ -448,7 +451,7 @@ tracker_dbus_query_result_to_ptr_array (TrackerDBResultSet *result_set)
_tracker_db_result_set_get_value (result_set, i, &value);
- if (g_value_transform (&value, &transform)) {
+ if (G_IS_VALUE (&value) && g_value_transform (&value, &transform)) {
str = g_value_dup_string (&transform);
}
@@ -458,7 +461,9 @@ tracker_dbus_query_result_to_ptr_array (TrackerDBResultSet *result_set)
list = g_slist_prepend (list, (gchar*) str);
- g_value_unset (&value);
+ if (G_IS_VALUE (&value)) {
+ g_value_unset (&value);
+ }
g_value_unset (&transform);
}
diff --git a/src/libtracker-db/tracker-db-interface.c b/src/libtracker-db/tracker-db-interface.c
index 344bf12..0dfdb96 100644
--- a/src/libtracker-db/tracker-db-interface.c
+++ b/src/libtracker-db/tracker-db-interface.c
@@ -550,29 +550,11 @@ _tracker_db_result_set_get_value (TrackerDBResultSet *result_set,
priv = TRACKER_DB_RESULT_SET_GET_PRIVATE (result_set);
row = g_ptr_array_index (priv->array, priv->current_row);
- if (priv->col_types[column] != G_TYPE_INVALID) {
+ if (priv->col_types[column] != G_TYPE_INVALID && row && row[column]) {
g_value_init (value, priv->col_types[column]);
- if (row && row[column]) {
- fill_in_value (value, row[column]);
- } else {
- /* Make up some empty value. */
- switch (G_VALUE_TYPE (value)) {
- case G_TYPE_INT:
- g_value_set_int (value, 0);
- break;
- case G_TYPE_DOUBLE:
- g_value_set_double (value, 0.0);
- break;
- case G_TYPE_STRING:
- g_value_set_string (value, "");
- break;
- }
- }
- } else {
- /* Make up some empty value */
- g_value_init (value, G_TYPE_STRING);
- g_value_set_string (value, "");
+ fill_in_value (value, row[column]);
}
+ /* otherwise keep unset */
}
/* TrackerDBResultSet API */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]