diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2015-02-13 13:54:13 +0100 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2015-02-24 12:48:54 +0100 |
commit | eac52e3db3c472e35af41f664ae686c0d26739d0 (patch) | |
tree | 431ef9f99c5a99f37f1bd4c8dd1e3837173136de | |
parent | c0b2c987a9de1c4f4e5af4d9bf739a934f11d9e0 (diff) | |
download | tracker-eac52e3db3c472e35af41f664ae686c0d26739d0.tar.gz |
data-manager: Account for cardinality=0 on DB migration
If a property changes from maxCardinality 1 to many, the database
format is updated to cope with that, but at the time of migrating
data, it doesn't account for resources having no elements. In order
to avoid constraint errors, those must be skipped.
https://bugzilla.gnome.org/show_bug.cgi?id=743727
-rw-r--r-- | src/libtracker-data/tracker-data-manager.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/libtracker-data/tracker-data-manager.c b/src/libtracker-data/tracker-data-manager.c index 74c8fc6dc..384a98ab7 100644 --- a/src/libtracker-data/tracker-data-manager.c +++ b/src/libtracker-data/tracker-data-manager.c @@ -3206,14 +3206,15 @@ create_decomposed_metadata_tables (TrackerDBInterface *iface, /* Function does what it must do, so reusable atm */ range_change_for (property, n_in_col_sql, n_sel_col_sql, field_name); - - /* Columns happen to be the same for decomposed multi-value and single value atm */ + + /* Columns happen to be the same for decomposed multi-value and single value atm */ query = g_strdup_printf ("INSERT INTO \"%s_%s\"(%s) " - "SELECT %s FROM \"%s_TEMP\"", + "SELECT %s FROM \"%s_TEMP\" " + "WHERE ID IS NOT NULL AND \"%s\" IS NOT NULL", service_name, field_name, - n_in_col_sql->str, n_sel_col_sql->str, - service_name); + n_in_col_sql->str, n_sel_col_sql->str, + service_name, field_name); g_string_free (n_in_col_sql, TRUE); g_string_free (n_sel_col_sql, TRUE); |