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,90 @@
1
+ #!/usr/bin/perl
2
+
3
+ # vim:sw=2:ai
4
+
5
+ # test for insert/update/delete
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 = 256;
18
+ $dbh->do(
19
+ "create table $table (" .
20
+ "k varchar(30) primary key, " .
21
+ "v1 varchar(30), " .
22
+ "v2 varchar(30)) " .
23
+ "engine = innodb default charset = binary");
24
+ srand(999);
25
+
26
+ my %valmap = ();
27
+
28
+ print "HSINSERT";
29
+ my $hs = hstest::get_hs_connection(undef, 9999);
30
+ my $dbname = $hstest::conf{dbname};
31
+ $hs->open_index(1, $dbname, $table, '', 'k,v1,v2');
32
+ for (my $i = 0; $i < $tablesize; ++$i) {
33
+ my $k = "" . $i;
34
+ my $v1 = "v1_" . $i;
35
+ my $v2 = "v2_" . $i;
36
+ my $r = $hs->execute_insert(1, [ $k, $v1, $v2 ]);
37
+ my $err = $r->[0];
38
+ if ($err != 0) {
39
+ my $err_str = $r->[1];
40
+ print "$err $err_str\n";
41
+ }
42
+ }
43
+ undef $hs;
44
+
45
+ dump_table();
46
+
47
+ print "HSUPDATE";
48
+ $hs = hstest::get_hs_connection(undef, 9999);
49
+ $dbname = $hstest::conf{dbname};
50
+ $hs->open_index(2, $dbname, $table, '', 'v1');
51
+ for (my $i = 0; $i < $tablesize; ++$i) {
52
+ my $r = $hs->execute_single(2, '=', [ $i ], 1000, 0, 'U', [ "mod_$i" ]);
53
+ my $err = $r->[0];
54
+ if ($err != 0) {
55
+ my $err_str = $r->[1];
56
+ print "$err $err_str\n";
57
+ }
58
+ }
59
+ undef $hs;
60
+
61
+ dump_table();
62
+
63
+ print "HSDELETE\n";
64
+ $hs = hstest::get_hs_connection(undef, 9999);
65
+ $dbname = $hstest::conf{dbname};
66
+ $hs->open_index(3, $dbname, $table, '', '');
67
+ for (my $i = 0; $i < $tablesize; $i = $i + 2) {
68
+ my $r = $hs->execute_single(3, '=', [ $i ], 1000, 0, 'D');
69
+ my $err = $r->[0];
70
+ if ($err != 0) {
71
+ my $err_str = $r->[1];
72
+ print "$err $err_str\n";
73
+ }
74
+ }
75
+ undef $hs;
76
+
77
+ dump_table();
78
+
79
+ sub dump_table {
80
+ print "DUMP_TABLE\n";
81
+ my $aref = $dbh->selectall_arrayref("select k,v1,v2 from $table order by k");
82
+ for my $row (@$aref) {
83
+ my ($k, $v1, $v2) = @$row;
84
+ $v1 = "[null]" if !defined($v1);
85
+ $v2 = "[null]" if !defined($v2);
86
+ print "$k $v1 $v2\n";
87
+ # print "MISMATCH\n" if ($valmap{$k} ne $v);
88
+ }
89
+ }
90
+
@@ -0,0 +1,304 @@
1
+ MY
2
+ 0 1v1020 2v6350
3
+ 1 1v8031 2v9251
4
+ 2 1v7752 2v5372
5
+ 3 [NULL] 2v4143
6
+ 4 1v5904 2v3024
7
+ 5 1v7045 2v7515
8
+ 6 1v3676 2v4006
9
+ 7 1v3977 2v1707
10
+ 8 1v7198 2v7348
11
+ 9 1v5879 2v4949
12
+ 10 1v52310 2v95410
13
+ 11 1v43311 2v82011
14
+ 12 1v28312 2v83712
15
+ 13 [NULL] 2v41513
16
+ 14 1v54514 2v58314
17
+ 15 1v5215 2v32315
18
+ 16 1v61416 2v67916
19
+ 17 1v80517 2v45117
20
+ 18 1v11518 2v26918
21
+ 19 1v21819 2v61719
22
+ 20 1v87820 2v34520
23
+ 21 1v51221 2v96921
24
+ 22 1v40822 2v29122
25
+ 23 [NULL] 2v95323
26
+ 24 1v71024 2v14224
27
+ 25 1v68225 2v93425
28
+ 26 1v62126 2v96526
29
+ 27 1v57427 2v20427
30
+ 28 1v29828 2v13428
31
+ 29 1v98329 2v44429
32
+ 30 1v14430 2v15230
33
+ 31 1v18731 2v21531
34
+ 32 1v832 2v69732
35
+ 33 [NULL] 2v28033
36
+ 34 1v70134 2v53734
37
+ 35 1v41335 2v6935
38
+ 36 1v8636 2v82236
39
+ 37 1v67037 2v37037
40
+ 38 1v80638 2v68838
41
+ 39 1v2639 2v6639
42
+ 40 1v80240 2v17140
43
+ 41 1v55741 2v84741
44
+ 42 1v77742 2v73042
45
+ 43 [NULL] 2v11543
46
+ 44 1v64644 2v49644
47
+ 45 1v12045 2v68445
48
+ 46 1v37446 2v6546
49
+ 47 1v37047 2v17447
50
+ 48 1v82848 2v86748
51
+ 49 1v75949 2v70349
52
+ 50 1v84350 2v94250
53
+ 51 1v40151 2v36251
54
+ 52 1v36752 2v30752
55
+ 53 [NULL] 2v16753
56
+ 54 1v79954 2v82954
57
+ 55 1v53955 2v37955
58
+ 56 1v56056 2v85856
59
+ 57 1v57957 2v2657
60
+ 58 1v88758 2v50758
61
+ 59 1v34559 2v89859
62
+ 60 1v43060 2v80160
63
+ 61 1v84561 2v32561
64
+ 62 1v62462 2v48062
65
+ 63 [NULL] 2v67663
66
+ 64 1v5364 2v73664
67
+ 65 1v80965 2v27065
68
+ 66 1v17566 2v83966
69
+ 67 1v6167 2v22267
70
+ 68 1v35868 2v50568
71
+ 69 1v62769 2v90669
72
+ 70 1v4670 2v98170
73
+ 71 1v11971 2v471
74
+ 72 1v1472 2v48072
75
+ 73 [NULL] 2v40573
76
+ 74 1v87574 2v63974
77
+ 75 1v82775 2v34475
78
+ 76 1v59876 2v56376
79
+ 77 1v77077 2v51677
80
+ 78 1v53878 2v54878
81
+ 79 1v35779 2v32279
82
+ 80 1v3680 2v37080
83
+ 81 1v33181 2v81581
84
+ 82 1v76982 2v66882
85
+ 83 [NULL] 2v28183
86
+ 84 1v69684 2v45284
87
+ 85 1v40685 2v185
88
+ 86 1v39586 2v32486
89
+ 87 1v3687 2v73887
90
+ 88 1v16088 2v7988
91
+ 89 1v75989 2v65789
92
+ 90 1v3190 2v78390
93
+ 91 1v65091 2v82491
94
+ 92 1v85292 2v6892
95
+ 93 [NULL] 2v54693
96
+ 94 1v81394 2v77594
97
+ 95 1v8795 2v69695
98
+ 96 1v19696 2v38096
99
+ 97 1v7997 2v75197
100
+ 98 1v32398 2v21798
101
+ 99 1v3799 2v70199
102
+ HS
103
+ 0 1v1020 2v6350
104
+ 1 1v8031 2v9251
105
+ 2 1v7752 2v5372
106
+ 3 [NULL] 2v4143
107
+ 4 1v5904 2v3024
108
+ 5 1v7045 2v7515
109
+ 6 1v3676 2v4006
110
+ 7 1v3977 2v1707
111
+ 8 1v7198 2v7348
112
+ 9 1v5879 2v4949
113
+ 10 1v52310 2v95410
114
+ 11 1v43311 2v82011
115
+ 12 1v28312 2v83712
116
+ 13 [NULL] 2v41513
117
+ 14 1v54514 2v58314
118
+ 15 1v5215 2v32315
119
+ 16 1v61416 2v67916
120
+ 17 1v80517 2v45117
121
+ 18 1v11518 2v26918
122
+ 19 1v21819 2v61719
123
+ 20 1v87820 2v34520
124
+ 21 1v51221 2v96921
125
+ 22 1v40822 2v29122
126
+ 23 [NULL] 2v95323
127
+ 24 1v71024 2v14224
128
+ 25 1v68225 2v93425
129
+ 26 1v62126 2v96526
130
+ 27 1v57427 2v20427
131
+ 28 1v29828 2v13428
132
+ 29 1v98329 2v44429
133
+ 30 1v14430 2v15230
134
+ 31 1v18731 2v21531
135
+ 32 1v832 2v69732
136
+ 33 [NULL] 2v28033
137
+ 34 1v70134 2v53734
138
+ 35 1v41335 2v6935
139
+ 36 1v8636 2v82236
140
+ 37 1v67037 2v37037
141
+ 38 1v80638 2v68838
142
+ 39 1v2639 2v6639
143
+ 40 1v80240 2v17140
144
+ 41 1v55741 2v84741
145
+ 42 1v77742 2v73042
146
+ 43 [NULL] 2v11543
147
+ 44 1v64644 2v49644
148
+ 45 1v12045 2v68445
149
+ 46 1v37446 2v6546
150
+ 47 1v37047 2v17447
151
+ 48 1v82848 2v86748
152
+ 49 1v75949 2v70349
153
+ 50 1v84350 2v94250
154
+ 51 1v40151 2v36251
155
+ 52 1v36752 2v30752
156
+ 53 [NULL] 2v16753
157
+ 54 1v79954 2v82954
158
+ 55 1v53955 2v37955
159
+ 56 1v56056 2v85856
160
+ 57 1v57957 2v2657
161
+ 58 1v88758 2v50758
162
+ 59 1v34559 2v89859
163
+ 60 1v43060 2v80160
164
+ 61 1v84561 2v32561
165
+ 62 1v62462 2v48062
166
+ 63 [NULL] 2v67663
167
+ 64 1v5364 2v73664
168
+ 65 1v80965 2v27065
169
+ 66 1v17566 2v83966
170
+ 67 1v6167 2v22267
171
+ 68 1v35868 2v50568
172
+ 69 1v62769 2v90669
173
+ 70 1v4670 2v98170
174
+ 71 1v11971 2v471
175
+ 72 1v1472 2v48072
176
+ 73 [NULL] 2v40573
177
+ 74 1v87574 2v63974
178
+ 75 1v82775 2v34475
179
+ 76 1v59876 2v56376
180
+ 77 1v77077 2v51677
181
+ 78 1v53878 2v54878
182
+ 79 1v35779 2v32279
183
+ 80 1v3680 2v37080
184
+ 81 1v33181 2v81581
185
+ 82 1v76982 2v66882
186
+ 83 [NULL] 2v28183
187
+ 84 1v69684 2v45284
188
+ 85 1v40685 2v185
189
+ 86 1v39586 2v32486
190
+ 87 1v3687 2v73887
191
+ 88 1v16088 2v7988
192
+ 89 1v75989 2v65789
193
+ 90 1v3190 2v78390
194
+ 91 1v65091 2v82491
195
+ 92 1v85292 2v6892
196
+ 93 [NULL] 2v54693
197
+ 94 1v81394 2v77594
198
+ 95 1v8795 2v69695
199
+ 96 1v19696 2v38096
200
+ 97 1v7997 2v75197
201
+ 98 1v32398 2v21798
202
+ 99 1v3799 2v70199
203
+ 2ndIDX
204
+ 2ndidx 0 1v1020 => 0 1v1020 2v6350
205
+ 2ndidx 1 1v8031 => 1 1v8031 2v9251
206
+ 2ndidx 2 1v7752 => 2 1v7752 2v5372
207
+ 2ndidx 4 1v5904 => 4 1v5904 2v3024
208
+ 2ndidx 5 1v7045 => 5 1v7045 2v7515
209
+ 2ndidx 6 1v3676 => 6 1v3676 2v4006
210
+ 2ndidx 7 1v3977 => 7 1v3977 2v1707
211
+ 2ndidx 8 1v7198 => 8 1v7198 2v7348
212
+ 2ndidx 9 1v5879 => 9 1v5879 2v4949
213
+ 2ndidx 10 1v52310 => 10 1v52310 2v95410
214
+ 2ndidx 11 1v43311 => 11 1v43311 2v82011
215
+ 2ndidx 12 1v28312 => 12 1v28312 2v83712
216
+ 2ndidx 14 1v54514 => 14 1v54514 2v58314
217
+ 2ndidx 15 1v5215 => 15 1v5215 2v32315
218
+ 2ndidx 16 1v61416 => 16 1v61416 2v67916
219
+ 2ndidx 17 1v80517 => 17 1v80517 2v45117
220
+ 2ndidx 18 1v11518 => 18 1v11518 2v26918
221
+ 2ndidx 19 1v21819 => 19 1v21819 2v61719
222
+ 2ndidx 20 1v87820 => 20 1v87820 2v34520
223
+ 2ndidx 21 1v51221 => 21 1v51221 2v96921
224
+ 2ndidx 22 1v40822 => 22 1v40822 2v29122
225
+ 2ndidx 24 1v71024 => 24 1v71024 2v14224
226
+ 2ndidx 25 1v68225 => 25 1v68225 2v93425
227
+ 2ndidx 26 1v62126 => 26 1v62126 2v96526
228
+ 2ndidx 27 1v57427 => 27 1v57427 2v20427
229
+ 2ndidx 28 1v29828 => 28 1v29828 2v13428
230
+ 2ndidx 29 1v98329 => 29 1v98329 2v44429
231
+ 2ndidx 30 1v14430 => 30 1v14430 2v15230
232
+ 2ndidx 31 1v18731 => 31 1v18731 2v21531
233
+ 2ndidx 32 1v832 => 32 1v832 2v69732
234
+ 2ndidx 34 1v70134 => 34 1v70134 2v53734
235
+ 2ndidx 35 1v41335 => 35 1v41335 2v6935
236
+ 2ndidx 36 1v8636 => 36 1v8636 2v82236
237
+ 2ndidx 37 1v67037 => 37 1v67037 2v37037
238
+ 2ndidx 38 1v80638 => 38 1v80638 2v68838
239
+ 2ndidx 39 1v2639 => 39 1v2639 2v6639
240
+ 2ndidx 40 1v80240 => 40 1v80240 2v17140
241
+ 2ndidx 41 1v55741 => 41 1v55741 2v84741
242
+ 2ndidx 42 1v77742 => 42 1v77742 2v73042
243
+ 2ndidx 44 1v64644 => 44 1v64644 2v49644
244
+ 2ndidx 45 1v12045 => 45 1v12045 2v68445
245
+ 2ndidx 46 1v37446 => 46 1v37446 2v6546
246
+ 2ndidx 47 1v37047 => 47 1v37047 2v17447
247
+ 2ndidx 48 1v82848 => 48 1v82848 2v86748
248
+ 2ndidx 49 1v75949 => 49 1v75949 2v70349
249
+ 2ndidx 50 1v84350 => 50 1v84350 2v94250
250
+ 2ndidx 51 1v40151 => 51 1v40151 2v36251
251
+ 2ndidx 52 1v36752 => 52 1v36752 2v30752
252
+ 2ndidx 54 1v79954 => 54 1v79954 2v82954
253
+ 2ndidx 55 1v53955 => 55 1v53955 2v37955
254
+ 2ndidx 56 1v56056 => 56 1v56056 2v85856
255
+ 2ndidx 57 1v57957 => 57 1v57957 2v2657
256
+ 2ndidx 58 1v88758 => 58 1v88758 2v50758
257
+ 2ndidx 59 1v34559 => 59 1v34559 2v89859
258
+ 2ndidx 60 1v43060 => 60 1v43060 2v80160
259
+ 2ndidx 61 1v84561 => 61 1v84561 2v32561
260
+ 2ndidx 62 1v62462 => 62 1v62462 2v48062
261
+ 2ndidx 64 1v5364 => 64 1v5364 2v73664
262
+ 2ndidx 65 1v80965 => 65 1v80965 2v27065
263
+ 2ndidx 66 1v17566 => 66 1v17566 2v83966
264
+ 2ndidx 67 1v6167 => 67 1v6167 2v22267
265
+ 2ndidx 68 1v35868 => 68 1v35868 2v50568
266
+ 2ndidx 69 1v62769 => 69 1v62769 2v90669
267
+ 2ndidx 70 1v4670 => 70 1v4670 2v98170
268
+ 2ndidx 71 1v11971 => 71 1v11971 2v471
269
+ 2ndidx 72 1v1472 => 72 1v1472 2v48072
270
+ 2ndidx 74 1v87574 => 74 1v87574 2v63974
271
+ 2ndidx 75 1v82775 => 75 1v82775 2v34475
272
+ 2ndidx 76 1v59876 => 76 1v59876 2v56376
273
+ 2ndidx 77 1v77077 => 77 1v77077 2v51677
274
+ 2ndidx 78 1v53878 => 78 1v53878 2v54878
275
+ 2ndidx 79 1v35779 => 79 1v35779 2v32279
276
+ 2ndidx 80 1v3680 => 80 1v3680 2v37080
277
+ 2ndidx 81 1v33181 => 81 1v33181 2v81581
278
+ 2ndidx 82 1v76982 => 82 1v76982 2v66882
279
+ 2ndidx 84 1v69684 => 84 1v69684 2v45284
280
+ 2ndidx 85 1v40685 => 85 1v40685 2v185
281
+ 2ndidx 86 1v39586 => 86 1v39586 2v32486
282
+ 2ndidx 87 1v3687 => 87 1v3687 2v73887
283
+ 2ndidx 88 1v16088 => 88 1v16088 2v7988
284
+ 2ndidx 89 1v75989 => 89 1v75989 2v65789
285
+ 2ndidx 90 1v3190 => 90 1v3190 2v78390
286
+ 2ndidx 91 1v65091 => 91 1v65091 2v82491
287
+ 2ndidx 92 1v85292 => 92 1v85292 2v6892
288
+ 2ndidx 94 1v81394 => 94 1v81394 2v77594
289
+ 2ndidx 95 1v8795 => 95 1v8795 2v69695
290
+ 2ndidx 96 1v19696 => 96 1v19696 2v38096
291
+ 2ndidx 97 1v7997 => 97 1v7997 2v75197
292
+ 2ndidx 98 1v32398 => 98 1v32398 2v21798
293
+ 2ndidx 99 1v3799 => 99 1v3799 2v70199
294
+ 2ndIDX NULL
295
+ 2ndidxnull 3 2v4143
296
+ 2ndidxnull 13 2v41513
297
+ 2ndidxnull 23 2v95323
298
+ 2ndidxnull 33 2v28033
299
+ 2ndidxnull 43 2v11543
300
+ 2ndidxnull 53 2v16753
301
+ 2ndidxnull 63 2v67663
302
+ 2ndidxnull 73 2v40573
303
+ 2ndidxnull 83 2v28183
304
+ 2ndidxnull 93 2v54693
@@ -0,0 +1,98 @@
1
+ #!/usr/bin/perl
2
+
3
+ # vim:sw=2:ai
4
+
5
+ # test for nulls
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 = 100;
18
+ $dbh->do(
19
+ "create table $table (" .
20
+ "k int primary key, v1 varchar(30), v2 varchar(30), " .
21
+ "key idxv1 (v1) " .
22
+ ") engine = innodb");
23
+ srand(999);
24
+
25
+ my %valmap = ();
26
+
27
+ my $sth = $dbh->prepare("insert into $table values (?,?,?)");
28
+ for (my $i = 0; $i < $tablesize; ++$i) {
29
+ my $k = "" . $i;
30
+ my $v1 = "1v" . int(rand(1000)) . $i;
31
+ my $v2 = "2v" . int(rand(1000)) . $i;
32
+ if ($i % 10 == 3) {
33
+ $v1 = undef;
34
+ }
35
+ $sth->execute($k, $v1, $v2);
36
+ $valmap{$k} = $v1;
37
+ }
38
+
39
+ print "MY\n";
40
+ my $aref = $dbh->selectall_arrayref("select k,v1,v2 from $table order by k");
41
+ for my $row (@$aref) {
42
+ my ($k, $v1, $v2) = @$row;
43
+ $v1 = "[NULL]" if (!defined($v1));
44
+ print "$k $v1 $v2\n";
45
+ }
46
+
47
+ print "HS\n";
48
+ my $hs = hstest::get_hs_connection();
49
+ my $dbname = $hstest::conf{dbname};
50
+ $hs->open_index(1, $dbname, $table, '', 'k,v1,v2');
51
+ my $r = $hs->execute_single(1, '>=', [ '' ], 10000, 0);
52
+ shift(@$r);
53
+ for (my $i = 0; $i < $tablesize; ++$i) {
54
+ my $k = $r->[$i * 3];
55
+ my $v1 = $r->[$i * 3 + 1];
56
+ my $v2 = $r->[$i * 3 + 2];
57
+ $v1 = "[NULL]" if (!defined($v1));
58
+ print "$k $v1 $v2\n";
59
+ }
60
+
61
+ print "2ndIDX\n";
62
+ $hs->open_index(2, $dbname, $table, 'idxv1', 'k,v1,v2');
63
+ for (my $i = 0; $i < $tablesize; ++$i) {
64
+ my $k = "" . $i;
65
+ my $v1 = $valmap{$k};
66
+ next if !defined($v1);
67
+ my $r = $hs->execute_single(2, '=', [ $v1 ], 1, 0);
68
+ shift(@$r);
69
+ my $r_k = $r->[0];
70
+ my $r_v1 = $r->[1];
71
+ my $r_v2 = $r->[2];
72
+ print "2ndidx $k $v1 => $r_k $r_v1 $r_v2\n";
73
+ }
74
+
75
+ print "2ndIDX NULL\n";
76
+ {
77
+ my %rvals = ();
78
+ my $v1 = undef;
79
+ my @arr;
80
+ push(@arr, undef);
81
+ my $kv = \@arr;
82
+ my $r = $hs->execute_single(2, "=", $kv, 10000, 0);
83
+ shift(@$r);
84
+ for (my $i = 0; $i < scalar(@$r); $i += 3) {
85
+ my $k = $r->[$i];
86
+ my $v1 = $r->[$i + 1];
87
+ my $v2 = $r->[$i + 2];
88
+ $rvals{$k} = [ $k, $v1, $v2 ];
89
+ }
90
+ for my $i (sort { $a <=> $b } keys %rvals) {
91
+ my $rec = $rvals{$i};
92
+ my $k = $rec->[0];
93
+ my $v1 = $rec->[1];
94
+ my $v2 = $rec->[2];
95
+ print "2ndidxnull $k $v2\n";
96
+ }
97
+ }
98
+