]> git.donarmstrong.com Git - debbugs.git/blobdiff - sql/debbugs_schema.sql
only drop tables, views, and types if they exist
[debbugs.git] / sql / debbugs_schema.sql
index 3eaeee69fa70ab60568489733acf84e3fe96d086..0e6f4e512871d759f29300aecdcd444acf790789 100644 (file)
@@ -1,40 +1,40 @@
 -- -*- mode: sql; sql-product: postgres; -*-
-DROP TABLE bug_status_cache CASCADE;
-DROP VIEW bug_package CASCADE;
-DROP VIEW binary_versions CASCADE;
-DROP VIEW bug_status CASCADE;
-DROP TABLE bug_tag CASCADE;
-DROP TABLE tag CASCADE;
-DROP TABLE bug_user_tag CASCADE;
-DROP TABLE user_tag CASCADE;
-DROP TABLE severity CASCADE;
-DROP TABLE bug CASCADE;
-DROP TABLE src_pkg CASCADE;
-DROP TABLE bug_ver CASCADE;
-DROP TABLE src_ver CASCADE;
-DROP TABLE arch CASCADE;
-DROP TABLE bin_ver CASCADE;
-DROP TABLE bin_pkg CASCADE;
-DROP TABLE bug_blocks CASCADE;
-DROP TABLE bug_merged CASCADE;
-DROP TABLE bug_srcpackage CASCADE;
-DROP TABLE bug_binpackage CASCADE;
-DROP TABLE bug_affects_binpackage CASCADE;
-DROP TABLE bug_affects_srcpackage CASCADE;
-DROP TABLE suite CASCADE;
-DROP TABLE bin_associations CASCADE;
-DROP TABLE src_associations CASCADE;
-DROP TABLE maintainer CASCADE;
-DROP TABLE bug_message CASCADE;
-DROP TABLE message_correspondent CASCADE;
-DROP TABLE correspondent_full_name CASCADE;
-DROP TABLE correspondent CASCADE;
-DROP TABLE message_refs CASCADE;
-DROP TABLE message CASCADE;
-DROP TYPE message_correspondent_type CASCADE;
-DROP TABLE table_comments CASCADE;
-DROP TABLE column_comments CASCADE;
-DROP TYPE bug_status_type CASCADE;
+DROP TABLE IF EXISTS bug_status_cache CASCADE;
+DROP VIEW IF EXISTS bug_package CASCADE;
+DROP VIEW IF EXISTS binary_versions CASCADE;
+DROP VIEW IF EXISTS bug_status CASCADE;
+DROP TABLE IF EXISTS bug_tag CASCADE;
+DROP TABLE IF EXISTS tag CASCADE;
+DROP TABLE IF EXISTS bug_user_tag CASCADE;
+DROP TABLE IF EXISTS user_tag CASCADE;
+DROP TABLE IF EXISTS severity CASCADE;
+DROP TABLE IF EXISTS bug CASCADE;
+DROP TABLE IF EXISTS src_pkg CASCADE;
+DROP TABLE IF EXISTS bug_ver CASCADE;
+DROP TABLE IF EXISTS src_ver CASCADE;
+DROP TABLE IF EXISTS arch CASCADE;
+DROP TABLE IF EXISTS bin_ver CASCADE;
+DROP TABLE IF EXISTS bin_pkg CASCADE;
+DROP TABLE IF EXISTS bug_blocks CASCADE;
+DROP TABLE IF EXISTS bug_merged CASCADE;
+DROP TABLE IF EXISTS bug_srcpackage CASCADE;
+DROP TABLE IF EXISTS bug_binpackage CASCADE;
+DROP TABLE IF EXISTS bug_affects_binpackage CASCADE;
+DROP TABLE IF EXISTS bug_affects_srcpackage CASCADE;
+DROP TABLE IF EXISTS suite CASCADE;
+DROP TABLE IF EXISTS bin_associations CASCADE;
+DROP TABLE IF EXISTS src_associations CASCADE;
+DROP TABLE IF EXISTS maintainer CASCADE;
+DROP TABLE IF EXISTS bug_message CASCADE;
+DROP TABLE IF EXISTS message_correspondent CASCADE;
+DROP TABLE IF EXISTS correspondent_full_name CASCADE;
+DROP TABLE IF EXISTS correspondent CASCADE;
+DROP TABLE IF EXISTS message_refs CASCADE;
+DROP TABLE IF EXISTS message CASCADE;
+DROP TYPE IF EXISTS message_correspondent_type CASCADE;
+DROP TABLE IF EXISTS table_comments CASCADE;
+DROP TABLE IF EXISTS column_comments CASCADE;
+DROP TYPE IF EXISTS bug_status_type CASCADE;
 
 -- the following two tables are used to provide documentation about
 -- the tables and columns for DBIx::Class::Schema::Loader
@@ -406,6 +406,7 @@ CREATE TABLE bug_binpackage (
        bin_pkg INT NOT NULL REFERENCES bin_pkg ON UPDATE CASCADE ON DELETE CASCADE
 );
 CREATE UNIQUE INDEX bug_binpackage_id_pkg ON bug_binpackage(bug,bin_pkg);
+CREATE UNIQUE INDEX bug_binpackage_bin_pkg_bug_idx ON bug_binpackage(bin_pkg,bug);
 INSERT INTO table_comments VALUES ('bug_binpackage','Bug <-> binary package mapping');
 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)');
@@ -652,6 +653,8 @@ CREATE VIEW bug_status --(id,bug_num,tags,subject,
                     JOIN src_pkg sp ON bsp.src_pkg=sp.id
                      WHERE bsp.bug=b.id) AS affects
         ) AS affects,
+       (SELECT msgid FROM message m LEFT JOIN bug_message bm ON bm.message=m.id
+               WHERE bm.bug=b.id ORDER BY m.sent_date ASC limit 1) AS message_id,
        b.submitter_full AS originator,
        EXTRACT(EPOCH FROM b.log_modified) AS log_modified,
        EXTRACT(EPOCH FROM b.creation) AS date,