ぽにょろん

思いついたこととメモ

Firebird3.0でEmbedded試してみた

昨日(4月19日)、Firebird3.0(以下FB3)が正式にReleaseされました。

www.firebirdsql.org

せっかくなので、FB3でのEmbedded接続を試してみました。
C#です。

目次

今回試した環境

FB2.5からの大きな変更点

これまでWindows版ではEmbedded用のパッケージが別に用意されていましたが、
FB3からは一緒になったようです。

キムラデービーブログさんに詳しくあるので、そちらを参照してください。

blog.kimuradb.com

Firebirdのバイナリを取得

www.firebirdsql.org
上記から、目的のプラットフォームに合わせて取得。

必要なDLLをコピー

今回必要なものを以下の2つ。
* fbclient.dll
* plugins/engine12.dll

最終的に、以下のようなフォルダ階層になればOK。
f:id:kowill:20160421010106p:plain

ソースコード

gist.github.com

プロジェクトのプラットフォームターゲットの変更に注意。
x86バイナリなら、x86に。x64ならそのように。

実行結果

f:id:kowill:20160421010052p:plain

rank や boolean型を使えていることが確認できます。
Hello Firebird 3.0!完了!

注意事項

  • .NET Data Provider
    2016/4/20時点でNugetから取得した、FirebirdSql.Data.FirebirdClientは
    FB3から対応したBoolean型の型変換できずエラーになります。
    Window関数やその他DBの機能に関してはほとんど動きそうですが、
    Boolean型を試したい場合は、素直にCloneして自前で構築しましょう。*1

  • Firebird2.5で作成したDBについて
    ODS(On-Disk Structure)が変更になっているため、上記の手順で参照するとエラーになります。
    マイグレーションする必要があるようです。
    ツールとかで両バージョン参照したいとかは一工夫(?)いりそうですね。。

  • サポートライブラリ
    上記手順では、サポートライブラリ*2入れてませんが、
    入れておかないと、firebird.logに読み込み失敗ログが出ます。
    ちゃんとした環境で使うときは入れて下さい。

*1:masterをcloneしてくればOK

*2:icu*.dll, ib_util.dll