これはMySQL Casual Advent Calendar 2011 - MySQL Casualの8日目の記事です!
UDFでFizzBuzz
id:sugyanさんがストアドプロシージャでFizzBuzzをやっていたのでMySQLのUDF(user-defined function)でもやってみました。
kamipo/mysql_fizzbuzz · GitHub
git clone git://github.com/kamipo/mysql_fizzbuzz.git cd mysql_fizzbuzz g++ -shared -fPIC -Wall -g mysql_fizzbuzz.cc -o mysql_fizzbuzz.so cp mysql_fizzbuzz.so /usr/local/mysql/lib/mysql/plugin mysql -u root -e "create function fizzbuzz returns string soname 'mysql_fizzbuzz.so'"
mysql -u root -NE -e "SELECT fizzbuzz(100)" *************************** 1. row *************************** 1 2 Fizz 4 Buzz Fizz 7 ...
こんなカンジでUDFでもカジュアルにFizzBuzzできましたね!
本題
@xaicronさんと@kazeburoさんとインストールスクリプトネタでかぶってるけど気にしない(+`ω´+)
最近はperlbrewとかrvmとかnvmとかで簡単に自分用のperlとかrubyとかnodeとかインストールできるじゃないですか。
そこでMySQLもそれと同じぐらいカジュアルにインストールしたいわけですよ。
それで今日書いてたのがkamipo/mysql-build · GitHubです。
とりあえずいまはsstephenson/ruby-build · GitHubのほとんどコピペなんですが
git clone git://github.com/kamipo/mysql-build.git cd mysql-build
githubからcloneしてきてもらって
./bin/mysql-build --definitions 4.0.30 5.1.59 5.5.14-spider-2.27 5.5.18
インストールできるMySQLの一覧がみれるので
./bin/mysql-build -v 5.1.59 ~/opt/mysql/5.1.59
これだけでインストールできます!!
MySQL 5.5以降はビルドするのにcmakeが必要なんですが、あらかじめcmakeを入れておけば
./bin/mysql-build -v 5.5.18 ~/opt/mysql/5.5.18
こんなに簡単にインストールできます!!!!
じつはさっき知ったんですが最近のSpiderストレージエンジンはQ4MとHandlerSocketもバンドルされてるみたいじゃないですか。これも入れてみましょう。
./bin/mysql-build -v 5.5.14-spider-2.27 ~/opt/mysql/5.5.14-spider-2.27 ... BUILD FAILED Inspect or clean up the working tree at /tmp/mysql-build.20111208231547.62780 Results logged to /tmp/mysql-build.20111208231547.62780.log Last 10 log lines: [ 93%] Building CXX object storage/spider/CMakeFiles/spider.dir/hs_client/config.cpp.o [ 93%] Building CXX object storage/spider/CMakeFiles/spider.dir/hs_client/escape.cpp.o [ 93%] Building CXX object storage/spider/CMakeFiles/spider.dir/hs_client/fatal.cpp.o [ 93%] Building CXX object storage/spider/CMakeFiles/spider.dir/hs_client/hstcpcli.cpp.o [ 94%] Building CXX object storage/spider/CMakeFiles/spider.dir/hs_client/socket.cpp.o [ 94%] Building CXX object storage/spider/CMakeFiles/spider.dir/hs_client/string_util.cpp.o Linking CXX shared module ha_spider.so ld: warning: directory '/Users/kamipo/opt/mysql/5.5.14-spider-2.27/lib' following -L not found [ 94%] Built target spider make: *** [all] Error 2
ビルドに失敗しました!!ここはあきらめて@xaicronさんの一発でインストールできるスクリプトを使っておいてください!!
気を取り直してMySQL 4.0の最新バージョンのMySQL 4.0.30も入れてみましょう。
./bin/mysql-build -v 4.0.30 ~/opt/mysql/4.0.30 ... BUILD FAILED Inspect or clean up the working tree at /tmp/mysql-build.20111208230555.14795 Results logged to /tmp/mysql-build.20111208230555.14795.log Last 10 log lines: longlong2str.s:123:suffix or operands invalid for `pop' longlong2str.s:132:Unknown pseudo-op: .size longlong2str.s:132:Rest of line ignored. 1st junk character valued 108 (l). longlong2str.s:135:Unknown pseudo-op: .type longlong2str.s:135:Rest of line ignored. 1st junk character valued 108 (l). longlong2str.s:140:Unknown pseudo-op: .size longlong2str.s:140:Rest of line ignored. 1st junk character valued 108 (l). make[2]: *** [longlong2str-x86.o] Error 1 make[1]: *** [all-recursive] Error 1 make: *** [all] Error 2
またビルドに失敗しました!!MySQL 4.0のことは@kazeburoさんに聞かないとよくわからないので今回はあきらめましょう!!
【追記】
(ビルドに失敗したのはMac OS X 10.6.8でのことで、Ubuntu 10.04ではどちらもビルド成功しました)