diff options
author | Kenneth Skovhede <kenneth@hexad.dk> | 2014-11-24 00:07:55 +0300 |
---|---|---|
committer | Kenneth Skovhede <kenneth@hexad.dk> | 2014-11-24 00:07:55 +0300 |
commit | 10c5cc9408b9536f8aa5efe6eabe3c67614da863 (patch) | |
tree | e49b4c594829ba0123fadc9d8b6aa35feacda4c3 | |
parent | bee55a951e370b6ead2ae052ebd2fcf2cbee353b (diff) |
Added missing SQL command and improved speed of the queries
-rw-r--r-- | Duplicati/Library/Main/Database/LocalRepairDatabase.cs | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/Duplicati/Library/Main/Database/LocalRepairDatabase.cs b/Duplicati/Library/Main/Database/LocalRepairDatabase.cs index 2db211702..3ceb7f78b 100644 --- a/Duplicati/Library/Main/Database/LocalRepairDatabase.cs +++ b/Duplicati/Library/Main/Database/LocalRepairDatabase.cs @@ -151,18 +151,22 @@ namespace Duplicati.Library.Main.Database var blockCount = cmd.ExecuteNonQuery(string.Format(@"INSERT INTO ""{0}"" (""Hash"", ""Size"", ""Restored"") SELECT DISTINCT ""Block"".""Hash"", ""Block"".""Size"", 0 AS ""Restored"" FROM ""Block"",""Remotevolume"" WHERE ""Block"".""VolumeID"" = ""Remotevolume"".""ID"" AND ""Remotevolume"".""Name"" = ? ", m_tablename), volumename);
if (blockCount == 0)
throw new Exception(string.Format("Unexpected empty block volume: {0}", volumename));
+
+ cmd.ExecuteNonQuery(string.Format(@"CREATE UNIQUE INDEX ""{0}-Ix"" ON ""{0}"" (""Hash"", ""Size"", ""Restored"")", tablename));
}
-
+
m_insertCommand = m_connection.CreateCommand();
m_insertCommand.Transaction = m_transaction.Parent;
- m_insertCommand.AddParameters(3);
+ m_insertCommand.CommandText = string.Format(@"UPDATE ""{0}"" SET ""Restored"" = ? WHERE ""Hash"" = ? AND ""Size"" = ? AND ""Restored"" = ? ", tablename);
+ m_insertCommand.AddParameters(4);
}
public bool SetBlockRestored(string hash, long size)
{
- m_insertCommand.SetParameterValue(0, hash);
- m_insertCommand.SetParameterValue(1, size);
- m_insertCommand.SetParameterValue(2, 1);
+ m_insertCommand.SetParameterValue(0, 1);
+ m_insertCommand.SetParameterValue(1, hash);
+ m_insertCommand.SetParameterValue(2, size);
+ m_insertCommand.SetParameterValue(3, 0);
return m_insertCommand.ExecuteNonQuery() == 1;
}
|