X-Git-Url: http://git.vrable.net/?a=blobdiff_plain;f=contrib%2Fupgrade0.6-localdb.sql;h=49fc1aabef7b08b706731ee0081023d8b6a54c3e;hb=86852c7d1d491d73ae9ecc64ee5a8c3dcece4ca0;hp=0733ba13948c1d444df50676ac388b798d89bca8;hpb=cae5d6103b0efeb5cd34cd67c65df745ef4d598b;p=cumulus.git diff --git a/contrib/upgrade0.6-localdb.sql b/contrib/upgrade0.6-localdb.sql index 0733ba1..49fc1aa 100644 --- a/contrib/upgrade0.6-localdb.sql +++ b/contrib/upgrade0.6-localdb.sql @@ -4,16 +4,19 @@ -- This script should be loaded after connecting to the database to be -- upgraded. --- Database schema changes: the size column was 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. +-- 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 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, - size integer + mtime real, + size integer, + expire_time integer ); create table segments_used ( @@ -21,15 +24,24 @@ 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, size +select segmentid, segment, path, checksum, mtime, size, null as expire_time from (select segmentid, segment, path, checksum from segments) left join - (select segmentid, sum(size) as size from block_index group by segmentid) + (select segmentid, sum(size) as size, max(timestamp) as mtime + from block_index group by segmentid) using (segmentid); drop table segments; @@ -50,3 +62,15 @@ using (segmentid); -- The snapshot_contents table is obsolete. drop table snapshot_contents; + +-- Upgrade database views. +drop view cleaning_order; +drop view segment_info; + +create view segment_info as +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) +using (segmentid);