IBConsoleのバグ一覧

 このTipsにあるバグ一覧は、現在入手できるIBConsoleのソースをビルドすると生成される "1.0.0.337/Alfa2" をベースにしています。

ID バグ OS 原因 備考
01 SQLの実行時に「タイムスタンプが不正」エラーが出る。 共通 コンパイラがDelphi6以降だと起こる。TimeStampToDateTime()の仕様変更に因るもの。 1.0.0.338で修正されている。
02 「インタラクティブSQL」でSelect文実行時、統計に表示される実行時間が不正。 共通 Insert文では正常に表示される。時間計測ロジックが2箇所あり、Select文実行時には最小解像度が秒になっている。 1.0.0.338で修正されている。また、1.0.1.335 Fix 01では起こらない。
03 Firebirdのローカルサーバに接続できない。 Win サーバのファイル名/クラス名/ウィンドウ名がInterbaseとFirebirdで異なるため。
変更点 Interbase Firebird
ガーディアン ibguard.exe fbguard.exe
ローカルサーバ ibserver.exe fbserver.exe
クラス名 IB_Server FB_Server
ウィンドウ名 InterBase Server Firebird Server
オフィシャル/BDN/NG版はFirebird未対応。
04 Firebirdのローカルサーバを起動できない。 Win サーバ/ガーディアンを起動するのに「レジストリの値が指す場所+ファイル名」としているが、Firebirdでレジストリの位置が変更になっているため。
サーバ名 レジストリキー 名前 値の指す場所
InterBase6.x HKLM\Software\Borland\InterBase\CurrentVersion ServerDirectory InterBaseのbinフォルダ
Firebird 1.0x HKLM\Software\FirebirdSQL\Firebird\CurrentVersion ServerDirectory Firebirdのbinフォルダ
Firebird 1.5x HKLM\Software\Firebird Project\Firebird Server\Instances DefaultInstance Firebirdのインストールフォルダ
オフィシャル/BDN/NG版はFirebird未対応。
05 ローカルデータベース起動直後にローカルサーバに接続できない事がある。 Win CreateProcess でローカルサーバを起動しているが、起動確認をせずに接続しているため。  
06 IBConsole独自のメッセージダイアログの大きさが異常。 共通 ダイアログサイズをWidth/Heightで指定しているため。 最新版でも発生する。
07 IBConsole独自のメッセージダイアログのアイコンの背景色が変。 共通 TImageのTransparentがFalseになっている。 最新版でも発生する。
08 「データベースのリストア」で完了ダイアログが出ない。 共通 ダイアログの"ModalResult"を見てるのに、OKボタンが"mrNone"になっている。 少なくとも1.1.0.27以前で発生する。
09 有効/無効を繰り返すと元の色と違って表示される。 共通 元々の色が「clWindow」なのに、無効の場合に「clSilver」等になり、再度有効にした時は「clWhite」にしている所がある。 最新版でも発生する。
10 ラベルの背景色が変。 共通 TLabelのTransparentがFalseになっている。 少なくとも7.5.0.26以前で発生する。
11 「オブジェクトインスペクタみたいな表形式の設定項目」の所がズレる。 共通 調整が足りてません。 少なくとも7.5.0.26以前で発生する。
12 ツリービューで「InterBaseサーバ」選択時に「サーバの登録解除/ログイン/プロパティ」が選択できてしまう。 共通 ロジックミス。 最新版でも発生する。
13 「新規作成インタラクティブSQL」の実装が不完全。 共通 サーバやデータベースが選択されていなくてもとりあえずISQLを起動し、ISQLから自由に「サーバ/データベース」を切り替えられるような構造にしたかったらしい。

「らしい」というのは、ちゃんと実装されていないからだ。ISQL上にサーバはおろかデータベースを切り替えるためのUIが存在しないため、メイン画面にある「ISQL」と「新規作成ISQL」はほぼ同じ動作にしかならない(完全に同じではない)。ISQLでも「新しい接続」と「ユーザを指定して接続」はほぼ同じ動作にしかならない。

...なので、ISQLを起動したはいいが、サーバ/データベースへ未接続状態になっている。コネクションを確立させようと「ユーザを指定して接続」を選択するも、サ-バ/データベースは変更するUIがない。場合によっては「ユーザを指定して接続」がグレーアウトしてダイアログすら出せない。「新しい接続」を開いても同じダイアログが出るだけで埒があかない。

Borland謹製のIBConsoleではこの仕様に混乱したのか、ISQLを開いた時点でサーバ/データベース未接続の場合に「新しい接続」や「ユーザを指定して接続」を選択すると「DBに接続して」という旨のエラーメッセージを出す。

例えばメインウィンドウでDBエリアス「ABC」を選択してISQLを起動する。 ISQLでDBを切断してメインウィンドウに戻り、DBエリアス「DEF」を選択してさっきのISQLをアクティブにする。そしてDBに接続しようとすると接続されるDBは「ABC」ではなく「DEF」なのだ。つまりはISQLで操作できる「DB」というのはメインウィンドウで選択したものが対象なのだ。先に述べた「サ-バ/データベースを変更するUIがない」というのがすべての元凶となっている。

「データベースの作成/削除」も同様。例えばDBをISQLで削除すると、そこから何もできなくなってしまう。
1.0.1.335
Fix 01ではエラーメッセージが出るようにしてある。後のバージョンではこの辺を改善してあるようなのだが...?
14 「インタラクティブSQL」の「新しい接続」の実装が不完全。 共通
15 「インタラクティブSQL」の「データベースの作成/削除」の実装が不完全。 共通
16 「ユーザの追加/編集」ダイアログでBackSpaceでしか文字が消せない。 共通 「追加」ボタンに"Ins"、「削除」ボタンに"Del"のショートカットが割り振られているため。 少なくとも7.5.0.26以前で発生する。
17 「データベースのプロパティ」でエリアスを編集後「適用」を押した後で「OK」を押すと「エリアスが存在する」旨のエラーが出る。 共通 入力変更チェックがあり、項目を編集するとこのチェックが入る。元のエリアスが「ABC」でエリアスを「DEF」に変更した場合「適用」を押すと入力変更チェックが走り、メインフォームに「DEF」という名前のエリアスがあるかどうかを調べる。あればエラーを返す。ここでエラーがなくエリアスが「DEF」に変更された場合「OK」ボタンには「適用」ボタン押下時のイベントが書いてあるので、入力変更チェックが走る。ところが「DEF」はさっき変更したのでエリアスが存在する事になり、エラーになってしまう。 1.0.0.337以前で発生する (Twise Lab版では適用を押すとカーソルが砂時計になったままになる)。
エラーが出ないバージョンの中にはエリアスを変更しても直ちに反映されないものがある。
18 「インタラクティブSQL」を表示している時にメイン画面で参照先のDBへの接続を切ってしまうと、「インタラクティブSQL」では何もできなくなり閉じるしかなくなってしまう。 共通 「インタラクティブSQL」にサ-バ/データベースを変更するUIがないために起こる現象。 後のバージョンではこの辺を改善してあるようなのだが...?
19 ファイルオープン/セーブダイアログにファイルが表示されない。 Linux Linux では大文字/小文字のファイルを区別するが、フィルタにはそのどちらか片方しか記述していない。  
20 統計に表示される実行時間の表示がどこか変? 共通 typo。実行時間と準備時間が表示されるが、ミリ秒の前のセパレータが実行時間がピリオド、準備時間がコロンになっている。 1.0.0.339以前で発生する。
1.0.1.344から準備時間が表示されなくなっている。
21 日付と時刻の表示が変。 Linux ShortDateFormat/ShortTimeFormat等が設定されていない。  
22 構文エディタの前景色/背景色を設定できない。 Linux KylixにTColorGridコンポーネントが存在しないため。 後のバージョンではWindows版にもTColorGridは使われなくなっている。
23 表示を大きいアイコン/小さいアイコンにしてもアイコンが表示されない。 共通 KylixのTListViewには大きいアイコン/小さいアイコンを表示できないためか?そもそもアイコンが用意されていないのだが...。 1.1.0.18から「大きいアイコン/小さい」アイコン表示がなくなっている。
24 ツリービューのユーザのアイコンと右ペインで表示されるユーザのアイコンが同じ。 共通 右ペインで表示されるユーザ用のアイコンは用意されているものの、それを使うために用意されているImageIndex用定数が同一になっている。 少なくとも7.5.0.26以前で発生する。
25 構文エディタのハイライトの指定がきかない。 共通 SynEditのバージョン違いに因るもの。 SynEdit対応の1.0.0.337以降を対象にすると、
1.0.0.337(Twise Lab版)
の対応が不完全(型が構文表示されない等)。
26 構文エディタでどうやってもテーブルの色が変更できない。 共通 そもそもSynEditのHighliterにテーブル情報を渡していない。 少なくとも7.5.0.26以前で発生する。
27 「サーバの接続診断」の「TCP/IP」タブの"サービス"の種類が変。 共通 恐らくロジックミス。コンボボックスは入力不可(ドロップダウンリスト)でItemIndexから...例えば"gds_db"を選んだら"3050"に変換している。そしてそれを別の関数に"文字列で"渡している。この関数では知っている文字列が来たらポート番号に数値変換し、それ以外はStrToInt()で数値変換している。それならばコンボボックスのリストに「3050」は要らないハズだ。「リストで選ばせたい」「自由に入力させたい」という相反する思想で、複数の人間がこの部分をメンテしたような印象を受ける。 後のバージョンでは任意のポート番号を入力するEditBoxが出るようになっている。しかし、ホストのコンボボックスに表示されるのがサーバ名からエリアスに変更されているため、IPアドレスによる接続診断ができなくなってしまっている。
28 オブジェクトダイアログでオブジェクト変更コンボボックスが無効。 Linux 何故かコメントアウトしてある。  
29 右ペインにアイコンが出せない。 Linux 何故かコメントアウトしてある。  
30 リストビューのカラムが自動調整されない。 Linux リストビューはKylixではDelphi版と違い、カラムヘッダの文字列を考慮した自動調整を行わない。  
31 ダイアログが最大化/最小化/リサイズできてしまう。 Linux ウィンドウマネージャの思想の問題。基本的にLinuxのウィンドウマネージャはウィンドウをすべて「最大化/最小化/リサイズ可能」とみなしている。KylixのIDEで使われているダイアログですら最小化ボタンは消せていない。 最新版でも発生する。
32 ビューを選択時、「オブジェクトのプロパティ」で[データ]タブを開くとエラーになる。 共通 View名をTTableのtableNameに入れて開こうとしているため。
少なくとも7.5.0.26以前で発生する。
33 ジェネレータの「オブジェクトウィンドウ」を開こうとするとエラーになったり、違うジェネレータのデータを表示してしまう。 共通 ジェネレータピックアップ用のSQLがシステムテーブル表示/非表示用にそれぞれ用意されているが、この定義が逆になっている。 1.0.0.335~337に存在するバグ(これ以外のバージョンでは出ない)。Twise Lab版では発生しない。
34 「サーバの接続診断」のコンボボックスにサーバが二度リストアップされる。 共通 サーバ名追加ロジックが二重になっている。 少なくとも1.1.0.27以前で発生する。
35 コンボボックスが絡む処理、例えば「オブジェクトインスペクタみたいな表形式の設定項目」等の挙動がおかしい。 Linux DelphiとKylixのTComboBoxの仕様の違いによるもの。  
36 ページバッファサイズがデフォルトの場合に、ページバッファサイズが"0"と表示される。 共通 1.0.0.337のソースにはページバッファサイズを指定するコードの記述がないので詳細は不明。ひょっとするとFirebirdのクライアント側で修正されているのかもしれない。 1.0.1.344以前にはページバッファサイズを指定するUIがない。少なくとも7.5.0.26以前で発生する。
37 テーブルのプロパティで見ることのできるインデックスの詳細が、Dialect3のFirebird-DB だと見れず、エラーになる。Dialect1ならOK。 共通 1.0.0.339の変更によるものなので1.0.0.337のソースからは詳細を知ることはできない。独自ビルド版では相当すると思われるSQLを記述したが、これはFirebird-DBであってもDialect3で正常に表示されている。インデックス取得はメタデータ(システムテーブル)から行っているが、問題のインデックス用メタデータは少なくともInterbase5.x からあり、互換性の観点からすれば不具合を出しようがないのだが? オフィシャル/BDN/NG版はFirebird未対応。1.0.0.339からテーブルのプロパティで見ることのできるインデックスの表示内容が変更になっている。少なくとも1.1.0.18以前で発生する。
38 テーブルのプロパティで見ることのできるインデックスの詳細で外部キーが"Foriegn Keys"になっている。 共通 typo。重箱の隅。1.0.0.339の変更によるものなので1.0.0.337のソースには存在しない。日本語化時は問題ない。 1.0.0.339/1.0.0.340で発生する。1.0.0.344以降は「Foreign keys」ではなく「References」になっている。
39 "空文字を入力するとエラーが表示される入力項目"を持った設定画面のほぼすべてで、空文字と半角SP1個はエラーになるが半角SP2個以上だとエラーにならない。 共通 ロジックミス。例を挙げると、ユーザの新規作成でパスワードに半角SP2個を入力するとユーザが作成できてしまう。もちろん、このユーザではログインできない(削除は可能)。 最新版でも発生する。
40 ツールバーのアイコンの色が抜けている。 Linux Alfa2(1.0.0.337) のソースもそのままコンパイルすると再現する。dfmからxfmへコンバートする際に起きる。 少なくとも1.1.0.13で発生する。
41 ツールバー/メニュー/ポップアップメニューの有効/無効になる条件が曖昧。
共通 その状況では実行できない/実行してはいけない機能が有効になったりします。AとBというサーバがあって、それぞれA1/B1というデータベースを持っていたとします。A1/B1に接続し、データベースをアクティブにします。そしてツリービューで「Interbaseサーバ」や「サーバ」を選択した状態でメインメニューから[データベース]を開きます。有効になっているアイテムがイロイロありますが、この状態の時に対象となるデータベースはどれでしょう? 最新版でも発生する。
42 NetBEUI/SPXに関連する操作ができない。
Linux 元々対応していない。コードも全く書かれていない。それなのに、UIだけが残っている。バグというよりは「消し忘れ」に近いと思う。  
43 二重起動ができてしまう。 Linux コードが存在しない。  
44 Vistaで動作させた場合、ダイアログを表示させてAltキーを押すとコントロールが消える。 Windows ビルド環境がDelphi 2007でないDelphi製アプリケーションすべてで発生する。詳しい情報は こちら。Vista発売前のソースなので、これをバグと呼ぶのは酷かもしれない。 最新版でも発生する。
45 Dialect3のデータベースのメタデータをインタラクティブSQLに流せない。 共通 ダブルクォーテーションで括られたテーブル/フィールド名に空白が含まれるため。Dialect1のデータベースであればテーブル/フィールド名はダブルクォーテーションで括られない。  
46 Firebird2でDialect3のデータベースの場合、ジェネレータを参照しようとすると"BLR syntax error. Identifier ??? is too long."が表示される。 共通 ダブルクォーテーションで括られたジェネレータ名に空白が含まれるため。Dialect1のデータベースであればジェネレータ名はダブルクォーテーションで括られない。 Dialect3のデータベースであってもFirebird2以外では何故か問題が発生しない。
47 マルチディスプレイ環境下では、特定のウィンドウ/ダイアログだけプライマリディスプレイで表示されてしまう。 Windows ソースでは"Position=poScreenCenter"になっているが、それでも現象が出る。 最新版でも発生する。
48 テーブルのデータを編集する際に空文字列を入力する方法がない。 共通 IBXの仕様によるもの。IBXでTIBTableを使うと空文字列は<NULL>で登録されてしまう。 最新版でも発生する。
49 「インタラクティブSQL」/「テキストビューア」で検索が機能しない。 共通 コードは記述してあるものの、SynEditに検索エンジンが割り当てられていない。 IB2007付属版よりも以前で発生する。
50 「接続中のユーザ」を開くとUnavailable database になる事がある。 共通 データベースの指定方法が間違っている。 少なくとも7.5.0.26以前で発生する。
51 [バックアップ] の "処理経過の出力" で "ファイル" を選んでもログファイルが出力されない。 共通 実装されていない。
52 [リストア] の "処理経過の出力" で "ファイル" を選んでもログファイルが出力されない。 共通 実装されていない。
53 [iSQL オプション] の "クエリプランの表示" はどこにも使われていない。 共通 実装されていない。
54 [iSQL オプション] の "BLOBを表示" はどこにも使われていない。 共通 実装されていない。

※このサイトで公開されているIBConsoleではこれらのバグが修正されています。
※紺色で表記があるものは1.0.0.337のソースには実装されていない機能や、サーバがFirebirdの時に起こる不具合に対するものです。
※「少なくとも~」とあるのは、該当する機能をそれ以降のバージョンで確認できていない(サーバがFirebirdだとエラーで動作しない)からです。
※現在(2007/03)、手元にはWindows版22種類/Linux版7種類のIBConsoleがあります。

 BACK