1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
package Plugin6;
use strict;
use warnings FATAL => 'all';
sub new {
my ( $class, %args ) = @_;
return bless(\%args, $class);
}
sub is_archivable {1} # Always yes
sub before_delete {} # Take no action
sub before_insert { }
# Move rows to table_odd or table_even
sub custom_sth {
my ( $self, %args ) = @_;
my $parity = ( $args{row}->[0] % 2 == 0 ) ? 'even' : 'odd';
my $sth;
if ( $self->{sth_cache}->{$parity} ) {
$sth = $self->{sth_cache}->{$parity};
}
else {
( my $sql = $args{sql} ) =~ s/$self->{tbl}/table_$parity/;
$self->{dbh}->do(
"CREATE TABLE IF NOT EXISTS $self->{db}.table_$parity LIKE $self->{db}.$self->{tbl}");
$sth = $self->{dbh}->prepare($sql);
$self->{sth_cache}->{$parity} = $sth;
}
return $sth;
}
sub before_begin {} # Take no action
sub after_finish {} # Take no action
1;
|