From b7964fc7520a49a39e0a8fc99205a69da286fcf0 Mon Sep 17 00:00:00 2001 From: lxnay Date: Wed, 16 Apr 2008 18:45:47 +0000 Subject: [PATCH] Entropy/EquoInterface: - regenerate client database indexes only when needed git-svn-id: http://svn.sabayonlinux.org/projects/entropy/trunk@1785 cd1c1023-2f26-0410-ae45-c471fc1f0318 --- libraries/databaseTools.py | 12 ++++++++++++ libraries/entropy.py | 9 ++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/libraries/databaseTools.py b/libraries/databaseTools.py index 5a88f2383..55b7ffbe2 100644 --- a/libraries/databaseTools.py +++ b/libraries/databaseTools.py @@ -3452,6 +3452,18 @@ class etpDatabase: if not index.startswith("sqlite"): self.cursor.execute('DROP INDEX IF EXISTS %s' % (index,)) + def listAllIndexes(self, only_entropy = True): + self.cursor.execute('SELECT name FROM SQLITE_MASTER WHERE type = "index"') + indexes = self.fetchall2set(self.cursor.fetchall()) + if not only_entropy: + return indexes + myindexes = set() + for index in indexes: + if index.startswith("sqlite"): + continue + myindexes.add(index) + return myindexes + def createAllIndexes(self): self.createContentIndex() diff --git a/libraries/entropy.py b/libraries/entropy.py index 8397429cc..6246859ad 100644 --- a/libraries/entropy.py +++ b/libraries/entropy.py @@ -5720,10 +5720,13 @@ class RepoInterface: ) dbconn = self.Entropy.openRepositoryDatabase(repo) dbconn.createAllIndexes() + # get list of indexes + repo_indexes = dbconn.listAllIndexes() try: # client db can be absent - # XXX: once indexes will get close to final, remove this - self.Entropy.clientDbconn.dropAllIndexes() - self.Entropy.clientDbconn.createAllIndexes() + client_indexes = self.Entropy.clientDbconn.listAllIndexes() + if repo_indexes != client_indexes: + self.Entropy.clientDbconn.dropAllIndexes() + self.Entropy.clientDbconn.createAllIndexes() except: pass # update revision in etpRepositories