vincentchu-handlersocket 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (135) hide show
  1. data/ext/HandlerSocket-Plugin-for-MySQL/AUTHORS +22 -0
  2. data/ext/HandlerSocket-Plugin-for-MySQL/COPYING +30 -0
  3. data/ext/HandlerSocket-Plugin-for-MySQL/ChangeLog +12 -0
  4. data/ext/HandlerSocket-Plugin-for-MySQL/Makefile.am +87 -0
  5. data/ext/HandlerSocket-Plugin-for-MySQL/README +78 -0
  6. data/ext/HandlerSocket-Plugin-for-MySQL/autogen.sh +117 -0
  7. data/ext/HandlerSocket-Plugin-for-MySQL/client/Makefile.am +24 -0
  8. data/ext/HandlerSocket-Plugin-for-MySQL/client/hsclient.cpp +88 -0
  9. data/ext/HandlerSocket-Plugin-for-MySQL/client/hslongrun.cpp +1041 -0
  10. data/ext/HandlerSocket-Plugin-for-MySQL/client/hspool_test.pl +224 -0
  11. data/ext/HandlerSocket-Plugin-for-MySQL/client/hstest.cpp +1532 -0
  12. data/ext/HandlerSocket-Plugin-for-MySQL/client/hstest.pl +228 -0
  13. data/ext/HandlerSocket-Plugin-for-MySQL/client/hstest_hs.sh +4 -0
  14. data/ext/HandlerSocket-Plugin-for-MySQL/client/hstest_hs_more50.sh +4 -0
  15. data/ext/HandlerSocket-Plugin-for-MySQL/client/hstest_md.sh +7 -0
  16. data/ext/HandlerSocket-Plugin-for-MySQL/client/hstest_my.sh +3 -0
  17. data/ext/HandlerSocket-Plugin-for-MySQL/client/hstest_my_more50.sh +3 -0
  18. data/ext/HandlerSocket-Plugin-for-MySQL/configure.ac +144 -0
  19. data/ext/HandlerSocket-Plugin-for-MySQL/docs-en/about-handlersocket.en.txt +72 -0
  20. data/ext/HandlerSocket-Plugin-for-MySQL/docs-en/configuration-options.en.txt +99 -0
  21. data/ext/HandlerSocket-Plugin-for-MySQL/docs-en/installation.en.txt +92 -0
  22. data/ext/HandlerSocket-Plugin-for-MySQL/docs-en/perl-client.en.txt +135 -0
  23. data/ext/HandlerSocket-Plugin-for-MySQL/docs-en/protocol.en.txt +205 -0
  24. data/ext/HandlerSocket-Plugin-for-MySQL/docs-ja/about-handlersocket.ja.txt +51 -0
  25. data/ext/HandlerSocket-Plugin-for-MySQL/docs-ja/installation.ja.txt +88 -0
  26. data/ext/HandlerSocket-Plugin-for-MySQL/docs-ja/perl-client.ja.txt +127 -0
  27. data/ext/HandlerSocket-Plugin-for-MySQL/docs-ja/protocol.ja.txt +180 -0
  28. data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/COPYRIGHT.txt +27 -0
  29. data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/Makefile.am +10 -0
  30. data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/Makefile.plain.template +31 -0
  31. data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/database.cpp +1190 -0
  32. data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/database.hpp +142 -0
  33. data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/handlersocket.cpp +222 -0
  34. data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/handlersocket.spec.template +29 -0
  35. data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/hstcpsvr.cpp +149 -0
  36. data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/hstcpsvr.hpp +58 -0
  37. data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/hstcpsvr_worker.cpp +951 -0
  38. data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/hstcpsvr_worker.hpp +35 -0
  39. data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/mysql_incl.hpp +50 -0
  40. data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/COPYRIGHT.txt +27 -0
  41. data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/Makefile.am +12 -0
  42. data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/Makefile.plain +27 -0
  43. data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/allocator.hpp +64 -0
  44. data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/auto_addrinfo.hpp +49 -0
  45. data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/auto_file.hpp +64 -0
  46. data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/auto_ptrcontainer.hpp +67 -0
  47. data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/config.cpp +67 -0
  48. data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/config.hpp +32 -0
  49. data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/escape.cpp +127 -0
  50. data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/escape.hpp +66 -0
  51. data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/fatal.cpp +36 -0
  52. data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/fatal.hpp +22 -0
  53. data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/hstcpcli.cpp +441 -0
  54. data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/hstcpcli.hpp +62 -0
  55. data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/libhsclient.spec.template +39 -0
  56. data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/mutex.hpp +51 -0
  57. data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/socket.cpp +186 -0
  58. data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/socket.hpp +51 -0
  59. data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/string_buffer.hpp +118 -0
  60. data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/string_ref.hpp +63 -0
  61. data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/string_util.cpp +182 -0
  62. data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/string_util.hpp +53 -0
  63. data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/thread.hpp +84 -0
  64. data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/util.hpp +25 -0
  65. data/ext/HandlerSocket-Plugin-for-MySQL/misc/microbench-hs.log +130 -0
  66. data/ext/HandlerSocket-Plugin-for-MySQL/misc/microbench-my.log +125 -0
  67. data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/COPYRIGHT.txt +27 -0
  68. data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/Changes +6 -0
  69. data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/HandlerSocket.xs +632 -0
  70. data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/MANIFEST +8 -0
  71. data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/Makefile.PL +18 -0
  72. data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/Makefile.PL.installed +20 -0
  73. data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/README +30 -0
  74. data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/lib/Net/HandlerSocket.pm +68 -0
  75. data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/lib/Net/HandlerSocket/Pool.pm +362 -0
  76. data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/perl-Net-HandlerSocket.spec.template +127 -0
  77. data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/ppport.h +6375 -0
  78. data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/t/Net-HandlerSocket.t +15 -0
  79. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/Makefile +79 -0
  80. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/common/binary_my.cnf +4 -0
  81. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/common/compat.sh +29 -0
  82. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/common/hstest.pm +66 -0
  83. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/Makefile +4 -0
  84. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/run.sh +27 -0
  85. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test01.expected +100 -0
  86. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test01.pl +38 -0
  87. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test02.expected +100 -0
  88. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test02.pl +49 -0
  89. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test03.expected +771 -0
  90. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test03.pl +61 -0
  91. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test04.expected +0 -0
  92. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test04.pl +63 -0
  93. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test05.expected +771 -0
  94. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test05.pl +59 -0
  95. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test06.expected +644 -0
  96. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test06.pl +90 -0
  97. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test07.expected +304 -0
  98. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test07.pl +98 -0
  99. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test08.expected +2 -0
  100. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test08.pl +48 -0
  101. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test09.expected +12 -0
  102. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test09.pl +67 -0
  103. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test10.expected +771 -0
  104. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test10.pl +93 -0
  105. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test11.expected +37 -0
  106. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test11.pl +112 -0
  107. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test12.expected +273 -0
  108. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test12.pl +134 -0
  109. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test13.expected +92 -0
  110. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test13.pl +92 -0
  111. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test14.expected +144 -0
  112. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test14.pl +80 -0
  113. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test15.expected +764 -0
  114. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test15.pl +114 -0
  115. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test16.expected +66 -0
  116. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test16.pl +88 -0
  117. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test17.expected +0 -0
  118. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test17.pl +125 -0
  119. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test18.expected +22 -0
  120. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test18.pl +63 -0
  121. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test19.expected +14894 -0
  122. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test19.pl +190 -0
  123. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test20.expected +2 -0
  124. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test20.pl +33 -0
  125. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test21.expected +11 -0
  126. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test21.pl +58 -0
  127. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test22.expected +9 -0
  128. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test22.pl +61 -0
  129. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test23.expected +101 -0
  130. data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test23.pl +53 -0
  131. data/ext/winebarrel-ruby-handlersocket-c19841e47ea2/README +33 -0
  132. data/ext/winebarrel-ruby-handlersocket-c19841e47ea2/extconf.rb +27 -0
  133. data/ext/winebarrel-ruby-handlersocket-c19841e47ea2/handlersocket.cpp +437 -0
  134. data/ext/winebarrel-ruby-handlersocket-c19841e47ea2/handlersocket.h +32 -0
  135. 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