Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib/MySQL
t
.gitignore
.travis.yml
Build.PL
Changes
LICENSE
META.json
README.md
cpanfile
minil.toml

README.md

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->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.

  • dbh => DBI::db
  • table => Str
  • type => Str

    partitioning method. list(?: columns)? or range(?: columns)?.

    If list is specified, new method returns MySQL::Partition::Type::List object.

  • expression => Str

    partitioning expression. e.g. event_id, created_at, TO_DAYS(created_at), etc.

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)

Methods for MySQL::Partition::Handle

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

  • prepare_create_partitions
  • prepare_add_partitions
  • prepare_drop_partitions

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

Something went wrong with that request. Please try again.