In diesem Abschnitt beschreiben wir den Vorgang des Hinzufügens eines neuen Zeichensatzes zu MySQL. Für die folgende Anleitung benötigen Sie eine MySQL-Quelldistribution. Um die korrekte Vorgehensweise zu bestimmen, ermitteln Sie zunächst, ob der gewünschte Zeichensatz einfach oder komplex ist:
Benötigt der Zeichensatz keine speziellen Routinen für die String-Sortierung und keine Multibyteunterstützung, dann handelt es sich um einen einfachen Zeichensatz.
Benötigt der Zeichensatz eine dieser Funktionen, dann ist er komplex.
Beispielsweise sind latin1
und
danish
einfache Zeichensätze,
big5
und czech
hingegen
sind komplexe Zeichensätze.
In der folgenden Anleitung wird der Name des Zeichensatzes als
MYSET
angegeben.
Bei einem einfachen Zeichensatz verfahren Sie wie folgt:
Fügen Sie MYSET
am Ende der
Datei sql/share/charsets/Index
ein.
Weisen Sie ihm eine eindeutige Nummer zu.
Erstellen Sie die Datei
sql/share/charsets/
.
(Sie können eine Kopie von
MYSET
.confsql/share/charsets/latin1.conf
als
Basis für diese Datei verwenden.)
Die Syntax für diese Datei ist sehr einfach:
Kommentare beginnen mit dem Rautenzeichen
‘#
’ und erstrecken sich
bis zum Ende der Zeile.
Wörter werden durch eine beliebige Anzahl von Whitespace-Zeichen voneinander getrennt.
Bei der Definition des Zeichensatzes muss jedes Wort eine Zahl im Hexadezimalformat sein.
Das Array ctype
enthält die ersten
257 Wörter. Die Arrays to_lower[]
,
to_upper[]
und
sort_order[]
nehmen nachfolgend je
256 Wörter entgegen.
Siehe auch Abschnitt 5.11.4, „Die Zeichendefinitionsarrays“.
Fügen Sie den Namen des Zeichensatzes zu den Listen
CHARSETS_AVAILABLE
und
COMPILED_CHARSETS
in der Datei
configure.in
hinzu.
Führen Sie Konfiguration und Kompilierung aus und testen Sie die Distribution.
Bei einem komplexen Zeichensatz verfahren Sie wie folgt:
Erstellen Sie die Datei
strings/ctype-
in der MySQL-Quelldistribution.
MYSET
.c
Fügen Sie MYSET
am Ende der
Datei sql/share/charsets/Index
ein.
Weisen Sie ihm eine eindeutige Nummer zu.
Suchen Sie nach vorhandenen
ctype-*.c
-Dateien (z. B.
strings/ctype-big5.c
), um den
Definitionsbedarf zu ermitteln Beachten Sie, dass die Arrays
in Ihrer Datei Namen wie
ctype_
,
MYSET
to_lower_
usw. aufweisen müssen. Diese entsprechen den Arrays eines
einfachen Zeichensatzes. Siehe auch
Abschnitt 5.11.4, „Die Zeichendefinitionsarrays“.
MYSET
Fügen Sie weit oben in der Datei einen speziellen Kommentar wie den folgenden ein:
/* * 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
*/
Das Programm configure verwendet diesen Kommentar, um den Zeichensatz automatisch in die MySQL-Bibliothek einzufügen.
Die Zeilen strxfrm_multiply
und
mbmaxlen
werden in den folgenden
Abschnitten erläutert. Sie müssen sie nur einfügen, wenn
Sie die Funktionen für die String-Sortierung bzw. für
Multibytezeichensätze benötigen.
Danach sollten Sie einige der folgenden Funktionen erstellen:
my_strncoll_
MYSET
()
my_strcoll_
MYSET
()
my_strxfrm_
MYSET
()
my_like_range_
MYSET
()
Siehe auch Abschnitt 5.11.5, „Unterstützung für String-Vergleiche“.
Fügen Sie den Namen des Zeichensatzes zu den Listen
CHARSETS_AVAILABLE
und
COMPILED_CHARSETS
in der Datei
configure.in
hinzu.
Führen Sie Konfiguration und Kompilierung aus und testen Sie die Distribution.
Die Datei sql/share/charsets/README
enthält weitere Anweisungen.
Wenn der Zeichensatz in die MySQL-Distribution eingefügt werden
soll, schicken Sie einen Patch an die MySQL-Mailingliste
internals
. Siehe auch
Abschnitt 1.7.1, „Die MySQL-Mailinglisten“.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.