-- Database schema changes: the size and mtime columns were added to the
-- segments table, and the segments_used table was added. Rather than upgrade
-- the segments table in-place, we create a new table and then rename it over
--- the old segments table.
+-- the old segments table. The intent column was also added to the snapshots
+-- table.
create table segments_new (
segmentid integer primary key,
segment text unique not null,
path text,
checksum text,
mtime real,
- size integer
+ size integer,
+ expire_time integer
);
create table segments_used (
segmentid integer not null,
utilization real
);
+create unique index segments_used_index
+ on segments_used(snapshotid, segmentid);
+
+alter table snapshots add column intent real;
+
+-- Initialize the intent column; set all old snapshots to have intent 1
+-- (intended to be a daily snapshot).
+update snapshots set intent = 1;
-- Compute the size of each of the segments, if possible, based on our
-- knowledge of the objects stored in them.
insert into segments_new
-select segmentid, segment, path, checksum, mtime, size
+select segmentid, segment, path, checksum, mtime, size, null as expire_time
from
(select segmentid, segment, path, checksum from segments)
left join
drop view segment_info;
create view segment_info as
-select segmentid, mtime, size, cast(size * utilization as integer) as used,
- utilization
+select segmentid, mtime, size, expire_time,
+ cast(size * utilization as integer) as used, utilization
from segments join
(select segmentid, max(utilization) as utilization
from segments_used group by segmentid)