Radish alpha
H
HardenedBSD Package Manager
Radicle
Git (anonymous pull)
Log in to clone via SSH
Add a trigger to clean old mtree.
jlaffaye committed 15 years ago
commit 11b7a92081c20533e480d8545c84509845481254
parent a11e547f5e96fb7451f1ac2cb6daa3d0619e0edc
1 file changed +5 -2
modified libpkg/pkgdb.c
@@ -118,7 +118,7 @@ pkgdb_init(sqlite3 *sdb)
		"version TEXT,"
		"comment TEXT,"
		"desc TEXT,"
-
		"mtree_id TEXT REFERENCES mtree(id) ON DELETE CASCADE,"
+
		"mtree_id TEXT REFERENCES mtree(id) ON DELETE RESTRICT,"
		"message TEXT,"
		"arch TEXT,"
		"osversion TEXT,"
@@ -171,7 +171,10 @@ pkgdb_init(sqlite3 *sdb)
	"CREATE TABLE mtree ("
		"id TEXT PRIMARY KEY,"
		"content TEXT"
-
	");";
+
	");"
+
	"CREATE TRIGGER clean_mtree AFTER DELETE ON packages BEGIN "
+
		"DELETE FROM mtree WHERE id NOT IN (SELECT DISTINCT mtree_id FROM packages);"
+
	"END;";

	if (sqlite3_exec(sdb, sql, NULL, NULL, &errmsg) != SQLITE_OK)
		errx(EXIT_FAILURE, "sqlite3_exec(): %s", errmsg);