}
void LocalDb::Open(const char *path, const char *snapshot_name,
- const char *snapshot_scheme, double intent)
+ const char *snapshot_scheme)
{
int rc;
/* 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) {
}
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)
sqlite3_stmt *stmt;
bool found = false;
- stmt = Prepare("select segmentid, object, timestamp, expired "
+ stmt = Prepare("select segmentid, object, julianday(timestamp), expired "
"from block_index where checksum = ? and size = ?");
sqlite3_bind_text(stmt, 1, checksum.c_str(), checksum.size(),
SQLITE_TRANSIENT);
// size will have a reference size capped at just less than the full object
// size (we can't tell if some bytes were referenced multiple times, and
// thus we conservatively assume some bytes might still be unreferenced).
- int64_t new_refs = old_size;
+ int64_t new_refs;
if (ref.has_range()) {
new_refs = ref.get_range_length();
} else {
}
}
-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 = ?, "
- "mtime = coalesce(mtime, julianday('now')) "
+ "type = ?, data_size = ?, disk_size = ?, "
+ "timestamp = coalesce(julianday(timestamp), "
+ " 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) {
sqlite3_finalize(stmt);
}
-bool LocalDb::GetSegmentChecksum(const string &segment,
+bool LocalDb::GetSegmentMetadata(const string &segment,
string *seg_path,
string *seg_checksum)
{