62 lines
2.4 KiB
PL/PgSQL
62 lines
2.4 KiB
PL/PgSQL
-- upgrade script to migrate the Koji database schema
|
|
-- from version 1.2 to 1.3
|
|
|
|
BEGIN;
|
|
|
|
-- external yum repos
|
|
create table external_repo (
|
|
id SERIAL NOT NULL PRIMARY KEY,
|
|
name TEXT UNIQUE NOT NULL
|
|
);
|
|
-- fake repo id for internal stuff (needed for unique index)
|
|
INSERT INTO external_repo (id, name) VALUES (0, 'INTERNAL');
|
|
|
|
create table external_repo_config (
|
|
external_repo_id INTEGER NOT NULL REFERENCES external_repo(id),
|
|
url TEXT NOT NULL,
|
|
-- versioned - see earlier description of versioning
|
|
create_event INTEGER NOT NULL REFERENCES events(id) DEFAULT get_event(),
|
|
revoke_event INTEGER REFERENCES events(id),
|
|
active BOOLEAN DEFAULT 'true' CHECK (active),
|
|
CONSTRAINT active_revoke_sane CHECK (
|
|
(active IS NULL AND revoke_event IS NOT NULL )
|
|
OR (active IS NOT NULL AND revoke_event IS NULL )),
|
|
PRIMARY KEY (create_event, external_repo_id),
|
|
UNIQUE (external_repo_id, active)
|
|
) WITHOUT OIDS;
|
|
|
|
create table tag_external_repos (
|
|
tag_id INTEGER NOT NULL REFERENCES tag(id),
|
|
external_repo_id INTEGER NOT NULL REFERENCES external_repo(id),
|
|
priority INTEGER NOT NULL,
|
|
-- versioned - see earlier description of versioning
|
|
create_event INTEGER NOT NULL REFERENCES events(id) DEFAULT get_event(),
|
|
revoke_event INTEGER REFERENCES events(id),
|
|
active BOOLEAN DEFAULT 'true' CHECK (active),
|
|
CONSTRAINT active_revoke_sane CHECK (
|
|
(active IS NULL AND revoke_event IS NOT NULL )
|
|
OR (active IS NOT NULL AND revoke_event IS NULL )),
|
|
PRIMARY KEY (create_event, tag_id, priority),
|
|
UNIQUE (tag_id, priority, active),
|
|
UNIQUE (tag_id, external_repo_id, active)
|
|
);
|
|
|
|
-- add the new column then set the existing packages to have the INTERNAL exteranl repo id
|
|
-- then add the not null constraint
|
|
-- then drop rpminfo_unique_nvra CONSTRAINT and add the new version
|
|
ALTER TABLE rpminfo ADD COLUMN external_repo_id INTEGER REFERENCES external_repo(id);
|
|
UPDATE rpminfo SET external_repo_id = 0;
|
|
ALTER TABLE rpminfo ALTER COLUMN external_repo_id SET NOT NULL;
|
|
ALTER TABLE rpminfo DROP CONSTRAINT rpminfo_unique_nvra;
|
|
ALTER TABLE rpminfo ADD CONSTRAINT rpminfo_unique_nvra UNIQUE (name,version,release,arch,external_repo_id);
|
|
|
|
GRANT SELECT ON external_repo, external_repo_config, tag_external_repos TO PUBLIC;
|
|
|
|
-- these tables are no longer included with newer koji
|
|
-- feel free to drop them
|
|
-- DROP TABLE rpmfiles;
|
|
-- DROP TABLE rpmdeps;
|
|
-- DROP TABLE changelogs;
|
|
-- DROP TABLE archivefiles;
|
|
|
|
COMMIT;
|