]> Sergey Matveev's repositories - public-inbox.git/blobdiff - lib/PublicInbox/OverIdx.pm
www+nntp: deal with lack of addresses for ->ALL
[public-inbox.git] / lib / PublicInbox / OverIdx.pm
index 88daa64fd61c2b97274945d54c6e1d995edda5d8..38552247c397ca84c8bb2acaa7964fb3a5568cbf 100644 (file)
@@ -79,6 +79,11 @@ SELECT $id_col FROM $tbl WHERE $val_col = ? LIMIT 1
        }
 }
 
+sub ibx_id {
+       my ($self, $eidx_key) = @_;
+       id_for($self, 'inboxes', 'ibx_id', eidx_key => $eidx_key);
+}
+
 sub sid {
        my ($self, $path) = @_;
        return unless defined $path && $path ne '';
@@ -389,13 +394,12 @@ sub create_tables {
 
        $dbh->do(<<'');
 CREATE TABLE IF NOT EXISTS over (
-       num INTEGER NOT NULL, /* NNTP article number == IMAP UID */
+       num INTEGER PRIMARY KEY NOT NULL, /* NNTP article number == IMAP UID */
        tid INTEGER NOT NULL, /* THREADID (IMAP REFERENCES threading, JMAP) */
        sid INTEGER, /* Subject ID (IMAP ORDEREDSUBJECT "threading") */
        ts INTEGER, /* IMAP INTERNALDATE (Received: header, git commit time) */
        ds INTEGER, /* RFC-2822 sent Date: header, git author time */
-       ddd VARBINARY, /* doc-data-deflated (->to_doc_data, ->load_from_data) */
-       UNIQUE (num)
+       ddd VARBINARY /* doc-data-deflated (->to_doc_data, ->load_from_data) */
 )
 
        $dbh->do('CREATE INDEX IF NOT EXISTS idx_tid ON over (tid)');
@@ -589,7 +593,7 @@ sub eidx_max {
 sub add_xref3 {
        my ($self, $docid, $xnum, $oidhex, $eidx_key) = @_;
        begin_lazy($self);
-       my $ibx_id = id_for($self, 'inboxes', 'ibx_id', eidx_key => $eidx_key);
+       my $ibx_id = ibx_id($self, $eidx_key);
        my $oidbin = pack('H*', $oidhex);
        my $sth = $self->{dbh}->prepare_cached(<<'');
 INSERT OR IGNORE INTO xref3 (docid, ibx_id, xnum, oidbin) VALUES (?, ?, ?, ?)
@@ -608,8 +612,7 @@ sub remove_xref3 {
        my $oidbin = pack('H*', $oidhex);
        my ($sth, $ibx_id);
        if (defined $eidx_key) {
-               $ibx_id = id_for($self, 'inboxes', 'ibx_id',
-                                       eidx_key => $eidx_key);
+               $ibx_id = ibx_id($self, $eidx_key);
                $sth = $self->{dbh}->prepare_cached(<<'');
 DELETE FROM xref3 WHERE docid = ? AND ibx_id = ? AND oidbin = ?