昨日はmrubyでMySQLのUDFを作ってみたんだけど、関数毎にCのプログラムを書くのがめんどくさいので、簡単なツールを作ってみた。
詳しくは README 参照。
fib.rb と fib.spec をこんな感じで作っておいて、
fib.rb
LONG_LONG_MAX = 9223372036854775807
def fib(n)
b = 1
c = 0
n.times do
a, b = b, c
c = a + b
raise 'Overflow' if c > LONG_LONG_MAX
end
c
end
fib.spec
MrubyUdf.function do |f|
f.name = 'fib' # 関数名は fib
f.return_type = Integer # 戻り値は Integer
f.arguments = [ # 引数は一つで型は Integer
Integer
]
end
% mrubyudf fib.spec
とやれば fib.so が出来上がるはず。 …
[さらに読む]