Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Optimize sqlite mode for the solver.
Vsevolod Stakhov committed 11 years ago
commit 473d5638aae53c9aa8a7dd60817e0d001af9f5d3
parent 1fdb709
3 files changed +39 -0
modified libpkg/pkg_jobs.c
@@ -2054,6 +2054,8 @@ pkg_jobs_solve(struct pkg_jobs *j)
	FILE *spipe[2];
	pid_t pchild;

+
	pkgdb_begin_solver(j->db);
+

	switch (j->type) {
	case PKG_JOBS_AUTOREMOVE:
		ret =jobs_solve_autoremove(j);
@@ -2069,6 +2071,7 @@ pkg_jobs_solve(struct pkg_jobs *j)
		ret = jobs_solve_fetch(j);
		break;
	default:
+
		pkgdb_end_solver(j->db);
		return (EPKG_FATAL);
	}

@@ -2127,6 +2130,8 @@ pkg_jobs_solve(struct pkg_jobs *j)
	if (j->type == PKG_JOBS_DEINSTALL && j->solved)
		pkg_jobs_set_deinstall_reasons(j);

+
	pkgdb_end_solver(j->db);
+

	return (ret);
}

modified libpkg/pkgdb.c
@@ -4625,3 +4625,26 @@ pkgdb_stats(struct pkgdb *db, pkg_stats_t type)

	return (stats);
}
+

+

+
int
+
pkgdb_begin_solver(struct pkgdb *db)
+
{
+
	const char solver_sql[] = ""
+
		"PRAGMA synchronous = OFF;"
+
		"PRAGMA journal_mode = MEMORY;"
+
		"BEGIN TRANSACTION;";
+

+
	return (sql_exec(db->sqlite, solver_sql));
+
}
+

+
int
+
pkgdb_end_solver(struct pkgdb *db)
+
{
+
	const char solver_sql[] = ""
+
		"END TRANSACTION;"
+
		"PRAGMA synchronous = NORMAL;"
+
		"PRAGMA journal_mode = DELETE;";
+

+
	return (sql_exec(db->sqlite, solver_sql));
+
}
modified libpkg/private/pkgdb.h
@@ -210,5 +210,16 @@ struct pkgdb_it *pkgdb_find_shlib_provide(struct pkgdb *db,
 */
int pkgdb_unregister_pkg(struct pkgdb *pkg, int64_t id);

+
/**
+
 * Optimize db for using of solver
+
 */
+
int pkgdb_begin_solver(struct pkgdb *db);
+

+
/**
+
 * Restore normal db operations
+
 * @param db
+
 * @return
+
 */
+
int pkgdb_end_solver(struct pkgdb *db);

#endif