Page MenuHomeSoftware Heritage

D599.diff
No OneTemporary

D599.diff

diff --git a/sql/upgrades/116.sql b/sql/upgrades/116.sql
new file mode 100644
--- /dev/null
+++ b/sql/upgrades/116.sql
@@ -0,0 +1,81 @@
+-- SWH Indexer DB schema upgrade
+-- from_version: 115
+-- to_version: 116
+-- description:
+
+insert into dbversion(version, release, description)
+values(116, now(), 'Work In Progress');
+
+drop table origin_metadata_translation;
+
+create table origin_intrinsic_metadata(
+ origin_id bigserial not null,
+ metadata jsonb,
+ indexer_configuration_id bigint not null,
+ from_revision sha1_git not null
+);
+
+comment on table origin_intrinsic_metadata is 'keeps intrinsic metadata for an origin';
+comment on column origin_intrinsic_metadata.origin_id is 'the entry id in origin';
+comment on column origin_intrinsic_metadata.metadata is 'metadata extracted from a revision';
+comment on column origin_intrinsic_metadata.indexer_configuration_id is 'tool used to generate this metadata';
+comment on column origin_intrinsic_metadata.from_revision is 'sha1 of the revision this metadata was copied from.';
+
+-- create a temporary table for retrieving origin_intrinsic_metadata
+create or replace function swh_mktemp_origin_intrinsic_metadata()
+ returns void
+ language sql
+as $$
+ create temporary table tmp_origin_intrinsic_metadata (
+ like origin_intrinsic_metadata including defaults
+ ) on commit drop;
+$$;
+
+comment on function swh_mktemp_origin_intrinsic_metadata() is 'Helper table to add origin intrinsic metadata';
+
+
+-- add tmp_origin_intrinsic_metadata entries to origin_intrinsic_metadata,
+-- overwriting duplicates if conflict_update is true, skipping duplicates
+-- otherwise.
+--
+-- If filtering duplicates is in order, the call to
+-- swh_origin_intrinsic_metadata_missing must take place before calling this
+-- function.
+--
+-- operates in bulk: 0. swh_mktemp(content_language), 1. COPY to
+-- tmp_origin_intrinsic_metadata, 2. call this function
+create or replace function swh_origin_intrinsic_metadata_add(
+ conflict_update boolean)
+ returns void
+ language plpgsql
+as $$
+begin
+ if conflict_update then
+ insert into origin_intrinsic_metadata (origin_id, metadata, indexer_configuration_id, from_revision)
+ select origin_id, metadata, indexer_configuration_id, from_revision
+ from tmp_origin_intrinsic_metadata
+ on conflict(origin_id, indexer_configuration_id)
+ do update set metadata = excluded.metadata;
+
+ else
+ insert into origin_intrinsic_metadata (origin_id, metadata, indexer_configuration_id, from_revision)
+ select origin_id, metadata, indexer_configuration_id, from_revision
+ from tmp_origin_intrinsic_metadata
+ on conflict(origin_id, indexer_configuration_id)
+ do nothing;
+ end if;
+ return;
+end
+$$;
+
+comment on function swh_origin_intrinsic_metadata_add(boolean) IS 'Add new origin intrinsic metadata';
+
+
+-- origin_intrinsic_metadata
+create unique index origin_intrinsic_metadata_pkey on origin_intrinsic_metadata(origin_id, indexer_configuration_id);
+alter table origin_intrinsic_metadata add primary key using index origin_intrinsic_metadata_pkey;
+
+alter table origin_intrinsic_metadata add constraint origin_intrinsic_metadata_indexer_configuration_id_fkey foreign key (indexer_configuration_id) references indexer_configuration(id) not valid;
+alter table origin_intrinsic_metadata validate constraint origin_intrinsic_metadata_indexer_configuration_id_fkey;
+alter table origin_intrinsic_metadata add constraint origin_intrinsic_metadata_revision_metadata_fkey foreign key (from_revision, indexer_configuration_id) references revision_metadata(id, indexer_configuration_id) not valid;
+alter table origin_intrinsic_metadata validate constraint origin_intrinsic_metadata_revision_metadata_fkey;
diff --git a/swh/indexer/sql/30-swh-schema.sql b/swh/indexer/sql/30-swh-schema.sql
--- a/swh/indexer/sql/30-swh-schema.sql
+++ b/swh/indexer/sql/30-swh-schema.sql
@@ -14,7 +14,7 @@
);
insert into dbversion(version, release, description)
- values(115, now(), 'Work In Progress');
+ values(116, now(), 'Work In Progress');
-- Computing metadata on sha1's contents
-- a SHA1 checksum (not necessarily originating from Git)

File Metadata

Mime Type
text/plain
Expires
Thu, Jan 23, 2:38 AM (1 w, 2 d ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3221198

Event Timeline