+ if self.format < 7:
+ c.executescript("""
+ CREATE TABLE dependencies(pkg INTEGER, type TEXT, dependency TEXT);
+ CREATE INDEX dependencies_pkg_index ON dependencies(pkg);
+ """)
+
+ c.execute("SELECT id, provides, requires, conflicts, obsoletes, recommends, suggests FROM packages")
+ pkgs = c.fetchall()
+
+ for pkg in pkgs:
+ (pkg_id, provides, requires, conflicts, obsoletes, recommends, suggests) = pkg
+
+ dependencies = (
+ ("provides", provides),
+ ("requires", requires),
+ ("conflicts", conflicts),
+ ("obsoletes", obsoletes),
+ ("recommends", recommends),
+ ("suggests", suggests),
+ )
+
+ for type, deps in dependencies:
+ c.executemany("INSERT INTO dependencies(pkg, type, dependency) VALUES(?, ?, ?)",
+ ((pkg_id, type, d) for d in deps))
+
+ c.executescript("""
+ CREATE TABLE packages_(
+ id INTEGER PRIMARY KEY,
+ name TEXT,
+ epoch INTEGER,
+ version TEXT,
+ release TEXT,
+ arch TEXT,
+ groups TEXT,
+ filename TEXT,
+ size INTEGER,
+ inst_size INTEGER,
+ hash1 TEXT,
+ license TEXT,
+ summary TEXT,
+ description TEXT,
+ uuid TEXT,
+ vendor TEXT,
+ build_id TEXT,
+ build_host TEXT,
+ build_date TEXT,
+ build_time INTEGER,
+ installed INT,
+ reason TEXT,
+ repository TEXT
+ );
+
+ INSERT INTO packages_ SELECT id, name, epoch, version, release, arch, groups, filename,
+ size, inst_size, hash1, license, summary, description, uuid, vendor, build_id,
+ build_host, build_date, build_time, installed, reason, repository FROM packages;
+
+ DROP TABLE packages;
+ ALTER TABLE packages_ RENAME TO packages;
+
+ DROP TABLE triggers;
+
+ CREATE INDEX files_pkg_index ON files(pkg);
+ CREATE INDEX scriptlets_pkg_index ON scriptlets(pkg);
+ CREATE INDEX packages_name_index ON packages(name);
+ """)
+