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.
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