本エントリはFirebird Advent Calendar 2014の3日目です。(2日目はこちら)参加者募集中。
Betaのタグ付けがされてから、キャンペーンサイトでのみ配布されていたBeta 1が本家からリリースされました。
Firebird 3.0 Beta 1 release is available for
testing
Windows版とLinux版、それぞれ32-bit版と64-bit版があります。
まずはWindows 64-bit版を入れてみました。
…
JUGEMテーマ:コンピュータ
前回はMySQL(InnoDB行ロック待ちの秒数をセッション単位で指定する)について言及しましたが、今回は久しぶりにFirebirdで。
Firebirdは1.5までロック待ちはする、しないという区別しかありませんでしたが(デフォルトは無限にする)Firebird
2.0からLOCK TIMEOUTというオプションがトランザクション開始(SET
TRANSACTION)に追加され、トランザクション毎に設定できます。(MySQLのセッション(もしくはグローバル)単位、Oracleのクエリ単位とは、また違った方法です)
…
JUGEMテーマ:コンピュータ
InterBaseの初期実装者であり、Firebirdのアドバイザ、そして次期Firebird
Valcunの初期実装、そしてMySQLではFalconデータベースエンジンのメインエンジニアだったジム・スターキーというおっさん(じいさん?)がいるが、そのジムの新しいデータベース(いや、昔のジムの言葉を借りれば「コンテンツストア」か?)の名称がNuoDB(旧:
NimbusDB改め)
となりました。
NuoDB is the new NimbusDB
Early Release …
JUGEMテーマ:コンピュータ
Firebird徹底入門を発売してからすでに一年がたちました。このときにはFirebird
2.5β2を元にして書いていたのですが、その当時まだ仕様が定まってなかった(私が気づかなかった?)機能の一つにisqlのバルクインサート機能があります。Firebird
2.5は今年の10月にリリースされ、バルクインサート機能も使えるようになりましたが、未だ詳細は記述されていないようなので、ここで使い方を説明したいと思います。
利用方法はFirebird徹底入門(p.245, 246)にあるように以下の書式になります。
SET BULK_INSERT バルクインサート文
…
さて、昨日のエントリに引き続き、今回はFirebird用の話を勝手に追加してみましょう。
Firebirdの独特なところはWALに相当するものがないからです。
その代わりにcareful
writeという方式で一貫性を担保しようとしています。
トランザクションのところで「DB2の名称がANSIと違いわかりにくい〜」と書きましたが、実はFirebirdも同様に十分わかりにくいです。すみません。
ISOとの対応は以下のようになります。
ISO Firebird/InterBase
SERIALIZABLE SNAPSHOT TABLE STABILITY
REPEATABLE READ SNAPSHOT
READ COMMITTED READ COMMITTED
READ UNCOMMITTED 未サポート
…
[2009-11-24
Firebirdのユーザコンテキスト変数は、左から右に評価されないようで、以下は単にrownumになっていますorz
近日修正しますので、いましばらくお待ちください]
以前MySQLユーザ変数を使ったdense_rank()を紹介しましたが、
下記はそのFirebird版です。
Firebirdではrdb$set_context()が値ではなく、既存の設定あり(1),
なし(0)になってしまうので、
Firebirdの組み込み関数に追加されたdecode()(Oracleと同じ)で、値を返すようにしています。
QL> --Like dense_rank()
SQL> select rdb$set_context('USER_SESSION', 'rnk', 0),
rdb$set_context('USER_SESSION', 'preval', null) from
rdb$database;
RDB$SET_CONTEXT RDB$SET_CONTEXT
=============== ===============
0 0
…
はやしさんのブログや、その元となったPhilippeさんのブログに記述があるようにRedhat/CentOS/FedoraのリポジトリにFirebird
2.1.2のSuperServer版が登録されたようです。さっそく手元のFedora10(64-bit)で試してみて成功いたしました。
しかしながらCentOS5.3(32-bit)では「そんなのないよ」といわれてしまいます。リポジトリサーバが日本のものだからでしょうか? 後ほど設定を変えて再度トライしてみます。
[root@Meiji-Linux-Fedora10 mysql]# yum install
firebird-superserver
Loaded plugins: refresh-packagekit
fedora | 2.8 kB 00:00
updates | 3.0 kB 00:00
updates/primary_db | 4.4 MB 00:10 …
前回MySQLでやったものと、同じ処理をFirebirdのストアドで書いてみました。
create table GetPoint([さらに読む]
ID int not null,
Point int,
Primary key(ID));
insert into GetPoint values(1,30);
insert into GetPoint values(2,30);
insert into GetPoint values(3,30);
insert into GetPoint values(4,20);
insert into GetPoint values(5,70);
insert into GetPoint values(6, 5);
insert into GetPoint values(7, 0);
insert into GetPoint values(8,18);
insert into GetPoint values(9,33);
commit;
SET TERM ^;
CREATE PROCEDURE SP_TSUM(
LIMIT INTEGER
) RETURNS(
ID INTEGER,
Point INTEGER
) AS
DECLARE VARIABLE TSUM INTEGER;
BEGIN
TSUM = 0;
FOR SELECT ID, Point
FROM …