#!/usr/bin/perl
#
# dumpTableStats
#
# $Id: dumpTableStats,v 1.4 2004/05/29 07:38:36 genbank Exp $
#
use strict;
use warnings;
use File::Basename;
use FindBin;
use lib "$FindBin::Bin/../lib";
use gbCommon;

my $usage = 
    " dumpTableStats\n"
    . "\n"
    . "Dump the table status for all databases to\n"
    . "   var/tblstats/\$host/\$date/db.tbls\n";

# databases that should not be included
my @skipDbs = ("mysql", "test");

sub sqlQuery($$;$) {
    my($query, $tsv, $db) = @_;

    if (!defined($db)) {
        $db = "";
    }
    runMysql("-e '$query' $db >$tsv.tmp");
    renameFile("$tsv.tmp", $tsv);
}

if ($#ARGV >= 0) {
    gbError("wrong # args: $usage");
}

# do an SQL query with output to a TSV.
my $outdir = "var/tblstats/$gbCommon::hostName/" . getDateStamp();
makeDir($outdir);
my @databases = split(/\n/, callMysql("-N -e 'show databases'"));

sqlQuery("show databases", "$outdir/databases.tsv");

foreach my $db (@databases) {
    if (!inList($db, @skipDbs)) {
        sqlQuery("show table status", "$outdir/$db.tbls", $db);
    }
}
