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,93 @@
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 = 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
+ # setting null
29
+ print "HSINSERT";
30
+ my $hs = hstest::get_hs_connection(undef, 9999);
31
+ my $dbname = $hstest::conf{dbname};
32
+ $hs->open_index(1, $dbname, $table, '', 'k,v1,v2');
33
+ for (my $i = 0; $i < $tablesize; ++$i) {
34
+ my $k = "" . $i;
35
+ my $v1 = "v1_" . $i;
36
+ my $v2 = undef; # null value
37
+ my $r = $hs->execute_insert(1, [ $k, $v1, $v2 ]);
38
+ my $err = $r->[0];
39
+ if ($err != 0) {
40
+ my $err_str = $r->[1];
41
+ print "$err $err_str\n";
42
+ }
43
+ }
44
+ undef $hs;
45
+
46
+ dump_table();
47
+
48
+ # setting null
49
+ print "HSUPDATE";
50
+ $hs = hstest::get_hs_connection(undef, 9999);
51
+ $dbname = $hstest::conf{dbname};
52
+ $hs->open_index(2, $dbname, $table, '', 'v1');
53
+ for (my $i = 0; $i < $tablesize; ++$i) {
54
+ my $r = $hs->execute_single(2, '=', [ $i ], 1000, 0, 'U', [ undef ]);
55
+ my $err = $r->[0];
56
+ if ($err != 0) {
57
+ my $err_str = $r->[1];
58
+ print "$err $err_str\n";
59
+ }
60
+ }
61
+ undef $hs;
62
+
63
+ dump_table();
64
+
65
+ # setting non-null
66
+ print "HSUPDATE";
67
+ $hs = hstest::get_hs_connection(undef, 9999);
68
+ $dbname = $hstest::conf{dbname};
69
+ $hs->open_index(2, $dbname, $table, '', 'v1');
70
+ for (my $i = 0; $i < $tablesize; ++$i) {
71
+ my $r = $hs->execute_single(2, '=', [ $i ], 1000, 0, 'U', [ "hoge" ]);
72
+ my $err = $r->[0];
73
+ if ($err != 0) {
74
+ my $err_str = $r->[1];
75
+ print "$err $err_str\n";
76
+ }
77
+ }
78
+ undef $hs;
79
+
80
+ dump_table();
81
+
82
+ sub dump_table {
83
+ print "DUMP_TABLE\n";
84
+ my $aref = $dbh->selectall_arrayref("select k,v1,v2 from $table order by k");
85
+ for my $row (@$aref) {
86
+ my ($k, $v1, $v2) = @$row;
87
+ $v1 = "[null]" if !defined($v1);
88
+ $v2 = "[null]" if !defined($v2);
89
+ print "$k $v1 $v2\n";
90
+ # print "MISMATCH\n" if ($valmap{$k} ne $v);
91
+ }
92
+ }
93
+
@@ -0,0 +1,37 @@
1
+ VAL
2
+ [0][k5][5]
3
+ [0][k6][6]
4
+ [0][k7][7]
5
+ [0][k8][8]
6
+ INCREMENT
7
+ [0][1]
8
+ [0][1]
9
+ [0][1]
10
+ [0][1]
11
+ VAL
12
+ [0][k5][8]
13
+ [0][k6][18]
14
+ [0][k7][-4]
15
+ [0][k8][-7]
16
+ DECREMENT
17
+ [0][1]
18
+ [0][0]
19
+ [0][1]
20
+ [0][0]
21
+ VAL
22
+ [0][k5][6]
23
+ [0][k6][18]
24
+ [0][k7][-84]
25
+ [0][k8][-7]
26
+ INCREMENT
27
+ [0][6]
28
+ [0][7]
29
+ [0][8]
30
+ [0][9]
31
+ [0][10]
32
+ [0][11]
33
+ [0][12]
34
+ [0][13]
35
+ [0][14]
36
+ VAL
37
+ [0][k5][15]
@@ -0,0 +1,112 @@
1
+ #!/usr/bin/perl
2
+
3
+ # vim:sw=2:ai
4
+
5
+ # test for increment/decrement
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 (k varchar(30) primary key, v varchar(30) not null) " .
20
+ "engine = innodb");
21
+ srand(999);
22
+
23
+ my %valmap = ();
24
+
25
+ my $sth = $dbh->prepare("insert into $table values (?,?)");
26
+ for (my $i = 0; $i < $tablesize; ++$i) {
27
+ my $k = "k" . $i;
28
+ my $v = $i;
29
+ $sth->execute($k, $v);
30
+ $valmap{$k} = $v;
31
+ }
32
+
33
+ my $hs = hstest::get_hs_connection(undef, 9999);
34
+ my $dbname = $hstest::conf{dbname};
35
+ $hs->open_index(1, $dbname, $table, '', 'k,v');
36
+ $hs->open_index(2, $dbname, $table, '', 'v');
37
+
38
+ exec_multi(
39
+ "VAL",
40
+ [ 1, '=', [ 'k5' ], 1, 0 ],
41
+ [ 1, '=', [ 'k6' ], 1, 0 ],
42
+ [ 1, '=', [ 'k7' ], 1, 0 ],
43
+ [ 1, '=', [ 'k8' ], 1, 0 ],
44
+ );
45
+ # 5, 6, 7, 8
46
+
47
+ exec_multi(
48
+ "INCREMENT",
49
+ [ 2, '=', [ 'k5' ], 1, 0, '+', [ 3 ] ],
50
+ [ 2, '=', [ 'k6' ], 1, 0, '+', [ 12 ] ],
51
+ [ 2, '=', [ 'k7' ], 1, 0, '+', [ -11 ] ],
52
+ [ 2, '=', [ 'k8' ], 1, 0, '+', [ -15 ] ],
53
+ );
54
+
55
+ exec_multi(
56
+ "VAL",
57
+ [ 1, '=', [ 'k5' ], 1, 0 ],
58
+ [ 1, '=', [ 'k6' ], 1, 0 ],
59
+ [ 1, '=', [ 'k7' ], 1, 0 ],
60
+ [ 1, '=', [ 'k8' ], 1, 0 ],
61
+ );
62
+ # 8, 18, -4, -7
63
+
64
+ exec_multi(
65
+ "DECREMENT",
66
+ [ 2, '=', [ 'k5' ], 1, 0, '-', [ 2 ] ],
67
+ [ 2, '=', [ 'k6' ], 1, 0, '-', [ 24 ] ],
68
+ [ 2, '=', [ 'k7' ], 1, 0, '-', [ 80 ] ],
69
+ [ 2, '=', [ 'k8' ], 1, 0, '-', [ -80 ] ],
70
+ );
71
+ # mod, no, mod, no
72
+
73
+ exec_multi(
74
+ "VAL",
75
+ [ 1, '=', [ 'k5' ], 1, 0 ],
76
+ [ 1, '=', [ 'k6' ], 1, 0 ],
77
+ [ 1, '=', [ 'k7' ], 1, 0 ],
78
+ [ 1, '=', [ 'k8' ], 1, 0 ],
79
+ );
80
+ # 6, 18, -84, -7
81
+
82
+ exec_multi(
83
+ "INCREMENT",
84
+ [ 2, '=', [ 'k5' ], 1, 0, '+?', [ 1 ] ],
85
+ [ 2, '=', [ 'k5' ], 1, 0, '+?', [ 1 ] ],
86
+ [ 2, '=', [ 'k5' ], 1, 0, '+?', [ 1 ] ],
87
+ [ 2, '=', [ 'k5' ], 1, 0, '+?', [ 1 ] ],
88
+ [ 2, '=', [ 'k5' ], 1, 0, '+?', [ 1 ] ],
89
+ [ 2, '=', [ 'k5' ], 1, 0, '+?', [ 1 ] ],
90
+ [ 2, '=', [ 'k5' ], 1, 0, '+?', [ 1 ] ],
91
+ [ 2, '=', [ 'k5' ], 1, 0, '+?', [ 1 ] ],
92
+ [ 2, '=', [ 'k5' ], 1, 0, '+?', [ 1 ] ],
93
+ );
94
+
95
+ exec_multi(
96
+ "VAL",
97
+ [ 1, '=', [ 'k5' ], 1, 0 ],
98
+ );
99
+ # 15
100
+
101
+ sub exec_multi {
102
+ my $mess = shift(@_);
103
+ print "$mess\n";
104
+ my $mres = $hs->execute_multi(\@_);
105
+ for my $res (@$mres) {
106
+ for my $fld (@$res) {
107
+ print "[$fld]";
108
+ }
109
+ print "\n";
110
+ }
111
+ }
112
+
@@ -0,0 +1,273 @@
1
+ VAL
2
+ code=0
3
+ [k1_0][k2_0][0][0]
4
+ [k1_0][k2_1][1][0]
5
+ [k1_0][k2_2][2][0]
6
+ [k1_0][k2_3][3][0]
7
+ [k1_0][k2_4][4][0]
8
+ [k1_0][k2_5][5][0]
9
+ [k1_0][k2_6][6][0]
10
+ [k1_0][k2_7][7][0]
11
+ [k1_0][k2_8][8][0]
12
+ [k1_0][k2_9][9][0]
13
+ [k1_1][k2_0][1][0]
14
+ [k1_1][k2_1][2][1]
15
+ [k1_1][k2_2][3][2]
16
+ [k1_1][k2_3][4][3]
17
+ [k1_1][k2_4][5][4]
18
+ [k1_1][k2_5][6][5]
19
+ [k1_1][k2_6][7][6]
20
+ [k1_1][k2_7][8][7]
21
+ [k1_1][k2_8][9][8]
22
+ [k1_1][k2_9][10][9]
23
+ [k1_2][k2_0][2][0]
24
+ [k1_2][k2_1][3][2]
25
+ [k1_2][k2_2][4][4]
26
+ [k1_2][k2_3][5][6]
27
+ [k1_2][k2_4][6][8]
28
+ [k1_2][k2_5][7][10]
29
+ [k1_2][k2_6][8][12]
30
+ [k1_2][k2_7][9][14]
31
+ [k1_2][k2_8][10][16]
32
+ [k1_2][k2_9][11][18]
33
+ [k1_3][k2_0][3][0]
34
+ [k1_3][k2_1][4][3]
35
+ [k1_3][k2_2][5][6]
36
+ [k1_3][k2_3][6][9]
37
+ [k1_3][k2_4][7][12]
38
+ [k1_3][k2_5][8][15]
39
+ [k1_3][k2_6][9][18]
40
+ [k1_3][k2_7][10][21]
41
+ [k1_3][k2_8][11][24]
42
+ [k1_3][k2_9][12][27]
43
+ [k1_4][k2_0][4][0]
44
+ [k1_4][k2_1][5][4]
45
+ [k1_4][k2_2][6][8]
46
+ [k1_4][k2_3][7][12]
47
+ [k1_4][k2_4][8][16]
48
+ [k1_4][k2_5][9][20]
49
+ [k1_4][k2_6][10][24]
50
+ [k1_4][k2_7][11][28]
51
+ [k1_4][k2_8][12][32]
52
+ [k1_4][k2_9][13][36]
53
+ [k1_5][k2_0][5][0]
54
+ [k1_5][k2_1][6][5]
55
+ [k1_5][k2_2][7][10]
56
+ [k1_5][k2_3][8][15]
57
+ [k1_5][k2_4][9][20]
58
+ [k1_5][k2_5][10][25]
59
+ [k1_5][k2_6][11][30]
60
+ [k1_5][k2_7][12][35]
61
+ [k1_5][k2_8][13][40]
62
+ [k1_5][k2_9][14][45]
63
+ [k1_6][k2_0][6][0]
64
+ [k1_6][k2_1][7][6]
65
+ [k1_6][k2_2][8][12]
66
+ [k1_6][k2_3][9][18]
67
+ [k1_6][k2_4][10][24]
68
+ [k1_6][k2_5][11][30]
69
+ [k1_6][k2_6][12][36]
70
+ [k1_6][k2_7][13][42]
71
+ [k1_6][k2_8][14][48]
72
+ [k1_6][k2_9][15][54]
73
+ [k1_7][k2_0][7][0]
74
+ [k1_7][k2_1][8][7]
75
+ [k1_7][k2_2][9][14]
76
+ [k1_7][k2_3][10][21]
77
+ [k1_7][k2_4][11][28]
78
+ [k1_7][k2_5][12][35]
79
+ [k1_7][k2_6][13][42]
80
+ [k1_7][k2_7][14][49]
81
+ [k1_7][k2_8][15][56]
82
+ [k1_7][k2_9][16][63]
83
+ [k1_8][k2_0][8][0]
84
+ [k1_8][k2_1][9][8]
85
+ [k1_8][k2_2][10][16]
86
+ [k1_8][k2_3][11][24]
87
+ [k1_8][k2_4][12][32]
88
+ [k1_8][k2_5][13][40]
89
+ [k1_8][k2_6][14][48]
90
+ [k1_8][k2_7][15][56]
91
+ [k1_8][k2_8][16][64]
92
+ [k1_8][k2_9][17][72]
93
+ [k1_9][k2_0][9][0]
94
+ [k1_9][k2_1][10][9]
95
+ [k1_9][k2_2][11][18]
96
+ [k1_9][k2_3][12][27]
97
+ [k1_9][k2_4][13][36]
98
+ [k1_9][k2_5][14][45]
99
+ [k1_9][k2_6][15][54]
100
+ [k1_9][k2_7][16][63]
101
+ [k1_9][k2_8][17][72]
102
+ [k1_9][k2_9][18][81]
103
+
104
+ FILTER
105
+ code=0
106
+ [k1_0][k2_5][5][0]
107
+ [k1_1][k2_5][6][5]
108
+ [k1_2][k2_5][7][10]
109
+ [k1_3][k2_5][8][15]
110
+ [k1_4][k2_5][9][20]
111
+ [k1_5][k2_5][10][25]
112
+ [k1_6][k2_5][11][30]
113
+ [k1_7][k2_5][12][35]
114
+ [k1_8][k2_5][13][40]
115
+ [k1_9][k2_5][14][45]
116
+
117
+ FILTER
118
+ code=0
119
+ [k1_0][k2_5][5][0]
120
+ [k1_1][k2_5][6][5]
121
+ [k1_2][k2_5][7][10]
122
+ [k1_3][k2_5][8][15]
123
+ [k1_4][k2_5][9][20]
124
+ [k1_5][k2_5][10][25]
125
+ [k1_6][k2_5][11][30]
126
+ [k1_7][k2_5][12][35]
127
+ [k1_8][k2_5][13][40]
128
+ [k1_9][k2_5][14][45]
129
+
130
+ FILTER
131
+ code=0
132
+ [k1_0][k2_3][3][0]
133
+ [k1_1][k2_2][3][2]
134
+ [k1_2][k2_1][3][2]
135
+ [k1_3][k2_0][3][0]
136
+
137
+ FILTER
138
+ code=0
139
+ [k1_1][k2_0][1][0]
140
+ [k1_1][k2_1][2][1]
141
+ [k1_1][k2_2][3][2]
142
+ [k1_1][k2_3][4][3]
143
+ [k1_1][k2_4][5][4]
144
+ [k1_1][k2_5][6][5]
145
+ [k1_1][k2_6][7][6]
146
+ [k1_1][k2_7][8][7]
147
+ [k1_1][k2_8][9][8]
148
+ [k1_1][k2_9][10][9]
149
+ [k1_2][k2_0][2][0]
150
+ [k1_2][k2_1][3][2]
151
+ [k1_2][k2_2][4][4]
152
+ [k1_2][k2_3][5][6]
153
+ [k1_2][k2_4][6][8]
154
+ [k1_2][k2_5][7][10]
155
+ [k1_2][k2_6][8][12]
156
+ [k1_2][k2_7][9][14]
157
+ [k1_2][k2_8][10][16]
158
+ [k1_2][k2_9][11][18]
159
+
160
+ FILTER
161
+ code=0
162
+ [k1_2][k2_5][7][10]
163
+ [k1_2][k2_6][8][12]
164
+ [k1_2][k2_7][9][14]
165
+ [k1_2][k2_8][10][16]
166
+ [k1_2][k2_9][11][18]
167
+
168
+ FILTER
169
+ code=0
170
+ [2]
171
+ VAL
172
+ code=0
173
+ [k1_0][k2_0][0][0]
174
+ [k1_0][k2_1][1][0]
175
+ [k1_0][k2_2][2][0]
176
+ [k1_0][k2_3][3][0]
177
+ [k1_0][k2_4][4][0]
178
+ [k1_0][k2_5][5][0]
179
+ [k1_0][k2_6][6][0]
180
+ [k1_0][k2_7][7][0]
181
+ [k1_0][k2_8][8][0]
182
+ [k1_0][k2_9][9][0]
183
+ [k1_1][k2_0][1][0]
184
+ [k1_1][k2_1][2][1]
185
+ [k1_1][k2_2][3][2]
186
+ [k1_1][k2_3][4][3]
187
+ [k1_1][k2_4][5][4]
188
+ [k1_1][k2_5][6][5]
189
+ [k1_1][k2_6][7][6]
190
+ [k1_1][k2_7][8][7]
191
+ [k1_1][k2_8][9][8]
192
+ [k1_1][k2_9][10][9]
193
+ [k1_2][k2_0][2][0]
194
+ [k1_2][k2_1][3][2]
195
+ [k1_2][k2_2][4][4]
196
+ [k1_2][k2_3][5][6]
197
+ [k1_2][k2_4][6][8]
198
+ [k1_2][k2_5][-1][10]
199
+ [k1_2][k2_6][8][12]
200
+ [k1_2][k2_7][9][14]
201
+ [k1_2][k2_8][10][16]
202
+ [k1_2][k2_9][11][18]
203
+ [k1_3][k2_0][3][0]
204
+ [k1_3][k2_1][4][3]
205
+ [k1_3][k2_2][5][6]
206
+ [k1_3][k2_3][6][9]
207
+ [k1_3][k2_4][7][12]
208
+ [k1_3][k2_5][8][15]
209
+ [k1_3][k2_6][9][18]
210
+ [k1_3][k2_7][10][21]
211
+ [k1_3][k2_8][11][24]
212
+ [k1_3][k2_9][12][27]
213
+ [k1_4][k2_0][4][0]
214
+ [k1_4][k2_1][5][4]
215
+ [k1_4][k2_2][6][8]
216
+ [k1_4][k2_3][7][12]
217
+ [k1_4][k2_4][8][16]
218
+ [k1_4][k2_5][9][20]
219
+ [k1_4][k2_6][10][24]
220
+ [k1_4][k2_7][11][28]
221
+ [k1_4][k2_8][12][32]
222
+ [k1_4][k2_9][13][36]
223
+ [k1_5][k2_0][5][0]
224
+ [k1_5][k2_1][6][5]
225
+ [k1_5][k2_2][-1][10]
226
+ [k1_5][k2_3][8][15]
227
+ [k1_5][k2_4][9][20]
228
+ [k1_5][k2_5][10][25]
229
+ [k1_5][k2_6][11][30]
230
+ [k1_5][k2_7][12][35]
231
+ [k1_5][k2_8][13][40]
232
+ [k1_5][k2_9][14][45]
233
+ [k1_6][k2_0][6][0]
234
+ [k1_6][k2_1][7][6]
235
+ [k1_6][k2_2][8][12]
236
+ [k1_6][k2_3][9][18]
237
+ [k1_6][k2_4][10][24]
238
+ [k1_6][k2_5][11][30]
239
+ [k1_6][k2_6][12][36]
240
+ [k1_6][k2_7][13][42]
241
+ [k1_6][k2_8][14][48]
242
+ [k1_6][k2_9][15][54]
243
+ [k1_7][k2_0][7][0]
244
+ [k1_7][k2_1][8][7]
245
+ [k1_7][k2_2][9][14]
246
+ [k1_7][k2_3][10][21]
247
+ [k1_7][k2_4][11][28]
248
+ [k1_7][k2_5][12][35]
249
+ [k1_7][k2_6][13][42]
250
+ [k1_7][k2_7][14][49]
251
+ [k1_7][k2_8][15][56]
252
+ [k1_7][k2_9][16][63]
253
+ [k1_8][k2_0][8][0]
254
+ [k1_8][k2_1][9][8]
255
+ [k1_8][k2_2][10][16]
256
+ [k1_8][k2_3][11][24]
257
+ [k1_8][k2_4][12][32]
258
+ [k1_8][k2_5][13][40]
259
+ [k1_8][k2_6][14][48]
260
+ [k1_8][k2_7][15][56]
261
+ [k1_8][k2_8][16][64]
262
+ [k1_8][k2_9][17][72]
263
+ [k1_9][k2_0][9][0]
264
+ [k1_9][k2_1][10][9]
265
+ [k1_9][k2_2][11][18]
266
+ [k1_9][k2_3][12][27]
267
+ [k1_9][k2_4][13][36]
268
+ [k1_9][k2_5][14][45]
269
+ [k1_9][k2_6][15][54]
270
+ [k1_9][k2_7][16][63]
271
+ [k1_9][k2_8][17][72]
272
+ [k1_9][k2_9][18][81]
273
+