#! /usr/bin/perl
# $Id$
use warnings;
use strict;

(my $program_name = $0) =~ s|.*/||;

scalar (@ARGV) == 0
    or die "Usage: $program_name\n";

use DBI;

my $dsn = 'DBI:mysql:database=test'
    . ";mysql_read_default_file=$ENV{HOME}/.my.cnf"
    . ';mysql_read_default_group=mysql';
my $attrs = { 'AutoCommit' => 1,
              'PrintError' => 0,
              'RaiseError' => 1 };

my $dbh = DBI->connect ($dsn, '', '', $attrs);

$dbh->do (q{
    DROP TABLE IF EXISTS t1, t2
});

$dbh->do (q{
    CREATE TABLE t1 (i INT)
});

$dbh->do (q{
    INSERT INTO t1 VALUES (1), (2), (3), (4), (5)
});

$dbh->do (q{
    CREATE TABLE t2 (name CHAR(40), value CHAR(255)) ENGINE = MEMORY;
});
$dbh->do (q{
    CREATE UNIQUE INDEX name_index USING BTREE ON t2 (name);
});

if (0) {
    for (my $i = 0; $i < 100000; ++$i) {
        if ($i % 100 == 0) {
            print "$i\n";
        }
        $dbh->do (qq{
            SET \@var$i= REPEAT('a', 100000)
        });
        $dbh->do (qq{
            SELECT * FROM t1 GROUP BY i
        });
    }
} else {
    for (my $i = 0; $i < 1_000_000_000; ++$i) {
        if ($i % 1000 == 0) {
            print "$i\n";
        }
        $dbh->do (qq{
            INSERT INTO t2 VALUES ('var$i', 'a')
        });
        $dbh->do (qq{
            SELECT * FROM t1 GROUP BY i
        });
    }
}

$dbh->disconnect;
