So-net無料ブログ作成
  • ブログをはじめる
  • ログイン

LibreOffice 6.1 リリース [Firebird]

8/9 に、LibreOffice 6.1 がリリースされた。
Base で、いったん外れていた Firebird の embedded engine が再び使えるようになった。
・・・らしいので 手元の Windows に LibreOffice 6.1 をインストールしてみた。

そのまま使えるかと思ったら、デフォルトでは HSQLDB しか使えなくて、ここにあるよ「LibreOffice」→「詳細」→「実験的な機能を有効にする」で
https://www.gesource.jp/weblog/?p=6400
Base データベースを新規作成するときに「Firebird(埋め込み)」が選べるようになった。
将来的には、HSQLDB がサポートから外れて Firebird がデフォルトになるらしい。
途中でデーターベースエンジンを変更するとは大胆だが、 LibreOffice がデーターベースエンジンのメンテナンスをするつもりはないようなので、そういう選択もありかなと思った。

また、「既存のデーターベースに接続」で「Firebirdのファイル」を選択できるようになった。

作成された .odb ファイルを unzip するとdatabase/firebird.fbk というファイルが
できて Firebird のバックアップファイルらしい。
そのうちバージョンも確認したいけど、 ここらへんを見ると Firebird3 のようだ
https://www.firebirdnews.org/firebird-3-by-default-in-libreoffice-5-4-base/

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

Firebird4.0 Planning Board 2017 update [Firebird]

この記事はFirebird Advent Calendar 2017 https://qiita.com/advent-calendar/2017/firebird の24日目の記事です。

Firebird Advent Calendar 2016 の http://nakagami.blog.so-net.ne.jp/2016-12-19 の振り返り
↑を書いた時には、Planning Board にある Deadline は遅れに遅れていたのですが、その後日付が見直されて、現在は妥当な進捗になっているようです。

Firebird の Planning Board はここにあります
https://www.firebirdsql.org/en/planning-board/

各機能の status を見ても、(間に合わなさそうな issue の status を POSTPOND にすることも考えると)Beta Release の2018-01-01 も、無理ではない気がします。

Firebird 4.0 の alpha1 はリリース済みです
https://www.firebirdsql.org/en/news/firebird-4-0-alpha-1-release-is-available-for-testing/
まだ、実装予定の機能もあるみたいなんですが、 個人的には alpah1 の機能で 4.0 をリリースしちゃってもらって、未実装の機能は 5.0 以降でいいかな、と思います。
4.0 まで未実装の機能↓
http://tracker.firebirdsql.org/secure/IssueNavigator.jspa?reset=true&mode=hide&sorter/order=DESC&sorter/field=priority&resolution=-1&pid=10000&fixfor=10750

COMPLETE になっていて私が注目している機能は以下のようなところです

- 物理スタンバイ
- 31文字以上の識別子(63文字)
- Windows 関数の追加
- Decimal の精度向上 https://github.com/FirebirdSQL/firebird/pull/108/files

IN PROGRESS で注目している機能は
- ビルトイン論理レプリケーション
です

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

Firebird Contributors [Firebird]

この記事はFirebird Advent Calendar 2017 https://qiita.com/advent-calendar/2017/firebird2120日目の記事です。(間違えてた&間に合ってない。21日に書いたけど 20日の記事でした)

いつの頃からかわからないんですが、Firebird の公式サイトの Contributors のページに名前載ってました。

https://www.firebirdsql.org/en/contributors/

Jim Starkey, Ann Harrison ご夫妻と名前を連ねることができて大変光栄です。

まあ、このお二方は、名誉職的なポジションですが、RedSoft Corporation という会社の人たちが、最近の Firebird の重要な機能の寄贈をしてくれていて、その人たちと一緒に Contributers に名前を載せていただいているのは、さらに光栄です。
コメント(0) 
共通テーマ:日記・雑感

pyfirebirdsql 1.0.1 released [Firebird]

この記事はFirebird Advent Calendar 2017 https://qiita.com/advent-calendar/2017/firebird の17日目の記事です。
python の Firebird データーベースドライバー pyfirebirdsql の 1.0.1 を昨日リリースしました

https://pypi.python.org/pypi/firebirdsql/1.0.1

1.0.0 をリリースしたのが昨年のアドベントカレンダー6日目なので、1年ぶりのリリースです
http://nakagami.blog.so-net.ne.jp/2016-12-06

機能の追加は IPv6 サポートだけです。

もう、あまり機能の追加をする気はないのですが、Firebird 4.0 になると、新しいデータ型が追加されるようなので、その時には対応したバージョンを出すと思います。

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

Firebird 3.0 の新しい SQL 構文 [Firebird]

この記事はFirebird Advent Calendar 2017 https://qiita.com/advent-calendar/2017/firebird の15日目の記事です。

いままでと重複あるかもしれませんが、ここで Firebird3.0 のリリースノートを見直して、新しい SQL 構文を自分で試してみました。
https://firebirdsql.org/file/documentation/release_notes/Firebird-3.0.0-ReleaseNotes.pdf
(トリガーは自分は使わなさそうなので試してません)

【BOOLEAN Type】
いままでは 0/1 で持っていたのですが、BOOLEAN 型ができました。
SQL> CREATE TABLE bool_table (b BOOLEAN);
SQL> INSERT INTO bool_table (b) VALUES (TRUE);
SQL> INSERT INTO bool_table (b) VALUES (FALSE);
SQL> INSERT INTO bool_table (b) VALUES (NULL);


MySQL の boolean みたいに 1/0 じゃなくて true/false が返ります。

【自動インクリメント型のカラム定義】
今までも、 generator + trigger を使うとか、sequence を使うとかで、
自動インクリメントで採番するカラムの作成はできたんですが
https://firebirdsql.org/refdocs/langrefupd21-ddl-sequence.html

より、直接的に書ける方法ができました。
SQL> CREATE TABLE id_table (id INTEGER GENERATED BY DEFAULT AS IDENTITY, name VARCHAR(30));
SQL> INSERT INTO id_table (name) VALUES ('nakagami');
SQL> SELECT * FROM id_table;

          ID NAME
============ ==============================
           1 nakagami



採番される値をリセットするには、以下のような SQL文を使います
SQL> ALTER TABLE id_table ALTER COLUMN id RESTART; 
SQL> ALTER TABLE id_table ALTER COLUMN id RESTART WITH 100; 

WITH 100 を付けた場合、次の INSERT 文では 101 が設定されます。


【カラムの NOT NULL 制約を付ける、外す】
カラムの NOT NULL 制約を付けたり外したりするのに、今まではシステムテーブルを update するという荒業が行われていました。
http://www.firebirdfaq.org/faq103/

Firebird 3.0 から、このシステムテーブルの update ができなくなり(エラーになり)代わりに、カラムの nullability を設定する直接的な ALTER 文が書けるようになりました。

table に NOT NULL 制約を付ける
ALTER TABLE table_name ALTER COLUMN column_name SET NOT NULL;

table の NOT NULL 制約を外す
ALTER TABLE table_name ALTER COLUMN column_name DROP NOT NULL;

【OFFSET/FETCH 句】
結果セットの中の「何行目から何行」という指定をしたいときは、
いままでも、 FIRST ~ SKIP という構文は使えました。
https://scott.yang.id.au/2004/01/limit-in-select-statements-in-firebird.html

SQL:2008 標準で OFFSET ~ FETCH という構文があるそうで、Firebird 3.0 で、それが使えるようになりました
SQL> select id from id_table order by id;

          ID
============
           1
           2
           3
           4

SQL> select id from id_table order by id offset 1 rows fetch next 2 rows only;

          ID
============
           2
           3


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

Firebird をソースからビルドして Ubuntu 17.10 にインストールする [Firebird]

この記事はFirebird Advent Calendar 2017 https://qiita.com/advent-calendar/2017/firebird の10日目の記事です。

過去にソースからインストールした手順・・・
http://nakagami.blog.so-net.ne.jp/2013-10-19
http://nakagami.blog.so-net.ne.jp/2014-12-17
の 2017年版です。

- 必要なパッケージのインストール
sudo apt update
sudo apt install -y libtommath1 libtommath-dev libtomcrypt-dev
sudo apt install -y autoconf cmake libtool g++ btyacc
sudo apt install -y zlib1g-dev libicu-dev libreadline-dev libncurses5-dev

- (試行錯誤の結果、パッケージの firebird3.0 をインストールして削除)
sudo apt install -y firebird3.0
sudo apt remove -y firebird3.0

./autogen.sh --prefix=/opt/firebird

make
sudo make install

途中、うまくビルドできなくて試行錯誤した時に、パッケージの Firebird3.0 をインストール→アンインストールしました。
firebird というユーザーができたからうまくいったと思っているんですが、原因はよくわからず、クリーンな正しい手順はわかりません。
また、インストールした apt パッケージに、本来不要なものも入っているのかもしれません。
ただ、Ubuntu のインストール直後に apt install したので足りないものはないと思います。

Created symlink /etc/systemd/system/multi-user.target.wants/firebird.service → /lib/systemd/system/firebird.service. と出るので、それを削除すれば、復旧はできそう


cmake を使って
cd firebird
mkdir build
cd build
cmake ..
でビルドできるはずなんですが、コンパイルエラーが出ていて
firebird/src/include/../common/common.h:558:2: error: #error Define FB_CPU for your platform
 #error Define FB_CPU for your platform
こちらはまだ途上なのかな、と思いました。
コメント(0) 
共通テーマ:日記・雑感

Go言語 の Firebird driver 2017 [Firebird]

この記事はFirebird Advent Calendar 2017 https://qiita.com/advent-calendar/2017/firebird の7日目の記事です。

昨年のエントリーはこれ。
http://nakagami.blog.so-net.ne.jp/2016-12-20

昨年の Advent Calendar からの差分はこれ。
git diff f6b1 8e47

見返してみると内容的には、不具合修正だけのようです。

現在の issue を見ると、まだ不具合があるようです。
現在は、問題点の把握(再現コード)もできてなくて、中には不具合じゃないものもあると思うのですが、手が付けられていません。

誰か pull request 送ってください。再現のテストコードだけでもいいです。
・・・という気持ちです。

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

Firebird deveopers guide [Firebird]

この記事は、Firebird Advent Calendar 2017 の3日目の記事です
https://qiita.com/advent-calendar/2017/firebird

Donation を募って、ロシア語から英語に翻訳した Firebird developers Guide というドキュメントがありまして、書籍として販売するのかと思ったら、 pre beta 版が Web で公開されました。
http://www.firebirdnews.org/firebird-3-developers-guide-beta-now-available/

内容は、 Firebird2.5 での説明をベースにしていて、Firebird 3.0 については適宜「Firebird 3.0 ではこうしたほうがいいよ」という捕捉を入れている形のようです。

目次:

1. このガイドについて
2. サンプルデータベース examples.fdb について
3. Delphi によるアプリケーション開発
4. Microsoft Entity Framework による開発
5. Entity Framework と MVC で Web アプリケーション作成

やっぱり、 Firebird って Delphi とかWindows でつかわれてるんかな?という内容でした。

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

Ubuntu17.04 + Firebird3.0 で、はまったこと [Firebird]

日本では自分しか必要なさそうな情報だが、ここに記しておく。

Ubuntu17.04 をインストールしてみたら、Firebird3.0 のパッケージがインストールできるようになっていた

$ sudo apt install firebird3.0

これでインストール完了。便利。

firebird.conf は /etc/firebird/3.0/firebird.conf にある

インストールの途中で sysdba のパスワードを聞かれるが、あとで設定するのは

$ sudo dpkg-reconfigure firebird3.0-server

でできる。便利。

ここまではいいのだが、 isql-fb コマンドで接続できるのに、自作のデーターベースドライバーでは接続できない???
いろいろ悩んだが、 tcp6 では listen しているが tcp ではlisten していない模様。
$ netstat -tap |grep gds
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp6       0      0 localhost:gds_db        [::]:*                  LISTEN      -  



/etc/syctl.conf に以下の3行を加えて・・・
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

IPv6 を無効にしたら、IPv4 で listen するようになった。
$ netstat -tap |grep gds_db
(Not all processes could be identified, non-owned process info
 will not be shown, you would have to be root to see it all.)
tcp        0      0 localhost:gds_db        0.0.0.0:*               LISTEN      -  


ssh は tcp と tcp6 で listen しているので、これはどっかの init スクリプトが悪いのか、 firebird 本体が悪いのか?
めっちゃはまったけど、とりあえず解決したし、当面 IPv6 で接続できる必要はないので、これで良しとしよう。
コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

Firebird LLVM build for FreeBSD and macOS [Firebird]

この記事は Firebird Advent Calendar 2016 http://qiita.com/advent-calendar/2016/firebird 24日目のエントリーです

Firebird といえば、多くのプラットフォームで動作することも特徴のひとつでした。
Advent Calendar のネタの一つと一つとして、 master ブランチのソースを Linux, Windows 以外のプラットフォームでコンパイルしてみる、というのを軽いネタとして考えていたのですがハマりました。

結局、のべ5日くらいかかかった気がします。
特に、昨日と今日の2日は(Advent Calendar に間にあわせるべく)長時間作業していて、かなり疲れました。
一昨日の時点で、手元の macOS ではある程度コンパイルできてたんですが、FreeBSD11 は、インストールを昨日の朝始めるところからでした。

(俺、クリスマス前の連休に何やってんだろう・・・)と思いましたが、なんとか結果が出せました。
https://github.com/FirebirdSQL/firebird/pull/72

もともと FreeBSD や MacOS X でコンパイルできてたわけですが、今回のコンパイルに関わるソースの修正をしていて
「もう長いこと Linux と Windows 以外ではコンパイルしている人いないんだろうなー」
という感じは受けました。
コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感