[yum-cvs] db.c

Seth Vidal skvidal at linux.duke.edu
Fri Aug 24 13:41:20 UTC 2007


 db.c |   42 ++++++++++++++++++++++++++++++++----------
 1 file changed, 32 insertions(+), 10 deletions(-)

New commits:
commit f8b238c727e0ed7af8793a4464bf3175c6acc979
Author: Seth Vidal <skvidal at fedoraproject.org>
Date:   Fri Aug 24 09:39:42 2007 -0400

    commit Florian's patches to create more indexes in the sqlite files made by
    yum-metadata-parser

diff --git a/db.c b/db.c
index 019faac..d2b51d6 100644
--- a/db.c
+++ b/db.c
@@ -380,6 +380,15 @@ yum_db_create_primary_tables (sqlite3 *db, GError **err)
         return;
     }
 
+    sql = "CREATE INDEX filenames ON files (name)";
+    rc = sqlite3_exec (db, sql, NULL, NULL, NULL);
+    if (rc != SQLITE_OK) {
+        g_set_error (err, YUM_DB_ERROR, YUM_DB_ERROR,
+                     "Can not create filenames index: %s",
+                     sqlite3_errmsg (db));
+        return;
+    }
+
     sql =
         "CREATE TABLE %s ("
         "  name TEXT,"
@@ -392,7 +401,8 @@ yum_db_create_primary_tables (sqlite3 *db, GError **err)
     const char *deps[] = { "requires", "provides", "conflicts", "obsoletes", NULL };
     int i;
 
-    const char *indexsql = "CREATE INDEX IF NOT EXISTS pkg%s on %s (pkgKey)";
+    const char *pkgindexsql = "CREATE INDEX pkg%s on %s (pkgKey)";
+    const char *nameindexsql = "CREATE INDEX %sname ON %s (name)";
 
     for (i = 0; deps[i]; i++) {
         const char *prereq;
@@ -414,7 +424,7 @@ yum_db_create_primary_tables (sqlite3 *db, GError **err)
             return;
         }
 
-        query = g_strdup_printf(indexsql, deps[i], deps[i]);
+        query = g_strdup_printf(pkgindexsql, deps[i], deps[i]);
         rc = sqlite3_exec (db, query, NULL, NULL, NULL);
         g_free (query);
 
@@ -424,15 +434,18 @@ yum_db_create_primary_tables (sqlite3 *db, GError **err)
                          deps[i], sqlite3_errmsg (db));
             return;
         }
-    }
 
-    sql = "CREATE INDEX providesname ON provides (name)";
-    rc = sqlite3_exec (db, sql, NULL, NULL, NULL);
-    if (rc != SQLITE_OK) {
-        g_set_error (err, YUM_DB_ERROR, YUM_DB_ERROR,
-                     "Can not create providesname index: %s",
-                     sqlite3_errmsg (db));
-        return;
+        if (i < 2) {
+            query = g_strdup_printf(nameindexsql, deps[i], deps[i]);
+            rc = sqlite3_exec (db, query, NULL, NULL, NULL);
+            if (rc != SQLITE_OK) {
+                g_set_error (err, YUM_DB_ERROR, YUM_DB_ERROR,
+                             "Can not create %sname index: %s",
+                             deps[i], sqlite3_errmsg (db));
+                return;
+            }
+        }
+
     }
 
     sql =
@@ -682,6 +695,15 @@ yum_db_create_filelist_tables (sqlite3 *db, GError **err)
         return;
     }
 
+    sql = "CREATE INDEX dirnames ON filelist (dirname)";
+    rc = sqlite3_exec (db, sql, NULL, NULL, NULL);
+    if (rc != SQLITE_OK) {
+        g_set_error (err, YUM_DB_ERROR, YUM_DB_ERROR,
+                     "Can not create dirnames index: %s",
+                     sqlite3_errmsg (db));
+        return;
+    }
+
     sql =
         "CREATE TRIGGER remove_filelist AFTER DELETE ON packages"
         "  BEGIN"



More information about the Yum-cvs-commits mailing list