]> xenbits.xensource.com Git - people/aperard/emesinae.git/commitdiff
db: Use a compound key for the refs table, ref_id is unneeded
authorIan Campbell <ian.campbell@citrix.com>
Thu, 30 May 2013 11:18:42 +0000 (12:18 +0100)
committerIan Campbell <ian.campbell@citrix.com>
Thu, 30 May 2013 11:19:05 +0000 (12:19 +0100)
An existing DB can be upgraded with:
8<-------------------------------------------------
BEGIN TRANSACTION;
ALTER TABLE refs RENAME TO tmp_refs;
create table refs (
       parent_id integer not null references messages ( message_id ),
       child_id integer not null references messages ( message_id ),
       primary key ( parent_id, child_id )
);
INSERT OR IGNORE INTO refs(parent_id, child_id)
               SELECT parent_id, child_id FROM tmp_refs;
DROP TABLE tmp_refs;
COMMIT;
8<-------------------------------------------------

Emesinae/Message.pm
db/createdb.sql

index 703d66fea0c4c70dc8770a68776c38591b877d43..38a29d8203f935351d64a8d5db1a586e70b9c9af 100644 (file)
@@ -170,7 +170,7 @@ sub update {
           Emesinae::Message->lookup_msgid( $self->{dbh}, $irt, Insert => 1 );
         $sth =
           $self->{dbh}
-          ->prepare(q{INSERT INTO refs (parent_id,child_id) VALUES (?1,?2)});
+          ->prepare(q{INSERT OR IGNORE INTO refs (parent_id,child_id) VALUES (?1,?2)});
         $sth->execute( $refto->{id}, $self->{id} );
     }
 
@@ -180,7 +180,7 @@ sub update {
               Emesinae::Message->lookup_msgid( $self->{dbh}, $r, Insert => 1 );
             $sth =
               $self->{dbh}
-              ->prepare(q{INSERT INTO refs (parent_id,child_id) VALUES (?1,?2)});
+              ->prepare(q{INSERT OR IGNORE INTO refs (parent_id,child_id) VALUES (?1,?2)});
             $sth->execute( $refto->{id}, $self->{id} );
         }
     }
index f041a98ea1839e5e3a959dadc2e944c4183c08ee..f3a25b6b39efd2b6413ed4eee9f2ba7870a1c211 100644 (file)
@@ -18,9 +18,9 @@ create table messages (
 
 -- 
 create table refs (
-       ref_id integer primary key autoincrement,
-       parent_id integer references messages ( message_id ),
-       child_id integer references messages ( message_id )
+       parent_id integer not null references messages ( message_id ),
+       child_id integer not null references messages ( message_id ),
+       primary key ( parent_id, child_id )
 );
 
 --create table components {