~percona-dev/percona-server/release-5.5.11-20.2-fix-bug-764138

« back to all changes in this revision

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

  • Committer: Ignacio Nin
  • Date: 2011-03-13 17:18:23 UTC
  • mfrom: (33.3.17 release-5.5.8-20)
  • Revision ID: ignacio.nin@percona.com-20110313171823-m06xs104nekulywb
Merge changes from release-5.5.8-20 to 5.5.9

Merge changes from the release branch of 5.5.8 to 5.5.9. These include
the HandlerSocket and UDF directories and the building scripts.

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 nulls
 
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 = 100;
 
18
$dbh->do(
 
19
  "create table $table (" .
 
20
  "k int primary key, v1 varchar(30), v2 varchar(30), " .
 
21
  "key idxv1 (v1) " .
 
22
  ") engine = innodb");
 
23
srand(999);
 
24
 
 
25
my %valmap = ();
 
26
 
 
27
my $sth = $dbh->prepare("insert into $table values (?,?,?)");
 
28
for (my $i = 0; $i < $tablesize; ++$i) {
 
29
  my $k = "" . $i;
 
30
  my $v1 = "1v" . int(rand(1000)) . $i;
 
31
  my $v2 = "2v" . int(rand(1000)) . $i;
 
32
  if ($i % 10 == 3) {
 
33
    $v1 = undef;
 
34
  }
 
35
  $sth->execute($k, $v1, $v2);
 
36
  $valmap{$k} = $v1;
 
37
}
 
38
 
 
39
print "MY\n";
 
40
my $aref = $dbh->selectall_arrayref("select k,v1,v2 from $table order by k");
 
41
for my $row (@$aref) {
 
42
  my ($k, $v1, $v2) = @$row;
 
43
  $v1 = "[NULL]" if (!defined($v1));
 
44
  print "$k $v1 $v2\n";
 
45
}
 
46
 
 
47
print "HS\n";
 
48
my $hs = hstest::get_hs_connection();
 
49
my $dbname = $hstest::conf{dbname};
 
50
$hs->open_index(1, $dbname, $table, '', 'k,v1,v2');
 
51
my $r = $hs->execute_single(1, '>=', [ '' ], 10000, 0);
 
52
shift(@$r);
 
53
for (my $i = 0; $i < $tablesize; ++$i) {
 
54
  my $k = $r->[$i * 3];
 
55
  my $v1 = $r->[$i * 3 + 1];
 
56
  my $v2 = $r->[$i * 3 + 2];
 
57
  $v1 = "[NULL]" if (!defined($v1));
 
58
  print "$k $v1 $v2\n";
 
59
}
 
60
 
 
61
print "2ndIDX\n";
 
62
$hs->open_index(2, $dbname, $table, 'idxv1', 'k,v1,v2');
 
63
for (my $i = 0; $i < $tablesize; ++$i) {
 
64
  my $k = "" . $i;
 
65
  my $v1 = $valmap{$k};
 
66
  next if !defined($v1);
 
67
  my $r = $hs->execute_single(2, '=', [ $v1 ], 1, 0);
 
68
  shift(@$r);
 
69
  my $r_k = $r->[0];
 
70
  my $r_v1 = $r->[1];
 
71
  my $r_v2 = $r->[2];
 
72
  print "2ndidx $k $v1 => $r_k $r_v1 $r_v2\n";
 
73
}
 
74
 
 
75
print "2ndIDX NULL\n";
 
76
{
 
77
  my %rvals = ();
 
78
  my $v1 = undef;
 
79
  my @arr;
 
80
  push(@arr, undef);
 
81
  my $kv = \@arr;
 
82
  my $r = $hs->execute_single(2, "=", $kv, 10000, 0);
 
83
  shift(@$r);
 
84
  for (my $i = 0; $i < scalar(@$r); $i += 3) {
 
85
    my $k = $r->[$i];
 
86
    my $v1 = $r->[$i + 1];
 
87
    my $v2 = $r->[$i + 2];
 
88
    $rvals{$k} = [ $k, $v1, $v2 ];
 
89
  }
 
90
  for my $i (sort { $a <=> $b } keys %rvals) {
 
91
    my $rec = $rvals{$i};
 
92
    my $k = $rec->[0];
 
93
    my $v1 = $rec->[1];
 
94
    my $v2 = $rec->[2];
 
95
    print "2ndidxnull $k $v2\n";
 
96
  }
 
97
}
 
98