X-Git-Url: http://www.git.stargrave.org/?a=blobdiff_plain;f=lib%2FPublicInbox%2FMsgmap.pm;h=192e311aec2b1d459407e0853cfcecb26c2f0448;hb=a46893a2b5dabfdbcf7b593ac19967daecfb1772;hp=3237a5ed6ae0d8caa5a56bd1a17e380efc61a0b8;hpb=017fed7bc4d33ac474a19356994be5bd0bfe68ba;p=public-inbox.git diff --git a/lib/PublicInbox/Msgmap.pm b/lib/PublicInbox/Msgmap.pm index 3237a5ed..192e311a 100644 --- a/lib/PublicInbox/Msgmap.pm +++ b/lib/PublicInbox/Msgmap.pm @@ -26,6 +26,9 @@ sub new { sub dbh_new { my ($f, $writable) = @_; + if ($writable && !-f $f) { # SQLite defaults mode to 0644, we want 0666 + open my $fh, '+>>', $f or die "failed to open $f: $!"; + } my $dbh = DBI->connect("dbi:SQLite:dbname=$f",'','', { AutoCommit => 1, RaiseError => 1, @@ -33,7 +36,6 @@ sub dbh_new { ReadOnly => !$writable, sqlite_use_immediate_transaction => 1, }); - $dbh->do('PRAGMA case_sensitive_like = ON'); $dbh; } @@ -78,7 +80,7 @@ sub meta_accessor { $prev = $dbh->selectrow_array($sql, undef, $key); if (defined $prev) { - $sql = 'UPDATE meta SET val = ? WHERE key = ? LIMIT 1'; + $sql = 'UPDATE meta SET val = ? WHERE key = ?'; $dbh->do($sql, undef, $value, $key); } else { $sql = 'INSERT INTO meta (key,val) VALUES (?,?)'; @@ -148,23 +150,6 @@ sub minmax { ($min, $sth->fetchrow_array); } -sub mid_prefixes { - my ($self, $pfx, $limit) = @_; - - die "No prefix given" unless (defined $pfx && $pfx ne ''); - $pfx =~ s/([%_])/\\$1/g; - $pfx .= '%'; - - $limit ||= 100; - $limit += 0; # force to integer - $limit ||= 100; - - $self->{dbh}->selectcol_arrayref('SELECT mid FROM msgmap ' . - 'WHERE mid LIKE ? ESCAPE ? ' . - "ORDER BY num DESC LIMIT $limit", - undef, $pfx, '\\'); -} - sub mid_delete { my ($self, $mid) = @_; my $dbh = $self->{dbh};