vincentchu-handlersocket 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|