def findTroveContainers(self, names):
        # XXX this fn could be factored out w/ getTroveContainers above
        cu = self.db.cursor()
        cu.execute("""
        CREATE TEMPORARY TABLE ftc(
            idx INTEGER,
            name %(STRING)s
        )""" % self.db.keywords, start_transaction = False)
        cu.executemany("INSERT INTO ftc VALUES(?, ?)", enumerate(names),
                       start_transaction = False)

        cu.execute("""SELECT idx, Instances.troveName, Versions.version,
                             Flavors.flavor
                        FROM ftc
                        JOIN Instances AS IncInst ON
                            ftc.name = IncInst.troveName
                        JOIN TroveTroves ON
                            IncInst.instanceId = TroveTroves.includedId
                        JOIN Instances ON
                            TroveTroves.instanceId = Instances.instanceId
                        JOIN Flavors ON
                            Instances.flavorId = Flavors.flavorId
                        JOIN Versions ON
                            Instances.versionId = Versions.versionId
                """)
        result = [ [] for x in names ]
        for (idx, name, version, flavor) in cu:
            result[idx].append((name, versions.VersionFromString(version),
                                deps.deps.ThawFlavor(flavor)))

        cu.execute("DROP TABLE ftc", start_transaction = False)

        return result