def getPathHashesForTroveList(self, troveList): """ยท Returns the pathHashes for the given trove list. """ # returns a list parallel to troveList cu = self.db.cursor() cu.execute("""CREATE TEMPORARY TABLE getTrovesTbl( idx %(PRIMARYKEY)s, troveName STRING, versionId INT, flavorId INT) """ % self.db.keywords, start_transaction = False) i = -1 for i, (name, version, flavor) in enumerate(troveList): flavorId = self.flavors.get(flavor, None) if flavorId is None: continue versionId = self.versionTable.get(version, None) if versionId is None: continue cu.execute("INSERT INTO getTrovesTbl VALUES(?, ?, ?, ?)", i, name, versionId, flavorId, start_transaction = False) cu.execute("""SELECT idx, TroveInfo.data FROM getTrovesTbl INNER JOIN Instances ON getTrovesTbl.troveName == Instances.troveName AND getTrovesTbl.flavorId == Instances.flavorId AND getTrovesTbl.versionId == Instances.versionId AND Instances.isPresent == 1 INNER JOIN TroveInfo USING (instanceId) WHERE TroveInfo.infoType = ? """, trove._TROVEINFO_TAG_PATH_HASHES) r = [ None ] * (i + 1) for (idx, data) in cu: r[idx] = trove.PathHashes(data) cu.execute("DROP TABLE getTrovesTbl", start_transaction = False) return r