~percona-dev/percona-server/5.1.56-expand_pass_corrupt_table

« back to all changes in this revision

Viewing changes to HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test13.pl

  • Committer: Alexey Kopytov
  • Date: 2011-04-20 08:52:35 UTC
  • mfrom: (222.1.3 5.1.56-tmp)
  • Revision ID: akopytov@gmail.com-20110420085235-vh7g8vx04y4m6cno
MergeĀ fromĀ lp:percona-server

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#!/usr/bin/perl
 
2
 
 
3
# vim:sw=2:ai
 
4
 
 
5
# test for auto_increment
 
6
 
 
7
BEGIN {
 
8
        push @INC, "../common/";
 
9
};
 
10
 
 
11
use strict;
 
12
use warnings;
 
13
use hstest;
 
14
 
 
15
my $dbh = hstest::init_testdb();
 
16
my $table = 'hstesttbl';
 
17
my $tablesize = 10;
 
18
$dbh->do(
 
19
  "create table $table (" .
 
20
  "k int primary key auto_increment, " .
 
21
  "v1 varchar(30), " .
 
22
  "v2 varchar(30)) " .
 
23
  "engine = myisam default charset = binary");
 
24
srand(999);
 
25
 
 
26
my $sth = $dbh->prepare("insert into $table values (?,?,?)");
 
27
for (my $i = 0; $i < $tablesize; ++$i) {
 
28
  my $k = 0;
 
29
  my $v1 = "v1sql_" . $i;
 
30
  my $v2 = "v2sql_" . $i;
 
31
  $sth->execute($k, $v1, $v2);
 
32
}
 
33
 
 
34
my %valmap = ();
 
35
 
 
36
print "HSINSERT\n";
 
37
my $hs = hstest::get_hs_connection(undef, 9999);
 
38
my $dbname = $hstest::conf{dbname};
 
39
$hs->open_index(1, $dbname, $table, '', 'k,v1,v2');
 
40
# inserts with auto_increment
 
41
for (my $i = 0; $i < $tablesize; ++$i) {
 
42
  my $k = 0;
 
43
  my $v1 = "v1hs_" . $i;
 
44
  my $v2 = "v2hs_" . $i;
 
45
  my $r = $hs->execute_insert(1, [ $k, $v1, $v2 ]);
 
46
  my $err = $r->[0];
 
47
  if ($err != 0) {
 
48
    my $err_str = $r->[1];
 
49
    print "$err $err_str\n";
 
50
  } else {
 
51
    my $id = $r->[1];
 
52
    print "$id $v1\n";
 
53
  }
 
54
}
 
55
# make sure that it works even when inserts are pipelined. these requests
 
56
# are possibly executed in a single transaction.
 
57
for (my $i = 0; $i < $tablesize; ++$i) {
 
58
  my $k = 0;
 
59
  my $v1 = "v1hs3_" . $i;
 
60
  my $v2 = "v2hs3_" . $i;
 
61
  my $r = $hs->execute_multi([
 
62
        [ 1, '+', [$k, $v1, $v2] ],
 
63
        [ 1, '+', [$k, $v1, $v2] ],
 
64
        [ 1, '+', [$k, $v1, $v2] ],
 
65
        ]);
 
66
  for (my $i = 0; $i < 3; ++$i) {
 
67
    my $err = $r->[$i]->[0];
 
68
    if ($err != 0) {
 
69
      my $err_str = $r->[$i]->[1];
 
70
      print "$err $err_str\n";
 
71
    } else {
 
72
      my $id = $r->[$i]->[1];
 
73
      print "$id $v1\n";
 
74
    }
 
75
  }
 
76
}
 
77
undef $hs;
 
78
 
 
79
dump_table();
 
80
 
 
81
sub dump_table {
 
82
  print "DUMP_TABLE\n";
 
83
  my $aref = $dbh->selectall_arrayref("select k,v1,v2 from $table order by k");
 
84
  for my $row (@$aref) {
 
85
    my ($k, $v1, $v2) = @$row;
 
86
    $v1 = "[null]" if !defined($v1);
 
87
    $v2 = "[null]" if !defined($v2);
 
88
    print "$k $v1 $v2\n";
 
89
    # print "MISMATCH\n" if ($valmap{$k} ne $v);
 
90
  }
 
91
}
 
92