~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/test12.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 filters
 
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
  "(k1 varchar(30) not null, k2 varchar(30) not null, " .
 
21
  "v1 int not null, v2 int not null, " .
 
22
  "primary key (k1, k2) ) engine = innodb");
 
23
srand(999);
 
24
 
 
25
my $sth = $dbh->prepare("insert into $table values (?,?,?,?)");
 
26
for (my $i = 0; $i < $tablesize; ++$i) {
 
27
  for (my $j = 0; $j < $tablesize; ++$j) {
 
28
    my $k1 = "k1_" . $i;
 
29
    my $k2 = "k2_" . $j;
 
30
    my $v1 = $i + $j;
 
31
    my $v2 = $i * $j;
 
32
    $sth->execute($k1, $k2, $v1, $v2);
 
33
  }
 
34
}
 
35
 
 
36
my $hs = hstest::get_hs_connection(undef, 9999);
 
37
my $dbname = $hstest::conf{dbname};
 
38
$hs->open_index(1, $dbname, $table, '', 'k1,k2,v1,v2', 'k2');
 
39
$hs->open_index(2, $dbname, $table, '', 'k1,k2,v1,v2', 'k1,k2,v1,v2');
 
40
$hs->open_index(3, $dbname, $table, '', 'v1', 'k1,v2');
 
41
 
 
42
exec_multi(
 
43
  4, "VAL",
 
44
  [ 1, '>=', [ '', '' ], 1000, 0 ],
 
45
);
 
46
# all
 
47
 
 
48
# select k1, k2, v1, v2 ... where (k1, k2) >= ('', '') and k2 = 'k2_5'
 
49
exec_single(
 
50
  4, "FILTER",
 
51
  [ 1, '>=', [ '', '' ], 1000, 0, undef, undef, [ [ 'F', '=', 0, 'k2_5' ] ] ]
 
52
);
 
53
 
 
54
# same as above
 
55
exec_multi(
 
56
  4, "FILTER",
 
57
  [ 1, '>=', [ '', '' ], 1000, 0, undef, undef, [ [ 'F', '=', 0, 'k2_5' ] ] ],
 
58
);
 
59
 
 
60
# select k1, k2, v1, v2 ... where (k1, k2) >= ('', '') and v1 = 3
 
61
exec_multi(
 
62
  4, "FILTER",
 
63
  [ 2, '>=', [ '', '' ], 1000, 0, undef, undef, [ [ 'F', '=', 2, 3 ] ] ],
 
64
);
 
65
 
 
66
# select k1, k2, v1, v2 ... where (k1, k2) >= ('k1_1', '') and k1 <= 'k1_2'
 
67
exec_multi(
 
68
  4, "FILTER",
 
69
  [ 2, '>=', [ 'k1_1', '' ], 1000, 0, undef, undef,
 
70
    [ [ 'W', '<=', 0, 'k1_2' ] ] ],
 
71
);
 
72
 
 
73
# select k1, k2, v1, v2 ... where (k1, k2) >= ('k1_1', '') and k1 <= 'k1_2'
 
74
#   and v2 >= 10
 
75
exec_multi(
 
76
  4, "FILTER",
 
77
  [ 2, '>=', [ 'k1_1', '' ], 1000, 0, undef, undef,
 
78
    [ [ 'W', '<=', 0, 'k1_2' ], [ 'F', '>=', 3, 10 ] ] ],
 
79
);
 
80
 
 
81
# update ... set v2 = -1 where (k1, k2) >= ('k1_3', '') and v2 = 10
 
82
exec_multi(
 
83
  4, "FILTER",
 
84
  [ 3, '>=', [ 'k1_1', '' ], 1000, 0, 'U', [ -1 ],
 
85
    [ [ 'F', '=', 1, 10 ] ] ],
 
86
);
 
87
 
 
88
exec_multi(
 
89
  4, "VAL",
 
90
  [ 1, '>=', [ '', '' ], 1000, 0 ],
 
91
);
 
92
# all
 
93
 
 
94
exit 0;
 
95
 
 
96
sub exec_single {
 
97
  my ($width, $mess, $req) = @_;
 
98
  print "$mess\n";
 
99
  my $res = $hs->execute_single(@$req);
 
100
  {
 
101
    my $code = shift(@$res);
 
102
    print "code=$code\n";
 
103
    my $i = 0;
 
104
    for my $fld (@$res) {
 
105
      print "[$fld]";
 
106
      if (++$i >= $width) {
 
107
        print "\n";
 
108
        $i = 0;
 
109
      }
 
110
    }
 
111
    print "\n";
 
112
  }
 
113
}
 
114
 
 
115
sub exec_multi {
 
116
  my $width = shift(@_);
 
117
  my $mess = shift(@_);
 
118
  print "$mess\n";
 
119
  my $mres = $hs->execute_multi(\@_);
 
120
  for my $res (@$mres) {
 
121
    my $code = shift(@$res);
 
122
    print "code=$code\n";
 
123
    my $i = 0;
 
124
    for my $fld (@$res) {
 
125
      print "[$fld]";
 
126
      if (++$i >= $width) {
 
127
        print "\n";
 
128
        $i = 0;
 
129
      }
 
130
    }
 
131
    print "\n";
 
132
  }
 
133
}
 
134