#!/usr/bin/perl -W
#
# MySQL OPTIMIZE cron script by Jakub Wartak ( vnull@pcnet.com.pl )
# v0x02 - 28.09.2004
# 
# ChangeLog:
# 	0x02(22.08.2006): 
# 		michal _at_ jagiellonka dot eu dot org reported that this script
# 		doesn't play well with mysql-5.x, hopefully fixed.
#
#

use DBI;
use strict;

my $sql_server = "localhost";
my $sql_login = "root";
my $sql_pw = "";
my $verbose = 0;

my $db;

$db = DBI->connect("DBI:mysql::$sql_server", $sql_login, $sql_pw)
    or die $db->errstr;

my $q_listDB = $db->prepare("SHOW DATABASES") or $db->errstr;
$q_listDB->execute or $db->errstr;

while(my $name = $q_listDB->fetchrow_array) {
	# 0x02, not tested!
	next if ($name eq "INFORMATION_SCHEMA");

    print "$name\n" if($verbose);

    $db->do("USE $name") or $db->errstr;

    my $q_listTables = $db->prepare("SHOW TABLES") or $db->errstr;
    $q_listTables->execute or $db->errstr;

    while(my $table = $q_listTables->fetchrow_array) {
		$db->do("OPTIMIZE TABLE $table");
		$db->do("ANALYZE TABLE $table");
		print "\t+ $table\n" if($verbose);
    }    
    print "\n" if($verbose);
}
$q_listDB->finish;

$db->do("FLUSH TABLES");
#$db->do("FLUSH LOGS");

$db->disconnect;

exit 0;
