#!/usr/bin/perl

use strict;
use warnings;
use DBI;

my ($succeed) = @ARGV;

my $count = 0;
$SIG{'INT'} = sub { die "manipulated $count rows"; };

my $dbh = DBI->connect('DBI:mysql:mysql_socket=/var/run/mysqld/mysqld.sock;database=DBNAME', 'USERNAME', 'PASSWORD', {PrintError=>1, RaiseError=>1, AutoCommit=>1});

$dbh->do(q{DROP TABLE IF EXISTS test});
$dbh->do(q{CREATE TABLE test (id int unsigned auto_increment primary key, bool_val bool default false)});
my (undef, $create_statement) = $dbh->selectrow_array(q{SHOW CREATE TABLE test});
warn "created table: $create_statement";

if($succeed)
{
    warn 'recreating table, expect success even when running parallel replication';
    $dbh->do(q{DROP TABLE test});
    $dbh->do($create_statement);
}
else
{
    warn 'not recreating table, expect failure when running parallel replication';
}

while($count < 1000)
{
    $dbh->do(q{INSERT INTO test (id) VALUES(NULL)});
    my ($row_id) = $dbh->selectrow_array(q{SELECT LAST_INSERT_ID()});
    die unless $dbh->do(q{UPDATE test SET bool_val = TRUE WHERE id = ?},{},($row_id)) == 1;
    die unless $dbh->do(q{DELETE FROM test WHERE id = ?},{},($row_id)) == 1;
    ++$count;
}
warn "manipulated $count rows";
