BASE/FIREBIRDのテーブル内のCHARにおける表示の疑問

以前からの疑問なのですが、テーブル作成後の表示がおかしい気がしているのです。

これはバグなのか?仕様なのか?仕様なら何か理由があるのか?
そのあたりを明確に理解しておきたくて質問します。

以下はテーブルの作成画面です。比較の為にフィールドを4種類作成しています。

全てテキストです。

  • CHAR: 3ワード
  • VARCHAR: 3ワード
  • CHAR: 5ワード
  • VARCHAR: 5ワード

画像の説明

これにデータを入力すると以下の4つの画像のようになります。

画像の説明
画像の説明
画像の説明
画像の説明

つまりCHARで設定した時だけ、
設定ワード数の 3倍の空白 が必ず後ろ側に 追加 で出現するのです。

全てに2Wだけ入力すると以下の4つの画像のようになります。

画像の説明
画像の説明
画像の説明
画像の説明

これは何故ですか?

3倍の空白がつくのではなく、UTF-8では1文字あたり最大4バイトとると考えて、4 * 3bytes = 12bytesになるまで補充されているとの情報あり。Firebird側が標準から逸脱した挙動しているとの見解あり。あるいはFirebird用のsdbcドライバがVARCHARとして解釈すべきなのか。未検証。

https://bugs.documentfoundation.org/show_bug.cgi?id=105711

HSQLDBのデータを作ってみたところ、こちらは文字数換算のバイト数ではなく、文字数そのものになっているようです。

ありがとうございます

HSQLDBのデータを作ってみたところ、
こちらは文字数換算のバイト数ではなく、文字数そのものになっているようです。

いずれにしても、リブレ& FIREBIRD のバグ なのですね。
これですっきりしました。

何が原因なのかわかっていないと
いつまでも 自分の至らなさだと考えてしまう ので、
無駄に調べ続ける時間が増えてしまいます。

とても助かりました。