MySQL-Partition
view release on metacpan or search on metacpan
t/02_mysqld.t view on Meta::CPAN
use strict;
use warnings;
use utf8;
use Test::More;
use Test::mysqld;
my $mysqld = Test::mysqld->new(
my_cnf => {
'skip-networking' => '',
}
) or plan skip_all => $Test::mysqld::errstr;
my @connect_info = ($mysqld->dsn(dbname => 'test'));
$connect_info[3] = {
RaiseError => 1,
PrintError => 0,
ShowErrorStatement => 1,
AutoInactiveDestroy => 1,
mysql_enable_utf8 => 1,
};
my $dbh = DBI->connect(@connect_info);
use MySQL::Partition;
subtest list => sub {
$dbh->do(q[CREATE TABLE `test` (
`id` BIGINT unsigned NOT NULL auto_increment,
`event_id` INTEGER NOT NULL,
PRIMARY KEY (`id`, `event_id`)
)]);
my $list_partition = MySQL::Partition->new(
dbh => $dbh,
type => 'list',
table => 'test',
expression => 'event_id',
);
isa_ok $list_partition, 'MySQL::Partition::Type::List';
ok !$list_partition->is_partitioned;
$list_partition->create_partitions('p1' => 1);
pass 'create_partitions ok';
ok $list_partition->is_partitioned;
ok $list_partition->has_partition('p1');
my @partitions = $list_partition->retrieve_partitions;
is_deeply \@partitions, ['p1'];
subtest 'add_partitions' => sub {
$list_partition->add_partitions('p2' => '2, 3');
pass 'add_partitions ok';
ok $list_partition->has_partition('p2');
my @partitions = $list_partition->retrieve_partitions;
is_deeply \@partitions, ['p1', 'p2'];
};
subtest 'truncate_partition' => sub {
$dbh->do(q[INSERT INTO `test` (`event_id`) VALUES (1), (2)]);
is_deeply $dbh->selectrow_arrayref(q[SELECT COUNT(*) FROM `test` WHERE `event_id` = 1]), [1];
is_deeply $dbh->selectrow_arrayref(q[SELECT COUNT(*) FROM `test` WHERE `event_id` = 2]), [1];
$list_partition->truncate_partitions('p1');
pass 'truncate_partition ok';
is_deeply $dbh->selectrow_arrayref(q[SELECT COUNT(*) FROM `test` WHERE `event_id` = 1]), [0];
is_deeply $dbh->selectrow_arrayref(q[SELECT COUNT(*) FROM `test` WHERE `event_id` = 2]), [1];
ok $list_partition->has_partition('p1');
my @partitions = $list_partition->retrieve_partitions;
is_deeply \@partitions, ['p1', 'p2'];
};
subtest 'drop_partition' => sub {
$list_partition->drop_partitions('p1');
pass 'drop_partition ok';
ok !$list_partition->has_partition('p1');
my @partitions = $list_partition->retrieve_partitions;
is_deeply \@partitions, ['p2'];
};
};
subtest 'range columns' => sub {
$dbh->do(q[CREATE TABLE `test2` (
( run in 0.903 second using v1.01-cache-2.11-cpan-e1769b4cff6 )