The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

Build Status Coverage Status

NAME

MySQL::Partition - Utility for MySQL partitioning

SYNOPSIS

use MySQL::Partition;
my $dbh = DBI->connect(@connect_info);
my $list_partition = MySQL::Partition->new(
    dbh        => $dbh,
    type       => 'list',
    table      => 'test',
    expression => 'event_id',
);
$list_partition->is_partitioned;
$list_partition->create_partitions('p1' => 1); # ALTER TABLE test PARTITION BY LIST ...
$list_partition->has_partition('p1'); # true

$list_partition->add_partitions('p2_3' => '2, 3');

# handle interface
my $handle = $list_partition->prepare_add_partitions('p4' => 4);
print $handle->statement;
$handle->execute;

$list_partition->truncate_partitions('p1');
$handle = $list_partition->prepare_truncate_partitions('p2_3');
$handle->execute;

$list_partition->drop_partitions('p1');
$handle = $list_partition->prepare_drop_partitions('p2_3');
$handle->execute;

DESCRIPTION

MySQL::Partition is utility module for MySQL partitions.

This module creates a object for manipulating MySQL partitions. This is very useful that we no longer write complicated and MySQL specific SQL syntax any more.

THE SOFTWARE IS STILL ALPHA QUALITY. API MAY CHANGE WITHOUT NOTICE.

INTERFACE

Constructor

my $mysql_partition:MySQL::Partition = MySQL::Partition->new(%args)

Create a new object which is subclass of MySQL::Partition. (MySQL::Partition::Type::Range or MySQL::Partition::Type::List.

Following keys are required in %args.

Methods

my @partition_names = $mysql_partition->retrieve_partitions

Returns partition names in the table.

my $bool = $mysql_partition->is_partitioned

Returns the table is partitioned or not.

my $bool = $mysql_partition->has_partitione($partition_name)

Returns the table has a specified partition name or not.

Methods for manipulating partition

$mysql_partition->create_partitions($partition_name => $partition_description, [$name => $description, ...])

$mysql_partition->add_partitions($partition_name => $partition_description, [$name => $description], ...)

$mysql_partition->drop_partitions(@partition_names)

$mysql_partition->truncate_partitions(@partition_names)

Methods for MySQL::Partition::Handle

Each method for manipulating partition has prepare_* method which returns MySQL::Partition::Handle object.

Actually, $mysql_partition->create_partitions(...); is a shortcut of following.

my $handle = $mysql_partition->prepare_create_partitions(...);
$handle->execute;

LICENSE

Copyright (C) Songmu.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

AUTHOR

Songmu y.songmu@gmail.com