vincentchu-handlersocket 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/ext/HandlerSocket-Plugin-for-MySQL/AUTHORS +22 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/COPYING +30 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/ChangeLog +12 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/Makefile.am +87 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/README +78 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/autogen.sh +117 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/client/Makefile.am +24 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/client/hsclient.cpp +88 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/client/hslongrun.cpp +1041 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/client/hspool_test.pl +224 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/client/hstest.cpp +1532 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/client/hstest.pl +228 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/client/hstest_hs.sh +4 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/client/hstest_hs_more50.sh +4 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/client/hstest_md.sh +7 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/client/hstest_my.sh +3 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/client/hstest_my_more50.sh +3 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/configure.ac +144 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/docs-en/about-handlersocket.en.txt +72 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/docs-en/configuration-options.en.txt +99 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/docs-en/installation.en.txt +92 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/docs-en/perl-client.en.txt +135 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/docs-en/protocol.en.txt +205 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/docs-ja/about-handlersocket.ja.txt +51 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/docs-ja/installation.ja.txt +88 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/docs-ja/perl-client.ja.txt +127 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/docs-ja/protocol.ja.txt +180 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/COPYRIGHT.txt +27 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/Makefile.am +10 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/Makefile.plain.template +31 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/database.cpp +1190 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/database.hpp +142 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/handlersocket.cpp +222 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/handlersocket.spec.template +29 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/hstcpsvr.cpp +149 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/hstcpsvr.hpp +58 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/hstcpsvr_worker.cpp +951 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/hstcpsvr_worker.hpp +35 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/mysql_incl.hpp +50 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/COPYRIGHT.txt +27 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/Makefile.am +12 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/Makefile.plain +27 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/allocator.hpp +64 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/auto_addrinfo.hpp +49 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/auto_file.hpp +64 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/auto_ptrcontainer.hpp +67 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/config.cpp +67 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/config.hpp +32 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/escape.cpp +127 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/escape.hpp +66 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/fatal.cpp +36 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/fatal.hpp +22 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/hstcpcli.cpp +441 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/hstcpcli.hpp +62 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/libhsclient.spec.template +39 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/mutex.hpp +51 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/socket.cpp +186 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/socket.hpp +51 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/string_buffer.hpp +118 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/string_ref.hpp +63 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/string_util.cpp +182 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/string_util.hpp +53 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/thread.hpp +84 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/util.hpp +25 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/misc/microbench-hs.log +130 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/misc/microbench-my.log +125 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/COPYRIGHT.txt +27 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/Changes +6 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/HandlerSocket.xs +632 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/MANIFEST +8 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/Makefile.PL +18 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/Makefile.PL.installed +20 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/README +30 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/lib/Net/HandlerSocket.pm +68 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/lib/Net/HandlerSocket/Pool.pm +362 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/perl-Net-HandlerSocket.spec.template +127 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/ppport.h +6375 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/t/Net-HandlerSocket.t +15 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/Makefile +79 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/common/binary_my.cnf +4 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/common/compat.sh +29 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/common/hstest.pm +66 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/Makefile +4 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/run.sh +27 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test01.expected +100 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test01.pl +38 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test02.expected +100 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test02.pl +49 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test03.expected +771 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test03.pl +61 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test04.expected +0 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test04.pl +63 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test05.expected +771 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test05.pl +59 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test06.expected +644 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test06.pl +90 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test07.expected +304 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test07.pl +98 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test08.expected +2 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test08.pl +48 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test09.expected +12 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test09.pl +67 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test10.expected +771 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test10.pl +93 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test11.expected +37 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test11.pl +112 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test12.expected +273 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test12.pl +134 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test13.expected +92 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test13.pl +92 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test14.expected +144 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test14.pl +80 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test15.expected +764 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test15.pl +114 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test16.expected +66 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test16.pl +88 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test17.expected +0 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test17.pl +125 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test18.expected +22 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test18.pl +63 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test19.expected +14894 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test19.pl +190 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test20.expected +2 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test20.pl +33 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test21.expected +11 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test21.pl +58 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test22.expected +9 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test22.pl +61 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test23.expected +101 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test23.pl +53 -0
- data/ext/winebarrel-ruby-handlersocket-c19841e47ea2/README +33 -0
- data/ext/winebarrel-ruby-handlersocket-c19841e47ea2/extconf.rb +27 -0
- data/ext/winebarrel-ruby-handlersocket-c19841e47ea2/handlersocket.cpp +437 -0
- data/ext/winebarrel-ruby-handlersocket-c19841e47ea2/handlersocket.h +32 -0
- metadata +200 -0
@@ -0,0 +1,134 @@
|
|
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
|
+
|
@@ -0,0 +1,92 @@
|
|
1
|
+
HSINSERT
|
2
|
+
11 v1hs_0
|
3
|
+
12 v1hs_1
|
4
|
+
13 v1hs_2
|
5
|
+
14 v1hs_3
|
6
|
+
15 v1hs_4
|
7
|
+
16 v1hs_5
|
8
|
+
17 v1hs_6
|
9
|
+
18 v1hs_7
|
10
|
+
19 v1hs_8
|
11
|
+
20 v1hs_9
|
12
|
+
21 v1hs3_0
|
13
|
+
22 v1hs3_0
|
14
|
+
23 v1hs3_0
|
15
|
+
24 v1hs3_1
|
16
|
+
25 v1hs3_1
|
17
|
+
26 v1hs3_1
|
18
|
+
27 v1hs3_2
|
19
|
+
28 v1hs3_2
|
20
|
+
29 v1hs3_2
|
21
|
+
30 v1hs3_3
|
22
|
+
31 v1hs3_3
|
23
|
+
32 v1hs3_3
|
24
|
+
33 v1hs3_4
|
25
|
+
34 v1hs3_4
|
26
|
+
35 v1hs3_4
|
27
|
+
36 v1hs3_5
|
28
|
+
37 v1hs3_5
|
29
|
+
38 v1hs3_5
|
30
|
+
39 v1hs3_6
|
31
|
+
40 v1hs3_6
|
32
|
+
41 v1hs3_6
|
33
|
+
42 v1hs3_7
|
34
|
+
43 v1hs3_7
|
35
|
+
44 v1hs3_7
|
36
|
+
45 v1hs3_8
|
37
|
+
46 v1hs3_8
|
38
|
+
47 v1hs3_8
|
39
|
+
48 v1hs3_9
|
40
|
+
49 v1hs3_9
|
41
|
+
50 v1hs3_9
|
42
|
+
DUMP_TABLE
|
43
|
+
1 v1sql_0 v2sql_0
|
44
|
+
2 v1sql_1 v2sql_1
|
45
|
+
3 v1sql_2 v2sql_2
|
46
|
+
4 v1sql_3 v2sql_3
|
47
|
+
5 v1sql_4 v2sql_4
|
48
|
+
6 v1sql_5 v2sql_5
|
49
|
+
7 v1sql_6 v2sql_6
|
50
|
+
8 v1sql_7 v2sql_7
|
51
|
+
9 v1sql_8 v2sql_8
|
52
|
+
10 v1sql_9 v2sql_9
|
53
|
+
11 v1hs_0 v2hs_0
|
54
|
+
12 v1hs_1 v2hs_1
|
55
|
+
13 v1hs_2 v2hs_2
|
56
|
+
14 v1hs_3 v2hs_3
|
57
|
+
15 v1hs_4 v2hs_4
|
58
|
+
16 v1hs_5 v2hs_5
|
59
|
+
17 v1hs_6 v2hs_6
|
60
|
+
18 v1hs_7 v2hs_7
|
61
|
+
19 v1hs_8 v2hs_8
|
62
|
+
20 v1hs_9 v2hs_9
|
63
|
+
21 v1hs3_0 v2hs3_0
|
64
|
+
22 v1hs3_0 v2hs3_0
|
65
|
+
23 v1hs3_0 v2hs3_0
|
66
|
+
24 v1hs3_1 v2hs3_1
|
67
|
+
25 v1hs3_1 v2hs3_1
|
68
|
+
26 v1hs3_1 v2hs3_1
|
69
|
+
27 v1hs3_2 v2hs3_2
|
70
|
+
28 v1hs3_2 v2hs3_2
|
71
|
+
29 v1hs3_2 v2hs3_2
|
72
|
+
30 v1hs3_3 v2hs3_3
|
73
|
+
31 v1hs3_3 v2hs3_3
|
74
|
+
32 v1hs3_3 v2hs3_3
|
75
|
+
33 v1hs3_4 v2hs3_4
|
76
|
+
34 v1hs3_4 v2hs3_4
|
77
|
+
35 v1hs3_4 v2hs3_4
|
78
|
+
36 v1hs3_5 v2hs3_5
|
79
|
+
37 v1hs3_5 v2hs3_5
|
80
|
+
38 v1hs3_5 v2hs3_5
|
81
|
+
39 v1hs3_6 v2hs3_6
|
82
|
+
40 v1hs3_6 v2hs3_6
|
83
|
+
41 v1hs3_6 v2hs3_6
|
84
|
+
42 v1hs3_7 v2hs3_7
|
85
|
+
43 v1hs3_7 v2hs3_7
|
86
|
+
44 v1hs3_7 v2hs3_7
|
87
|
+
45 v1hs3_8 v2hs3_8
|
88
|
+
46 v1hs3_8 v2hs3_8
|
89
|
+
47 v1hs3_8 v2hs3_8
|
90
|
+
48 v1hs3_9 v2hs3_9
|
91
|
+
49 v1hs3_9 v2hs3_9
|
92
|
+
50 v1hs3_9 v2hs3_9
|
@@ -0,0 +1,92 @@
|
|
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
|
+
|
@@ -0,0 +1,144 @@
|
|
1
|
+
DUMP_TABLE
|
2
|
+
0
|
3
|
+
1 0 A
|
4
|
+
2 01 AB
|
5
|
+
3 012 ABC
|
6
|
+
4 0123 ABCD
|
7
|
+
5 01234 ABCDE
|
8
|
+
6 012345 ABCDEF
|
9
|
+
7 0123456 ABCDEFG
|
10
|
+
8 01234567 ABCDEFGH
|
11
|
+
9 012345678 ABCDEFGHI
|
12
|
+
10 0123456789 ABCDEFGHIJ
|
13
|
+
11 01234567890 ABCDEFGHIJA
|
14
|
+
12 012345678901 ABCDEFGHIJAB
|
15
|
+
13 0123456789012 ABCDEFGHIJABC
|
16
|
+
14 01234567890123 ABCDEFGHIJABCD
|
17
|
+
15 012345678901234 ABCDEFGHIJABCDE
|
18
|
+
16 0123456789012345 ABCDEFGHIJABCDEF
|
19
|
+
17 01234567890123456 ABCDEFGHIJABCDEFG
|
20
|
+
18 012345678901234567 ABCDEFGHIJABCDEFGH
|
21
|
+
19 0123456789012345678 ABCDEFGHIJABCDEFGHI
|
22
|
+
20 01234567890123456789 ABCDEFGHIJABCDEFGHIJ
|
23
|
+
21 012345678901234567890 ABCDEFGHIJABCDEFGHIJA
|
24
|
+
22 0123456789012345678901 ABCDEFGHIJABCDEFGHIJAB
|
25
|
+
23 01234567890123456789012 ABCDEFGHIJABCDEFGHIJABC
|
26
|
+
24 012345678901234567890123 ABCDEFGHIJABCDEFGHIJABCD
|
27
|
+
25 0123456789012345678901234 ABCDEFGHIJABCDEFGHIJABCDE
|
28
|
+
26 01234567890123456789012345 ABCDEFGHIJABCDEFGHIJABCDEF
|
29
|
+
27 012345678901234567890123456 ABCDEFGHIJABCDEFGHIJABCDEFG
|
30
|
+
28 0123456789012345678901234567 ABCDEFGHIJABCDEFGHIJABCDEFGH
|
31
|
+
29 01234567890123456789012345678 ABCDEFGHIJABCDEFGHIJABCDEFGHI
|
32
|
+
30 012345678901234567890123456789 ABCDEFGHIJABCDEFGHIJABCDEFGHIJ
|
33
|
+
31 012345678901234567890123456789 ABCDEFGHIJABCDEFGHIJABCDEFGHIJ
|
34
|
+
32 012345678901234567890123456789 ABCDEFGHIJABCDEFGHIJABCDEFGHIJ
|
35
|
+
33 012345678901234567890123456789 ABCDEFGHIJABCDEFGHIJABCDEFGHIJ
|
36
|
+
34 012345678901234567890123456789 ABCDEFGHIJABCDEFGHIJABCDEFGHIJ
|
37
|
+
35 012345678901234567890123456789 ABCDEFGHIJABCDEFGHIJABCDEFGHIJ
|
38
|
+
36 012345678901234567890123456789 ABCDEFGHIJABCDEFGHIJABCDEFGHIJ
|
39
|
+
37 012345678901234567890123456789 ABCDEFGHIJABCDEFGHIJABCDEFGHIJ
|
40
|
+
38 012345678901234567890123456789 ABCDEFGHIJABCDEFGHIJABCDEFGHIJ
|
41
|
+
39 012345678901234567890123456789 ABCDEFGHIJABCDEFGHIJABCDEFGHIJ
|
42
|
+
40 012345678901234567890123456789 ABCDEFGHIJABCDEFGHIJABCDEFGHIJ
|
43
|
+
41 012345678901234567890123456789 ABCDEFGHIJABCDEFGHIJABCDEFGHIJ
|
44
|
+
42 012345678901234567890123456789 ABCDEFGHIJABCDEFGHIJABCDEFGHIJ
|
45
|
+
43 012345678901234567890123456789 ABCDEFGHIJABCDEFGHIJABCDEFGHIJ
|
46
|
+
44 012345678901234567890123456789 ABCDEFGHIJABCDEFGHIJABCDEFGHIJ
|
47
|
+
45 012345678901234567890123456789 ABCDEFGHIJABCDEFGHIJABCDEFGHIJ
|
48
|
+
46 012345678901234567890123456789 ABCDEFGHIJABCDEFGHIJABCDEFGHIJ
|
49
|
+
47 012345678901234567890123456789 ABCDEFGHIJABCDEFGHIJABCDEFGHIJ
|
50
|
+
48 012345678901234567890123456789 ABCDEFGHIJABCDEFGHIJABCDEFGHIJ
|
51
|
+
49 012345678901234567890123456789 ABCDEFGHIJABCDEFGHIJABCDEFGHIJ
|
52
|
+
PK 0
|
53
|
+
I1 0
|
54
|
+
I2 0
|
55
|
+
PK 1 0 A
|
56
|
+
I1 1 0 A
|
57
|
+
I2 1 0 A
|
58
|
+
PK 2 01 AB
|
59
|
+
I1 2 01 AB
|
60
|
+
I2 2 01 AB
|
61
|
+
PK 3 012 ABC
|
62
|
+
I1 3 012 ABC
|
63
|
+
I2 3 012 ABC
|
64
|
+
PK 4 0123 ABCD
|
65
|
+
I1 4 0123 ABCD
|
66
|
+
I2 4 0123 ABCD
|
67
|
+
PK 5 01234 ABCDE
|
68
|
+
I1 5 01234 ABCDE
|
69
|
+
I2 5 01234 ABCDE
|
70
|
+
PK 6 012345 ABCDEF
|
71
|
+
I1 6 012345 ABCDEF
|
72
|
+
I2 6 012345 ABCDEF
|
73
|
+
PK 7 0123456 ABCDEFG
|
74
|
+
I1 7 0123456 ABCDEFG
|
75
|
+
I2 7 0123456 ABCDEFG
|
76
|
+
PK 8 01234567 ABCDEFGH
|
77
|
+
I1 8 01234567 ABCDEFGH
|
78
|
+
I2 8 01234567 ABCDEFGH
|
79
|
+
PK 9 012345678 ABCDEFGHI
|
80
|
+
I1 9 012345678 ABCDEFGHI
|
81
|
+
I2 9 012345678 ABCDEFGHI
|
82
|
+
PK 10 0123456789 ABCDEFGHIJ
|
83
|
+
I1 10 0123456789 ABCDEFGHIJ
|
84
|
+
I2 10 0123456789 ABCDEFGHIJ
|
85
|
+
PK 11 01234567890 ABCDEFGHIJA
|
86
|
+
I1 11 01234567890 ABCDEFGHIJA
|
87
|
+
I2 11 01234567890 ABCDEFGHIJA
|
88
|
+
PK 12 012345678901 ABCDEFGHIJAB
|
89
|
+
I1 12 012345678901 ABCDEFGHIJAB
|
90
|
+
I2 12 012345678901 ABCDEFGHIJAB
|
91
|
+
PK 13 0123456789012 ABCDEFGHIJABC
|
92
|
+
I1 13 0123456789012 ABCDEFGHIJABC
|
93
|
+
I2 13 0123456789012 ABCDEFGHIJABC
|
94
|
+
PK 14 01234567890123 ABCDEFGHIJABCD
|
95
|
+
I1 14 01234567890123 ABCDEFGHIJABCD
|
96
|
+
I2 14 01234567890123 ABCDEFGHIJABCD
|
97
|
+
PK 15 012345678901234 ABCDEFGHIJABCDE
|
98
|
+
I1 15 012345678901234 ABCDEFGHIJABCDE
|
99
|
+
I2 15 012345678901234 ABCDEFGHIJABCDE
|
100
|
+
PK 16 0123456789012345 ABCDEFGHIJABCDEF
|
101
|
+
I1 16 0123456789012345 ABCDEFGHIJABCDEF
|
102
|
+
I2 16 0123456789012345 ABCDEFGHIJABCDEF
|
103
|
+
PK 17 01234567890123456 ABCDEFGHIJABCDEFG
|
104
|
+
I1 17 01234567890123456 ABCDEFGHIJABCDEFG
|
105
|
+
I2 17 01234567890123456 ABCDEFGHIJABCDEFG
|
106
|
+
PK 18 012345678901234567 ABCDEFGHIJABCDEFGH
|
107
|
+
I1 18 012345678901234567 ABCDEFGHIJABCDEFGH
|
108
|
+
I2 18 012345678901234567 ABCDEFGHIJABCDEFGH
|
109
|
+
PK 19 0123456789012345678 ABCDEFGHIJABCDEFGHI
|
110
|
+
I1 19 0123456789012345678 ABCDEFGHIJABCDEFGHI
|
111
|
+
I2 19 0123456789012345678 ABCDEFGHIJABCDEFGHI
|
112
|
+
PK 20 01234567890123456789 ABCDEFGHIJABCDEFGHIJ
|
113
|
+
I1 20 01234567890123456789 ABCDEFGHIJABCDEFGHIJ
|
114
|
+
I2 20 01234567890123456789 ABCDEFGHIJABCDEFGHIJ
|
115
|
+
PK 21 012345678901234567890 ABCDEFGHIJABCDEFGHIJA
|
116
|
+
I1 21 012345678901234567890 ABCDEFGHIJABCDEFGHIJA
|
117
|
+
I2 21 012345678901234567890 ABCDEFGHIJABCDEFGHIJA
|
118
|
+
PK 22 0123456789012345678901 ABCDEFGHIJABCDEFGHIJAB
|
119
|
+
I1 22 0123456789012345678901 ABCDEFGHIJABCDEFGHIJAB
|
120
|
+
I2 22 0123456789012345678901 ABCDEFGHIJABCDEFGHIJAB
|
121
|
+
PK 23 01234567890123456789012 ABCDEFGHIJABCDEFGHIJABC
|
122
|
+
I1 23 01234567890123456789012 ABCDEFGHIJABCDEFGHIJABC
|
123
|
+
I2 23 01234567890123456789012 ABCDEFGHIJABCDEFGHIJABC
|
124
|
+
PK 24 012345678901234567890123 ABCDEFGHIJABCDEFGHIJABCD
|
125
|
+
I1 24 012345678901234567890123 ABCDEFGHIJABCDEFGHIJABCD
|
126
|
+
I2 24 012345678901234567890123 ABCDEFGHIJABCDEFGHIJABCD
|
127
|
+
PK 25 0123456789012345678901234 ABCDEFGHIJABCDEFGHIJABCDE
|
128
|
+
I1 25 0123456789012345678901234 ABCDEFGHIJABCDEFGHIJABCDE
|
129
|
+
I2 25 0123456789012345678901234 ABCDEFGHIJABCDEFGHIJABCDE
|
130
|
+
PK 26 01234567890123456789012345 ABCDEFGHIJABCDEFGHIJABCDEF
|
131
|
+
I1 26 01234567890123456789012345 ABCDEFGHIJABCDEFGHIJABCDEF
|
132
|
+
I2 26 01234567890123456789012345 ABCDEFGHIJABCDEFGHIJABCDEF
|
133
|
+
PK 27 012345678901234567890123456 ABCDEFGHIJABCDEFGHIJABCDEFG
|
134
|
+
I1 27 012345678901234567890123456 ABCDEFGHIJABCDEFGHIJABCDEFG
|
135
|
+
I2 27 012345678901234567890123456 ABCDEFGHIJABCDEFGHIJABCDEFG
|
136
|
+
PK 28 0123456789012345678901234567 ABCDEFGHIJABCDEFGHIJABCDEFGH
|
137
|
+
I1 28 0123456789012345678901234567 ABCDEFGHIJABCDEFGHIJABCDEFGH
|
138
|
+
I2 28 0123456789012345678901234567 ABCDEFGHIJABCDEFGHIJABCDEFGH
|
139
|
+
PK 29 01234567890123456789012345678 ABCDEFGHIJABCDEFGHIJABCDEFGHI
|
140
|
+
I1 29 01234567890123456789012345678 ABCDEFGHIJABCDEFGHIJABCDEFGHI
|
141
|
+
I2 29 01234567890123456789012345678 ABCDEFGHIJABCDEFGHIJABCDEFGHI
|
142
|
+
PK 30 012345678901234567890123456789 ABCDEFGHIJABCDEFGHIJABCDEFGHIJ
|
143
|
+
I1 30 012345678901234567890123456789 ABCDEFGHIJABCDEFGHIJABCDEFGHIJ
|
144
|
+
I2 30 012345678901234567890123456789 ABCDEFGHIJABCDEFGHIJABCDEFGHIJ
|