]> git.donarmstrong.com Git - debbugs.git/blobdiff - sql/debbugs_schema.sql
remove useless primary keys in mapping tables
[debbugs.git] / sql / debbugs_schema.sql
index 7856f69f4ba368cf65c57c9d52ec8463915af7e1..ea8446453cf4e861b4a30c4e9c99d79144679772 100644 (file)
@@ -171,16 +171,19 @@ INSERT INTO column_comments VALUES ('bug_merged','merged','Bug number which is m
 CREATE TABLE src_pkg (
        id SERIAL PRIMARY KEY,
        pkg TEXT NOT NULL,
-       pseduopkg BOOLEAN DEFAULT FALSE,
+       pseduopkg BOOLEAN NOT NULL DEFAULT FALSE,
        alias_of INT REFERENCES src_pkg ON UPDATE CASCADE ON DELETE CASCADE,
-       creation TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
-       disabled TIMESTAMP WITH TIME ZONE DEFAULT NULL,
-       last_modified TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
-       obsolete BOOLEAN DEFAULT FALSE,
+       creation TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
+       disabled TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT 'infinity'::timestamp with time zone,
+       last_modified TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),
+       obsolete BOOLEAN NOT NULL DEFAULT FALSE,
        CONSTRAINT src_pkg_doesnt_alias_itself CHECK (id <> alias_of),
-       CONSTRAINT src_pkg_is_obsolete_if_disabled CHECK ((obsolete IS FALSE AND disabled IS NULL) OR (obsolete IS TRUE AND disabled IS NOT NULL))
+       CONSTRAINT src_pkg_is_obsolete_if_disabled CHECK (
+          (obsolete IS FALSE AND disabled='infinity'::timestamp with time zone) OR
+          (obsolete IS TRUE AND disabled < 'infinity'::timestamp with time zone))
 );
 CREATE INDEX src_pkg_pkg ON src_pkg(pkg);
+CREATE UNIQUE INDEX src_pkg_pkg_null ON src_pkg(pkg) WHERE disabled='infinity'::timestamp with time zone;
 CREATE UNIQUE INDEX src_pkg_pkg_disabled ON src_pkg(pkg,disabled);
 INSERT INTO table_comments VALUES ('src_pkg','Source packages');
 INSERT INTO column_comments VALUES ('src_pkg','id','Source package id');
@@ -293,7 +296,6 @@ INSERT INTO column_comments VALUES ('tag','tag','Tag name');
 INSERT INTO column_comments VALUES ('tag','obsolete','Whether a tag is obsolete (should not be set on new bugs)');
 
 CREATE TABLE bug_tag (
-       id SERIAL PRIMARY KEY,
        bug INT NOT NULL REFERENCES bug,
        tag INT NOT NULL REFERENCES tag
 );
@@ -319,7 +321,6 @@ CREATE UNIQUE INDEX user_tag_tag_correspondent ON user_tag(tag,correspondent);
 CREATE INDEX user_tag_correspondent ON user_tag(correspondent);
 
 CREATE TABLE bug_user_tag (
-       id SERIAL PRIMARY KEY,
        bug INT NOT NULL REFERENCES bug,
        user_tag INT NOT NULL REFERENCES user_tag
 );
@@ -332,7 +333,6 @@ CREATE INDEX bug_user_tag_tag ON bug_user_tag (user_tag);
 CREATE INDEX bug_user_tag_bug ON bug_user_tag (bug);
 
 CREATE TABLE bug_binpackage (
-       id SERIAL PRIMARY KEY,
        bug INT NOT NULL REFERENCES bug,
        bin_pkg INT NOT NULL REFERENCES bin_pkg ON UPDATE CASCADE ON DELETE CASCADE
 );
@@ -342,7 +342,6 @@ INSERT INTO column_comments VALUES ('bug_binpackage','bug','Bug id (matches bug)
 INSERT INTO column_comments VALUES ('bug_binpackage','bin_pkg','Binary package id (matches bin_pkg)');
 
 CREATE TABLE bug_srcpackage (
-       id SERIAL PRIMARY KEY,
        bug INT NOT NULL REFERENCES bug,
        src_pkg INT NOT NULL REFERENCES src_pkg ON UPDATE CASCADE ON DELETE CASCADE
 );
@@ -359,7 +358,6 @@ CREATE VIEW bug_package (bug,pkg_id,pkg_type,package) AS
               SELECT s.bug,s.src_pkg,'source',sp.pkg FROM bug_srcpackage s JOIN src_pkg sp ON sp.id=s.src_pkg;
 
 CREATE TABLE bug_affects_binpackage (
-       id SERIAL PRIMARY KEY,
        bug INT NOT NULL REFERENCES bug,
        bin_pkg INT NOT NULL REFERENCES bin_pkg ON UPDATE CASCADE ON DELETE CASCADE
 );
@@ -369,7 +367,6 @@ INSERT INTO column_comments VALUES ('bug_affects_binpackage','bug','Bug id (matc
 INSERT INTO column_comments VALUES ('bug_affects_binpackage','bin_pkg','Binary package id (matches bin_pkg)');
 
 CREATE TABLE bug_affects_srcpackage (
-       id SERIAL PRIMARY KEY,
        bug INT NOT NULL REFERENCES bug,
        src_pkg INT NOT NULL REFERENCES src_pkg ON UPDATE CASCADE ON DELETE CASCADE
 );
@@ -437,7 +434,6 @@ CREATE UNIQUE INDEX src_associations_source_suite ON src_associations(source,sui
 
 CREATE TYPE bug_status_type AS ENUM ('pending','forwarded','pending-fixed','fixed','absent','done');
 CREATE TABLE bug_status_cache (
-       id SERIAL PRIMARY KEY,
        bug INT NOT NULL REFERENCES bug ON DELETE CASCADE ON UPDATE CASCADE,
        suite INT REFERENCES suite ON DELETE CASCADE ON UPDATE CASCADE,
        arch INT REFERENCES arch ON DELETE CASCADE ON UPDATE CASCADE,
@@ -492,7 +488,6 @@ CREATE UNIQUE INDEX message_msgid_from_complete_to_complete_subject_idx
 CREATE INDEX message_subject_idx ON message(subject);
 
 CREATE TABLE message_refs (
-       id SERIAL PRIMARY KEY,
        message INT NOT NULL REFERENCES message ON DELETE CASCADE ON UPDATE CASCADE,
        refs INT NOT NULL REFERENCES message ON DELETE CASCADE ON UPDATE CASCADE,
        inferred BOOLEAN DEFAULT FALSE,
@@ -528,7 +523,6 @@ INSERT INTO column_comments VALUES ('correspondent_full_name','full_name','Corre
 CREATE TYPE message_correspondent_type AS ENUM ('to','from','envfrom','cc');
 
 CREATE TABLE message_correspondent (
-       id SERIAL PRIMARY KEY,
        message INT NOT NULL REFERENCES message ON DELETE CASCADE ON UPDATE CASCADE,
        correspondent INT NOT NULL REFERENCES correspondent ON DELETE CASCADE ON UPDATE CASCADE,
        correspondent_type message_correspondent_type NOT NULL DEFAULT 'to'
@@ -544,7 +538,6 @@ CREATE INDEX message_correspondent_idx_correspondent ON message_correspondent(co
 CREATE INDEX message_correspondent_idx_message ON message_correspondent(message);
 
 CREATE TABLE bug_message (
-       id SERIAL PRIMARY KEY,
        bug INT NOT NULL REFERENCES bug ON DELETE CASCADE ON UPDATE CASCADE,
        message INT NOT NULL REFERENCES message ON DELETE CASCADE ON UPDATE CASCADE,
        message_number INT NOT NULL,