vincentchu-handlersocket 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/ext/HandlerSocket-Plugin-for-MySQL/AUTHORS +22 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/COPYING +30 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/ChangeLog +12 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/Makefile.am +87 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/README +78 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/autogen.sh +117 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/client/Makefile.am +24 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/client/hsclient.cpp +88 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/client/hslongrun.cpp +1041 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/client/hspool_test.pl +224 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/client/hstest.cpp +1532 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/client/hstest.pl +228 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/client/hstest_hs.sh +4 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/client/hstest_hs_more50.sh +4 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/client/hstest_md.sh +7 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/client/hstest_my.sh +3 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/client/hstest_my_more50.sh +3 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/configure.ac +144 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/docs-en/about-handlersocket.en.txt +72 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/docs-en/configuration-options.en.txt +99 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/docs-en/installation.en.txt +92 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/docs-en/perl-client.en.txt +135 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/docs-en/protocol.en.txt +205 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/docs-ja/about-handlersocket.ja.txt +51 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/docs-ja/installation.ja.txt +88 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/docs-ja/perl-client.ja.txt +127 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/docs-ja/protocol.ja.txt +180 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/COPYRIGHT.txt +27 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/Makefile.am +10 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/Makefile.plain.template +31 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/database.cpp +1190 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/database.hpp +142 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/handlersocket.cpp +222 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/handlersocket.spec.template +29 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/hstcpsvr.cpp +149 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/hstcpsvr.hpp +58 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/hstcpsvr_worker.cpp +951 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/hstcpsvr_worker.hpp +35 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/handlersocket/mysql_incl.hpp +50 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/COPYRIGHT.txt +27 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/Makefile.am +12 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/Makefile.plain +27 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/allocator.hpp +64 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/auto_addrinfo.hpp +49 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/auto_file.hpp +64 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/auto_ptrcontainer.hpp +67 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/config.cpp +67 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/config.hpp +32 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/escape.cpp +127 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/escape.hpp +66 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/fatal.cpp +36 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/fatal.hpp +22 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/hstcpcli.cpp +441 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/hstcpcli.hpp +62 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/libhsclient.spec.template +39 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/mutex.hpp +51 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/socket.cpp +186 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/socket.hpp +51 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/string_buffer.hpp +118 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/string_ref.hpp +63 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/string_util.cpp +182 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/string_util.hpp +53 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/thread.hpp +84 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/libhsclient/util.hpp +25 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/misc/microbench-hs.log +130 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/misc/microbench-my.log +125 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/COPYRIGHT.txt +27 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/Changes +6 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/HandlerSocket.xs +632 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/MANIFEST +8 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/Makefile.PL +18 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/Makefile.PL.installed +20 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/README +30 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/lib/Net/HandlerSocket.pm +68 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/lib/Net/HandlerSocket/Pool.pm +362 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/perl-Net-HandlerSocket.spec.template +127 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/ppport.h +6375 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/perl-Net-HandlerSocket/t/Net-HandlerSocket.t +15 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/Makefile +79 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/common/binary_my.cnf +4 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/common/compat.sh +29 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/common/hstest.pm +66 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/Makefile +4 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/run.sh +27 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test01.expected +100 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test01.pl +38 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test02.expected +100 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test02.pl +49 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test03.expected +771 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test03.pl +61 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test04.expected +0 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test04.pl +63 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test05.expected +771 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test05.pl +59 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test06.expected +644 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test06.pl +90 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test07.expected +304 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test07.pl +98 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test08.expected +2 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test08.pl +48 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test09.expected +12 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test09.pl +67 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test10.expected +771 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test10.pl +93 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test11.expected +37 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test11.pl +112 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test12.expected +273 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test12.pl +134 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test13.expected +92 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test13.pl +92 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test14.expected +144 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test14.pl +80 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test15.expected +764 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test15.pl +114 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test16.expected +66 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test16.pl +88 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test17.expected +0 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test17.pl +125 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test18.expected +22 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test18.pl +63 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test19.expected +14894 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test19.pl +190 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test20.expected +2 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test20.pl +33 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test21.expected +11 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test21.pl +58 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test22.expected +9 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test22.pl +61 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test23.expected +101 -0
- data/ext/HandlerSocket-Plugin-for-MySQL/regtest/test_01_lib/test23.pl +53 -0
- data/ext/winebarrel-ruby-handlersocket-c19841e47ea2/README +33 -0
- data/ext/winebarrel-ruby-handlersocket-c19841e47ea2/extconf.rb +27 -0
- data/ext/winebarrel-ruby-handlersocket-c19841e47ea2/handlersocket.cpp +437 -0
- data/ext/winebarrel-ruby-handlersocket-c19841e47ea2/handlersocket.h +32 -0
- metadata +200 -0
@@ -0,0 +1,22 @@
|
|
1
|
+
Akira Higuchi (https://github.com/ahiguti)
|
2
|
+
- developed HanderSocket plugin, libhsclient, and perl-Net-HandlerSocket
|
3
|
+
|
4
|
+
Yoshinori Matsunobu (https://github.com/yoshinorim)
|
5
|
+
- introduced autotools, added support for MySQL 5.5.6, added statistics
|
6
|
+
variables
|
7
|
+
|
8
|
+
Jeff Hodges (https://github.com/jmhodges)
|
9
|
+
- fixed some autotools scripts
|
10
|
+
|
11
|
+
Toru Yamaguchi (https://github.com/zigorou)
|
12
|
+
- ported to MacOS X
|
13
|
+
|
14
|
+
Moriyoshi Koizumi (https://github.com/moriyoshi)
|
15
|
+
- fixed some autotools scripts
|
16
|
+
|
17
|
+
takeda-at (https://github.com/takada-at)
|
18
|
+
- added simple authorization function
|
19
|
+
|
20
|
+
WheresWardy (https://github.com/WheresWardy)
|
21
|
+
- added authentication functions to libhsclient
|
22
|
+
|
@@ -0,0 +1,30 @@
|
|
1
|
+
-----------------------------------------------------------------------------
|
2
|
+
HandlerSocket plugin for MySQL
|
3
|
+
|
4
|
+
Copyright (c) 2010 DeNA Co.,Ltd.
|
5
|
+
All rights reserved.
|
6
|
+
|
7
|
+
Redistribution and use in source and binary forms, with or without
|
8
|
+
modification, are permitted provided that the following conditions are met:
|
9
|
+
|
10
|
+
* Redistributions of source code must retain the above copyright
|
11
|
+
notice, this list of conditions and the following disclaimer.
|
12
|
+
* Redistributions in binary form must reproduce the above copyright
|
13
|
+
notice, this list of conditions and the following disclaimer in the
|
14
|
+
documentation and/or other materials provided with the distribution.
|
15
|
+
* Neither the name of DeNA Co.,Ltd. nor the names of its contributors
|
16
|
+
may be used to endorse or promote products derived from this software
|
17
|
+
without specific prior written permission.
|
18
|
+
|
19
|
+
THIS SOFTWARE IS PROVIDED BY DeNA Co.,Ltd. "AS IS" AND ANY EXPRESS OR
|
20
|
+
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
21
|
+
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
22
|
+
EVENT SHALL DeNA Co.,Ltd. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
23
|
+
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
24
|
+
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
25
|
+
OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
26
|
+
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
27
|
+
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
28
|
+
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
29
|
+
|
30
|
+
|
@@ -0,0 +1,12 @@
|
|
1
|
+
1.0.6 - 2010-10-29
|
2
|
+
* Changed build instruction (autoreconf/configure/make), removed auto-generated files (Contributed by jmhodges)
|
3
|
+
*
|
4
|
+
|
5
|
+
1.0.5 - 2010-10-18
|
6
|
+
* Changed build procedures (using typical configure/make)
|
7
|
+
* Supported 5.5.6
|
8
|
+
* Added status variables
|
9
|
+
|
10
|
+
1.0.4 - 2010-08-15
|
11
|
+
* Initial public release
|
12
|
+
|
@@ -0,0 +1,87 @@
|
|
1
|
+
|
2
|
+
ACLOCAL_AMFLAGS = -I m4
|
3
|
+
|
4
|
+
SUBDIRS = @HANDLERSOCKET_SUBDIRS@
|
5
|
+
|
6
|
+
perl:
|
7
|
+
cd perl-Net-HandlerSocket && perl Makefile.PL && make
|
8
|
+
|
9
|
+
install_perl:
|
10
|
+
cd perl-Net-HandlerSocket && make install
|
11
|
+
|
12
|
+
rpms: rpm_cli rpm_perl rpm_c
|
13
|
+
|
14
|
+
rpm_dir:
|
15
|
+
- mkdir dist
|
16
|
+
- mkdir dist/BUILD dist/RPMS dist/SOURCES dist/SPECS dist/SRPMS
|
17
|
+
|
18
|
+
rpm_cli: clean_cli rpm_dir
|
19
|
+
sed -e "s/HANDLERSOCKET_VERSION/$(VERSION)/" \
|
20
|
+
libhsclient/libhsclient.spec.template \
|
21
|
+
> libhsclient/libhsclient.spec
|
22
|
+
tar cvfz dist/libhsclient.tar.gz libhsclient
|
23
|
+
rpmbuild --define "_topdir `pwd`/dist" -ta \
|
24
|
+
dist/libhsclient.tar.gz
|
25
|
+
|
26
|
+
rpm_perl: clean_perl rpm_dir
|
27
|
+
sed -e "s/HANDLERSOCKET_VERSION/$(VERSION)/" \
|
28
|
+
perl-Net-HandlerSocket/perl-Net-HandlerSocket.spec.template \
|
29
|
+
> perl-Net-HandlerSocket/perl-Net-HandlerSocket.spec
|
30
|
+
cd perl-Net-HandlerSocket && perl Makefile.PL && make clean && \
|
31
|
+
rm -f Makefile.old
|
32
|
+
tar cvfz dist/perl-Net-HandlerSocket.tar.gz perl-Net-HandlerSocket
|
33
|
+
rpmbuild --define "_topdir `pwd`/dist" -ta \
|
34
|
+
dist/perl-Net-HandlerSocket.tar.gz
|
35
|
+
|
36
|
+
rpm_c: clean_c rpm_dir
|
37
|
+
sed -e "s/HANDLERSOCKET_VERSION/$(VERSION)/" \
|
38
|
+
handlersocket/handlersocket.spec.template \
|
39
|
+
> handlersocket/handlersocket.spec
|
40
|
+
sed -e "s|HANDLERSOCKET_MYSQL_INC|$(MYSQL_CFLAGS) $(MYSQL_INC)|" \
|
41
|
+
-e "s|HANDLERSOCKET_MYSQL_LIB|$(MYSQL_LIB)|" \
|
42
|
+
handlersocket/Makefile.plain.template \
|
43
|
+
> handlersocket/Makefile.plain
|
44
|
+
tar cvfz dist/handlersocket.tar.gz handlersocket
|
45
|
+
rpmbuild --define "_topdir `pwd`/dist" -ta \
|
46
|
+
dist/handlersocket.tar.gz
|
47
|
+
|
48
|
+
install_rpm_pl:
|
49
|
+
- sudo rpm -e perl-Net-HandlerSocket
|
50
|
+
- sudo rpm -e perl-Net-HandlerSocket-debuginfo
|
51
|
+
make clean
|
52
|
+
make rpm_perl
|
53
|
+
- sudo rpm -U dist/RPMS/*/perl*.rpm
|
54
|
+
|
55
|
+
installrpms:
|
56
|
+
- sudo rpm -e handlersocket
|
57
|
+
- sudo rpm -e handlersocket-debuginfo
|
58
|
+
- sudo rpm -e perl-Net-HandlerSocket
|
59
|
+
- sudo rpm -e perl-Net-HandlerSocket-debuginfo
|
60
|
+
- sudo rpm -e libhsclient
|
61
|
+
- sudo rpm -e libhsclient-debuginfo
|
62
|
+
make clean
|
63
|
+
make rpm_cli
|
64
|
+
- sudo rpm -U dist/RPMS/*/libhsclient*.rpm
|
65
|
+
make clean
|
66
|
+
make rpm_perl
|
67
|
+
- sudo rpm -U dist/RPMS/*/perl*.rpm
|
68
|
+
make clean
|
69
|
+
make rpm_c
|
70
|
+
- sudo rpm -U dist/RPMS/*/handlersocket*.rpm
|
71
|
+
|
72
|
+
clean_cli:
|
73
|
+
cd libhsclient && make clean
|
74
|
+
cd client && make clean
|
75
|
+
|
76
|
+
clean_perl:
|
77
|
+
cd perl-Net-HandlerSocket && perl Makefile.PL && make clean && \
|
78
|
+
rm -f Makefile.old
|
79
|
+
|
80
|
+
clean_c:
|
81
|
+
cd handlersocket && make clean
|
82
|
+
|
83
|
+
clean_all: clean_cli clean_perl clean_c
|
84
|
+
cd regtest && make clean
|
85
|
+
rm -rf dist/*/*
|
86
|
+
rm -f dist/*.tar.gz
|
87
|
+
|
@@ -0,0 +1,78 @@
|
|
1
|
+
|
2
|
+
-----------------------------------------------------------------------------
|
3
|
+
HandlerSocket plugin for MySQL
|
4
|
+
|
5
|
+
Copyright (c) 2010 DeNA Co.,Ltd.
|
6
|
+
All rights reserved.
|
7
|
+
|
8
|
+
Redistribution and use in source and binary forms, with or without
|
9
|
+
modification, are permitted provided that the following conditions are met:
|
10
|
+
|
11
|
+
* Redistributions of source code must retain the above copyright
|
12
|
+
notice, this list of conditions and the following disclaimer.
|
13
|
+
* Redistributions in binary form must reproduce the above copyright
|
14
|
+
notice, this list of conditions and the following disclaimer in the
|
15
|
+
documentation and/or other materials provided with the distribution.
|
16
|
+
* Neither the name of DeNA Co.,Ltd. nor the names of its contributors
|
17
|
+
may be used to endorse or promote products derived from this software
|
18
|
+
without specific prior written permission.
|
19
|
+
|
20
|
+
THIS SOFTWARE IS PROVIDED BY DeNA Co.,Ltd. "AS IS" AND ANY EXPRESS OR
|
21
|
+
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
22
|
+
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
23
|
+
EVENT SHALL DeNA Co.,Ltd. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
24
|
+
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
25
|
+
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
26
|
+
OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
27
|
+
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
|
28
|
+
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
29
|
+
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
30
|
+
|
31
|
+
|
32
|
+
-----------------------------------------------------------------------------
|
33
|
+
About HandlerSocket
|
34
|
+
|
35
|
+
HandlerSocket is a NoSQL plugin for MySQL. It works as a daemon inside the
|
36
|
+
mysqld process, accept tcp connections, and execute requests from clients.
|
37
|
+
HandlerSocket does not support SQL queries. Instead, it supports simple CRUD
|
38
|
+
operations on tables.
|
39
|
+
|
40
|
+
Because of the following reasons, HandlerSocket is much faster than the
|
41
|
+
mysqld/libmysql pair in some circumstances:
|
42
|
+
|
43
|
+
- HandlerSocket manipulates data without parsing SQL, which causes less
|
44
|
+
CPU usage.
|
45
|
+
- HandlerSocket reads many requests from clients and executes their
|
46
|
+
requests in bulk, which causes less CPU and disk usage.
|
47
|
+
- HandlerSocket client/server protocol is more compact than the
|
48
|
+
mysql/libmysql pair, which causes less network usage.
|
49
|
+
|
50
|
+
The current version of HandlerSocket only works with GNU/Linux. The source
|
51
|
+
archive of HandlerSocket includes a C++ and a Perl client libraries.
|
52
|
+
Here is a list of client libraries for other languages:
|
53
|
+
|
54
|
+
- PHP
|
55
|
+
http://openpear.org/package/Net_HandlerSocket
|
56
|
+
http://github.com/tz-lom/HSPHP
|
57
|
+
http://code.google.com/p/php-handlersocket/
|
58
|
+
- Java
|
59
|
+
http://code.google.com/p/hs4j/
|
60
|
+
http://code.google.com/p/handlersocketforjava/
|
61
|
+
- Python
|
62
|
+
http://pypi.python.org/pypi/python-handler-socket
|
63
|
+
https://code.launchpad.net/~songofacandy/+junk/pyhandlersocket
|
64
|
+
- Ruby
|
65
|
+
https://github.com/winebarrel/ruby-handlersocket
|
66
|
+
https://github.com/miyucy/handlersocket
|
67
|
+
- JavaScript
|
68
|
+
https://github.com/koichik/node-handlersocket
|
69
|
+
- Scala
|
70
|
+
https://github.com/fujohnwang/hs2client
|
71
|
+
- Haskell
|
72
|
+
https://github.com/wuxb45/HandlerSocket-Haskell-Client
|
73
|
+
|
74
|
+
The home of HandlerSocket is here:
|
75
|
+
https://github.com/ahiguti/HandlerSocket-Plugin-for-MySQL
|
76
|
+
|
77
|
+
More documents are available in docs-en/ and docs-ja/ directories.
|
78
|
+
|
@@ -0,0 +1,117 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
|
3
|
+
warn() {
|
4
|
+
echo -e "\tWARNING: $@" 1>&2
|
5
|
+
}
|
6
|
+
|
7
|
+
# init
|
8
|
+
|
9
|
+
LIBTOOLIZE=libtoolize
|
10
|
+
ACLOCAL=aclocal
|
11
|
+
AUTOCONF=autoconf
|
12
|
+
AUTOHEADER=autoheader
|
13
|
+
AUTOMAKE=automake
|
14
|
+
|
15
|
+
case `uname -s` in
|
16
|
+
Darwin)
|
17
|
+
LIBTOOLIZE=glibtoolize
|
18
|
+
;;
|
19
|
+
FreeBSD)
|
20
|
+
ACLOCAL_ARGS="$ACLOCAL_ARGS -I /usr/local/share/aclocal/"
|
21
|
+
;;
|
22
|
+
esac
|
23
|
+
|
24
|
+
|
25
|
+
# libtoolize
|
26
|
+
echo "Searching libtoolize..."
|
27
|
+
if [ `which $LIBTOOLIZE` ] ; then
|
28
|
+
echo -e "\tFOUND: libtoolize -> $LIBTOOLIZE"
|
29
|
+
else
|
30
|
+
warn "Cannot Found libtoolize... input libtool command"
|
31
|
+
read LIBTOOLIZE
|
32
|
+
LIBTOOLIZE=`which $LIBTOOLIZE`
|
33
|
+
if [ `which $LIBTOOLIZE` ] ; then
|
34
|
+
echo -e "\tSET: libtoolize -> $LIBTOOLIZE"
|
35
|
+
else
|
36
|
+
warn "$LIBTOOLIZE: Command not found."
|
37
|
+
exit 1;
|
38
|
+
fi
|
39
|
+
fi
|
40
|
+
|
41
|
+
# aclocal
|
42
|
+
echo "Searching aclocal..."
|
43
|
+
if [ `which $ACLOCAL` ] ; then
|
44
|
+
echo -e "\tFOUND: aclocal -> $ACLOCAL"
|
45
|
+
else
|
46
|
+
warn "Cannot Found aclocal... input aclocal command"
|
47
|
+
read ACLOCAL
|
48
|
+
ACLOCAL=`which $ACLOCAL`
|
49
|
+
if [ `which $ACLOCAL` ] ; then
|
50
|
+
echo -e "\tSET: aclocal -> $ACLOCAL"
|
51
|
+
else
|
52
|
+
warn "$ACLOCAL: Command not found."
|
53
|
+
exit 1;
|
54
|
+
fi
|
55
|
+
fi
|
56
|
+
|
57
|
+
# automake
|
58
|
+
echo "Searching automake..."
|
59
|
+
if [ `which $AUTOMAKE` ] ; then
|
60
|
+
echo -e "\tFOUND: automake -> $AUTOMAKE"
|
61
|
+
else
|
62
|
+
warn "Cannot Found automake... input automake command"
|
63
|
+
read AUTOMAKE
|
64
|
+
ACLOCAL=`which $AUTOMAKE`
|
65
|
+
if [ `which $AUTOMAKE` ] ; then
|
66
|
+
echo -e "\tSET: automake -> $AUTOMAKE"
|
67
|
+
else
|
68
|
+
warn "$AUTOMAKE: Command not found."
|
69
|
+
exit 1;
|
70
|
+
fi
|
71
|
+
fi
|
72
|
+
|
73
|
+
# autoheader
|
74
|
+
echo "Searching autoheader..."
|
75
|
+
if [ `which $AUTOHEADER` ] ; then
|
76
|
+
echo -e "\tFOUND: autoheader -> $AUTOHEADER"
|
77
|
+
else
|
78
|
+
warn "Cannot Found autoheader... input autoheader command"
|
79
|
+
read AUTOHEADER
|
80
|
+
ACLOCAL=`which $AUTOHEADER`
|
81
|
+
if [ `which $AUTOHEADER` ] ; then
|
82
|
+
echo -e "\tSET: autoheader -> $AUTOHEADER"
|
83
|
+
else
|
84
|
+
warn "$AUTOHEADER: Command not found."
|
85
|
+
exit 1;
|
86
|
+
fi
|
87
|
+
fi
|
88
|
+
|
89
|
+
# autoconf
|
90
|
+
echo "Searching autoconf..."
|
91
|
+
if [ `which $AUTOCONF` ] ; then
|
92
|
+
echo -e "\tFOUND: autoconf -> $AUTOCONF"
|
93
|
+
else
|
94
|
+
warn "Cannot Found autoconf... input autoconf command"
|
95
|
+
read AUTOCONF
|
96
|
+
ACLOCAL=`which $AUTOCONF`
|
97
|
+
if [ `which $AUTOCONF` ] ; then
|
98
|
+
echo -e "\tSET: autoconf -> $AUTOCONF"
|
99
|
+
else
|
100
|
+
warn "$AUTOCONF: Command not found."
|
101
|
+
exit 1;
|
102
|
+
fi
|
103
|
+
fi
|
104
|
+
|
105
|
+
echo "Running libtoolize ..."
|
106
|
+
$LIBTOOLIZE --force --copy
|
107
|
+
echo "Running aclocal ..."
|
108
|
+
$ACLOCAL ${ACLOCAL_ARGS} -I .
|
109
|
+
echo "Running autoheader..."
|
110
|
+
$AUTOHEADER
|
111
|
+
echo "Running automake ..."
|
112
|
+
$AUTOMAKE --add-missing --copy
|
113
|
+
echo "Running autoconf ..."
|
114
|
+
$AUTOCONF
|
115
|
+
|
116
|
+
mkdir -p m4
|
117
|
+
|
@@ -0,0 +1,24 @@
|
|
1
|
+
AM_INCLUDES= -I../libhsclient
|
2
|
+
bin_PROGRAMS=hsclient
|
3
|
+
hsclient_SOURCES= hsclient.cpp
|
4
|
+
hsclient_LDFLAGS= -static -L../libhsclient -lhsclient
|
5
|
+
hsclient_CXXFLAGS= $(AM_INCLUDES)
|
6
|
+
|
7
|
+
hstest: hstest.o
|
8
|
+
$(CXX) $(CXXFLAGS) $(LFLAGS) hstest.o \
|
9
|
+
-L../libhsclient/.libs -lhsclient $$(mysql_config --libs_r) \
|
10
|
+
-o hstest
|
11
|
+
|
12
|
+
hstest.o: hstest.cpp
|
13
|
+
$(CXX) $(CXXFLAGS) $(AM_INCLUDES) $$(mysql_config --include) \
|
14
|
+
-c hstest.cpp
|
15
|
+
|
16
|
+
hslongrun: hslongrun.o
|
17
|
+
$(CXX) $(CXXFLAGS) $(LFLAGS) hslongrun.o \
|
18
|
+
-L../libhsclient/.libs -lhsclient $$(mysql_config --libs_r) \
|
19
|
+
-o hslongrun
|
20
|
+
|
21
|
+
hslongrun.o: hslongrun.cpp
|
22
|
+
$(CXX) $(CXXFLAGS) $(AM_INCLUDES) $$(mysql_config --include) \
|
23
|
+
-c hslongrun.cpp
|
24
|
+
|
@@ -0,0 +1,88 @@
|
|
1
|
+
|
2
|
+
// vim:sw=2:ai
|
3
|
+
|
4
|
+
#include "hstcpcli.hpp"
|
5
|
+
#include "string_util.hpp"
|
6
|
+
|
7
|
+
namespace dena {
|
8
|
+
|
9
|
+
int
|
10
|
+
hstcpcli_main(int argc, char **argv)
|
11
|
+
{
|
12
|
+
config conf;
|
13
|
+
parse_args(argc, argv, conf);
|
14
|
+
socket_args sockargs;
|
15
|
+
sockargs.set(conf);
|
16
|
+
hstcpcli_ptr cli = hstcpcli_i::create(sockargs);
|
17
|
+
const std::string dbname = conf.get_str("dbname", "hstest");
|
18
|
+
const std::string table = conf.get_str("table", "hstest_table1");
|
19
|
+
const std::string index = conf.get_str("index", "PRIMARY");
|
20
|
+
const std::string fields = conf.get_str("fields", "k,v");
|
21
|
+
const int limit = conf.get_int("limit", 0);
|
22
|
+
const int skip = conf.get_int("skip", 0);
|
23
|
+
std::vector<std::string> keys;
|
24
|
+
std::vector<string_ref> keyrefs;
|
25
|
+
size_t num_keys = 0;
|
26
|
+
while (true) {
|
27
|
+
const std::string conf_key = std::string("k") + to_stdstring(num_keys);
|
28
|
+
const std::string k = conf.get_str(conf_key, "");
|
29
|
+
const std::string kx = conf.get_str(conf_key, "x");
|
30
|
+
if (k.empty() && kx == "x") {
|
31
|
+
break;
|
32
|
+
}
|
33
|
+
++num_keys;
|
34
|
+
keys.push_back(k);
|
35
|
+
}
|
36
|
+
for (size_t i = 0; i < keys.size(); ++i) {
|
37
|
+
const string_ref ref(keys[i].data(), keys[i].size());
|
38
|
+
keyrefs.push_back(ref);
|
39
|
+
}
|
40
|
+
const std::string op = conf.get_str("op", "=");
|
41
|
+
const string_ref op_ref(op.data(), op.size());
|
42
|
+
cli->request_buf_open_index(0, dbname.c_str(), table.c_str(),
|
43
|
+
index.c_str(), fields.c_str());
|
44
|
+
cli->request_buf_exec_generic(0, op_ref, num_keys == 0 ? 0 : &keyrefs[0],
|
45
|
+
num_keys, limit, skip, string_ref(), 0, 0);
|
46
|
+
int code = 0;
|
47
|
+
size_t numflds = 0;
|
48
|
+
do {
|
49
|
+
if (cli->request_send() != 0) {
|
50
|
+
fprintf(stderr, "request_send: %s\n", cli->get_error().c_str());
|
51
|
+
break;
|
52
|
+
}
|
53
|
+
if ((code = cli->response_recv(numflds)) != 0) {
|
54
|
+
fprintf(stderr, "response_recv: %s\n", cli->get_error().c_str());
|
55
|
+
break;
|
56
|
+
}
|
57
|
+
} while (false);
|
58
|
+
cli->response_buf_remove();
|
59
|
+
do {
|
60
|
+
if ((code = cli->response_recv(numflds)) != 0) {
|
61
|
+
fprintf(stderr, "response_recv: %s\n", cli->get_error().c_str());
|
62
|
+
break;
|
63
|
+
}
|
64
|
+
while (true) {
|
65
|
+
const string_ref *const row = cli->get_next_row();
|
66
|
+
if (row == 0) {
|
67
|
+
break;
|
68
|
+
}
|
69
|
+
printf("REC:");
|
70
|
+
for (size_t i = 0; i < numflds; ++i) {
|
71
|
+
const std::string val(row[i].begin(), row[i].size());
|
72
|
+
printf(" %s", val.c_str());
|
73
|
+
}
|
74
|
+
printf("\n");
|
75
|
+
}
|
76
|
+
} while (false);
|
77
|
+
cli->response_buf_remove();
|
78
|
+
return 0;
|
79
|
+
}
|
80
|
+
|
81
|
+
};
|
82
|
+
|
83
|
+
int
|
84
|
+
main(int argc, char **argv)
|
85
|
+
{
|
86
|
+
return dena::hstcpcli_main(argc, argv);
|
87
|
+
}
|
88
|
+
|