Anhang C. MySQL-Änderungsverlauf (Change History)

Inhaltsverzeichnis

C.1. Änderungen in Release 4.0.x (Entwicklung; Alpha)
C.1.1. Änderungen in Release 4.0.2
C.1.2. Änderungen in Release 4.0.1
C.1.3. Änderungen in Release 4.0.0
C.2. Änderungen in Release 3.23.x (Stabil)
C.2.1. Änderungen in Release 3.23.43
C.2.2. Änderungen in Release 3.23.42
C.2.3. Änderungen in Release 3.23.41
C.2.4. Änderungen in Release 3.23.40
C.2.5. Änderungen in Release 3.23.39
C.2.6. Änderungen in Release 3.23.38
C.2.7. Änderungen in Release 3.23.37
C.2.8. Änderungen in Release 3.23.36
C.2.9. Änderungen in Release 3.23.35
C.2.10. Änderungen in Release 3.23.34a
C.2.11. Änderungen in Release 3.23.34
C.2.12. Änderungen in Release 3.23.33
C.2.13. Änderungen in Release 3.23.32
C.2.14. Änderungen in Release 3.23.31
C.2.15. Änderungen in Release 3.23.30
C.2.16. Änderungen in Release 3.23.29
C.2.17. Änderungen in Release 3.23.28
C.2.18. Änderungen in Release 3.23.27
C.2.19. Änderungen in Release 3.23.26
C.2.20. Änderungen in Release 3.23.25
C.2.21. Änderungen in Release 3.23.24
C.2.22. Änderungen in Release 3.23.23
C.2.23. Änderungen in Release 3.23.22
C.2.24. Änderungen in Release 3.23.21
C.2.25. Änderungen in Release 3.23.20
C.2.26. Änderungen in Release 3.23.19
C.2.27. Änderungen in Release 3.23.18
C.2.28. Änderungen in Release 3.23.17
C.2.29. Änderungen in Release 3.23.16
C.2.30. Änderungen in Release 3.23.15
C.2.31. Änderungen in Release 3.23.14
C.2.32. Änderungen in Release 3.23.13
C.2.33. Änderungen in Release 3.23.12
C.2.34. Änderungen in Release 3.23.11
C.2.35. Änderungen in Release 3.23.10
C.2.36. Änderungen in Release 3.23.9
C.2.37. Änderungen in Release 3.23.8
C.2.38. Änderungen in Release 3.23.7
C.2.39. Änderungen in Release 3.23.6
C.2.40. Änderungen in Release 3.23.5
C.2.41. Änderungen in Release 3.23.4
C.2.42. Änderungen in Release 3.23.3
C.2.43. Änderungen in Release 3.23.2
C.2.44. Änderungen in Release 3.23.1
C.2.45. Änderungen in Release 3.23.0

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!

C.1. Änderungen in Release 4.0.x (Entwicklung; Alpha)

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)“.

C.1.1. Änderungen in Release 4.0.2

  • 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.

C.1.2. Änderungen in Release 4.0.1

  • 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.

C.1.3. Änderungen in Release 4.0.0

  • 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.

C.2. Änderungen in Release 3.23.x (Stabil)

C.2.1. Änderungen in Release 3.23.43
C.2.2. Änderungen in Release 3.23.42
C.2.3. Änderungen in Release 3.23.41
C.2.4. Änderungen in Release 3.23.40
C.2.5. Änderungen in Release 3.23.39
C.2.6. Änderungen in Release 3.23.38
C.2.7. Änderungen in Release 3.23.37
C.2.8. Änderungen in Release 3.23.36
C.2.9. Änderungen in Release 3.23.35
C.2.10. Änderungen in Release 3.23.34a
C.2.11. Änderungen in Release 3.23.34
C.2.12. Änderungen in Release 3.23.33
C.2.13. Änderungen in Release 3.23.32
C.2.14. Änderungen in Release 3.23.31
C.2.15. Änderungen in Release 3.23.30
C.2.16. Änderungen in Release 3.23.29
C.2.17. Änderungen in Release 3.23.28
C.2.18. Änderungen in Release 3.23.27
C.2.19. Änderungen in Release 3.23.26
C.2.20. Änderungen in Release 3.23.25
C.2.21. Änderungen in Release 3.23.24
C.2.22. Änderungen in Release 3.23.23
C.2.23. Änderungen in Release 3.23.22
C.2.24. Änderungen in Release 3.23.21
C.2.25. Änderungen in Release 3.23.20
C.2.26. Änderungen in Release 3.23.19
C.2.27. Änderungen in Release 3.23.18
C.2.28. Änderungen in Release 3.23.17
C.2.29. Änderungen in Release 3.23.16
C.2.30. Änderungen in Release 3.23.15
C.2.31. Änderungen in Release 3.23.14
C.2.32. Änderungen in Release 3.23.13
C.2.33. Änderungen in Release 3.23.12
C.2.34. Änderungen in Release 3.23.11
C.2.35. Änderungen in Release 3.23.10
C.2.36. Änderungen in Release 3.23.9
C.2.37. Änderungen in Release 3.23.8
C.2.38. Änderungen in Release 3.23.7
C.2.39. Änderungen in Release 3.23.6
C.2.40. Änderungen in Release 3.23.5
C.2.41. Änderungen in Release 3.23.4
C.2.42. Änderungen in Release 3.23.3
C.2.43. Änderungen in Release 3.23.2
C.2.44. Änderungen in Release 3.23.1
C.2.45. Änderungen in Release 3.23.0

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.

C.2.1. Änderungen in Release 3.23.43

  • 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.

C.2.2. Änderungen in Release 3.23.42

  • 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.

C.2.3. Änderungen in Release 3.23.41

  • 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.

C.2.4. Änderungen in Release 3.23.40

  • 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.

C.2.5. Änderungen in Release 3.23.39

  • 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.

C.2.6. Änderungen in Release 3.23.38

  • 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.

C.2.7. Änderungen in Release 3.23.37

  • 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.

C.2.8. Änderungen in Release 3.23.36

  • 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.

C.2.9. Änderungen in Release 3.23.35

  • 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.

C.2.10. Änderungen in Release 3.23.34a

  • Zusätzliche Dateien zur Distribution hinzugefügt, die es ermöglichen, mit INNOBASE-Unterstützung zu kompilieren.

C.2.11. Änderungen in Release 3.23.34

  • 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.

C.2.12. Änderungen in Release 3.23.33

  • 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.

C.2.13. Änderungen in Release 3.23.32

  • 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.

C.2.14. Änderungen in Release 3.23.31

  • 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.

C.2.15. Änderungen in Release 3.23.30

  • 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.

C.2.16. Änderungen in Release 3.23.29

  • 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 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.

C.2.17. Änderungen in Release 3.23.28

  • 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.

C.2.18. Änderungen in Release 3.23.27

  • 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.

C.2.19. Änderungen in Release 3.23.26

  • <> 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.

C.2.20. Änderungen in Release 3.23.25

  • 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.

C.2.21. Änderungen in Release 3.23.24

  • 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).

C.2.22. Änderungen in Release 3.23.23

  • 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.

C.2.23. Änderungen in Release 3.23.22

  • 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.

C.2.24. Änderungen in Release 3.23.21

  • 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.

C.2.25. Änderungen in Release 3.23.20

  • Bug in Version 3.23.19 behoben; DELETE FROM tabelle entfernte die .frm-Datei.

  • SHOW CREATE TABLE.

C.2.26. Änderungen in Release 3.23.19

  • 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.

C.2.27. Änderungen in Release 3.23.18

  • 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.

C.2.28. Änderungen in Release 3.23.17

  • 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.

C.2.29. Änderungen in Release 3.23.16

  • 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.

C.2.30. Änderungen in Release 3.23.15

  • 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.

C.2.31. Änderungen in Release 3.23.14

  • 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.

C.2.32. Änderungen in Release 3.23.13

  • 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.

C.2.33. Änderungen in Release 3.23.12

  • 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.

C.2.34. Änderungen in Release 3.23.11

  • 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.

C.2.35. Änderungen in Release 3.23.10

  • Bug in Version 3.23.9 behoben, bei dem Speicher nicht korrekt freigegeben wurde, wenn man LOCK TABLES ausführte.

C.2.36. Änderungen in Release 3.23.9

  • 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.

C.2.37. Änderungen in Release 3.23.8

  • 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.

C.2.38. Änderungen in Release 3.23.7

  • 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.

C.2.39. Änderungen in Release 3.23.6

  • 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.

C.2.40. Änderungen in Release 3.23.5

  • 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.

C.2.41. Änderungen in Release 3.23.4

  • 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.

C.2.42. Änderungen in Release 3.23.3

  • 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.

C.2.43. Änderungen in Release 3.23.2

  • 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.

C.2.44. Änderungen in Release 3.23.1

  • Einige Kompilierungsprobleme behoben.

C.2.45. Änderungen in Release 3.23.0

  • 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 ).

  • 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 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.