このセクションでは、MySQL へ新しいキャラクタ セットを追加する方法について説明します。この作業には、MySQL ソース配布が必要になります。キャラクタ セットがシンプルな場合と、コンプレックスな場合で、選択する手順が異なります。
キャラクタ セットが、ソートのために特殊文字照合ルーチンを必要とせず、マルチ バイト文字のサポートも必要なければ、シンプルと判断します。
どちらかを必要とする場合は、コンプレックスと判断します。
たとえば、latin1
と
danish
はシンプルですが、big5
や
czech
はコンプレックスです。
次の手順では、キャラクタ セットの名前を
MYSET
と前提とします。
シンプルなキャラクタセットの場合
MYSET
を
sql/share/charsets/Index
ファイルの最後に追加し、これに一意の番号を割り当てる。
sql/share/charsets/
という
ファイルを作成する(MYSET
.confsql/share/charsets/latin1.conf
のコピーをベースとして使用可能)。
ファイルの構文は、非常にシンプル
コメントは ‘#
’
文字で始まり、行の最後まで続く。
単語は任意の数のスペースで区切る。
キャラクタ セットを定義するときは、すべての単語を 16 進数値とする。
ctype
配列は、最初の 257
語を占める。to_lower[]
、to_upper[]
、sort_order[]
などの配列はそれぞれ、その後の 256
語を占める。
配列に関する詳細は 項4.10.4. 「キャラクタ定義配列」 を参照してください。
キャラクタ
セット名を、configure.in
の
CHARSETS_AVAILABLE
リストおよび
COMPILED_CHARSETS
リストに追加する。
再設定してから、再コンパイルして、テストする。
コンプレックスなキャラクタ セットの場合
MySQL ソース配布に
strings/ctype-
というファイルを作成する。
MYSET
.c
MYSET
を
sql/share/charsets/Index
ファイルの最後に追加し、これに一意の番号を割り当てる。
strings/ctype-big5.c
など、既存の
ctype-*.c
ファイルの 1
つを見て、何の定義が必要か調べる。注意:
ファイル内の配列名には、ctype_
、MYSET
to_lower_
などが必要。これは、シンプルなキャラクタ
セットの配列に対応する。キャラクタ定義配列に関する詳細は
項4.10.4. 「キャラクタ定義配列」
を参照してください。
MYSET
ファイルの先頭付近に、次のようなコメントを置く。
/* * This comment is parsed by configure to create ctype.c, * so don't change it unless you know what you are doing. * * .configure. number_MYSET
=MYNUMBER
* .configure. strxfrm_multiply_MYSET
=N
* .configure. mbmaxlen_MYSET
=N
*/
configure プログラムはこのコメントを使用して、自動的にキャラクタ セットを MySQL ライブラリに組み込む。
必要に応じて、strxfrm_multiply
のライン (文字列照合関数)、および
mbmaxlen
のライン
(マルチバイト文字セット関数)
を組み込む。これについては、後続のセクションで説明。
そして、次の関数を作成する。
my_strncoll_
MYSET
()
my_strcoll_
MYSET
()
my_strxfrm_
MYSET
()
my_like_range_
MYSET
()
配列照合に関する詳細は 項4.10.5. 「文字列照合サポート」 を参照してください。
キャラクタ
セット名を、configure.in
の
CHARSETS_AVAILABLE
リストおよび
COMPILED_CHARSETS
リストに追加する。
再設定してから、再コンパイルして、テストする。
より詳細な手順は、sql/share/charsets/README
ファイルにあります。
MySQL 配布バージョンへのキャラクタ
セットの組み込みを希望する場合には、MySQL
internals
の
メーリングリストにパッチをメールしてください。メーリング
リストに関する詳細は 項1.6.1. 「MySQL メーリング リスト」
を参照してください。