debian-koji/docs/schema-upgrade-1.2-1.3.sql
2011-05-20 12:34:10 -04:00

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;