]> Sergey Matveev's repositories - public-inbox.git/blobdiff - script/public-inbox-compact
over: use only supported and safe SQLite APIs
[public-inbox.git] / script / public-inbox-compact
index e69771650797b9a3ff55d1ca7f3755e7f2972799..43e94609a01ee79891cf11c25363e263492d06c5 100755 (executable)
@@ -35,8 +35,13 @@ $ibx->umask_prepare;
 sub commit_changes ($$$) {
        my ($im, $old, $new) = @_;
        my @st = stat($old) or die "failed to stat($old): $!\n";
-       link("$old/over.sqlite3", "$new/over.sqlite3") or die
-               "failed to link {$old => $new}/over.sqlite3: $!\n";
+
+       my $over = "$old/over.sqlite3";
+       if (-f $over) {
+               require PublicInbox::Over;
+               $over = PublicInbox::Over->new($over);
+               $over->connect->sqlite_backup_to_file("$new/over.sqlite3");
+       }
        rename($old, "$new/old") or die "rename $old => $new/old: $!\n";
        chmod($st[2] & 07777, $new) or die "chmod $old: $!\n";
        rename($new, $old) or die "rename $new => $old: $!\n";
@@ -58,6 +63,7 @@ if ($v == 2) {
                        if ($dn =~ /\A\d+\z/) {
                                push @parts, "$old/$dn";
                        } elsif ($dn eq '.' || $dn eq '..') {
+                       } elsif ($dn =~ /\Aover\.sqlite3/) {
                        } else {
                                warn "W: skipping unknown Xapian DB: $old/$dn\n"
                        }