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,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
+