]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/Msgmap.pm
msgmap: ignore duplicates instead of dying
[public-inbox.git] / lib / PublicInbox / Msgmap.pm
index 3fb3805fe82abea0c23684890d1f33004e6815d5..7e0f34a4a172d0ff4f09271e573cfc9739b1404b 100644 (file)
@@ -82,10 +82,10 @@ sub created_at {
 sub mid_insert {
        my ($self, $mid) = @_;
        my $dbh = $self->{dbh};
-       use constant MID_INSERT => 'INSERT INTO msgmap (mid) VALUES (?)';
-       my $sth = $self->{mid_insert} ||= $dbh->prepare(MID_INSERT);
+       my $sql = 'INSERT OR IGNORE INTO msgmap (mid) VALUES (?)';
+       my $sth = $self->{mid_insert} ||= $dbh->prepare($sql);
        $sth->bind_param(1, $mid);
-       $sth->execute;
+       return if $sth->execute == 0;
        $dbh->last_insert_id(undef, undef, 'msgmap', 'num');
 }
 
@@ -179,7 +179,7 @@ sub id_batch {
 sub mid_set {
        my ($self, $num, $mid) = @_;
        my $sth = $self->{mid_set} ||= do {
-               my $sql = 'INSERT INTO msgmap (num, mid) VALUES (?,?)';
+               my $sql = 'INSERT OR IGNORE INTO msgmap (num, mid) VALUES (?,?)';
                $self->{dbh}->prepare($sql);
        };
        $sth->execute($num, $mid);