Inhaltsverzeichnis
Dieser Anhang listet die Änderungen von Version zu Version im MySQL-Quellcode auf.
Beachten Sie, dass wir versuchen, das Handbuch zeitgleich mit den Änderungen an MySQL zu aktualisieren. Wenn Sie unten eine Version aufgelistet sehen, die Sie auf der MySQL-Download-Seite nicht finden können, heißt das, dass die Version noch nicht veröffentlicht wurde!
Wir arbeiten mittlerweile aktiv an MySQL 4.0 und werden nur noch kritische Bug-Bereinigungen für MySQL 3.23 herausgeben. Wir aktualisieren diesen Abschnitt, wenn wir neue Features hinzufügen, so dass andere unserer Entwicklung folgen können.
Unser TODO-Abschnitt enthält, was wir für 4.0 planen. See Abschnitt 2.8, „MySQL und die Zukunft (das TODO)“.
Bug in FLUSH QUERY CACHE behoben.
CAST()- und
CONVERT()-Funktionen hinzugefügt.
Reihenfolge geändert, wie Schlüssel in Tabellen erzeugt werden.
Neue Spalten Null und
Index_type zu SHOW
INDEX hinzugefügt.
Bug behoben, wenn HANDLER mit einem nicht
unterstützten Tabellentyp verwendet wurde.
mysqldump schreibt jetzt ALTER
TABLE tabelle DISABLE KEYS und ALTER
TABLE tabelle DISABLE KEYS in den SQL-Dump.
mysql_fix_extensions-Skript hinzugefügt.
Stack-Überlaufproblem LOAD DATA FROM
MASTER auf OSF1 behoben.
Herunterfahr-Problem auf HPUX behoben.
Funktionen des_encrypt() und
des_decrypt() hinzugefügt.
Statement FLUSH DES_KEY_FILE hinzugefügt.
mysqld-Option --des-key-file hinzugefügt.
HEX(string) gibt jetzt die Buchstaben in
der Zeichenkette konvertiert in hexadezimal zurück.
Problem mit GRANT bei der Benutzung von
lower_case_tables == 1 behoben.
SELECT ... IN SHARE MODE in
SELECT .. LOCK IN SHARE MODE (wie in
MySQL 3.23) geändert.
Ein neuer Anfragen-Cache, der Ergebnisse identischer
SELECT-Anfragen zwischenspeichert.
Coredump-Bug auf 64-Bit-Maschinen beim Erhalt eines falschen Kommunikationspakets behoben.
MATCH ... AGAINST(... IN BOOLEAN MODE)
funktioniert jetzt auch ohne
FULLTEXT-Index.
Slave, der vom 3.23-Master repliziert, in Ordnung gebracht.
Diverse Replikationsprobleme behoben / bereinigt.
Herunterfahren funktioniert jetzt auf Mac OS X.
myisam/ft_dump-Werkzeug zur
Low-Level-Inspektion von FULLTEXT-Indexen
hinzugefügt.
Bug in DELETE ... WHERE ... MATCH ...
behoben.
Unterstützung für MATCH ... AGAINST(... IN
BOOLEAN MODE) hinzugefügt.
Hinweis: Sie müssen Ihre Tabellen mit
ALTER TABLE tabelle TYPE=MyISAM neu
aufbauen, um Boole'sche Volltextsuche benutzen zu
können.
LOCATE() und INSTR()
sind abhängig von der verwendeten Groß-/Kleinschreibung,
wenn keins der Argumente eine binäre Zeichenkette ist.
RND()-Initialisierung geändert, so dass
RND(N) und RND(N+1)
verschiedener sind.
Coredump-Bug in UPDATE ... ORDER BY
behoben.
INSERT INTO .. SELECT geändert, damit es
bei Fehlern vorgabemäßig anhält.
DATA DIRECTORY- und INDEX
DIRECTORY-Anweisungen werden unter Windows
ignoriert.
Boole'sche Volltextsuche hinzugefügt. Diese sollte als frühe Alphaversion betrachtet werden.
MODIFY und CHANGE in
ALTER TABLE erweitert, damit sie das
AFTER-Schlüsselwort akzeptieren.
Index wird jetzt in ORDER BY von einer
ganzen InnoDB-Tabelle verwendet.
Variablen ft_min_word_len,
ft_max_word_len und
ft_max_word_len_for_sort hinzugefügt.
Dokumentation für libmysqld, die
eingebettete MySQL-Server-Bibliothek, hinzugefügt.
Beispielprogramme (ein mysql-Client und
mysqltest-Testprogramm) hinzugefügt, die
libmysqld benutzen.
my_thread_init() und
my_thread_end() aus mysql_com.h entfernt
und mysql_thread_init() und
mysql_thread_end() zu mysql.h
hinzugefügt.
Vorzeichenlose BIGINT-Konstanten
funktionieren jetzt. MIN() und
MAX() handhabt vorzeichenbehaftete und
vorzeichenlose BIGINT-Zahlen korrekt.
Neuer Zeichensatz latin_de, der korrektes
deutsches Sortieren ermöglicht.
TRUNCATE TABLE und DELETE FROM
tabelle sind jetzt separate Funktionen. Ein
Vorteil davon ist, dass DELETE FROM
tabelle jetzt die Anzahl gelöschter Zeilen
zurückgibt.
DROP DATABASE führt jetzt ein
DROP TABLE auf alle Tabellen in der
Datenbank aus, was ein Problem mit InnoDB-Tabellen behebt.
Unterstützung für UNION hinzugefügt.
Eine neue HANDLER-Schnittstelle zu
MyISAM-Tabellen.
Unterstützung für INSERT auf
MERGE-Tabellen hinzugefügt. Patch von
Benjamin Pflugmann.
WEEK(#,0) dem Kalender in den USA
angepasst.
COUNT(DISTINCT) ist etwa 30% schneller.
Alle internen Listen-Handlings in der Geschwindigkeit verbessert.
Das Erzeugen von Volltext-Indexen ist jetzt viel schneller.
Baum-ähnlicher Cache, um Massen-Einfügevorgänge und die
myisam_bulk_insert_tree_size-Variable zu
beschleunigen.
Suchen auf komprimierten
(CHAR/VARCHAR)-Schlüsseln
ist jetzt viel schneller.
Anfragen folgenden Typs optimiert: SELECT DISTINCT
* from tabelle ORDER by schluessel_teil1 LIMIT #
SHOW CREATE TABLE zeigt jetzt alle
Tabellenattribute.
ORDER BY ... DESC kann jetzt Schlüssel
benutzen.
LOAD DATA FROM MASTER setzt jetzt
"auto-magisch" einen Slave auf.
safe_mysqld in
mysqld_safe umbenannt.
Unterstützung für symbolische Links auf
MyISAM-Tabellen hinzugefügt.
Symlink-Handhabung ist jetzt vorgabemäßig für Windows
aktiviert.
LOAD DATA FROM MASTER setzt
"auto-magisch" einen Slave auf.
SQL_CALC_FOUND_ROWS und
FOUND_ROWS() hinzugefügt. Das
ermöglicht es herauszufinden, wie viele Zeilen eine Anfrage
ohne eine LIMIT-Klausel zurückgegeben
hätte.
Ausgabeformat von SHOW OPEN TABLES
geändert.
SELECT ausdruck LIMIT ... wird
zugelassen.
IDENTITY als Synonym für
AUTO_INCREMENT hinzugefügt (wie Sybase).
ORDER BY-Syntax zu
UPDATE und DELETE
hinzugefügt.
SHOW INDEXES ist jetzt ein Synonym für
SHOW INDEX.
ALTER TABLE tabelle DISABLE KEYS- und
ALTER TABLE tabelle ENABLE KEYS-Befehle
hinzugefügt.
IN kann anstelle von
FROM in SHOW-Befehlen
benutzt werden.
ANSI-SQL-Syntax X'Hexadezimalzahl' wird
zugelassen.
Globale Sperr-Handhabung für FLUSH TABLES with
READ LOCK aufgeräumt.
Problem mit DATETIME = constant in
WHERE-Optimierungen behoben.
Das 3.23-Release hat etliche wichtige Features, die in früheren Versionen nicht vorhanden sind. Es wurden drei neue Tabellentypen hinzugefügt:
MyISAM
Eine neue ISAM-Bibliothek, die auf SQL und Unterstützung großer Dateien abgestimmt ist.
BerkeleyDB oder BDB
Benutzt die Berkeley-DB-Bibliothek von Sleepycat Software, um transaktionssichere Tabellen zu implementieren.
InnoDB
Ein transaktionssicherer Tabellen-Handler, der Sperren auf Zeilenebene und viele Oracle-ähnliche Features unterstützt.
Beachten Sie, dass nur MyISAM in der Standard-Binärdistribution verfügbar ist.
Das 3.23-Release beinhaltet ausserdem Unterstützung für Datenbank-Replikation zwischen einem Master und vielen Slaves, Volltext-Indexierung und vieles mehr.
Alle neuen Features werden in der 4.0-Version weiter entwickelt. Nur Bug-Behebungen und kleinere Verbesserungen bestehender Features werden zu 3.23 hinzugefügt.
Der Replikationscode und der BerkeleyDB-Code sind noch nicht so gut getestet wie der Rest des Codes, daher wird es wahrscheinlich zukünftig noch einige Releases von 3.23 mit kleineren Behebungen für diesen Teil des Codes geben. Solange Sie diese Features nicht benutzen, sollten Sie mit MySQL 3.23 auf der sicheren Seite liegen!
Beachten Sie, dass das Gesagte nicht heißt, dass Replikation oder Berkeley DB nicht funktionieren. Wir haben den gesamten Code ausgiebig getestet, inklusive Replikation und BDB, ohne irgend welche Probleme zu finden. Es heißt nur, dass nicht so viele Benutzer diesen Code verwenden wie den Rest des Codes, weshalb wir noch nicht 100% auf diesen Teil des Codes vertrauen.
Bug behoben, der mit sehr geringer Wahrscheinlichkeit auftritt, der keine übereinstimmenden Zeilen zurückgab bei SELECT mit vielen Tabellen, mehrspaltigen Indexen und 'Bereichs-'-Typen.
Coredump-Bug behoben, der mit sehr geringer
Wahrscheinlichkeit auftritt, wenn man EXPLAIN
SELECT mit vielen Tabellen und ORDER
BY ausführt.
Bug in LOAD DATA FROM MASTER bei der
Benutzung einer Tabelle mit CHECKSUM=1
behoben.
Eindeutige Fehlermeldung hinzugefügt, die man bei einer Blockierung (Deadlock) während einer Transaktion mit BDB-Tabellen erhält.
Problem mit BDB-Tabellen und
UNIQUE-Spalten, die als
NULL definiert wurden, behoben.
Problem mit myisampack bei der Benutzung
von CHAR-Spalten, die Leerzeichen aufgefüllt wurden,
behoben.
Patch von Yuri Dario für OS2 angewandt.
Bug in --safe-user-create behoben.
Problem bei der Benutzung von LOCK TABLES
und BDB-Tabellen behoben.
Problem mit REPAIR TABLE auf
MyISAM-Tabellen mit Zeilenlängen zwischen 65517 und 65520
Bytes behoben.
Seltenen Hänger bei mysqladmin shutdown
behoben, wenn es viel Aktivität auf einem anderen Thread
gab.
Problem mit INSERT DELAYED behoben, bei
dem ein verzögerter Thread auf Upgrade
locks ohne ersichtlichen Grund hängen konnte.
Problem mit myisampack und
BLOB behoben.
Problem beim Editieren von .MRG-Tabellen
von Hand behoben. (Patch von Benjamin Pflugmann).
Es wird erzwungen, dass alle Tabellen in einer
MERGE-Tabelle von derselben Datenbank
kommen.
Bug mit LOAD DATA INFILE und
transaktionalen Tabellen behoben.
Bug bei der Benutzung von INSERT DELAYED
mit falschen Spaltendefinitionen behoben.
Coredump während REPAIR besonders
beschädigter Tabellen behoben.
Bug in InnoDB- und
AUTO_INCREMENT-Spalten behoben.
Bug in InnoDB und RENAME
TABLE-Spalten behoben.
Kritischer Bug in InnoDB- und
BLOB-Spalten behoben. Wenn man
BLOB-Spalten größer als 8000 Bytes in
einer InnoDB-Tabelle benutzte, musste man
die Tabelle mit mysqldump sichern,
löschen und aus dem Dump neu aufbauen.
Großen Patch für OS/2 von Yuri Dario angewandt.
Problem mit InnoDB behoben, bei dem man
den Fehler Can't execute the given
command... bekommen konnte, selbst wenn man keine
aktive Transaktion hatte.
Einige kleine Probleme behoben, die Gemini betrafen.
Echte arithmetische Operationen werden selbst dann in einem Ganzzahl-Zusammenhang benutzt, wenn nicht alle Argumente Ganzzahlen sind. (Behebt einen wenig häufigen Bug in einigen Ganzzahl-Kontexten.)
Unter Windows wird nicht alles in Kleinschreibung erzwungen
(um ein Problem mit Windows und ALTER
TABLE zu beheben).
--lower_case_names funktioniert jetzt auch
unter Unix.
Automatisches Rollback behoben, das ausgeführt wurde, wenn das Beenden eines Threads keinen anderen Thread blockiert.
Option --sql-mode=option[,option[,option]]
hinzugefügt. See Abschnitt 5.1.1, „mysqld-Kommandozeilenoptionen“.
Mögliches Problem mit shutdown auf
Solaris behoben, wobei die .pid-Datei
nicht gelöscht wurde.
InnoDB unterstützt jetzt Zeilen < 4 GB. Die vorherige Beschränkung war 8.000 Bytes.
Die doublewrite-Datei-Flush-Methode wird
in InnoDB benutzt. Sie reduziert die Notwendigkeit von
Unix-fsync-Aufrufen auf einen Bruchteil und verbessert die
Performance auf den meisten Unix-Varianten.
Sie können jetzt den InnoDB-Monitor benutzen, um etliche Informationen über den InnoDB-Status auf die Standardausgabe auszugeben, inklusive Sperren. Nützlich zum Tunen der Performance.
Mehrere Bugs, die in InnoDB Hänger verursachen konnten, behoben.
record_buffer in
record_buffer und
record_rnd_buffer aufgeteilt. Um zu
vorherigen MySQL-Versionen kompatibel zu bleiben, wird
record_rnd_buffer auf den Wert von
record_buffer gesetzt, wenn es nicht
explizit gesetzt wird.
Optimierungs-Bug in ORDER BY behoben, bei
dem einige ORDER BY-Teile
fälschlicherweise entfernt wurden.
Overflow-Bug bei ALTER TABLE und
MERGE-Tabellen behoben.
Prototypen für my_thread_init() und
my_thread_end() zu
mysql_com.h hinzugefügt.
Option --safe-user-create to
mysqld hinzugefügt.
Bug in SELECT DISTINCT ... HAVING
behoben, der die Fehlermeldung Can't find record in
'#... verursachte.
Problem mit --low-priority-updates und
INSERT's behoben.
Bug im Slave-Thread beseitigt, bei dem dieser in seltenen Fällen um 22 Byte vor den Offset im Master kommen konnte.
slave_wait_timeout für Replikation
hinzugefügt.
Problem mit UPDATE und
BDB-Tabellen behoben.
Problematischen Bug in BDB-Tabellen
behoben, der bei der Benutzung von Schlüsselteilen auftrat.
Problem bei der Benutzung von GRANT FILE ON
datenbank.* ... behoben. Vorher wurde die
DROP-Berechtigung für die Datenbank
hinzugefügt.
Bug bei DELETE FROM tabelle ... LIMIT 0
und UPDATE FROM tabelle ... LIMIT 0
behoben, die sich vorher so verhielten, als gäbe es keine
LIMIT-Klausel (sie löschten oder
aktualisierten alle ausgewählten Zeilen).
CHECK TABLE prüft jetzt, ob eine
AUTO_INCREMENT-Spalte den Wert 0
enthält.
Wenn man SIGHUP an
mysqld schickt, werden jetzt nur die Logs
auf Platte zurückgeschrieben (flush), nicht die Replikation
zurückgesetzt.
Parser in Ordnung gebracht, so dass er jetzt
Fließkommazahlen des Typs 1.0e1 (kein
Vorzeichen nach e) zuläßt.
Option --force für
myisamchk aktualisiert jetzt auch
Zustände (Status).
Option --warnings für
mysqld hinzugefügt.
mysqld gibt jetzt nur den Fehler
Aborted connection aus, wenn diese Option
benutzt wird.
Problem mit SHOW CREATE TABLE behoben,
wenn man keinen PRIMARY KEY hatte.
Saubere Behebung der Umbenennung von
innodb_unix_file_flush_method in
innodb_flush_method.
Bug beim Umwandeln von UNSIGNED BIGINT in
DOUBLE behoben. Dieser verursachte bei
Vergleichen mit BIGINT-Werten ausserhalb
des vorzeichenbehafteten Bereichs ein Problem.
Bug in BDB-Tabellen behoben, wenn man
leere Tabellen abfragte.
Bug bei der Benutzung von COUNT(DISTINCT)
mit LEFT JOIN behoben, wenn es keine
übereinstimmenden Zeilen gab.
Alle Dokumentation bezüglich
GEMINI-Tabellen entfernt.
GEMINI wird nicht unter einer
Open-Source-Lizenz herausgegeben.
Die AUTO_INCREMENT-Zahlenfolge wurde beim
Löschen und Hinzufügen einer
AUTO_INCREMENT-Spalte nicht
zurückgesetzt.
CREATE ... SELECT erzeugt jetzt nicht
eindeutige Indexe verzögert.
Problem behoben, bei dem LOCK TABLES tabelle
READ gefolgt von FLUSH TABLES
eine exklusive Sperre auf die Tabelle setzte.
REAL-@Variablen wurden mit 2 Ziffern
dargestellt, wenn sie in Zeichenketten umgewandelt wurden.
Problem mit hängendem Client behoben, wenn LOAD
TABLE FROM MASTER fehlschlug.
myisamchk --fast --force repariert jetzt
keine Tabellen mehr, bei denen nur der Öffnen-Zähler
falsch ist.
Funktionen zur Handhabung von symbolischen Links hinzugefügt, um sich das Leben in Version 4.0 zu erleichtern.
Wir benutzen jetzt die
-lcma-Thread-Bibliothek unter HP-UX
10.20, so dass MySQL auf HP-UX stabiler läuft.
Problem mit IF() und Anzahl von
Dezimalstellen im Ergebnis behoben.
Funktionen zum Extrahieren von Datumsanteilen in Ordnung gebracht, so dass sie jetzt mit Datumsangaben funktionieren, bei denen Tag und / oder Monat 0 sind.
Argumentlänge in Optionsdateien von 256 auf 512 Zeichen erweitert.
Problem bei Herunterfahren, wenn INSERT
DELAYED auf ein LOCK TABLE
wartete, behoben.
Coredump-Bug in InnoDB behoben, wenn der Tabellenplatz (Tablespace) voll war.
Problem mit MERGE-Tabellen und großen
Tabellen (> 4 GB) und der Benutzung von ORDER
BY behoben.
Bug behoben, bei dem SELECT von
MERGE-Tabellen manchmal zu falsch
sortierten Zeilen führte.
Bug in REPLACE() bei der Benutzung des
ujis-Zeichensatzes behoben.
Sleepycat-BDB-Patches 3.2.9.1 und 3.2.9.2 angewandt.
Option --skip-stack-trace zu
mysqld hinzugefügt.
CREATE TEMPORARY funktioniert jetzt mit
InnoDB-Tabellen.
InnoDB zieht jetzt Teile von Schlüsseln
(Sub-Keys) ganzen Schlüsseln vor.
Option CONCURRENT für LOAD
DATA hinzugefügt.
Bessere Fehlermeldung, wenn die
Slave-max_allowed_packet-Variable zu
niedrig ist, um ein sehr langes Log-Ereignis vom Master zu
lesen.
Bug behoben, wenn zu viele Zeilen bei der Benutzung von
SELECT DISTINCT ... HAVING entfernt
wurden.
SHOW CREATE TABLE gibt jetzt
TEMPORARY für temporäre Tabellen
zurück.
Rows_examined für
Langsame-Anfragen-Log-Datei hinzugefügt.
Probleme mit Funktion behoben, die eine leere Zeichenkette
zurückgab, wenn sie zusammen mit einer Gruppenfunktion und
einem WHERE benutzt wurde, das keine
Zeilenübereinstimmung ergab.
Neues Programm mysqlcheck.
Datenbankname zur Ausgabe für administrative Befehle wie
CHECK, REPAIR,
OPTIMIZE hinzugefügt.
Viele Portabilitätsbehebungen für InnoDB.
Optimierer geändert, so dass Anfragen wie SELECT *
FROM tabelle,tabelle2 ... ORDER BY schluessel_teil1 LIMIT
# den Index auf
schluessel_teil1 anstelle von
filesort benutzen.
Bug bei der Ausführung von LOCK TABLE to_table
WRITE,...; INSERT INTO to_table... SELECT ...
behoben, wenn to_table leer war.
Bug mit LOCK TABLE und BDB-Tabellen
behoben.
Bug bei der Benutzung von MATCH in
HAVING-Klausel.
Bug bei der Benutzung von HEAP-Tabellen
mit LIKE behoben.
--mysql-version für
safe_mysqld hinzugefügt.
INNOBASE in InnoDB
geändert (weil der INNOBASE-Name bereits
benutzt wurde). Alle configure-Optionen
und mysqld-Startoptionen benutzen jetzt
innodb anstelle von
innobase. Das heißt, dass Sie jegliche
Konfigurationsdateien, in denen Sie
innobase-Optionen benutzt haben, ändern
müssen, bevor Sie auf diese Version aktualisieren!
Bug bei der Benutzung von Indexen auf CHAR(255)
NULL-Spalten behoben.
Slave-Thread wird jetzt auch dann gestartet, wenn
master-host nicht gesetzt ist, so lange
server-id gesetzt wird und es eine
gültige master.info gibt.
Teilweise Aktualisierungen (beendet mit kill) werden jetzt
mit einem speziellen Fehler-Code in die Binär-Log-Datei
geschrieben. Der Slave weigert sich, sie auszuführen, wenn
der Fehler-Code anzeigt, dass die Aktualisierung abnorm
beendet wurde, und muss mit SET
SQL_SLAVE_SKIP_COUNTER=1; SLAVE START wieder dazu
veranlasst werden, nachdem eine manuelle Überprüfung /
Korrektur der Datenintegrität durchgeführt wurde.
Bug behoben, der das Löschen einer internen temporären Tabelle beim Beenden des Threads irrtümlicherweise in die Binär-Log-Datei schrieb. Dieser Bug betraf Replikation.
Bug in REGEXP() auf 64-Bit-Maschinen.
UPDATE und DELETE mit
WHERE eindeutiger_schluessel_teil IS NULL
aktualisierte / löschte nicht alle Zeilen.
INSERT DELAYED für Tabellen
abgeschaltet, die Transaktionen unterstützen.
Bug bei der Benutzung von DATE-Funktionen auf
TEXT/BLOB-Spalten mit
falschem Datumsformat behoben.
UDFs (benutzerdefinierte Funktionen) funktionieren jetzt auch unter Windows (Patch von Ralph Masona).
Bug in ALTER TABLE und LOAD DATA
INFILE behoben, der das Sortieren von Schlüsseln
deaktivierte. Diese Befehle sollten jetzt in den meisten
Fällen schneller sein.
Performance-Bug beim erneuten Öffnen von Tabellen behoben
(Tabellen, die auf ein FLUSH oder
REPAIR warteten), die für die nächste
Anfrage keine Indexe benutzten.
Problem mit ALTER TABLE für
Innobase-Tabellen auf FreeBSD behoben.
mysqld-Variablen
myisam_max_sort_file_size und
myisam_max_extra_sort_file_size
hinzugefügt.
Signale werden frühzeitig initialisiert, um Problem mit Signalen in Innobase zu vermeiden.
Patch für den tis620-Zeichensatz
hinzugefügt, um Vergleiche unabhängig von der verwendeten
Groß-/Kleinschreibung zu machen und einen Bug in
LIKE für diesen Zeichensatz zu beheben.
HINWEIS: Alle Tabellen, die
den tis620-Zeichensatz benutzen, müssen
mit myisamchk -r oder REPAIR
TABLE in Ordnung gebracht werden!
--skip-safemalloc-Option zu
mysqld hinzugefügt.
Bug behoben, der Datenbanknamen mit einem
‘.’-Zeichen zuließ. Das
behebt ein schwerwiegendes Sicherheitsproblem, wenn man
mysqld unter dem Benutzer root laufen
läßt.
Bug behoben, wenn die Erzeugung eines Threads fehlschlägt (das konnte bei der Herstellung SEHR vieler Verbindungen in kurzer Zeit passieren).
Einige Probleme mit FLUSH TABLES und
TEMPORARY-Tabellen behoben. (Problem mit
dem Freisetzen des Schlüssel-Cache und Fehler
Can't reopen table...).
Problem in Innobase mit anderen Zeichensätze als
latin1 und ein anderes Problem bei der
Benutzung von vielen Spalten behoben.
Bug behoben, der einen Coredump bei der Benutzung einer sehr
komplexen Anfrage mit DISTINCT und
Summenfunktionen verursachte.
SET TRANSACTION ISOLATION LEVEL ...
hinzugefügt.
SELECT ... FOR UPDATE hinzugefügt.
Bug behoben, bei dem die Anzahl von betroffenen Zeilen nicht
zurückgegeben wurde, wenn MySQL ohne
Transaktionsunterstützung kompiliert wurde.
Bug in UPDATE behoben, bei dem nicht
immer Schlüssel benutzt wurden, um die zu aktualisierenden
Zeilen zu finden.
Bug in CONCAT_WS() behoben, bei dem diese
Funktion falsche Ergebnisse zurückgab.
CREATE ... INSERT und INSERT ...
SELECT geändert, so dass diese noch kleine
gleichzeitigen Einfügevorgänge zulassen, weil das dazu
führen könnte, dass die Binär-Log-Datei schwer zu
wiederholen ist. (Gleichzeitige Einfügevorgänge sind
aktiviert, wenn Sie nicht die Binär- oder Update-Log-Datei
verwenden.)
Einige Makros geändert, so dass schnelles mutex mit glibc 2.2 verwendet werden kann.
Neu eingeführter Bug in ORDER BY
behoben.
Falsches Definieren von
CLIENT_TRANSACTIONS behoben.
Bug in SHOW VARIABLES bei der Benutzung
von INNOBASE-Tabellen behoben.
Das Setzen und Benutzen von Benutzer-Variablen in
SELECT DISTINCT funktionierte nicht.
SHOW ANALYZE für kleine Tabellen
verbessert.
Handhabung von Argumenten im Benchmark-Skript
run-all-tests behoben.
Zusätzliche Dateien zur Distribution hinzugefügt, die es
ermöglichen, mit INNOBASE-Unterstützung
zu kompilieren.
INNOBASE-Tabellen-Handler und
BDB-Tabellen-Handler zur
MySQL-Quelldistribution hinzugefügt.
Die Dokumentation zu GEMINI-Tabellen
aktualisiert.
Bug in INSERT DELAYED behoben, der den
Thread zum Hängen brachte, wenn NULL in
eine AUTO_INCREMENT-Spalte eingefügt
wurde.
Bug in CHECK TABLE / REPAIR
TABLE behoben, der einen Thread zum Hängen
bringen konnte.
REPLACE ersetzt keine Zeile mehr, die mit
einem durch auto_increment erzeugten
Schlüssel in Konflikt steht.
mysqld setzt jetzt nur
CLIENT_TRANSACTIONS in
mysql->server_capabilities, wenn der
Server einen transaktionssicheren Handler unterstützt.
LOAD DATA INFILE läßt jetzt das
Einfügen numerischer Werte in ENUM- und
SET-Spalten zu.
Fehlerdiagnose beim Slave-Thread-Exit verbessert.
Bug in ALTER TABLE ... ORDER BY behoben.
Option max_user_connections für
mysqld hinzugefügt.
Anfragelänge für Replikation auf
max_allowed_packet begrenzt, nicht auf
die willkürliche Länge von 4 MB.
Leerzeichen um = herum im Argument zu
--set-variable werden zugelassen.
Problem beim automatischen Reparieren behoben, der einen
Thread im Zustand Waiting for table
lassen konnte.
SHOW CREATE TABLE gibt jetzt das
UNION() für
MERGE-Tabellen aus.
ALTER TABLE merkt sich jetzt die alte
UNION()-Definition.
Bug beim Replizieren von Timestamps behoben.
Bug bei der bidirektionalen Replikation behoben.
Bug im BDB-Tabellen-Handler behoben, der
bei der Benutzung eines Indexes auf mehrteilige Schlüssel
vorkam, wenn ein Schlüsselteil NULL sein
konnte.
MAX()-Optimierung für Schlüsselteile
(Sub-Keys) für BDB-Tabellen verbessert.
Problem behoben, bei dem 'Müll'-Ergebnisse bei der
Benutzung von BDB-Tabellen und
BLOB- oder
TEXT-Feldern beim Verknüpfen (Join)
vieler Tabellen auftraten.
Problem mit BDB-Tabellen und
TEXT-Spalten behoben.
Bug bei der Benutzung eines
BLOB-Schlüssels behoben, wenn eine
Konstanten-Zeile nicht gefunden wurde.
Problem behoben, dass mysqlbinlog den
Timestamp-Wert für jede Anfrage schreibt. Das stellt
sicher, dass man dieselben Werte bei Datumsfunktionen wie
NOW() bei der Benutzung von
mysqlbinlog erhält, um die Anfragen zu
einem anderen Server durchzureichen (pipe).
Es wird zugelassen, dass --skip-gemini,
--skip-bdb und
--skip-innobase für
mysqld angegeben werden, selbst wenn
diese Datenbanken nicht in mysqld
einkompiliert sind.
Man kann jetzt GROUP BY ... DESC
ausführen.
Blockierung im SET-Code behoben, wenn man
SET @foo=bar ausführte, wobei
bar ein Spaltenverweis ist. Hier wurde
die Fehlermeldung nicht korrekt erzeugt.
DNS-Lookups benutzen jetzt nicht mehr denselben mutex wie der Hostnamen-Cache. Das gestattet, dass bekannte Hosts schnell aufgelöst werden können, selbst wenn ein DNS-Lookup lange Zeit braucht.
--character-sets-dir für
myisampack hinzugefügt.
Warnungen beim Laufenlassen von REPAIR TABLE ...
EXTENDED entfernt.
Bug, der einen Coredump bei der Benutzung von GROUP
BY auf ein Alias verursachte, wobei der Alias
dasselbe wie ein existierender Spaltenname war, entfernt.
SEQUENCE() als Beispiel-UDF-Funktion
hinzugefügt.
mysql_install_db geändert, so dass es
BINARY für
CHAR-Spalten in den Berechtigungstabellen
benutzt.
TRUNCATE tabelle zu TRUNCATE
TABLE tabelle geändert, um dieselbe Syntax wie
Oracle zu verwenden. Bis Version 4.0 lassen wir weiterhin
TRUNCATE tabelle zu, um alten Code nicht
zum Absturz zu bringen.
'no found rows'-Bug in MyISAM-Tabellen
behoben, wenn ein BLOB erster Teil eines
mehrteiligen Schlüssels war.
Bug behoben, bei dem CASE mit
GROUP BY nicht funktionierte.
Option --sort-recover für
myisamchk hinzugefügt.
myisamchk -S und OPTIMIZE
TABLE funktionieren jetzt unter Windows.
Bug bei der Benutzung von DISTINCT auf
Ergebnisse von Funktionen behoben, die sich auf eine
Gruppenfunktion bezogen, wie:
SELECT a, DISTINCT SEC_TO_TIME(sum(a)) from tabelle GROUP BY a, b;
Puffer-Überlauf in
libmysqlclient-Bibliothek behoben. Bug
bei der Handhabung des STOP-Ereignisses
nach ROTATE-Ereignis bei Replikation.
Einen weiteren Puffer-Überlauf in DROP
DATABASE behoben.
Table_locks_immediate- und
Table_locks_waited-Status-Variablen
hinzugefügt.
Bug in Replikation behoben, der den Slave-Server-Start bei
existierendem master.info unterbrach. Das
behebt einen Bug, der in Version 3.23.32 eingeführt wurde.
SET SQL_SLAVE_SKIP_COUNTER=n-Befehl
hinzugefügt, um nach Replikationsstörungen ohne volle
Datenbankkopie wiederherzustellen.
max_binlog_size-Variable hinzugefügt;
die Binär-Log-Datei wird automatisch rotiert, wenn die
Größe die Grenze überschreitet.
Last_error, Last_errno
und Slave_skip_counter für SHOW
SLAVE STATUS hinzugefügt.
Bug in MASTER_POS_WAIT()-Funktion
behoben.
Coredump-Handler auf SIGILL und
SIGBUS zusätzlich zu
SIGSEGV.
Auf x86-Linux wird im Coredump-Handler die aktuelle Anfrage und die Thread- (Verbindungs-) Kennung, falls verfügbar, angegeben.
Mehrere Timing-Bugs in der Test-Suite behoben.
mysqltest erweitert, so dass es sich um
Probleme mit dem Timing in der Test-Suite kümmert.
ALTER TABLE kann jetzt auch benutzt
werden, um die Definition einer
MERGE-Tabelle zu ändern.
Erzeugung von MERGE-Tabellen unter
Windows in Ordnung gebracht.
Portabilitätsbehebungen für OpenBSD und OS/2.
--temp-pool-Option zu
mysqld hinzugefügt. Das Benutzen dieser
Option führt dazu, dass temporäre Dateien nur einen
kleinen Satz von Namen benutzen, statt eines eindeutigen
Namens für jede neue Datei. Das ist ein Workaround um ein
Problem im Linux-Kernel beim Erzeugen einer großen Menge
neuer Dateien mit unterschiedlichen Namen. Beim alten
Verhalten scheint es so, als ein Linux ein Speicher-'Loch'
hätte, weil zum Verzeichniseintrags-Cache statt zum
Festplatten-Cache zugewiesen (alloziert) wird.
Code geändert, um um einen Compiler-Bug in Compaq C++ auf
OSF1 herumzuarbeiten, der BACKUP,
RESTORE, CHECK,
REPAIR und ANALYZE
TABLE beschädigte.
Option FULL für SHOW
COLUMNS hinzugefügt. Jetzt wird die
Berechtigungsliste für die Spalten nur angezeigt, wenn
diese Option angegeben wird.
Bug in SHOW LOGS behoben, wenn es keine
BDB-Logs gab.
Timing-Problem in Replikation behoben, dass das Abschicken einer Aktualisierung an den Client verzögern konnte, bis eine weitere Aktualisierung durchgeführt wurde.
Feldnamen bei der Benutzung von
mysql_list_fields() nicht umwandeln.
Damit bleibt dieser Code kompatibel mit SHOW
FIELDS.
MERGE-Tabellen funktionierten nicht unter
Windows.
Problem mit SET PASSWORD=... unter
Windows.
Fehlende my_config.h für
RPM-Distribution hinzugefügt.
TRIM("foo" von "foo") gab keine leere
Zeichenkette zurück.
--with-version-suffix für
configure hinzugefügt.
Coredump behoben, wenn der Client eine Verbindung ohne
mysql_close() abbrach.
Bug in RESTORE TABLE behoben, wenn man
versuchte, aus einem nicht vorhandenen Verzeichnis
wiederherzustellen.
Bug behoben, der einen Coredump auf dem Slave bei der
Replikation von SET PASSWORD verursachte.
MASTER_POS_WAIT() hinzugefügt.
Die Test-Suite testet jetzt jeden erreichbaren BDB-Schnittstellen-Code. Während der Tests fanden und behoben wir viele Fehler im Schnittstelle-Code.
Die Benutzung von HAVING auf eine leere
Tabelle konnte eine Ergebniszeile ergeben, ohne dass es das
sollte.
Problem behoben, so dass das MySQL-RPM nicht mehr von Perl5 abhängt.
Einige Probleme mit HEAP-Tabellen unter
Windows behoben.
SHOW TABLE STATUS zeigte nicht die
korrekte durchschnittliche Zeilenlänge bei Tabellen
größer als 4 GB.
CHECK TABLE ... EXTENDED prüften keine
Zeilen-Links für Tabellen fester Größe.
Option MEDIUM für CHECK
TABLE hinzugefügt.
Problem bei der Benutzung von
DECIMAL()-Schlüsseln auf negative Zahlen
behoben.
HOUR() (und einige andere
TIME-Funktionen) auf einer
CHAR-Spalte gaben immer
NULL zurück.
Sicherheits-Bug in etwas behoben (bitte aktualisieren Sie, wenn Sie eine frühere MySQL-3.23-Version benutzen).
Bug mit Puffer-Überlauf behoben, wenn eine bestimmte Fehlermeldung ausgegeben wurde.
Benutzung von setrlimit() unter Linux
hinzugefügt, damit -O
--open-files-limit=# unter Linux läuft.
Neue mysqld-Variable
bdb_version hinzugefügt.
Bug bei der Benutzung von Ausdrücken folgenden Typs behoben:
SELECT ... FROM t1 LEFT JOIN t2 ON (t1.a=t2.a) WHERE t1.a=t2.a
In diesem Fall wurde der Test in der
WHERE-Klausel fälschlicherweise weg
optimiert.
Bug in MyISAM beim Löschen von
Schlüsseln mit möglichen NULL-Werten
behoben, wenn die erste Schlüsselspalte keine
Präfix-komprimierte Text-Spalte war.
mysql.server repariert, so dass es den
mysql.server-Optionsabschnitt anstelle
von mysql_server liest.
safe_mysqld und
mysql.server repariert, so dass sie den
server-Optionsabschnitt lesen.
thread_created-Status-Variable zu
mysqld hinzugefügt.
SHOW OPEN TABLES-Befehl hinzugefügt.
myisamdump funktioniert jetzt mit alten
mysqld-Servern.
myisamchk -k# funktioniert jetzt wieder.
Problem mit Replikation behoben, wenn die Binär-Log-Datei-Datei auf 32-Bit-Systemen größer als 2 GB wurde.
LOCK TABLES startet jetzt automatisch
eine neue Transaktion.
BDB-Tabellen so geändert, dass sie
interne Sub-Transaktionen benutzen und offene Dateien
wiederholt benutzen, um mehr Geschwindigkeit zu erzielen.
Option --mysqld=# für
safe_mysqld hinzugefügt.
Hexadezimale Konstanten in --fields-*-by-
und --lines-terminated-by-Optionen für
mysqldump und
mysqlimport werden jetzt zugelassen. Von
Paul DuBois.
Option --safe-show-Datenbank für
mysqld hinzugefügt.
have_bdb, have_gemini,
have_innobase,
have_raid und
have_openssl für SHOW
VARIABLES hinzugefügt, um das Testen auf
unterstützte Erweiterungen zu erleichtern.
Option --open-files-limit für
mysqld hinzugefügt.
Option --open-files zu
--open-files-limit in
safe_mysqld geändert.
Bug behoben, bei dem einige Zeilen nicht gefunden wurden,
wenn HEAP-Tabellen viele Schlüssel
hatten.
--bdb-no-sync funktioniert jetzt.
--bdb-recover in
--bdb-no-recover geändert, weil recover
vorgabemäßig angeschaltet sein sollte.
Die vorgabemäßige Anzahl von BDB-Sperren auf 10.000 geändert.
Bug aus Version 3.23.29 behoben, beim Zuweisen der gemeinsam genutzten Struktur, die für BDB-Tabellen benötigt wird.
mysqld_multi.sh für
benutzerkonfigurierbare Variablen geändert. Patch von
Christopher McCrory.
Include-Dateien für Solaris 2.8 in Ordnung gebracht.
Bug mit --skip-networking auf Debian Linux
behoben.
Problem behoben, dass einige temporäre Dateien den Namen
UNOPENED in Fehlermeldungen hatten.
Bug beim Laufenlassen von zwei gleichzeitigen SHOW
LOGS-Anfragen behoben.
Configure-Aktualisierungen für Tru64, Unterstützung großer Dateien und besser TCP-Wrapper-Unterstützung. Von Albert Chin-A-Young.
Bug in <=>-Operator behoben.
Bug in REPLACE mit BDB-Tabellen behoben.
LPAD() und RPAD()
kürzen jetzt die Ergebnis-Zeichenkette, wenn sie länger
als das Längenargument ist.
SHOW LOGS-Befehl hinzugefügt.
Unbenutzte BDB-Logs werden beim Herunterfahren entfernt.
Beim Erzeugen einer Tabelle werden
PRIMARY-Schlüsseln zuerst gesetzt,
gefolgt von UNIQUE-Schlüsseln.
Bug in UPDATE behoben, wenn mehrteilige
Schlüssel benutzt wurden, bei denen alle Schlüsselteile
sowohl in der Aktualisierung als auch im
WHERE-Teil angegeben wurden. In diesem
Fall könnte MySQL versuchen, einen Datensatz zu
aktualisieren, der nicht dem gesamten
WHERE-Teil entspricht.
Löschen von Tabellen so geändert, dass zunächst die
Tabelle und dann die .frm-Datei
gelöscht wird.
Bug im Hostnamen-Cache behoben, der dazu führte, dass
mysqld den Hostnamen als
'' in manchen Fehlermeldungen berichtete.
Bug mit HEAP-Tabellen behoben; die
Variable max_heap_table_size wurde nicht
benutzt. Jetzt kann entweder MAX_ROWS
oder max_heap_table_size benutzt werden,
um die Größe einer HEAP-Tabelle zu
beschränken.
Die vorgabemäßige Server-Kennung auf 1 für Master-Server und 2 für Slaves geändert, um die Benutzung der Binär-Log-Datei zu erleichtern.
Variable bdb_lock_max in
bdb_max_lock umbenannt.
Unterstützung für auto_increment auf
Unter-Felder (Sub-Fields) für BDB-Tabellen hinzugefügt.
ANALYZE von BDB-Tabellen hinzugefügt.
In BDB-Tabellen wird jetzt die Anzahl von Zeilen gespeichert. Das hilft, Anfragen zu optimieren, wenn dafür die ungefähre Anzahl von Zeilen benötigt wird.
Wenn es einen Fehler in einem mehrzeiligen Statement gibt, wird jetzt nur das letzte Statement zurückgerollt, nicht die gesamte Transaktion.
Wenn man ROLLBACK nach der Aktualisierung
einer nicht transaktionalen Tabelle ausführt, erhält man
als Warnung einen Fehler.
Option --bdb-shared-data für
mysqld hinzugefügt.
Status-Variable Slave_open_temp_tables
hinzugefügt.
Variablen binlog_cache_size und
max_binlog_cache_size für
mysqld hinzugefügt.
DROP TABLE, RENAME
TABLE, CREATE INDEX und
DROP INDEX sind jetzt
Transaktions-Endpunkte.
Wenn Sie ein DROP DATABASE auf eine
symbolisch verknüpfte Datenbank ausführen, werden sowohl
der Link als auch die Original-Datenbank gelöscht.
DROP DATABASE funktioniert jetzt auf
OS/2.
Bug bei der Ausführung von SELECT DISTINCT ...
tabelle1 LEFT JOIN tabelle2 ... behoben, wenn
tabelle2 leer war.
--abort-slave-event-count- und
--disconnect-slave-event-count-Optionen
für mysqld zum Debuggen und Testen der
Replikation hinzugefügt.
Replikation temporärer Tabellen in Ordnung gebracht. Handhabt alles ausser dem Neustart von Slaves.
SHOW KEYS zeigt jetzt, ob ein Schlüssel
FULLTEXT ist oder nicht.
Neues Skript mysqld_multi. See
Abschnitt 5.7.3, „mysqld_multi, Programm zur Verwaltung mehrerer MySQL-Server“.
Neues Skript mysql-multi.server.sh
hinzugefügt. Vielen Dank an Tim Bunce
<Tim.Bunce@ig.co.uk> für die Modifizierung von
mysql.server, um auf einfache Weise
Hosts zu handhaben, die viele
mysqld-Prozesse laufen lassen.
safe_mysqld,
mysql.server und
mysql_install_db wurden so abgeändert,
dass sie mysql_print_defaults anstelle
verschiedener Hacks benutzen, um
my.cnf-Dateien zu lesen. Zusätzlich
wurde die Handhabung verschiedener Pfade konsistenter
gemacht, in Bezug auf wie mysqld
vorgabemäßig handhabt.
Berkeley-DB-Transaktions-Logs, die nicht mehr in Benutzung sind, werden automatisch entfernt.
Bug bei mehreren FULLTEXT-Indexen in
einer Tabelle behoben.
Warnung hinzugefügt, wenn sich die von Zeilen bei
REPAIR/OPTIMIZE
ändert.
Patches für OS/2 von Yuri Dario
angewandt.
FLUSH TABLES tabelle schrieb den
Index-Baum nicht immer korrekt auf die Festplatte zurück.
--bootstrap läuft jetzt in einem separaten
Thread. Das behebt ein Problem, das bei
mysql_install_db einen Coredump auf
einigen Linux-Maschinen verursachte.
mi_create() abgeändert, so dass es
weniger Stack-Platz benötigt.
Bug beim Optimierer, wenn er versucht,
MATCH, mit
UNIQUE-Schlüsseln benutzt, zu
überoptimieren.
Crash-me und die MySQL-Benchmarks
funktionieren jetzt auch mit FrontBase.
RESTRICT und CASCADE
werden nach einem DROP TABLE zugelassen,
um die Portierung einfacher zu machen.
Status-Variable zurückgesetzt, die Probleme hervorrufen
konnte, wenn man --slow-log benutzte.
Variable connect_timeout für
mysql und mysqladmin
hinzugefügt.
connect_timeout als Alias für
timeout für Optionsdateien, die von
mysql_options() gelesen werden,
hinzugefügt.
Neue Optionen --pager[=...],
--no-pager, --tee=... und
--no-tee für den
mysql-Client hinzugefügt. Die
entsprechenden neuen interaktiven Befehle heißen
pager, nopager,
tee und notee. Siehe
See Abschnitt 5.8.2, „Das Kommandozeilen-Werkzeug“, mysql --help
und die interaktive Hilfe wegen weiterer Informationen.
Absturz behoben, der beim Fehlschlagen der Reparatur von
MyISAM-Tabellen auftrat.
Größerer Performance-Bug im Tabellensperren-Code behoben,
wenn man permanent VIELE SELECT-,
UPDATE- und
INSERT-Statements laufen hatte. Das
Symptom zeigte sich darin, dass die
UPDATE- und
INSERT-Anfragen lange gesperrt waren,
während neue SELECT-Statements vor den
Aktualisierungen ausgeführt wurden.
Beim Lesen von options_files mit
mysql_options() wurde die
return-found-rows-Option ignoriert.
Man kann jetzt interactive-timeout in der
Optionsdatei angeben, die von
mysql_options() gelesen wird. Das
ermöglicht es, Programme, die lange laufen (wie
mysqlhotcopy), zu zwingen,
interactive_timeout anstelle von
wait_timeout zu benutzen.
Zur Langsame-Anfragen-Log-Datei Zeit und Benutzernamen für
jede geloggte Anfrage hinzugefügt. Wenn Sie
--log-long-format benutzen, werden auch
Anfragen, die keinen Index benutzen, geloggt, selbst wenn
die Anfrage weniger als long_query_time
Sekunden benötigt.
Problem in LEFT JOIN behoben, was dazu
führte, dass alle Spalten in einer Verweistabelle
NULL waren.
Problem bei der Benutzung von NATURAL
JOIN ohne Schlüssel behoben.
Bug bei der Benutzung eines mehrteiligen Schlüssels
behoben, bei dem der erste Teil vom Typ
TEXT oder BLOB war.
DROP von temporären Tabellen wurde nicht
in der Update-/Binär-Log-Datei gespeichert.
Bug behoben, der bei SELECT DISTINCT * ... LIMIT
# nur eine Zeile zurückgab.
Bug im Assembler-Code in strstr() für
sparc behoben und global.h-Header-Datei
aufgeräumt, um ein Problem mit schlechtem Aliasing des
Compilers zu vermeiden, der bei RedHat 7.0 beiliegt
(berichtet von Trond Eivind Glomsrød).
Die Option --skip-networking funktioniert
jetzt sauber unter Windows NT.
Lang ausstehender Bug in den
ISAM-Tabellen behoben, wenn eine Zeile
mit einer Länge von mehr als 65 KB um ein einzelnes Byte
gekürzt wurde.
Bug in MyISAM beim Laufenlassen
mehrfacher Aktualisierungsprozesse auf dieselbe Tabelle
behoben.
Es wird zugelassen, dass FLUSH TABLE
tabelle benutzt wird.
--replicate-ignore-table,
--replicate-do-table,
--replicate-wild-ignore-table und
--replicate-wild-do-table hinzugefügt.
Alle Log-Dateien so geändert, dass sie unseren eigenen
IO_CACHE-Mechanismus anstelle von
FILE benutzen, um Betriebssystemprobleme
zu vermeiden, wenn zu viele Dateien offen sind.
Optionen --open-files und
--timezone für
safe_mysqld hinzugefügt.
Schweren Bug in CREATE TEMPORARY TABLE ... SELECT
... behoben.
Problem mit CREATE TABLE ... SELECT NULL
behoben.
Variablen large_file_support,
net_read_timeout,
net_write_timeout und
query_buffer_size für SHOW
VARIABLES hinzugefügt.
Status-Variablen created_tmp_files und
sort_merge_passes für SHOW
STATUS hinzugefügt.
Bug behoben, bei dem kein Index-Name nach der
FOREIGN KEY-Definition zugelassen wurde.
TRUNCATE tabelle als ein Synonym für
DELETE FROM tabelle hinzugefügt.
Bug in einer BDB-Schlüsselvergleichsfunktion beim Vergleich von Schlüsselteilen behoben.
Variable bdb_lock_max für
mysqld hinzugefügt.
Weitere Tests zur Benchmark-Suite hinzugefügt.
Überlauf-Bug im Client-Code bei der Benutzung von überlangen Datenbanknamen behoben.
mysql_connect() bricht jetzt unter Linux
ab, wenn der Server nicht in timeout
Sekunden antwortet.
SLAVE START funktionierte nicht, wenn Sie
mit --skip-slave-start starteten und vorher
nicht explizit CHANGE MASTER TO laufen
ließen.
Die Ausgabe von SHOW MASTER STATUS in
Ordnung gebracht, damit sie konsistent mit SHOW
SLAVE STATUS ist. (Sie hat jetzt kein Verzeichnis
im Log-Namen.)
PURGE MASTER LOGS TO hinzugefügt.
SHOW MASTER LOGS hinzugefügt.
--safemalloc-mem-limit-Option für
mysqld hinzugefügt, um Speichermangel zu
simulieren, wenn mit --with-debug=full
kompiliert wurde.
Mehrere Coredumps unter Bedingungen, in denen Arbeitsspeicher fehlt, behoben.
SHOW SLAVE STATUS benutzte einen nicht
initialisierten mutex, wenn der Slave noch nicht gestartet
wurde.
Bug in ELT() und
MAKE_SET() behoben, wenn die Anfrage eine
temporäre Tabelle benutzte.
CHANGE MASTER TO ohne Angabe von
MASTER_LOG_POS setzte es auf 0 statt auf
4 und erreichte die magische Zahl im binären Master-Log.
ALTER TABLE ... ORDER BY ...-Syntax
hinzugefügt. Das erzeugt die Tabelle mit Zeilen in einer
festgelegten Reihenfolge.
Bug behoben, bei dem das automatische Reparieren von MyISAM-Tabellen manchmal fehlschlug, wenn die Daten-Datei beschädigt war.
Bug in SHOW CREATE bei der Benutzung von
AUTO_INCREMENT-Spalten behoben.
BDB-Tabellen so geändert, dass sie die neue Vergleichsfunktion in Berkeley DB 3.2.3 benutzen.
Sie können jetzt Unix-Sockets bei
mit-pThread benutzen.
Neuer latin5- (türkischer) Zeichensatz.
Kleinere Portabilitätsbehebungen.
<> funktioniert jetzt sauber mit
NULL.
Problem mit SUBSTRING_INDEX() und
REPLACE() behoben (Patch von Alexunder
Igonitchev).
CREATE TEMPORARY TABLE IF NOT EXISTS gab
keinen Fehler, wenn die Tabelle existierte.
Wenn Sie keinen PRIMARY KEY in einer
BDB-Tabelle erzeugen, wird ein versteckter PRIMARY
KEY erzeugt.
Nur-Lese-Schlüssel-Optimierung to BDB-Tabellen hinzugefügt.
LEFT JOIN bevorzugte in manchen Fällen
einen vollen Tabellen-Scan, wenn es keine
WHERE-Klausel gab.
Bei der Benutzung von --log-slow-query die
Wartezeit auf eine Sperre nicht zählen.
Bug im Sperr-Code unter Windows behoben, der dazu führte, dass der Schlüssel-Cache berichtete, dass die Schlüssel-Datei beschädigt sei, obwohl sie in Ordnung war.
Automatische Reparatur von
MyISAM-Tabellen, wenn Sie
mysqld mit
--myisam-recover starten, hinzugefügt.
Das TYPE=-Schlüsselwort wurde von
CHECK und REPAIR
entfernt. Es wird zugelassen, dass
CHECK-Optionen kombiniert werden. (Sie
können immer noch TYPE= benutzen, aber
die Benutzung wird nicht empfohlen.)
Mutex-Bug im binären Replikations-Log behoben - lange Aktualisierungsanfragen konnten vom Slave nur teilweise gelesen werden, wenn er das zur falschen Zeit machte, was nicht schwerwiegend ist, aber zu einem Performance-verschlechternden erneuten Verbinden führte, sowie zu einer beunruhigenden Nachricht in der Fehler-Log-Datei.
Das Format der Binär-Log-Datei wurde geändert - hinzugefügt wurden magische Zahl, Serverversion, Binlog-Version, Server-Kennung und Anfragen-Fehlercode für jedes Anfrage-Ereignis.
Replikations-Thread vom Slave killt jetzt alle darnieder liegenden Threads vom selben Server.
Lange Replikations-Benutzernamen wurden bislang nicht korrekt gehandhabt.
--replicate-rewrite-db-Option zu
mysqld hinzugefügt.
--skip-slave-start-Option to
mysqld hinzugefügt.
Aktualisierungen, die einen Fehlercode erzeugten (wie
INSERT INTO foo(schluessel) values
(1),(1)) beendeten bislang irrtümlich den
Slave-Thread.
Optimierung von Anfragen, bei denen
DISTINCT nur auf Spalten aus denselben
Tabellen benutzt wird, hinzugefügt.
Fließkommazahlen ohne Vorzeichen nach dem Exponent (wie 1e1) werden zugelassen.
SHOW GRANTS zeigte nicht immer alle
Spaltenberechtigungen.
--default-extra-file=# für alle
MySQL-Clients hinzugefügt.
Spalten, auf die in INSERT-Statements
verwiesen wird, werden nun sauber initialisiert.
UPDATE funktioniert nicht immer, wenn es
mit einem Bereich auf einem Timestamp benutzt wurde, der
Teil des Schlüssels war, der benutzt wurde, um Zeilen zu
finden.
Bug in FULLTEXT-Index beim Einfügen
einer NULL-Spalte behoben.
mkstemp() wird jetzt anstelle von
tempnam() benutzt. Basiert auf einem
Patch von John Jones.
database funktioniert als zweites
Argument für mysqlhotcopy.
UMASK und UMASK_DIR
können jetzt oktal angegeben werden.
RIGHT JOIN. Hierdurch wird
RIGHT zu einem reservierten Wort.
@@IDENTITY als ein Synonym für
LAST_INSERT_ID() hinzugefügt, aus
Gründen der Visual-Basic-Kompatibilität.)
Bug in myisamchk und
REPAIR bei der Benutzung von
FULLTEXT-Indexen behoben.
LOAD DATA INFILE funktioniert jetzt mit
FIFOs (Patch von Toni L. Harbaugh-Blackford).
FLUSH LOGS brach die Replikation ab, wenn
Sie einen Log-Namen mit einer expliziten Erweiterung als
Wert der log-bin-Option angaben.
Bug in MyISAM mit komprimierten
mehrteiligen Schlüsseln behoben.
Absturz bei der Benutzung von CHECK TABLE
unter Windows behoben.
Bug, bei dem FULLTEXT-Index immer den
koi8_ukr-Zeichensatz benutzten, behoben.
Berechtigungsüberprüfung für CHECK
TABLE in Ordnung gebracht.
Der MyISAM-Reparatur-/Reindexierungs-Code
benutzte nicht die --tempdir-Option für
seine temporären Dateien.
BACKUP TABLE/RESTORE TABLE hinzugefügt.
Coredump auf CHANGE MASTER TO behoben,
wenn der Slave keinen Master hatte, mit dem er startet.
Falsche time in der Prozessliste für
Connect des Slave-Threads in Ordnung
gebracht.
Der Slave loggt jetzt, wann er sich mit dem Master verbindet.
Coredump-Bug beim Ausführen von FLUSH
MASTER behoben, wenn man kein Dateinamens-Argument
für --log-bin angab.
Fehlende ha_berkeley.x-Dateien zu MySQL
unter Windows hinzugefügt.
Einige mutex-Bugs im Log-Code behoben, die zu Thread-Blockierungen führen konnten, wenn neue Log-Dateien nicht erzeugt werden konnten.
Sperrzeit und Anzahl von ausgewählten bearbeiteten Zeilen zur Langsame-Anfragen-Log-Datei hinzugefügt.
--memlock-Option für
mysqld, um mysqld im
Arbeitsspeicher auf Systemen mit dem
mlockall()-Aufruf (wie in Solaris) zu
sperren, hinzugefügt.
HEAP-Tabellen benutzten Schlüssel nicht
korrekt (Bug aus Version 3.23.23).
Bessere Unterstützung für
MERGE-Tabellen (Schlüssel, Mapping,
Erzeugung, Dokumentation und mehr) hinzugefügt. See
Abschnitt 8.2, „MERGE-Tabellen“.
Bug in mysqldump aus Version 3.23
behoben, der dazu führte, dass einige
CHAR-Spalten nicht in Anführungsstrichen
standen.
analyze, check,
optimize und Reparatur-Code
zusammengefasst.
OPTIMIZE TABLE wird jetzt auf
REPAIR mit Statistiken und Sortieren des
Index-Baums gemappt. Das heißt, das es momentan nur auf
MyISAM-Tabellen funktioniert.
Einen pre-alloced Block zu root_malloc hinzugefügt, um weniger mallocs zu erhalten.
Viele neue Statistik-Variablen hinzugefügt.
ORDER BY-Bug bei BDB-Tabellen behoben.
Warnungen entfernt, dass mysqld die
.pid-Datei unter Windows nicht
entfernen konnte.
--log-isam zum Loggen von
MyISAM-Tabellen anstelle
von isam-Tabellen abgeändert.
CHECK TABLE funktioniert jetzt auch unter
Windows.
Datei-mutexes hinzugefügt, um pwrite()
unter Windows sicher zu machen.
mysqld-Variable
created_tmp_disk_tables hinzugefügt.
Um das verlässliche Dumpen und Wiederherstellen von
Tabellen mit TIMESTAMP(X)-Spalten zu
ermöglichen, berichtet MySQL jetzt Spalten mit
X anders als 14 oder 8 als Zeichenketten.
Sortierreihenfolge für latin1 abgeändert im Vergleich zu
MySQL-Version vor 3.23.23. Jede Tabelle mit
CHAR-Spalten, die Zeichen mit
ASCII-Werten größer als 128 enthalten darf, die vor
Version 3.23.22 erzeugt oder geändert wurde, muss repariert
werden!
Kleines Speicherleck behoben, das in Version 3.23.22 beim Einfügen einer temporären Tabelle eingeführt wurde.
Problem mit BDB-Tabellen und Lesen auf einem eindeutigen (nicht primären) Schlüssel behoben.
Der win1251-Zeichensatz wurde wiederhergestellt (er ist jetzt nur als nicht empfohlen gekennzeichnet).
Geänderte Sortierreihenfolge für 'deutsch'; Alle Tabellen
mit 'deutscher' Sortierreihenfolge müssen mit
REPAIR TABLE oder
myisamchk repariert werden, bevor sie
benutzt werden können!
Option --core-file für
mysqld hinzugefügt, um eine Core-Datei
unter Linux zu erhalten, wenn mysqld
durch das SIGSEGV-Signal stirbt.
MySQL-Client mysql startet jetzt
vorgabemäßig mit --no-named-commands
(-g). Diese Option kann mit
--enable-named-commands
(-G) abgeschaltet werden. Das kann in
manchen Fällen Inkompatibilitätsprobleme hervorrufen, zum
Beispiel in SQL-Skripten, die benannte Befehle ohne
Semikolon benutzen! Langformat-Befehle funktionieren immer
noch von der ersten Zeile.
Problem bei der Benutzung vieler anhängiger DROP
TABLE-Statements zugleich behoben.
Der Optimierer verwendete Schlüssel nicht korrekt bei der
Benutzung von LEFT JOIN auf eine leere
Tabelle.
Kürzerer Hilfetext beim Aufruf von
mysqld mit falschen Optionen.
Nicht schwerwiegender free()-Bug in
mysqlimport behoben.
Bug in der MyISAM-Index-Handhabung von
DECIMAL-/NUMERIC-Schlüsseln
behoben.
Bug beim gleichzeitigen Einfügen in
MyISAM-Tabellen behoben; in manchen
Zusammenhängen gab die Benutzung von
MIN(schluessel_teil) oder
MAX(schluessel_teil) eine leere
Ergebnismenge zurück.
mysqlhotcopy für die Benutzung der neuen
FLUSH TABLES tabellen_liste-Syntax
aktualisiert. Nur Tabellen, die gesichert werden, werden
jetzt auf Platte zurückgeschrieben (flush).
Verhalten von --enable-thread-safe-client
so geändert, dass sowohl nicht gethreadete
(-lmysqlclient) als auch gethreadete
(-lmysqlclient_r) Bibliotheken eingebaut
werden. Benutzer, die gegen ein gethreadetes
-lmysqlclient linkten, müssen jetzt
gegen libmysqlclient_r linken.
Atomischer RENAME-Befehl hinzugefügt.
Einträge mit NULL werden in
COUNT(DISTINCT ...) nicht gezählt.
ALTER TABLE, LOAD DATA
INFILE auf leere Tabellen und INSERT ...
SELECT ... auf leere Tabellen so geändert, dass
nicht eindeutige Indexe in einem separaten Stapellauf mit
Sortieren erzeugt werden. Das macht die genannten Aufrufe
viel schneller, wenn Sie viele Indexe haben.
ALTER TABLE loggt jetzt die zuerst
benutzte insert_id korrekt.
Absturz beim Hinzufügen eines Vorgabewerts zu einer
BLOB-Spalte behoben.
Bug bei DATE_ADD/DATE_SUB behoben, der
eine DATETIME anstelle eines DATE zurückgab.
Problem mit dem Thread-Cache behoben, der dazu führte, dass
einige Threads als ***DEAD*** in
SHOW PROCESSLIST erschienen.
Eine Sperre in unserem thr_rwlock-Code beseitigt, die dazu
führen konnte, dass SELECTs, die zur selben Zeit laufen wie
gleichzeitige Einfügevorgänge, abstürzen. Das betrifft
nur Systeme, die nicht den
pthread_rwlock_rdlock-Code haben.
Beim Löschen von Zeilen mit einem nicht eindeutigen Schlüssel in einer HEAP-Tabelle wurden nicht immer alle Zeilen gelöscht.
Bug im Bereichsoptimierer für HEAP-Tabellen bei Suchen auf einem Teil-Index behoben.
SELECT auf Teilschlüsseln funktioniert
jetzt bei BDB-Tabellen.
INSERT INTO bdb_tabelle ... SELECT
funktioniert jetzt bei BDB-Tabellen.
CHECK TABLE aktualisiert jetzt
Schlüsselstatistiken für die Tabelle.
ANALYZE TABLE aktualisiert jetzt nur
Tabellen, die seit dem letzten ANALYZE
geändert wurden. Beachten Sie, dass das ein neues Feature
ist, und dass Tabellen nicht als analysiert gekennzeichnet
werden, bis sie auf irgend eine Weise mit Version 3.23.23
oder neuer aktualisiert wurden. Bei älteren Tabellen
müssen Sie CHECK TABLE ausführen, um
die Schlüsselverteilung zu aktualisieren.
Einige kleinere Berechtigungsprobleme bei
CHECK, ANALYZE,
REPAIR und SHOW CREATE
behoben.
CHANGE MASTER TO-Befehl hinzugefügt.
FAST-, QUICK-
EXTENDED-Überprüfungsarten zu
CHECK TABLES hinzugefügt.
myisamchk abgeändert, so dass
--fast und
--check-changed-tables auch bei
--sort-index und --analyze
berücksichtigt werden.
Schwerwiegenden Bug in LOAD TABLE FROM
MASTER behoben, bei dem die Tabelle während des
Neuaufbaus des Indexes nicht gesperrt wurde.
LOAD DATA INFILE brach die Replikation
ab, wenn die Datenbank aus der Replikation ausgeschlossen
war.
Mehr Variablen zu SHOW SLAVE STATUS und
SHOW MASTER STATUS hinzugefügt.
SLAVE STOP gibt jetzt solange nichts
zurück, bis der Thread tatsächlich beendet ist.
Volltextsuche mit der MATCH-Funktion und
FULLTEXT-Indextyp hinzugefügt (für
MyISAM-Dateien). Das macht FULLTEXT zu
einem reservierten Wort.
lex_hash.h wird jetzt für jede
MySQL-Distribution korrekt erzeugt.
MASTER und COLLECTION
sind jetzt reservierte Wörter.
Die Log-Datei, die von --slow-query-log
erzeugt wird, enthielt nicht die gesamten Anfragen.
Offene Transaktionen in BDB-Tabellen werden jetzt nicht mehr zurückgerollt, wenn die Verbindung unerwartet geschlossen wird.
Workaround für einen Bug in gcc 2.96
(intel) und gcc 2.9 (Ia64) in
gen_lex_hash.c hinzugefügt.
Speicherleck in der Client-Bibliothek bei der Benutzung von
host= in der
my.cnf-Datei behoben.
Funktionen optimiert, die Stunden/Minuten/Sekunden bearbeiten.
Bug beim Vergleich des Ergebnisses von
DATE_ADD()/DATE_SUB()
mit einer Zahl behoben.
Bedeutung von -F, --fast für
myisamchk geändert. Option -C,
--check-only-changed für
myisamchk hinzugefügt.
ANALYZE tabelle zum Aktualisieren von
Schlüsselstatistiken für Tabellen hinzugefügt.
Binäreinheiten 0x... abgeändert, so
dass sie vorgabemäßig als Ganzzahlen betrachtet werden.
Fehlerbehebung für SCO und SHOW
PROCESSLIST.
auto-rehash beim erneuten Verbinden für
den mysql-Client hinzugefügt.
Neu eingeführten Bug in MyISAM behoben,
bei dem die Index-Datei nicht größer als 64 MB werden
durfte.
SHOW MASTER STATUS und SHOW
SLAVE STATUS hinzugefügt.
mysql_character_set_name(MYSQL
*mysql)-Funktion zur MySQL-C-API hinzugefügt.
Update-Log-Datei ASCII 0-sicher gemacht.
mysql_config-Skript hinzugefügt.
Problem bei der Benutzung von < oder
> mit einer CHAR-Spalte, die nur
teilweise indexiert war, behoben.
Man erhielt einen Coredump, wenn die Log-Datei nicht vom MySQL-Benutzer lesbar war.
mysqladmin so geändert, dass es die
CREATE DATABASE/DROP
DATABASE-Befehle anstelle der alten, nicht
empfohlenen API-Aufrufe benutzt.
chown-Warnung in
safe_mysqld in Ordnung gebracht.
Bug in ORDER BY behoben, der in Version
3.23.19 eingeführt wurde.
DELETE FROM tabelle wird nur dann
optimiert, ein Löschen und Neuerzeugen der Tabelle
auszuführen, wenn man sich im
AUTOCOMMIT-Modus befindet (benötigt für
BDB-Tabellen).
Zusätzliche Prüfungen hinzugefügt, um Index-Beschädigung
zu vermeiden, wenn die
ISAM/MyISAM-Index-Dateien
während eines
INSERT/UPDATE voll
werden.
myisamchk aktualisierte die
Zeilenprüfsumme nicht korrekt, wenn es mit
-ro benutzt wurde (sondern gab nur bei
nachfolgenden Läufen eine Warnung aus).
Bug in REPAIR TABLE behoben, so dass es
bei Tabellen ohne Indexe funktioniert.
Puffer-Überlauf in DROP DATABASE
behoben.
LOAD TABLE FROM MASTER ist ausreichend
ohne Bugs, um es als Feature vorstellen zu können.
MATCH und AGAINST sind
jetzt reservierte Wörter.
Bug in Version 3.23.19 behoben; DELETE FROM
tabelle entfernte die .frm-Datei.
SHOW CREATE TABLE.
Copyright für alle Dateien zu GPL für den Server-Code und die Dienstprogramme und LGPL für die Client-Bibliotheken geändert.
Bug behoben, bei dem nicht alle übereinstimmenden Zeilen
bei einer MyISAM-Tabelle aktualisiert
wurden, wenn man eine Aktualisierung basierend auf einem
Schlüssel auf eine Tabelle mit vielen Schlüsseln
durchführte, und sich einige Schlüsselwerte änderten.
Die Linux-MySQL-RPMs und -Binärdateien werden jetzt bei einer Linux-Thread-Version statisch gelinkt, die schnellere mutex-Handhabung bei der Benutzung mit MySQL hat.
ORDER BY kann jetzt
REF-Schlüssel benutzen, um eine
Untermenge von Zeilen zu finden, die sortiert werden
müssen.
Der Name von print_defaults wurde in
my_print_defaults geändert, um
Namenskonflikte zu vermeiden.
NULLIF() funktioniert jetzt gemäß
ANSI-SQL99.
net_read_timeout und
net_write_timeout als Startparameter für
mysqld hinzugefügt.
Bug behoben, der den Index bei der Ausführung von
myisamchk --sort-records auf eine Tabelle
mit Präfix-komprimiertem Index zerstörte.
pack_isam und myisampack zur Standard-MySQL-Distribution hinzugefügt.
Die Syntax BEGIN WORK hinzugefügt
(dasselbe wie BEGIN).
Coredump-Bug bei der Benutzung von ORDER
BY auf CONV()-Ausdruck behoben.
LOAD TABLE FROM MASTER hinzugefügt.
FLUSH MASTER und FLUSH
SLAVE hinzugefügt.
Großes/kleines 'endian'-Problem in der Replikation behoben.
Problem aus Version 3.23.17 bei der Auswahl eines Zeichensatzes auf der Client-Seite behoben.
FLUSH TABLES with READ LOCK geändert, so
dass es eine globale Sperre macht, die für das Herstellen
einer Kopie der MySQL-Daten-Dateien geeignet ist.
CREATE TABLE ... SELECT ... PROCEDURE
funktioniert jetzt.
Interne temporäre Tabellen benutzen jetzt einen
komprimierten Index bei der Benutzung von GROUP
BY auf VARCHAR/CHAR-Spalten.
Problem behoben beim Sperren derselbe Tabelle mit einer
READ- und einer
WRITE-Sperre.
Problem mit myisamchk und RAID-Tabellen
behoben.
Bug in find_in_set() behoben, wenn das
erste Argument NULL war.
Tabellensperren für Berkeley-DB hinzugefügt.
Bug bei LEFT JOIN und ORDER
BY behoben, bei dem die erste Tabelle nur eine
übereinstimmende Zeile hatte.
4 my.cnf-Beispiel-Dateien im
Support-files-Verzeichnis hinzugefügt.
duplicated key-Problem bei der
Ausführung großer GROUP BYs behoben.
(Dieser Bug wurde wahrscheinlich in Version 3.23.15
eingeführt).
Syntax für INNER JOIN geändert, um
ANSI-SQL zu entsprechen.
NATURAL JOIN-Syntax hinzugefügt.
Viele Korrekturen in der
BDB-Schnittstelle.
Handhabung von --no-defaults und
--defaults-file für
safe_mysqld.sh und
mysql_install_db.sh hinzugefügt.
Bug beim Lesen komprimierter Tabellen mit vielen Threads behoben.
USE INDEX funktioniert jetzt mit
PRIMARY-Schlüsseln.
BEGIN-Statement geändert, so dass es
eine Transaktion im AUTOCOMMIT-Modus
startet.
Symbolische-Links-Unterstützung für Windows.
Protokoll geändert, so dass der Client weiß, ob der Server im AUTOCOMMIT- Modus ist und ob es eine anhängige Transaktion gibt. Wenn das der Fall ist, gibt die Client-Bibliothek einen Fehler aus, bevor sie sich wieder mit dem Server verbindet, damit der Client weiß, dass der Server ein Rollback durchgeführt hat. Das Protokoll ist noch abwärtskompatibel mit den alten Clients.
KILL funktioniert jetzt auf einem Thread,
der durch ein 'Schreiben' auf einen toten Client gesperrt
ist.
Speicherleck im Replikations-Slave-Thread behoben.
Neue Option log-slave-updates
hinzugefügt, die das Hintereinanderhängen im Kreis
(Daisy-Chaining, 'Ringelrei') von Slaves erlaubt.
Compile-Fehler auf FreeBSD und anderen Systemen behoben, auf
denen pthread_t nicht dasselbe wie
int ist.
Herunterfahren des Masters bricht den Slave-Thread nicht mehr ab.
Race-Bedingung im INSERT DELAYED-Code
beim Ausführen von ALTER TABLE behoben.
Blockierungsüberprüfung für INSERT
DELAYED hinzugefügt.
Option TYPE=QUICK für
CHECK und REPAIR
hinzugefügt.
Bug in REPAIR TABLE behoben, wenn die
Tabelle durch einen anderen Thread in Benutzung war.
Einen Thread-Cache hinzugefügt, um zu ermöglichen, MySQL
mit gdb zu debuggen, wenn man viele
erneute Verbindungen durchführt. Das verbessert auch
Systeme, auf denen man keine persistenten Verbindungen
benutzen kann.
Viele Korrekturen in der Berkeley-DB-Schnittstelle.
UPDATE IGNORE bricht jetzt nicht mehr ab,
wenn eine Aktualisierung zu einem
DUPLICATE_KEY-Fehler führt.
CREATE TEMPORARY TABLE-Befehle werden in
die Update-Log-Datei geschrieben.
Bug bei der Handhabung von maskierten IP-Nummern in den Berechtigungstabellen behoben.
Bug mit delayed_key_writes-Tabellen und
CHECK TABLE behoben.
replicate-do-db und
replicate-ignore-db-Optionen
hinzugefügt, um auf Datenbanken zu beschränken, die
repliziert werden.
SQL_LOG_BIN-Option hinzugefügt.
Um mysqld als root zu
starten, müssen Sie jetzt die --
user=root-Option benutzen.
Schnittstelle zu Berkeley-DB hinzugefügt. (Diese funktioniert noch nicht richtig. Spielen Sie mit ihr auf eigenes Risiko herum!)
Replikation zwischen Master und Slaves hinzugefügt.
Bug behoben, bei dem ein anderer Thread eine Sperre stehlen
konnte, wenn ein Thread eine Sperre auf eine Tabelle hatte
und einen FLUSH TABLES-Befehl ausführte.
Die slow_launch_time-Variable und die
slow_launch_thread-Status-Variable zu
mysqld hinzugefügt. Diese können mit
mysqladmin variables und
mysqladmin extended-status betrachtet
werden.
Funktionen INET_NTOA() und
INET_ATON() hinzugefügt.
Der vorgabemäßige Typ von IF() hängt
jetzt vom zweiten und dritten Argument ab und nicht nur vom
zweiten.
Fall behoben, bei dem myisamchk beim
Versuch, eine Tabelle zu reparieren, in eine Schleife
geraten konnte.
INSERT DELAYED nicht in die
Update-Log-Datei schreiben, wenn
SQL_LOG_UPDATE=0.
Problem mit REPLACE auf
HEAP-Tabellen behoben.
Mögliche Zeichensätze und Zeitzone zu SHOW
VARIABLES hinzugefügt.
Bug im Sperr-Code behoben, der zu Sperrproblemen bei gleichzeitigen Einfügevorgängen unter hoher Last führen konnte.
Problem bei DELETE vieler Zeilen auf eine
Tabelle mit komprimierten Schlüsseln behoben, bei dem MySQL
den Index scannte, um Zeilen zu finden.
Problem mit CHECK auf Tabelle mit
gelöschten Schlüsselblöcken behoben.
Bug beim Neuverbinden (auf der Client-Seite) behoben, bei dem in manchen Situationen Speicher nicht freigegeben wurde.
Probleme in der Update-Log-Datei bei der Benutzung von
LAST_INSERT_ID() zum Aktualisieren einer
Tabelle mit einem auto_increment-Schlüssel behoben.
Funktion NULLIF() hinzugefügt.
Bug bei der Benutzung von LOAD DATA
INFILE auf eine Tabelle mit
BLOB/TEXT-Spalten behoben.
MyISAM optimiert, um es beim Einfügen von Schlüsseln in sortierter Reihenfolge schneller zu machen.
EXPLAIN SELECT ... gibt jetzt auch aus,
ob MySQL eine temporäre Tabelle oder Dateisortieren
verwendet, wenn das SELECT aufgelöst
wird.
Optimierung hinzugefügt, um ORDER
BY-Teile zu überspringen, bei denen der Teil ein
konstanter Ausdruck im WHERE-Teil ist.
Indexe können jetzt benutzt werden, selbst wenn das
ORDER BY nicht genau mit dem Index
übereinstimmt, solange alle nicht benutzten Index-Teile und
alle zusätzlichen ORDER BY-Spalten
Konstanten in der WHERE-Klausel sind. See
Abschnitt 6.4.3, „Wie MySQL Indexe benutzt“.
UPDATE und DELETE auf
einen gesamten eindeutigen Schlüssel im
WHERE-Teil ist jetzt schneller als
vorher.
RAID_CHUNKSIZE so geändert, dass es in
1024 Bytes inkrementiert.
Coredump in LOAD_FILE(NULL) behoben.
Bug in CONCAT() behoben, bei dem eins der
Argumente eine Funktion war, die ein verändertes Argument
zurückgab.
Kritischen Bug in myisamchk behoben,
wobei es den Header in der Index-Datei aktualisierte, wenn
man die Tabelle nur prüfte. Das brachte den
mysqld-Daemon durcheinander, wenn er
dieselbe Tabelle zur gleichen Zeit aktualisierte. Jetzt wird
der Status in der Index-Datei nur dann aktualisiert, wenn
man --update-state benutzt. Bei älteren
myisamchk-Versionen sollten Sie
--read-only benutzen, wenn Sie Tabellen nur
prüfen, wenn es auch nur die geringste Chance gibt, dass
der mysqld-Server zur gleichen Zeit auf
der Tabelle arbeitet!
DROP TABLE wird nicht mehr in der
Update-Log-Datei geloggt.
Problem beim Suchen auf
DECIMAL()-Schlüsselfeld behoben, wenn
die Spalte Daten mit führenden Nullen enthielt.
Bug in myisamchk behoben, wenn
auto_increment nicht der erste Schlüssel ist.
DATETIME wird im ISO-8601-Format
zugelassen: 2000-03-12T12:00:00
Dynamische Zeichensätze hinzugefügt. Eine
mysqld-Binärdatei kann jetzt viele
unterschiedliche Zeichensätze handhaben (welche, können
Sie beim Start von mysqld angeben).
Befehl REPAIR TABLE hinzugefügt.
C-API-Funktion mysql_thread_safe()
hinzugefügt.
UMASK_DIR-Umgebungsvariable hinzugefügt.
Funktion CONNECTION_ID() hinzugefügt.
Bei der Benutzung von = auf
BLOB- oder VARCHAR
BINARY-Schlüsseln, bei denen nur ein Teil der
Spalte indexiert war, wurde nicht die gesamte Spalte der
Ergebniszeile verglichen.
Problembehebung für sjis-Zeichensatz und ORDER
BY.
Beim Laufenlassen im ANSI-Modus wird nicht mehr zugelassen,
dass Spalten benutzt werden, die nicht im GROUP
BY-Teil angegeben wurden.
Problem behoben bei der Ausführung von Sperren auf dieselbe
Tabelle mehr als zweimal im selben LOCK
TABLE-Befehl. Dadurch wurde das Problem behoben,
das man bekam, wenn man test-ATIS test mit
--fast oder
--check-only-changed laufen ließ.
Option SQL_Puffer_RESULT für
SELECT hinzugefügt.
Leerzeichen am Ende von Double-/Float-Zahlen in Ergebnissen
aus temporären Tabellen entfernt. CHECK
TABLE-Befehl hinzugefügt.
Änderungen für MyISAM in Version 3.23.12 hinzugefügt, die wegen CVS-Problemen nicht in die Quelldistribution gelangten.
Bug behoben, so dass mysqladmin shutdown
darauf wartet, dass der lokale Server herunter fährt.
Mögliche Endlosschleife bei der Zeitstempel-Berechnung repariert.
print_defaults für die
.rpm-Dateien hinzugefügt.
mysqlbug aus der
Client-.rpm-Datei entfernt.
Bug in MyISAM behoben, bei dem
REPLACE ... SELECT ... eine beschädigte
Tabelle ergeben konnte.
Bug in myisamchk behoben, bei dem der
auto_increment-Wert falsch zurückgesetzt wurde.
VIELE Patches für Linux Alpha. MySQL scheint mittlerweile auf Linux Alpha relativ stabil zu laufen.
DISTINCT auf HEAP
temporäre Tabellen so geändert, dass gehashte Schlüssel
verwendet werden, um doppelte Zeilen (Duplikate) schnell zu
finden. Das betrifft meistens Anfragen des Typs
SELECT DISTINCT ... GROUP BY .... Das
behebt ein Problem, bei dem nicht alle Duplikate in Anfragen
des genannten Typs entfernt wurden. Zusätzlich ist der neue
Code VIEL schneller.
Patches hinzugefügt, damit MySQL auf Mac OS X kompiliert.
Option IF NOT EXISTS für CREATE
DATABASE hinzugefügt.
Optionen --all-databases und
--databases für
mysqldump hinzugefügt, um das Dumpen
vieler Datenbanken zugleich zu ermöglichen.
Bug im komprimierten DECIMAL()-Index in
MyISAM-Tabellen behoben.
Bug beim Speichern von 0 in ein Timestamp-Feld behoben.
Beim Ausführen von mysqladmin shutdown
auf eine lokale Verbindung wartet
mysqladmin jetzt, bis die PID-Datei
entfernt ist, bevor es sich beendet.
Coredump bei einigen COUNT(DISTINCT
...)-Anfragen behoben.
myisamchk funktioniert jetzt sauber bei
RAID-Tabellen.
Problem bei LEFT JOIN und
schluessel_feld IS NULL behoben.
Bug in net_clear() behoben, der den
Fehler Aborted connection in
MySQL-Clients ausgeben konnte.
Optionen USE INDEX (schluessel_liste) und
IGNORE INDEX (schluessel_liste) als
Join-Parameter in SELECT hinzugefügt.
DELETE und RENAME
sollten jetzt auf RAID-Tabellen
funktionieren.
ALTER TABLE tabelle ADD
(feld_liste)-Syntax wird zugelassen.
Problem mit dem Optimierer behoben, der manchmal falsche Schlüssel benutzte.
GRANT/REVOKE ALL PRIVILEGES betrifft
jetzt nicht mehr GRANT OPTION.
Zusätzliche Klammer ()) aus der Ausgabe
von SHOW GRANTS entfernt.
Problem beim Speichern von Zahlen in Timestamps behoben.
Problem mit Zeitzonen behoben, die einen Halbstunden-Offset haben.
Syntax UNIQUE INDEX in
CREATE-Statements wird jetzt zugelassen.
mysqlhotcopy hinzugefügt. Das ist ein
schnelles Online-Datensicherungsdienstprogramm für lokale
MySQL-Datenbanken. Von Tim Bunce.
Neues, sichereres mysqlaccess
hinzugefügt. Dank an Steve Harvey hierfür.
Optionen --i-am-a-dummy und
--safe-updates für
mysql hinzugefügt.
Variablen select_limit und
max_join_size für
mysql hinzugefügt.
SQL-Variablen SQL_MAX_JOIN_SIZE und
SQL_SAFE_UPDATES hinzugefügt.
READ LOCAL-Sperre hinzugefügt, die die
Tabelle nicht für gleichzeitige Einfügevorgänge sperrt
(das wird von mysqldump benutzt).
LOCK TABLES ... READ läßt keine
gleichzeitigen Einfügevorgänge mehr zu.
Option --skip-delay-key-write für
mysqld hinzugefügt.
Sicherheitsproblem im Protokoll betreffend Passwortüberprüfung behoben.
_rowid kann jetzt als Alias für eine
eindeutig indexierte Spalte vom Typ Ganzzahl benutzt werden.
Zurück-Blockieren (Back Blocking) für
SIGPIPE beim Kompilieren mit
--thread-safe-clients hinzugefügt, um
Dinge für alte Clients sicher zu machen.
Bug in Version 3.23.9 behoben, bei dem Speicher nicht
korrekt freigegeben wurde, wenn man LOCK
TABLES ausführte.
Problem behoben, dass betroffene Anfragen Berechnungen auf Gruppenfunktionen durchführten.
Problem mit timestamps und INSERT DELAYED
behoben.
datum_spalte BETWEEN konstanten_datum AND
konstanten_datum funktioniert.
Problem behoben, wenn man nur eine 0 zu
NULL in einer Tabelle mit
BLOB/TEXT-Spalten änderte.
Bug im Bereichsoptimierer bei der Benutzung von vielen
Schlüsselteilen und / oder den mittleren Schlüsselteilen
behoben: WHERE K1=1 and K3=2 and (K2=2 and K4=4 or
K2=3 and K4=5)
Befehl source für
mysql hinzugefügt, um Lesen von
Stapeldateien innerhalb des mysql-Clients
zu ermöglichen. Original-Patch von Matthew Vanecek.
Kritisches Problem mit der WITH GRANT
OPTION-Option behoben.
Keinen unnötigen GRANT-Fehler bei der
Benutzung von Tabellen von vielen Datenbanken in derselben
Anfrage ausgeben.
VIO-Wrapper (benötigt für SSL-Unterstützung) hinzugefügt. Von Andrei Errapart und Tõnu Samuel).
Optimiererproblem bei SELECT bei der
Benutzung von vielen überlappenden Indexen behoben. MySQL
sollte jetzt in der Lage sein, Schlüssel noch besser
auszusuchen, wenn es viele Schlüssel zur Auswahl gibt.
Optimierer so geändert, dass er einen Bereichsschlüssel
anstelle eines Verweisschlüssels bevorzugt, wenn der
Bereichsschlüssel mehr Spalten als der Verweisschlüssel
benutzen kann (der nur Spalten mit = verwenden kann).
Folgender Anfragentyp beispielsweise sollte jetzt schneller
sein: SELECT * from schluessel_teil_1=konstante und
schluessel_teil_2 > konstante2
Bug behoben, bei dem eine Änderung aller
VARCHAR-Spalten in
CHAR-Spalten den Spaltentyp nicht von
dynamisch auf fest änderte.
Fließkomma-Ausnahmefehler für FreeBSD abgeschaltet, um
Coredump beim Ausführen von SELECT
floor(pow(2,63)) zu vermeiden.
mysqld-Startoption
--delay-key-write in
--delay-key-write-for-all-tables geändert.
read-next-on-key für
HEAP-Tabellen hinzugefügt. Das sollte
alle Probleme mit HEAP-Tabellen bei der
Benutzung von Nicht-UNIQUE-Schlüsseln
beheben.
Optionen für die Ausgabe vorgabemäßiger Argumente für alle Clients hinzugefügt.
--log-slow-queries für
mysqld hinzugefügt, um alle Anfragen in
einer separate Log-Datei zu loggen, die lange dauerten, mit
einer Zeitangabe, wie lange die Anfrage benötigte.
Coredump bei der Ausführung von WHERE
schluessel_spalte=RAND(...) behoben.
Optimierungs-Bug in SELECT ... LEFT JOIN ...
schluessel_spalte IS NULL behoben, wenn
schluessel_spalte
NULL-Werte enthalten konnte.
Problem mit 8-Bit-Zeichen als Trennzeichen in LOAD
DATA INFILE behoben.
Problem bei der Handhabung von Index-Dateien größer als 8 GB behoben.
neueste Patches für mit-pThread für NetBSD angewandt.
Probleme mit Zeitzonen < GMT - 11 behoben.
Bug beim Löschen komprimierter Schlüssel in
MyISAM behoben.
Problem mit ISAM bei der Ausführung
einiger ORDER BY ... DESC-Anfragen
behoben.
Bug bei der Ausführung eines Joins auf einen Text-Schlüssel behoben, der nicht den gesamten Schlüssel abdeckte.
Option --delay-key-write schaltete
verzögertes Schlüssel-Schreiben nicht an.
Aktualisierung von TEXT-Spalten, die nur
Änderungen der Groß-/Kleinschreibung beinhalteten, in
Ordnung gebracht.
INSERT DELAYED aktualisiert jetzt
Timestamps, die angegeben sind.
Funktion YEARWEEK() und Optionen
x, X,
v und V für
DATE_FORMAT() hinzugefügt.
Problem mit MAX(indexierte_spalte) und
HEAP-Tabellen behoben.
Problem mit BLOB NULL-Schlüsseln und
LIKE "praefix%" behoben.
Problem mit MyISAM und Zeilen fester
Länge < 5 Bytes behoben.
Problem behoben, bei dem es vorkommen konnte, dass MySQL auf
freigegebenen Speicher zugriff, wenn er sehr komplizierte
GROUP BY-Anfragen ausführte.
Coredump behoben, wenn man eine beschädigte Tabelle
erhielt, in der ein ENUM-Feldwert zu
Groß war.
Workaround unter Linux in Ordnung gebracht, um Probleme mit
pthread_mutex_timedwait, was bei
INSERT DELAYED benutzt wird, zu
vermeiden. See Abschnitt 3.6.1, „Linux (alle Linux-Versionen)“.
Man erhält jetzt einen 'disk full'-Fehler, wenn die Festplatten beim Sortieren voll wird (statt darauf zu warten, bis mehr Plattenplatz verfügbar ist).
Bug in MyISAM mit Schlüsseln > 250
Zeichen behoben.
In MyISAM kann man jetzt ein
INSERT zur selben Zeit durchführen, in
der andere Threads aus der Tabelle lesen.
Variable max_write_lock_count für
mysqld hinzugefügt, um eine
READ-Sperre nach einer bestimmten Anzahl
von WRITE-Sperren zu erzwingen.
Flag delayed_key_write bei show
variables invertiert.
Variable concurrency in
thread_concurrency umbenannt.
Folgende Funktionen sind jetzt Multi-Byte-sicher:
LOCATE(teilzeichenfolge,zeichenkette),
POSITION(teilzeichenfolge IN
zeichenkette),
LOCATE(teilzeichenfolge,zeichenkette,position),
INSTR(zeichenkette,teilzeichenfolge),
LEFT(zeichenkette,laenge),
RIGHT(zeichenkette,laenge),
SUBSTRING(zeichenkette,pos,laenge),
SUBSTRING(zeichenkette FROM position FOR
laenge),
MID(zeichenkette,position,laenge),
SUBSTRING(zeichenkette,position),
SUBSTRING(zeichenkette FROM pos),
SUBSTRING_INDEX(zeichenkette,begrenzer,zaehler),
RTRIM(zeichenkette), TRIM([[BOTH
| TRAILING] [entfernzeichenkette] FROM]
zeichenkette),
REPLACE(zeichenkette,from_zeichenkette,to_zeichenkette),
REVERSE(zeichenkette),
INSERT(zeichenkette,pos,laenge,newstr),
LCASE(zeichenkette),
LOWER(zeichenkette),
UCASE(zeichenkette) und
UPPER(zeichenkette). Patch von Wei He.
Coredump beim Aufheben einer Sperre von einer nicht existierenden Tabelle behoben.
Sperren auf Tabellen werden jetzt entfernt, bevor Duplikate entfernt werden.
Option FULL für SHOW
PROCESSLIST hinzugefügt.
Option --verbose für
mysqladmin hinzugefügt.
Problem beim automatischen Umwandeln von HEAP in MyISAM behoben.
Bug in HEAP-Tabellen behoben, wenn man INSERT + DELETE + INSERT + Scannen der Tabelle ausführt.
Bugs auf Alpha mit REPLACE() und
LOAD DATA INFILE behoben.
mysqld-Variable
interactive_timeout hinzugefügt.
Argument für mysql_data_seek() von
ulong zu ulonglong
geändert.
mysqld-Option -O
lower_case_tables={0|1} hinzugefügt, damit
Benutzer Tabellennamen to Kleinschreibung erzwingen können.
SELECT ... INTO DUMPFILE hinzugefügt.
mysqld-Option --ansi
hinzugefügt, um einige Funktionen
ANSI-SQL-kompatibler zu machen.
Temporäre Tabellen fangen jetzt mit #sql
an.
Quoten von Bezeichnern mit `
(" im --ansi-Modus).
Jetzt wird snprintf() bei der Ausgabe von Fließkommazahlen benutzt, um einige Puffer-Überläufe unter FreeBSD zu vermeiden.
[floor() überlaufsicher unter FreeBSD
gemacht.
Option --quote-names für
mysqldump hinzugefügt.
Bug behoben, dass man einen Teil eines PRIMARY KEY
NOT NULL machen konnte.
encrypt() in Ordnung gebracht, um
Thread-sicher zu sein und Puffer nicht erneut zu benutzen.
mysql_odbc_escape_string()-Funktion zur
Unterstützung von big5-Zeichen in MyODBC hinzugefügt.
Die Tabellen-Handler wurden umgeschrieben und benutzen jetzt Klassen. Hierdurch wird viel neuer Code eingeführt, aber die Tabellenhandhabung wird schneller und besser.
Patch von Sasha für benutzerdefinierte Variablen angewandt.
FLOAT und DOUBLE (ohne
jeden Längen-Modifikator) sind jetzt keine festen
Dezimalpunkt-Zahlen mehr.
Die Bedeutung von FLOAT(X) wurde
geändert: Jetzt ist das dasselbe wie
FLOAT, wenn X <= 24, und
DOUBLE, wenn 24 < X <= 53.
DECIMAL(X) ist jetzt ein Alias für
DECIMAL(X,0), und
DECIMAL ist jetzt ein Alias für
DECIMAL(10,0). Dasselbe gilt für
NUMERIC.
Option ROW_FORMAT={default | dynamic | static |
compressed} für CREATE_TABLE
hinzugefügt.
DELETE FROM tabelle funktionierte nicht
auf temporären Tabellen.
Funktion CHAR_LENGTH() geändert, so dass
sie Multi-Byte-Zeichen-sicher ist.
Funktion ORD(zeichenkette) hinzugefügt.
Einige Jahr-2000-Probleme in der neuen Daten-Handhabung in Version 3.23 behoben.
Problem mit SELECT DISTINCT ... ORDER BY
RAND() behoben.
Patches von Sergei A. Golubchik für Textsuche auf MyISAM-Ebene angewandt.
Cache-Überlaufproblem bei der Benutzung von Full Joins ohne Schlüssel behoben.
Einige configure-Probleme bereinigt.
Einige kleine Änderungen, um das Parsen schneller zu machen.
ALTER TABLE + Hinzufügen einer Spalte
nach dem letzten Feld funktionierte nicht.
Problem bei der Benutzung einer auto_increment-Spalte in zwei Schlüsseln behoben.
Bei MyISAM kann man jetzt den auto_increment-Teil als
Untermenge haben: CREATE TABLE foo (a int not null
auto_increment, b char(5), primary key (b,a))
Bug in MyISAM mit komprimierten CHAR-Schlüsseln, die
NULL sein konnten, behoben.
AS auf Feldname mit CREATE TABLE
tabelle SELECT ... funktionierte nicht.
Benutzung von NATIONAL und
NCHAR bei der Definition von
Zeichenspalten wird zugelassen. Das ist dasselbe, als wenn
man BINARY nicht benutzt.
Keine NULL-Spalten in einem
PRIMARY KEY zulassen (nur in
UNIQUE-Schlüsseln).
LAST_INSERT_ID wird gelöscht (clear),
wenn man diese in ODBC benutzt: WHERE
auto_increment_spalte IS NULL. Das scheint einige
Probleme mit Access zu beheben.
SET SQL_AUTO_IS_NULL=0|1 schaltet jetzt
die Handhabung von Suchen nach der letzten eingefügten
Zeile bei WHERE auto_increment_spalte IS
NULL aus / an.
Neue mysqld-Variable
concurrency für Solaris hinzugefügt.
Option --relative für
mysqladmin hinzugefügt, um mit
extended-status eine bessere Beobachtung
von Änderungen zu erzielen.
Bug bei der Benutzung von COUNT(DISTINCT
...) auf eine leere Tabelle behoben.
Unterstützung für den chinesischen Zeichensatz GBK hinzugefügt.
Problem mit LOAD DATA INFILE und
BLOB-Spalten behoben.
Bit-Operator ~ (Negation) hinzugefügt.
Problem mit UDF-Funktionen behoben.
Einfügen eines DATETIME-Werts in eine
TIME-Spalte versucht jetzt nicht mehr,
darin 'Tage' zu speichern.
Problem mit der Speicherung von Float / Double auf kleinen
Endian-Maschinen behoben (das betraf
SUM()).
Verbindungs-Zeitüberschreitung (Timeout) auf TCP/IP-Verbindungen hinzugefügt.
Problem mit LIKE "%" auf einem Index, der
NULL-Werte enthalten darf, behoben.
REVOKE ALL PRIVILEGES widerrief nicht
alle Berechtigungen.
Erzeugung temporärer Tabellen mit demselben Namen wie die Original-Tabelle wird zugelassen.
Wenn man einem Benutzer eine Berechtigungsoption (Grant Option) für eine Datenbank gewährte, konnte er die Berechtigungen nicht an andere Benutzer weitergeben.
Neuer Befehl SHOW GRANTS FOR benutzer
hinzugefügt (von Sinisa).
Neue date_add-Syntax
date/datetime + INTERVAL # intervall_typ
hinzugefügt. Von Joshua Chamas.
Berechtigungsüberprüfung für LOAD DATA
REPLACE in Ordnung gebracht.
Automatische Reparatur beschädigter Include-Dateien auf Solaris 2.7 hinzugefügt.
Einige configure-Probleme behoben, um Probleme bei der Erkennung großer Dateisysteme zu beheben.
REGEXP ist jetzt unabhängig von der
verwendeten Groß-/Kleinschreibung, wenn Sie nicht binäre
Zeichenketten verwenden.
Patches für MIT-pThread auf NetBSD angewandt.
Bereichs-Bug in MyISAM behoben.
ASC ist jetzt wieder Vorgabe für
ORDER BY.
LIMIT für UPDATE
hinzugefügt.
Neue Client-Funktion mysql_change_user()
hinzugefügt.
Zeichensatz zu SHOW VARIABLES
hinzugefügt.
Unterstützung von --[leerraum]-Kommentaren
hinzugefügt.
INSERT into tabelle VALUES () wird
zugelassen. Das heißt, Sie können jetzt eine leere
Wertliste angeben, die in eine Zeile eingefügt wird, und in
der jede Spalte auf ihren Vorgabewert gesetzt wird.
SUBSTRING(text FROM position) geändert,
um ANSI-SQL-kompatibel zu sein. (Vorher gab dieses Konstrukt
das rechteste 'position'-Zeichen zurück.)
SUM() mit GROUP BY gab
auf manchen Systemen 0 zurück.
Ausgabe bei SHOW TABLE STATUS geändert.
DELAY_KEY_WRITE-Option für
CREATE TABLE hinzugefügt.
AUTO_INCREMENT wird für jeden beliebigen
Schlüsselteil zugelassen.
Problem mit YEAR(NOW()) und
YEAR(CURDATE()) behoben.
CASE-Konstrukt hinzugefügt.
Neue Funktion COALESCE() hinzugefügt.
Bereichsoptimierer-Bug behoben: SELECT * FROM
tabelle WHERE schluessel_teil1 >= konstante AND
(schluessel_teil2 = konstante OR schluessel_teil2 =
konstante). Der Bug bestand darin, dass manche
Zeilen im Ergebnis doppelt auftauchen konnten.
Das Laufenlassen von myisamchk ohne
-a aktualisierte die Index-Verteilung
falsch.
SET SQL_LOW_PRIORITY_UPDATES=1 gab vorher
einen Parser-Fehler.
Sie können jetzt Spalten indexieren, die in der
WHERE-Klausel benutzt werden.
UPDATE tabelle SET KEY=KEY+1 WHERE KEY >
100
Datums-Handhabung sollte jetzt etwas schneller sein.
Handhabung von 'fuzzy' Datumsangaben möglich (Datumsangaben, bei denen der Tag oder der Monat 0 sind, wie 1999-01-00).
Optimierung von SELECT ... WHERE
schluessel_teil1=konstante1 AND schluessel_teil_2=konstante2
AND schluessel_teil1=konstante4 AND
schluessel_teil2=konstante4 in Ordnung gebracht.
Indextyp sollte range anstelle von
ref sein.
egcs-1.1.2-Optimierer-Bug behoben (bei
der Benutzung von BLOBs) auf Linux Alpha.
Problem mit LOCK TABLES in Kombination
mit DELETE FROM tabelle behoben.
MyISAM-Tabellen lassen jetzt Schlüssel auf
NULL und
BLOB/TEXT-Spalten zu.
Folgender Join ist jetzt viel schneller: SELECT ...
FROM t1 LEFT JOIN t2 ON ... WHERE t2.nicht_null_spalte IS
NULL.
ORDER BY und GROUP BY
können jetzt auf Funktionen angewendet werden.
Handhabung von 'konstante' geändert, um Handhabung von
ORDER BY RAND() zu gestatten.
Indexe werden jetzt für WHERE schluessel_spalte =
funktion benutzt.
Indexe werden jetzt für WHERE schluessel_spalte =
spalten_name benutzt, selbst wenn die Spalten
nicht identisch komprimiert sind.
Indexe werden jetzt für WHERE spalten_name IS
NULL benutzt.
HEAP-Tabellen so geändert, dass in der Reihenfolge niedriges Byte zuerst gespeichert wird (um es zu erleichtern, MyISAM-Tabellen zu konvertieren).
Automatische Änderung temporärer HEAP-Tabellen in MyISAM-Tabellen im Falle von 'table is full'-Fehlern.
Option --init-file=datei für
mysqld hinzugefügt.
COUNT(DISTINCT wert, [wert, ...])
hinzugefügt.
CREATE TEMPORARY TABLE erzeugt jetzt eine
temporäre Tabelle in ihrem eigenen Namensraum, die
automatisch gelöscht wird, wenn die Verbindung beendet
wird.
Neue reservierte Wörter (erforderlich für
CASE): CASE, THEN, WHEN, ELSE
und END.
Neue Funktionen EXPORT_SET() und
MD5() hinzugefügt.
Unterstützung für den GB2312 chinesischen Zeichensatz hinzugefügt.
Eine neue Tabellen-Handler-Bibliothek
(MyISAM) mit vielen neuen Features
hinzugefügt. See Abschnitt 8.1, „MyISAM-Tabellen“.
Sie können HEAP-Tabellen im
Hauptspeicher erzeugen, die zum Nachschlagen extrem schnell
sind.
Unterstützung für große Dateien (63-Bit) auf Systemen, die große Dateien unterstützen, hinzugefügt.
Neue Funktion LOAD_FILE(datei)
hinzugefügt, um die Inhalte einer Datei als
Zeichenkettenwert zu erhalten.
Neuer Operator <=> hinzugefügt,
der wie = funktioniert, aber WAHR (true)
zurückgibt, wenn beide Argumente NULL
sind. Das ist nützlich, um Änderungen zwischen Tabellen zu
vergleichen.
ODBC-3.0-EXTRACT(intervall FROM
datetime)-Funktion hinzugefügt.
Spalten, die als FLOAT(X) definiert sind,
werden beim Speichern nicht gerundet und dürfen beim Abruf
in wissenschaftlicher Notation sein (1.0 E+10).
REPLACE ist jetzt schneller als vorher.
LIKE-Zeichenvergleiche geändert, so dass
sie sich wie = verhalten. Das heißt,
dass 'e' LIKE 'é' jetzt WAHR (true) ist
(falls hier etwas nicht richtig angezeigt wird: Das
letztgenannte 'e' ist das französische 'e' mit Akzent).
SHOW TABLE STATUS gibt eine Menge an
Informationen über die Tabellen zurück.
LIKE für den SHOW
STATUS-Befehl hinzugefügt.
Berechtigungsspalte zu SHOW COLUMNS
hinzugefügt.
Spalten packed und
comment für SHOW
INDEX hinzugefügt.
Kommentare zu Tabellen (mit CREATE TABLE ...
COMMENT "kommentar") hinzugefügt.
UNIQUE, wie bei CREATE TABLE
tabelle (spalte int not null UNIQUE),
hinzugefügt.
Neue CREATE-Syntax: CREATE TABLE tabelle SELECT
...
Neue CREATE-Syntax: CREATE TABLE IF NOT EXISTS
...
Die Erzeugung von CHAR(0)-Spalten wird
zugelassen.
DATE_FORMAT() erfordert jetzt
‘%’ vor jeglichem
Formatierungszeichen.
DELAYED ist jetzt ein reserviertes Wort
(tut uns leid :( ).
Eine Beispiel-Prozedur wurde hinzugefügt:
analyse, Datei:
sql_analyse.c. Diese beschreibt die
Daten in Ihrer Anfrage. Probieren Sie folgendes:
SELECT ... FROM ... WHERE ... PROCEDURE ANALYSE([max elemente,[max speicher]])
Diese Prozedur ist extrem nützlich, wenn Sie die Daten in Ihrer Tabelle prüfen wollen!
BINARY-Cast, um zu erzwingen, dass eine
Zeichenkette abhängig von der verwendeten
Groß-/Kleinschreibung verglichen wird.
Option --skip-show-database für
mysqld hinzugefügt.
Das Prüfen, ob sich eine Zeile bei einem
UPDATE geändert hat, funktioniert jetzt
auch bei
BLOB-/TEXT-Spalten.
Die INNER-Join-Syntax wurde hinzugefügt.
HINWEIS: Hierdurch wurde
INNER zu einem reservierten Wort!
Unterstützung für Netmasks zum Hostname in den
MySQL-Tabellen hinzugefügt. Sie können eine Netmask mit
der IP/NETMASK-Syntax angeben.
Wenn Sie eine NOT NULL
DATE/DATETIME-Spalte mit IS
NULL vergleichen, wird das zu einem Vergleich auf
0 geändert, um einige ODBC-Applikationen
zufrieden zu stellen (von <shreeve@uci.edu>).
NULL IN (...) gibt jetzt
NULL anstelle von 0
zurück. Das stellt sicher, dass null_spalte NOT IN
(...) nicht mit NULL-Werten
übereinstimmt.
Speicherung von Fließkommawerten in
TIME-Spalten in Ordnung gebracht.
Das Parsen von TIME-Zeichenketten
geändert, so dass es strenger ist. Jetzt wird der
Bruchteil-Sekunden-Teil erkannt (und momentan noch
übergangen). Folgende Formate werden unterstützt:
[[DAYS] [H]H:]MM:]SS[.bruchteil] ,
[[[[[H]H]H]H]MM]SS[.bruchteil]
Erkennen (und Ignorieren) des zweiten Bruchteil-Anteils von
DATETIME hinzugefügt.
LOW_PRIORITY-Attribut für LOAD
DATA INFILE hinzugefügt.
Der vorgabemäßige Index-Name benutzt jetzt dieselbe Groß-/Kleinschreibung wie der benutzte Spaltenname.
Vorgabemäßige Anzahl von Verbindungen auf 100 geändert.
Bei der Benutzung von LOAD DATA INFILE
werden größere Puffer verwendet.
DECIMAL(x,y) funktioniert jetzt gemäß
ANSI-SQL.
Aggregat-UDF-Funktionen. Dank an Andreas F. Bobak
<bobak@relog.ch> hierfür!
LAST_INSERT_ID() wird jetzt bei
INSERT INTO ... SELECT aktualisiert.
Einige kleinere Änderungen am Join-Tabellenoptimierer, um einige Joins schneller zu machen.
SELECT DISTINCT ist viel schneller. Es
benutzt die neue UNIQUE-Funktionalität
in MyISAM. Ein Unterschied im Vergleich
zur MySQL-Version 3.22 besteht darin, dass die Ausgabe von
DISTINCT nicht mehr sortiert wird.
Alle C-Client-API-Makros sind jetzt Funktionen, um die
gemeinsam genutzten (shared) Bibliotheken verlässlicher zu
machen. Deswegen können Sie nicht mehr
mysql_num_fields() auf ein
MYSQL-Objekt aufrufen, sondern müssen
statt dessen mysql_field_count()
benutzen.
Benutzung von LIBEWRAP; Patch von Henning
P. Schmiedehausen.
AUTO_INCREMENT wird nur noch für
numerische Spalten zugelassen.
Durch die Verwendung von AUTO_INCREMENT
wird die Spalte automatisch NOT NULL.
NULL wird als Vorgabewert für
AUTO_INCREMENT-Spalten angezeigt.
SQL_BIG_RESULT;
SQL_SMALL_RESULT ist jetzt Vorgabe.
Ein gemeinsam genutztes (shared) Bibliothek-RPM hinzugefügt. Diese Verbesserung wurde von David Fox (dsfox@cogsci.ucsd.edu) beigesteuert.
Ein
--enable-large-files/--disable-large-files-Schalter
zu configure hinzugefügt. Siehe
configure.in wegen mancher Systeme, auf
denen dies wegen nicht funktionierender Implementation
automatisch abgeschaltet ist.
readline für Version 4.0 aktualisiert.
Neue CREATE TABLE-Optionen:
PACK_KEYS und
CHECKSUM.
mysqld-Option
--default-table-type hinzugefügt.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.