Page MenuHomeSoftware Heritage
Paste P675


Authored by ardumont on May 18 2020, 4:12 PM.
-- SWH DB schema upgrade
-- from_version: 148
-- to_version: 149
-- description: Implement extrinsic origin-metadata specification
-- latest schema version
insert into dbversion(version, release, description)
values(149, now(), 'Work In Progress');
-- metadata_fetcher
alter table tool
rename to metadata_fetcher;
comment on table metadata_fetcher is 'Tools used to retrieve metadata';
alter table metadata_fetcher
rename column configuration to metadata;
comment on column is 'Internal identifier of the fetcher';
comment on column is 'Fetcher name';
comment on column metadata_fetcher.version is 'Fetcher version';
comment on column metadata_fetcher.metadata is 'Extra information about the fetcher';
alter index tool_pkey
rename to metadata_fetcher_pkey;
create unique index metadata_fetcher_name_version
on metadata_fetcher(name, version);
drop index tool_tool_name_tool_version_tool_configuration_idx;
-- was an index on (name, version, configuration)
-- this is the name in production; in new setups it would be called tool_name_version_configuration_idx
-- drop index tool_name_version_configuration_idx;
-- metadata_authority
alter table metadata_provider
rename to metadata_authority;
comment on table metadata_authority is 'Metadata authority information';
drop index metadata_provider_provider_name_provider_url_idx;
-- was an index on (provider_name, provider_url)
alter table metadata_authority
drop column provider_name;
alter table metadata_authority
rename column provider_type to type;
alter table metadata_authority
rename column provider_url to url;
comment on column is 'Internal identifier of the authority';
comment on column metadata_authority.type is 'Type of authority (deposit/forge/registry)';
comment on column metadata_authority.url is 'Authority''s uri';
comment on column metadata_authority.metadata is 'Other metadata about authority';
alter index metadata_provider_pkey
rename to metadata_authority_pkey;
create unique index metadata_authority_type_url
on metadata_authority(type, url);
-- origin_metadata
alter table origin_metadata
rename column provider_id to authority_id;
alter table origin_metadata
rename column tool_id to fetcher_id;
alter table origin_metadata
add column format text default 'sword-v2-atom-codemeta-v2-in-json';
alter table origin_metadata
rename column metadata to metadata_jsonb;
alter table origin_metadata
add column metadata bytea;
-- migrates metadata_jsonb (a jsonb) to metadata (a bytea)
--update origin_metadata
-- set metadata=metadata_jsonb::text::bytea;
update origin_metadata set metadata=convert_to(metadata_jsonb::text, 'utf-8');
create index origin_metadata_origin_authority_date
on origin_metadata(origin_id, authority_id, discovery_date);
drop index origin_metadata_origin_id_provider_id_tool_id_idx;
-- was an index on (origin_id, provider_id, tool_id)
alter table origin_metadata
drop column metadata_jsonb;
comment on column origin_metadata.authority_id is 'the metadata provider: github, openhub, deposit, etc.';
comment on column origin_metadata.fetcher_id is 'the tool used for extracting metadata: loaders, crawlers, etc.';
comment on column origin_metadata.format is 'name of the format of metadata, used by readers to interpret it.';
comment on column origin_metadata.metadata is 'original metadata in opaque format';
-- cleanup unused functions
drop function swh_mktemp_tool;
drop function swh_tool_add;
drop function swh_origin_metadata_get_by_origin(text);
drop function swh_origin_metadata_get_by_provider_type(text, text);
drop function swh_origin_metadata_get_by_origin(int);
drop function swh_origin_metadata_get_by_provider_type(int, text);
drop type origin_metadata_signature;