Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
Fix upgrade, while here completly forbid downgrade when installing/upgrading
Baptiste Daroussin committed 13 years ago
commit 3e6ba6bd47f32ae6f546ddb75b6f7e1558e78429
parent ccb9bb7
1 file changed +15 -7
modified libpkg/pkgdb.c
@@ -51,9 +51,9 @@
#include "private/db_upgrades.h"
#define DBVERSION 12

-
#define PKGGT	0<<1
-
#define PKGLT	0<<2
-
#define PKGEQ	0<<3
+
#define PKGGT	1<<1
+
#define PKGLT	1<<2
+
#define PKGEQ	1<<3

static struct pkgdb_it * pkgdb_it_new(struct pkgdb *, sqlite3_stmt *, int);
static void pkgdb_regex(sqlite3_context *, int, sqlite3_value **, int);
@@ -2447,9 +2447,13 @@ pkgdb_query_installs(struct pkgdb *db, match_t match, int nbpkgs, char **pkgs, c
	if (!force) {
		sql_exec(db->sqlite, "DELETE FROM pkgjobs WHERE "
		    "(SELECT p.origin FROM main.packages AS p WHERE "
-
		    "p.origin=pkgjobs.origin AND PKGLE(p.version,pkgjobs.version) AND p.name = pkgjobs.name "
-
		    "AND (SELECT group_concat(option) FROM (select option FROM main.options WHERE package_id=p.id AND value='on' ORDER BY option)) IS pkgjobs.opts) "
+
		    "p.origin=pkgjobs.origin AND PKGGT(p.version,pkgjobs.version))"
		    "IS NOT NULL;");
+
		sql_exec(db->sqlite, "DELETE FROM pkgjobs WHERE "
+
		    "(SELECT p.origin FROM main.packages AS p WHERE "
+
		    "p.origin=pkgjobs.origin AND p.version=pkgjobs.version AND p.name = pkgjobs.name "
+
		    "AND (SELECT group_concat(option) FROM (select option FROM main.options WHERE package_id=p.id AND value='on' ORDER BY option)) IS pkgjobs.opts "
+
		    ")IS NOT NULL;");
	}

	/* Append dependencies */
@@ -2578,9 +2582,13 @@ pkgdb_query_upgrades(struct pkgdb *db, const char *repo, bool all)
	if (!all) {
		sql_exec(db->sqlite, "DELETE FROM pkgjobs WHERE "
		    "(SELECT p.origin FROM main.packages AS p WHERE "
-
		    "p.origin=pkgjobs.origin AND PKGLE(p.version,pkgjobs.version) AND p.name = pkgjobs.name "
-
		    "AND (SELECT group_concat(option) FROM (select option FROM main.options WHERE package_id=p.id AND value='on' ORDER BY option)) IS pkgjobs.opts) "
+
		    "p.origin=pkgjobs.origin AND PKGGT(p.version,pkgjobs.version))"
		    "IS NOT NULL;");
+
		sql_exec(db->sqlite, "DELETE FROM pkgjobs WHERE "
+
		    "(SELECT p.origin FROM main.packages AS p WHERE "
+
		    "p.origin=pkgjobs.origin AND p.version=pkgjobs.version AND p.name = pkgjobs.name "
+
		    "AND (SELECT group_concat(option) FROM (select option FROM main.options WHERE package_id=p.id AND value='on' ORDER BY option)) IS pkgjobs.opts "
+
		    ")IS NOT NULL;");
	}

	sbuf_reset(sql);