[tracker/property-changes] libtracker-data: Deal with UNIQUE in tracker:indexed ontology change



commit de36fd219fa550d0f87bcc5642efe451f1aa8685
Author: Philip Van Hoof <philip codeminded be>
Date:   Thu Apr 1 17:07:51 2010 +0200

    libtracker-data: Deal with UNIQUE in tracker:indexed ontology change

 src/libtracker-data/tracker-data-manager.c |   30 ++++++++++++++++-----------
 1 files changed, 18 insertions(+), 12 deletions(-)
---
diff --git a/src/libtracker-data/tracker-data-manager.c b/src/libtracker-data/tracker-data-manager.c
index 19281f9..e648285 100644
--- a/src/libtracker-data/tracker-data-manager.c
+++ b/src/libtracker-data/tracker-data-manager.c
@@ -109,11 +109,25 @@ set_index_for_multi_value_property (TrackerDBInterface *iface,
 		                                    field_name,
 		                                    service_name,
 		                                    field_name);
+		tracker_db_interface_execute_query (iface, NULL,
+		                                    "CREATE UNIQUE INDEX \"%s_%s_ID\" ON \"%s_%s\" (\"%s\", ID)",
+		                                    service_name,
+		                                    field_name,
+		                                    service_name,
+		                                    field_name,
+		                                    field_name);
 	} else {
 		tracker_db_interface_execute_query (iface, NULL,
 		                                    "DROP INDEX IF EXISTS \"%s_%s_ID\"",
 		                                    service_name,
 		                                    field_name);
+		tracker_db_interface_execute_query (iface, NULL,
+		                                    "CREATE UNIQUE INDEX \"%s_%s_ID\" ON \"%s_%s\" (ID, \"%s\")",
+		                                    service_name,
+		                                    field_name,
+		                                    service_name,
+		                                    field_name,
+		                                    field_name);
 	}
 }
 
@@ -1264,26 +1278,18 @@ create_decomposed_metadata_property_table (TrackerDBInterface *iface,
 				}
 			}
 
+			tracker_db_interface_execute_query (iface, NULL,
+			                                    "%s", sql->str);
+
 			/* multiple values */
 			if (tracker_property_get_indexed (property)) {
 				/* use different UNIQUE index for properties whose
 				 * value should be indexed to minimize index size */
-				tracker_db_interface_execute_query (iface, NULL,
-				                                    "%s, "
-				                                    "UNIQUE (\"%s\", ID))",
-				                                    sql->str,
-				                                    field_name);
-
 				set_index_for_multi_value_property (iface, service_name, field_name, TRUE);
-
 			} else {
+				set_index_for_multi_value_property (iface, service_name, field_name, FALSE);
 				/* we still have to include the property value in
 				 * the unique index for proper constraints */
-				tracker_db_interface_execute_query (iface, NULL,
-				                                    "%s, "
-				                                    "UNIQUE (ID, \"%s\"))",
-				                                    sql->str,
-				                                    field_name);
 			}
 
 			g_string_free (sql, TRUE);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]