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