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_, MYSETto_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.
