about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--src/libstore/local-store.cc7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/libstore/local-store.cc b/src/libstore/local-store.cc
index 071f8a2231bd..cf0d559bdfb9 100644
--- a/src/libstore/local-store.cc
+++ b/src/libstore/local-store.cc
@@ -311,7 +311,7 @@ void LocalStore::openDB(bool create)
 
     /* Prepare SQL statements. */
     stmtRegisterValidPath.create(db,
-        "insert or replace into ValidPaths (path, hash, registrationTime, deriver) values (?, ?, ?, ?);");
+        "insert into ValidPaths (path, hash, registrationTime, deriver) values (?, ?, ?, ?);");
     stmtAddReference.create(db,
         "insert or replace into Refs (referrer, reference) values (?, ?);");
     stmtQueryPathInfo.create(db,
@@ -837,7 +837,10 @@ void LocalStore::registerValidPaths(const ValidPathInfos & infos)
 {
     SQLiteTxn txn(db);
     
-    foreach (ValidPathInfos::const_iterator, i, infos) addValidPath(*i);
+    foreach (ValidPathInfos::const_iterator, i, infos)
+        /* !!! Maybe the registration info should be updated if the
+           path is already valid. */
+        if (!isValidPath(i->path)) addValidPath(*i);
 
     foreach (ValidPathInfos::const_iterator, i, infos) {
         unsigned long long referrer = queryValidPathId(i->path);