X-Git-Url: http://git.vrable.net/?a=blobdiff_plain;f=localdb.cc;h=a23ca5e83d2a3e2bca38ec14b225e4e845898163;hb=8f5e4e22660dba64b733acdaa9e4ed94731bdb72;hp=ca8355951bedd9f102c957208cec5e472d79424c;hpb=3d780590edec4583eb3ef0ca16120afd0f7451f9;p=cumulus.git diff --git a/localdb.cc b/localdb.cc index ca83559..a23ca5e 100644 --- a/localdb.cc +++ b/localdb.cc @@ -70,7 +70,7 @@ void LocalDb::ReportError(int rc) } void LocalDb::Open(const char *path, const char *snapshot_name, - const char *snapshot_scheme, double intent) + const char *snapshot_scheme) { int rc; @@ -115,13 +115,12 @@ void LocalDb::Open(const char *path, const char *snapshot_name, /* Insert this snapshot into the database, and determine the integer key * which will be used to identify it. */ - stmt = Prepare("insert into snapshots(name, scheme, timestamp, intent) " - "values (?, ?, julianday('now'), ?)"); + stmt = Prepare("insert into snapshots(name, scheme, timestamp) " + "values (?, ?, julianday('now'))"); sqlite3_bind_text(stmt, 1, snapshot_name, strlen(snapshot_name), SQLITE_TRANSIENT); sqlite3_bind_text(stmt, 2, snapshot_scheme, strlen(snapshot_scheme), SQLITE_TRANSIENT); - sqlite3_bind_double(stmt, 3, intent); rc = sqlite3_step(stmt); if (rc != SQLITE_DONE) { @@ -283,17 +282,6 @@ void LocalDb::StoreObject(const ObjectReference& ref, double age) } sqlite3_finalize(stmt); - - if (age != 0.0) { - stmt = Prepare("update segments " - "set mtime = coalesce(max(mtime, ?), ?) " - "where segmentid = ?"); - sqlite3_bind_double(stmt, 1, age); - sqlite3_bind_double(stmt, 2, age); - sqlite3_bind_int64(stmt, 3, SegmentToId(ref.get_segment())); - rc = sqlite3_step(stmt); - sqlite3_finalize(stmt); - } } ObjectReference LocalDb::FindObject(const string &checksum, int64_t size) @@ -495,25 +483,28 @@ void LocalDb::UseObject(const ObjectReference& ref) } } -void LocalDb::SetSegmentChecksum(const std::string &segment, +void LocalDb::SetSegmentMetadata(const std::string &segment, const std::string &path, const std::string &checksum, + const std::string &type, int data_size, int disk_size) { int rc; sqlite3_stmt *stmt; stmt = Prepare("update segments set path = ?, checksum = ?, " - "data_size = ?, disk_size = ?, " + "type = ?, data_size = ?, disk_size = ?, " "mtime = coalesce(mtime, julianday('now')) " "where segmentid = ?"); sqlite3_bind_text(stmt, 1, path.c_str(), path.size(), SQLITE_TRANSIENT); sqlite3_bind_text(stmt, 2, checksum.c_str(), checksum.size(), SQLITE_TRANSIENT); - sqlite3_bind_int64(stmt, 3, data_size); - sqlite3_bind_int64(stmt, 4, disk_size); - sqlite3_bind_int64(stmt, 5, SegmentToId(segment)); + sqlite3_bind_text(stmt, 3, type.c_str(), type.size(), + SQLITE_TRANSIENT); + sqlite3_bind_int64(stmt, 4, data_size); + sqlite3_bind_int64(stmt, 5, disk_size); + sqlite3_bind_int64(stmt, 6, SegmentToId(segment)); rc = sqlite3_step(stmt); if (rc != SQLITE_DONE) { @@ -524,7 +515,7 @@ void LocalDb::SetSegmentChecksum(const std::string &segment, sqlite3_finalize(stmt); } -bool LocalDb::GetSegmentChecksum(const string &segment, +bool LocalDb::GetSegmentMetadata(const string &segment, string *seg_path, string *seg_checksum) {