File: Plugin6.pm

package info (click to toggle)
percona-toolkit 3.2.1-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, forky, sid, trixie
  • size: 68,916 kB
  • sloc: perl: 241,287; sql: 22,868; sh: 19,746; javascript: 6,799; makefile: 353; awk: 38; python: 30; sed: 1
file content (37 lines) | stat: -rw-r--r-- 867 bytes parent folder | download | duplicates (2)
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;