Page MenuHomeSoftware Heritage

025.sql
No OneTemporary

-- SWH DB schema upgrade
-- from_version: 24
-- to_version: 25
-- description: Add synthetic flag to release and revision. Update gnu
-- project to appease apgdiff.
insert into dbversion(version, release, description)
values(25, now(), 'Work In Progress');
ALTER TABLE "release"
ADD COLUMN synthetic boolean DEFAULT false NOT NULL;
ALTER TABLE revision
ADD COLUMN synthetic boolean DEFAULT false NOT NULL;
ALTER TYPE revision_log_entry
ADD ATTRIBUTE synthetic boolean;
ALTER TYPE revision_entry
DROP ATTRIBUTE parents,
ADD ATTRIBUTE synthetic boolean,
ADD ATTRIBUTE parents bytea[];
UPDATE organization SET description='GNU is not Unix!' where name='gnu';
CREATE OR REPLACE FUNCTION swh_release_add() RETURNS void
LANGUAGE plpgsql
AS $$
begin
perform swh_person_add_from_release();
insert into release (id, revision, date, date_offset, name, comment, author, synthetic)
select t.id, t.revision, t.date, t.date_offset, t.name, t.comment, a.id, t.synthetic
from tmp_release t
left join person a on a.name = t.author_name and a.email = t.author_email;
return;
end
$$;
CREATE OR REPLACE FUNCTION swh_revision_add() RETURNS void
LANGUAGE plpgsql
AS $$
begin
perform swh_person_add_from_revision();
insert into revision (id, date, date_offset, committer_date, committer_date_offset, type, directory, message, author, committer, synthetic)
select t.id, t.date, t.date_offset, t.committer_date, t.committer_date_offset, t.type, t.directory, t.message, a.id, c.id, t.synthetic
from tmp_revision t
left join person a on a.name = t.author_name and a.email = t.author_email
left join person c on c.name = t.committer_name and c.email = t.committer_email;
return;
end
$$;
CREATE OR REPLACE FUNCTION swh_revision_get() RETURNS SETOF revision_entry
LANGUAGE plpgsql
AS $$
begin
return query
select t.id, r.date, r.date_offset,
r.committer_date, r.committer_date_offset,
r.type, r.directory, r.message,
a.name, a.email, c.name, c.email, r.synthetic,
array_agg(rh.parent_id::bytea order by rh.parent_rank)
as parents
from tmp_revision t
left join revision r on t.id = r.id
left join person a on a.id = r.author
left join person c on c.id = r.committer
left join revision_history rh on rh.id = r.id
group by t.id, a.name, a.email, r.date, r.date_offset,
c.name, c.email, r.committer_date, r.committer_date_offset,
r.type, r.directory, r.message, r.synthetic;
return;
end
$$;
CREATE OR REPLACE FUNCTION swh_revision_log(root_revision sha1_git) RETURNS SETOF revision_log_entry
LANGUAGE sql STABLE
AS $$
select revision.id, date, date_offset,
committer_date, committer_date_offset,
type, directory, message,
author.name as author_name, author.email as author_email,
committer.name as committer_name, committer.email as committer_email,
revision.synthetic
from swh_revision_list(root_revision) as rev_list
join revision on revision.id = rev_list
join person as author on revision.author = author.id
join person as committer on revision.committer = committer.id;
$$;

File Metadata

Mime Type
text/plain
Expires
Fri, Jul 4, 4:24 PM (2 w, 3 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3283054

Event Timeline