SSブログ

Firebird3 の ネットワークプロトコルと pyfirebirdsql 0.9.6 リリース [Python]

このエントリーは
(第49回)Python mini Hack-a-thon の活動の記録
http://pyhack.connpass.com/event/10256/

Firebird Advent Calendar 2014 の20日目の記事です
http://qiita.com/advent-calendar/2014/firebird

ここでも少し触れましたが、
http://nakagami.blog.so-net.ne.jp/2014-02-15-2

Firebird のネットワークプロトコルの機能については、以下のような変遷があります
(今回 Firebird のソースを調べ直しました)

PROTOCOL_VERSION10:
- Interbase6.0 と同じ。Firebird1.0 から Firebird2.0 まで

PROTOCOL_VERSION11:
- Firebird2.1。
- ptype_lazy_send という、リクエストに対するレスポンスを後でまとめて返すことによって性能向上をはかる
- WIN_SSPI という Windows の認証対応

PROTOCOL_VERSION12:
isc_dpb_utf8_filename という utf8 でファイル名を渡すパラメータの追加
op_cancel オペレーションの追加
(プロトコル上の変更はほとんどなし)

PROTOCOL_VERSION13:
- SRP プロトコルによる認証、鍵交換 (FB3 Alpha1)
- 通信データのの RC4 暗号化 (FB3 Alpha1)
- NULL のとき余分なデータを転送しない (FB3 Beta1)
- 通信データの圧縮 (FB3 Beta2)

pyfirebirdsql 0.9.5 では、PROTOCOL_VERSION13 の FB3 Alpha1 までの
機能を実装していました
https://pypi.python.org/pypi/firebirdsql/0.9.5

しかし、その後 NULL データを転送しない修正により Beta1 で動かなくなっていました
http://tracker.firebirdsql.org/browse/CORE-2897
https://github.com/asfernandes/firebird/commit/c41493c756cdd6c7118e396aeec814f1b14bed3a
がーん。
C++ のソースを見ただけではどこでどうしていいかわからなかったので、やり取りされるデータを観察しながら修正しました。
・・・というわけで、 0.9.6 をリリースしました
https://pypi.python.org/pypi/firebirdsql/0.9.6

Beta2 でリリースされるという通信データの圧縮はオプションなようなので、
今後プロトコル仕様に変更がなければFirebird3.0 のリリース版でも使えると思います

コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

Facebook コメント

トラックバック 0