diff --git a/sql/upgrades/160.sql b/sql/upgrades/160.sql new file mode 100644 --- /dev/null +++ b/sql/upgrades/160.sql @@ -0,0 +1,41 @@ +-- SWH DB schema upgrade +-- from_version: 159 +-- to_version: 160 +-- description: Make neg_utc_offset not null + +-- latest schema version +insert into dbversion(version, release, description) + values(160, now(), 'Work Still In Progress'); + +update revision + set date_neg_utc_offset=false + where date is not null and date_neg_utc_offset is null; +update revision + set committer_date_neg_utc_offset=false + where committer_date is not null and committer_date_neg_utc_offset is null; + +alter table revision + add constraint revision_date_neg_utc_offset_not_null + check (date is null or date_neg_utc_offset is not null) + not valid; +alter table revision + add constraint revision_committer_date_neg_utc_offset_not_null + check (committer_date is null or committer_date_neg_utc_offset is not null) + not valid; + +alter table revision + validate constraint revision_date_neg_utc_offset_not_null; +alter table revision + validate constraint revision_committer_date_neg_utc_offset_not_null; + +update release + set date_neg_utc_offset=false + where date is not null and date_neg_utc_offset is null; + +alter table release + add constraint release_date_neg_utc_offset_not_null + check (date is null or date_neg_utc_offset is not null) + not valid; + +alter table release + validate constraint release_date_neg_utc_offset_not_null; diff --git a/swh/storage/sql/60-swh-indexes.sql b/swh/storage/sql/60-swh-indexes.sql --- a/swh/storage/sql/60-swh-indexes.sql +++ b/swh/storage/sql/60-swh-indexes.sql @@ -81,6 +81,20 @@ alter table revision add constraint revision_committer_fkey foreign key (committer) references person(id) not valid; alter table revision validate constraint revision_committer_fkey; +alter table revision + add constraint revision_date_neg_utc_offset_not_null + check (date is null or date_neg_utc_offset is not null) + not valid; +alter table revision + add constraint revision_committer_date_neg_utc_offset_not_null + check (committer_date is null or committer_date_neg_utc_offset is not null) + not valid; + +alter table revision + validate constraint revision_date_neg_utc_offset_not_null; +alter table revision + validate constraint revision_committer_date_neg_utc_offset_not_null; + create index concurrently on revision(directory); create unique index concurrently on revision(object_id); @@ -152,6 +166,14 @@ alter table release add constraint release_author_fkey foreign key (author) references person(id) not valid; alter table release validate constraint release_author_fkey; +alter table release + add constraint release_date_neg_utc_offset_not_null + check (date is null or date_neg_utc_offset is not null) + not valid; + +alter table release + validate constraint release_date_neg_utc_offset_not_null; + -- if the author is null, then the date must be null alter table release add constraint release_author_date_check check ((date is null) or (author is not null)) not valid; alter table release validate constraint release_author_date_check;