
Dieser Anhang listet die Änderungen von Version zu Version im MySQL-Quellcode auf.
Beachten Sie, dass wir versuchen, das Handbuch zeitgleich mit den Änderungen an MySQL zu aktualisieren. Wenn Sie unten eine Version aufgelistet sehen, die Sie auf der MySQL-Download-Seite nicht finden können, heißt das, dass die Version noch nicht veröffentlicht wurde!
Wir arbeiten mittlerweile aktiv an MySQL 4.0 und werden nur noch kritische Bug-Bereinigungen für MySQL 3.23 herausgeben. Wir aktualisieren diesen Abschnitt, wenn wir neue Features hinzufügen, so dass andere unserer Entwicklung folgen können.
Unser TODO-Abschnitt enthält, was wir für 4.0 planen. See section 2.8 MySQL und die Zukunft (das TODO).
FLUSH QUERY CACHE behoben.
CAST()- und CONVERT()-Funktionen hinzugefügt.
Null und Index_type zu SHOW INDEX
hinzugefügt.
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.
LOAD DATA FROM MASTER auf OSF1 behoben.
des_encrypt() und des_decrypt() hinzugefügt.
--des-key-file hinzugefügt.
HEX(string) gibt jetzt die Buchstaben in der Zeichenkette
konvertiert in hexadezimal zurück.
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.
SELECT-Anfragen
zwischenspeichert.
MATCH ... AGAINST(... IN BOOLEAN MODE) funktioniert jetzt auch ohne
FULLTEXT-Index.
FULLTEXT-Indexen hinzugefügt.
DELETE ... WHERE ... MATCH ... behoben.
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.
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.
MODIFY und CHANGE in ALTER TABLE erweitert, damit sie
das AFTER-Schlüsselwort akzeptieren.
ORDER BY von einer ganzen InnoDB-Tabelle
verwendet.
ft_min_word_len, ft_max_word_len und
ft_max_word_len_for_sort hinzugefügt.
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.
BIGINT-Konstanten funktionieren jetzt. MIN()
und MAX() handhabt vorzeichenbehaftete und vorzeichenlose
BIGINT-Zahlen korrekt.
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.
UNION hinzugefügt.
HANDLER-Schnittstelle zu MyISAM-Tabellen.
INSERT auf MERGE-Tabellen hinzugefügt.
Patch von Benjamin Pflugmann.
WEEK(#,0) dem Kalender in den USA angepasst.
COUNT(DISTINCT) ist etwa 30% schneller.
myisam_bulk_insert_tree_size-Variable zu beschleunigen.
CHAR/VARCHAR)-Schlüsseln ist jetzt
viel schneller.
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.
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.
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.
X'Hexadezimalzahl' wird zugelassen.
FLUSH TABLES with READ LOCK aufgeräumt.
DATETIME = constant in WHERE-Optimierungen
behoben.
Das 3.23-Release hat etliche wichtige Features, die in früheren Versionen nicht vorhanden sind. Es wurden drei neue Tabellentypen hinzugefügt:
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.
EXPLAIN SELECT mit vielen Tabellen und ORDER BY
ausführt.
LOAD DATA FROM MASTER bei der Benutzung einer Tabelle mit
CHECKSUM=1 behoben.
BDB-Tabellen und UNIQUE-Spalten, die als
NULL definiert wurden, behoben.
myisampack bei der Benutzung von CHAR-Spalten, die
Leerzeichen aufgefüllt wurden, behoben.
--safe-user-create behoben.
LOCK TABLES und BDB-Tabellen
behoben.
REPAIR TABLE auf MyISAM-Tabellen mit Zeilenlängen
zwischen 65517 und 65520 Bytes behoben.
mysqladmin shutdown behoben, wenn es viel
Aktivität auf einem anderen Thread gab.
INSERT DELAYED behoben, bei dem ein verzögerter Thread
auf Upgrade locks ohne ersichtlichen Grund hängen konnte.
myisampack und BLOB behoben.
.MRG-Tabellen von Hand behoben.
(Patch von Benjamin Pflugmann).
MERGE-Tabelle von
derselben Datenbank kommen.
LOAD DATA INFILE und transaktionalen Tabellen behoben.
INSERT DELAYED mit falschen
Spaltendefinitionen behoben.
REPAIR besonders beschädigter Tabellen behoben.
InnoDB- und AUTO_INCREMENT-Spalten behoben.
InnoDB und RENAME TABLE-Spalten behoben.
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.
InnoDB behoben, bei dem man den Fehler Can't
execute the given command... bekommen konnte, selbst wenn man keine aktive
Transaktion hatte.
ALTER TABLE zu beheben). --lower_case_names
funktioniert jetzt auch unter Unix.
--sql-mode=option[,option[,option]] hinzugefügt.
See section 5.1.1 mysqld-Kommandozeilenoptionen.
shutdown auf Solaris behoben, wobei die
`.pid'-Datei nicht gelöscht wurde.
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.
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.
ORDER BY behoben, bei dem einige ORDER
BY-Teile fälschlicherweise entfernt wurden.
ALTER TABLE und MERGE-Tabellen behoben.
my_thread_init() und my_thread_end() zu
`mysql_com.h' hinzugefügt.
--safe-user-create to mysqld hinzugefügt.
SELECT DISTINCT ... HAVING behoben, der die Fehlermeldung
Can't find record in '#... verursachte.
--low-priority-updates und INSERT's behoben.
slave_wait_timeout für Replikation hinzugefügt.
UPDATE und BDB-Tabellen behoben.
BDB-Tabellen behoben, der bei der Benutzung
von Schlüsselteilen auftrat.
GRANT FILE ON datenbank.* ... behoben.
Vorher wurde die DROP-Berechtigung für die Datenbank hinzugefügt.
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.
SIGHUP an mysqld schickt, werden jetzt nur die Logs
auf Platte zurückgeschrieben (flush), nicht die Replikation zurückgesetzt.
1.0e1 (kein Vorzeichen nach e) zuläßt.
--force für myisamchk aktualisiert jetzt auch Zustände
(Status).
--warnings für mysqld hinzugefügt. mysqld gibt
jetzt nur den Fehler Aborted connection aus, wenn diese Option
benutzt wird.
SHOW CREATE TABLE behoben, wenn man keinen PRIMARY
KEY hatte.
innodb_unix_file_flush_method
in innodb_flush_method.
UNSIGNED BIGINT in DOUBLE behoben.
Dieser verursachte bei Vergleichen mit BIGINT-Werten ausserhalb des
vorzeichenbehafteten Bereichs ein Problem.
BDB-Tabellen behoben, wenn man leere Tabellen abfragte.
COUNT(DISTINCT) mit LEFT JOIN
behoben, wenn es keine übereinstimmenden Zeilen gab.
GEMINI-Tabellen entfernt. GEMINI
wird nicht unter einer Open-Source-Lizenz herausgegeben.
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.
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.
LOAD TABLE FROM MASTER
fehlschlug.
myisamchk --fast --force repariert jetzt keine Tabellen mehr, bei
denen nur der Öffnen-Zähler falsch ist.
-lcma-Thread-Bibliothek unter HP-UX 10.20, so
dass MySQL auf HP-UX stabiler läuft.
IF() und Anzahl von Dezimalstellen im Ergebnis behoben.
INSERT DELAYED auf ein LOCK
TABLE wartete, behoben.
MERGE-Tabellen und großen Tabellen (> 4 GB) und der
Benutzung von ORDER BY behoben.
SELECT von MERGE-Tabellen manchmal zu
falsch sortierten Zeilen führte.
REPLACE() bei der Benutzung des ujis-Zeichensatzes behoben.
--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.
CONCURRENT für LOAD DATA hinzugefügt.
max_allowed_packet-Variable zu
niedrig ist, um ein sehr langes Log-Ereignis vom Master zu lesen.
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.
WHERE benutzt
wurde, das keine Zeilenübereinstimmung ergab.
mysqlcheck.
CHECK,
REPAIR, OPTIMIZE hinzugefügt.
SELECT * FROM
tabelle,tabelle2 ... ORDER BY schluessel_teil1 LIMIT # den Index auf
schluessel_teil1 anstelle von filesort benutzen.
LOCK TABLE to_table WRITE,...; INSERT INTO
to_table... SELECT ... behoben, wenn to_table leer war.
LOCK TABLE und BDB-Tabellen behoben.
MATCH in HAVING-Klausel.
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!
CHAR(255) NULL-Spalten
behoben.
master-host nicht
gesetzt ist, so lange server-id gesetzt wird und es eine gültige
master.info gibt.
SET
SQL_SLAVE_SKIP_COUNTER=1; SLAVE START wieder dazu veranlasst werden,
nachdem eine manuelle Überprüfung / Korrektur der Datenintegrität
durchgeführt wurde.
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.
TEXT/BLOB-Spalten mit falschem Datumsformat behoben.
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.
FLUSH oder REPAIR warteten), die für die nächste
Anfrage keine Indexe benutzten.
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.
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.
mysqld unter
dem Benutzer root laufen läßt.
FLUSH TABLES und TEMPORARY-Tabellen
behoben. (Problem mit dem Freisetzen des Schlüssel-Cache und Fehler
Can't reopen table...).
latin1 und ein
anderes Problem bei der Benutzung von vielen Spalten behoben.
DISTINCT und Summenfunktionen verursachte.
SET TRANSACTION ISOLATION LEVEL ... hinzugefügt.
SELECT ... FOR UPDATE hinzugefügt.
MySQL ohne Transaktionsunterstützung kompiliert wurde.
UPDATE behoben, bei dem nicht immer Schlüssel benutzt wurden,
um die zu aktualisierenden Zeilen zu finden.
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.)
ORDER BY behoben.
CLIENT_TRANSACTIONS behoben.
SHOW VARIABLES bei der Benutzung von INNOBASE-Tabellen
behoben.
SELECT DISTINCT
funktionierte nicht.
SHOW ANALYZE für kleine Tabellen verbessert.
INNOBASE-Unterstützung zu kompilieren.
INNOBASE-Tabellen-Handler und BDB-Tabellen-Handler zur
MySQL-Quelldistribution hinzugefügt.
GEMINI-Tabellen aktualisiert.
INSERT DELAYED behoben, der den Thread zum Hängen brachte,
wenn NULL in eine AUTO_INCREMENT-Spalte eingefügt wurde.
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.
ALTER TABLE ... ORDER BY behoben.
max_user_connections für mysqld hinzugefügt.
max_allowed_packet begrenzt, nicht
auf die willkürliche Länge von 4 MB.
= herum im Argument zu --set-variable werden
zugelassen.
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.
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.
BDB-Tabellen und BLOB- oder TEXT-Feldern beim
Verknüpfen (Join) vieler Tabellen auftraten.
BDB-Tabellen und TEXT-Spalten behoben.
BLOB-Schlüssels behoben, wenn eine
Konstanten-Zeile nicht gefunden wurde.
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).
--skip-gemini, --skip-bdb und
--skip-innobase für mysqld angegeben werden, selbst wenn
diese Datenbanken nicht in mysqld einkompiliert sind.
GROUP BY ... DESC ausführen.
SET-Code behoben, wenn man SET @foo=bar
ausführte, wobei bar ein Spaltenverweis ist. Hier wurde die
Fehlermeldung nicht korrekt erzeugt.
--character-sets-dir für myisampack hinzugefügt.
REPAIR TABLE ... EXTENDED entfernt.
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.
MyISAM-Tabellen behoben, wenn ein BLOB
erster Teil eines mehrteiligen Schlüssels war.
CASE mit GROUP BY nicht funktionierte.
--sort-recover für myisamchk hinzugefügt.
myisamchk -S und OPTIMIZE TABLE funktionieren jetzt unter
Windows.
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;
libmysqlclient-Bibliothek behoben. Bug bei der
Handhabung des STOP-Ereignisses nach ROTATE-Ereignis bei
Replikation.
DROP DATABASE behoben.
Table_locks_immediate- und
Table_locks_waited-Status-Variablen hinzugefügt.
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.
MASTER_POS_WAIT()-Funktion behoben.
SIGILL und SIGBUS zusätzlich zu
SIGSEGV.
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.
MERGE-Tabellen unter Windows in Ordnung gebracht.
--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.
BACKUP, RESTORE, CHECK,
REPAIR und ANALYZE TABLE beschädigte.
FULL für SHOW COLUMNS hinzugefügt. Jetzt wird die
Berechtigungsliste für die Spalten nur angezeigt, wenn diese Option
angegeben wird.
SHOW LOGS behoben, wenn es keine BDB-Logs gab.
mysql_list_fields() nicht umwandeln.
Damit bleibt dieser Code kompatibel mit SHOW FIELDS.
MERGE-Tabellen funktionierten nicht unter Windows.
SET PASSWORD=... unter Windows.
TRIM("foo" von "foo") gab keine leere Zeichenkette zurück.
--with-version-suffix für configure hinzugefügt.
mysql_close()
abbrach.
RESTORE TABLE behoben, wenn man versuchte, aus einem nicht
vorhandenen Verzeichnis wiederherzustellen.
SET PASSWORD verursachte.
MASTER_POS_WAIT() hinzugefügt.
HAVING auf eine leere Tabelle konnte eine
Ergebniszeile ergeben, ohne dass es das sollte.
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.
MEDIUM für CHECK TABLE hinzugefügt.
DECIMAL()-Schlüsseln auf negative
Zahlen behoben.
HOUR() (und einige andere TIME-Funktionen) auf einer
CHAR-Spalte gaben immer NULL zurück.
setrlimit() unter Linux hinzugefügt, damit
-O --open-files-limit=# unter Linux läuft.
mysqld-Variable bdb_version hinzugefügt.
SELECT ... FROM t1 LEFT JOIN t2 ON (t1.a=t2.a) WHERE t1.a=t2.aIn diesem Fall wurde der Test in der
WHERE-Klausel fälschlicherweise
weg optimiert.
MyISAM beim Löschen von Schlüsseln mit möglichen
NULL-Werten behoben, wenn die erste Schlüsselspalte keine
Präfix-komprimierte Text-Spalte war.
mysql.server repariert, so dass es den
mysql.server-Optionsabschnitt anstelle von mysql_server
liest.
safe_mysqld und mysql.server repariert, so dass sie den
server-Optionsabschnitt lesen.
thread_created-Status-Variable zu mysqld hinzugefügt.
SHOW OPEN TABLES-Befehl hinzugefügt.
myisamdump funktioniert jetzt mit alten mysqld-Servern.
myisamchk -k# funktioniert jetzt wieder.
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.
--mysqld=# für safe_mysqld hinzugefügt.
--fields-*-by- und
--lines-terminated-by-Optionen für mysqldump und
mysqlimport werden jetzt zugelassen. Von Paul DuBois.
--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.
--open-files-limit für mysqld hinzugefügt.
--open-files zu --open-files-limit in
safe_mysqld geändert.
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.
--skip-networking auf Debian Linux behoben.
UNOPENED in
Fehlermeldungen hatten.
SHOW LOGS-Anfragen
behoben.
<=>-Operator behoben.
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.
PRIMARY-Schlüsseln zuerst
gesetzt, gefolgt von UNIQUE-Schlüsseln.
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.
mysqld den
Hostnamen als '' in manchen Fehlermeldungen berichtete.
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.
bdb_lock_max in bdb_max_lock umbenannt.
auto_increment auf Unter-Felder (Sub-Fields) für
BDB-Tabellen hinzugefügt.
ANALYZE von BDB-Tabellen hinzugefügt.
ROLLBACK nach der Aktualisierung einer nicht
transaktionalen Tabelle ausführt, erhält man als Warnung einen Fehler.
--bdb-shared-data für mysqld hinzugefügt.
Slave_open_temp_tables hinzugefügt.
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.
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.
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.
SHOW KEYS zeigt jetzt, ob ein Schlüssel FULLTEXT ist oder
nicht.
mysqld-Prozesse laufen lassen.
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.
FULLTEXT-Indexen in einer Tabelle behoben.
REPAIR/OPTIMIZE ändert.
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.
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.
--slow-log benutzte.
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.
--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 section 5.8.2 Das Kommandozeilen-Werkzeug, mysql --help
und die interaktive Hilfe wegen weiterer Informationen.
MyISAM-Tabellen auftrat.
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.
options_files mit mysql_options() wurde die
return-found-rows-Option ignoriert.
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.
--log-long-format benutzen, werden
auch Anfragen, die keinen Index benutzen, geloggt, selbst wenn die Anfrage
weniger als long_query_time Sekunden benötigt.
LEFT JOIN behoben, was dazu führte, dass alle Spalten in
einer Verweistabelle NULL waren.
NATURAL JOIN ohne Schlüssel behoben.
TEXT oder BLOB war.
DROP von temporären Tabellen wurde nicht in der
Update-/Binär-Log-Datei gespeichert.
SELECT DISTINCT * ... LIMIT # nur eine Zeile
zurückgab.
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).
--skip-networking funktioniert jetzt sauber unter Windows
NT.
ISAM-Tabellen behoben, wenn eine Zeile
mit einer Länge von mehr als 65 KB um ein einzelnes Byte gekürzt wurde.
MyISAM beim Laufenlassen mehrfacher Aktualisierungsprozesse
auf dieselbe Tabelle behoben.
FLUSH TABLE tabelle benutzt wird.
--replicate-ignore-table, --replicate-do-table,
--replicate-wild-ignore-table und --replicate-wild-do-table
hinzugefügt.
IO_CACHE-Mechanismus anstelle von FILE benutzen, um
Betriebssystemprobleme zu vermeiden, wenn zu viele Dateien offen sind.
--open-files und --timezone für safe_mysqld
hinzugefügt.
CREATE TEMPORARY TABLE ... SELECT ... behoben.
CREATE TABLE ... SELECT NULL behoben.
large_file_support, net_read_timeout,
net_write_timeout und query_buffer_size für SHOW
VARIABLES hinzugefügt.
created_tmp_files und sort_merge_passes für
SHOW STATUS hinzugefügt.
FOREIGN KEY-Definition
zugelassen wurde.
TRUNCATE tabelle als ein Synonym für DELETE FROM tabelle
hinzugefügt.
bdb_lock_max für mysqld hinzugefügt.
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.
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.
SHOW SLAVE STATUS benutzte einen nicht initialisierten mutex, wenn
der Slave noch nicht gestartet wurde.
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.
SHOW CREATE bei der Benutzung von
AUTO_INCREMENT-Spalten behoben.
mit-pThread benutzen.
<> funktioniert jetzt sauber mit NULL.
SUBSTRING_INDEX() und REPLACE() behoben (Patch
von Alexunder Igonitchev).
CREATE TEMPORARY TABLE IF NOT EXISTS gab keinen Fehler, wenn die
Tabelle existierte.
PRIMARY KEY in einer BDB-Tabelle erzeugen, wird ein
versteckter PRIMARY KEY erzeugt.
LEFT JOIN bevorzugte in manchen Fällen einen vollen Tabellen-Scan,
wenn es keine WHERE-Klausel gab.
--log-slow-query die Wartezeit auf eine Sperre
nicht zählen.
MyISAM-Tabellen, wenn Sie mysqld
mit --myisam-recover starten, hinzugefügt.
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.)
--replicate-rewrite-db-Option zu mysqld hinzugefügt.
--skip-slave-start-Option to mysqld hinzugefügt.
INSERT INTO
foo(schluessel) values (1),(1)) beendeten bislang irrtümlich den
Slave-Thread.
DISTINCT nur auf Spalten aus
denselben Tabellen benutzt wird, hinzugefügt.
SHOW GRANTS zeigte nicht immer alle Spaltenberechtigungen.
--default-extra-file=# für alle MySQL-Clients hinzugefügt.
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.
FULLTEXT-Index beim Einfügen einer NULL-Spalte
behoben.
mkstemp() wird jetzt anstelle von tempnam() benutzt. Basiert
auf einem Patch von John Jones.
database funktioniert als zweites Argument für mysqlhotcopy.
UMASK und UMASK_DIR können jetzt oktal angegeben werden.
RIGHT JOIN. Hierdurch wird RIGHT zu einem reservierten Wort.
@@IDENTITY als ein Synonym für LAST_INSERT_ID()
hinzugefügt, aus Gründen der Visual-Basic-Kompatibilität.)
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.
MyISAM mit komprimierten mehrteiligen Schlüsseln behoben.
CHECK TABLE unter Windows behoben.
FULLTEXT-Index immer den koi8_ukr-Zeichensatz
benutzten, behoben.
CHECK TABLE in Ordnung gebracht.
MyISAM-Reparatur-/Reindexierungs-Code benutzte nicht die
--tempdir-Option für seine temporären Dateien.
BACKUP TABLE/RESTORE TABLE hinzugefügt.
CHANGE MASTER TO behoben, wenn der Slave keinen Master
hatte, mit dem er startet.
time in der Prozessliste für Connect des
Slave-Threads in Ordnung gebracht.
FLUSH MASTER behoben, wenn man kein
Dateinamens-Argument für --log-bin angab.
--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).
MERGE-Tabellen (Schlüssel, Mapping,
Erzeugung, Dokumentation und mehr) hinzugefügt. See section 8.2 MERGE-Tabellen.
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.
ORDER BY-Bug bei BDB-Tabellen behoben.
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.
pwrite() unter Windows sicher zu
machen.
mysqld-Variable created_tmp_disk_tables hinzugefügt.
TIMESTAMP(X)-Spalten zu ermöglichen, berichtet MySQL jetzt Spalten
mit X anders als 14 oder 8 als Zeichenketten.
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!
REPAIR TABLE oder myisamchk
repariert werden, bevor sie benutzt werden können!
--core-file für mysqld hinzugefügt, um eine Core-Datei
unter Linux zu erhalten, wenn mysqld durch das SIGSEGV-Signal
stirbt.
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.
DROP TABLE-Statements
zugleich behoben.
LEFT JOIN auf eine leere Tabelle.
mysqld mit falschen Optionen.
free()-Bug in mysqlimport behoben.
MyISAM-Index-Handhabung von
DECIMAL-/NUMERIC-Schlüsseln behoben.
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).
--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.
RENAME-Befehl hinzugefügt.
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.
BLOB-Spalte
behoben.
DATE_ADD/DATE_SUB behoben, der eine DATETIME anstelle eines
DATE zurückgab.
***DEAD*** in SHOW PROCESSLIST erschienen.
pthread_rwlock_rdlock-Code haben.
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.
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.
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.
SHOW SLAVE STATUS und SHOW MASTER STATUS
hinzugefügt.
SLAVE STOP gibt jetzt solange nichts zurück, bis der Thread
tatsächlich beendet ist.
MATCH-Funktion und FULLTEXT-Indextyp
hinzugefügt (für MyISAM-Dateien). Das macht FULLTEXT zu einem
reservierten Wort.
lex_hash.h wird jetzt für jede MySQL-Distribution korrekt erzeugt.
MASTER und COLLECTION sind jetzt reservierte Wörter.
--slow-query-log erzeugt wird, enthielt nicht
die gesamten Anfragen.
gcc 2.96 (intel) und gcc 2.9
(Ia64) in gen_lex_hash.c hinzugefügt.
host= in
der my.cnf-Datei behoben.
DATE_ADD()/DATE_SUB()
mit einer Zahl behoben.
-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.
0x... abgeändert, so dass sie vorgabemäßig als
Ganzzahlen betrachtet werden.
SHOW PROCESSLIST.
auto-rehash beim erneuten Verbinden für den mysql-Client
hinzugefügt.
MyISAM behoben, bei dem die Index-Datei
nicht größer als 64 MB werden durfte.
SHOW MASTER STATUS und SHOW SLAVE STATUS hinzugefügt.
mysql_character_set_name(MYSQL *mysql)-Funktion zur MySQL-C-API
hinzugefügt.
ASCII 0-sicher gemacht.
mysql_config-Skript hinzugefügt.
< oder > mit einer CHAR-Spalte,
die nur teilweise indexiert war, behoben.
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.
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).
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).
REPAIR TABLE behoben, so dass es bei Tabellen ohne Indexe
funktioniert.
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.
DELETE FROM tabelle entfernte die
.frm-Datei.
SHOW CREATE TABLE.
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.
ORDER BY kann jetzt REF-Schlüssel benutzen, um eine
Untermenge von Zeilen zu finden, die sortiert werden müssen.
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.
myisamchk
--sort-records auf eine Tabelle mit Präfix-komprimiertem Index zerstörte.
BEGIN WORK hinzugefügt (dasselbe wie BEGIN).
ORDER BY auf
CONV()-Ausdruck behoben.
LOAD TABLE FROM MASTER hinzugefügt.
FLUSH MASTER und FLUSH SLAVE hinzugefügt.
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.
GROUP BY auf VARCHAR/CHAR-Spalten.
READ- und
einer WRITE-Sperre.
RAID-Tabellen behoben.
find_in_set() behoben, wenn das erste Argument NULL
war.
LEFT JOIN und ORDER BY behoben, bei dem die erste
Tabelle nur eine übereinstimmende Zeile hatte.
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).
INNER JOIN geändert, um ANSI-SQL zu entsprechen.
NATURAL JOIN-Syntax hinzugefügt.
BDB-Schnittstelle.
--no-defaults und --defaults-file für
safe_mysqld.sh und mysql_install_db.sh hinzugefügt.
USE INDEX funktioniert jetzt mit PRIMARY-Schlüsseln.
BEGIN-Statement geändert, so dass es eine Transaktion im
AUTOCOMMIT-Modus startet.
KILL funktioniert jetzt auf einem Thread, der durch ein 'Schreiben'
auf einen toten Client gesperrt ist.
log-slave-updates hinzugefügt, die das
Hintereinanderhängen im Kreis (Daisy-Chaining, 'Ringelrei') von Slaves
erlaubt.
pthread_t nicht dasselbe wie int ist.
INSERT DELAYED-Code beim Ausführen von ALTER
TABLE behoben.
INSERT DELAYED hinzugefügt.
TYPE=QUICK für CHECK und REPAIR hinzugefügt.
REPAIR TABLE behoben, wenn die Tabelle durch einen anderen
Thread in Benutzung war.
gdb zu
debuggen, wenn man viele erneute Verbindungen durchführt. Das verbessert
auch Systeme, auf denen man keine persistenten Verbindungen benutzen kann.
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.
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.
mysqld als root zu starten, müssen Sie jetzt die --
user=root-Option benutzen.
FLUSH
TABLES-Befehl ausführte.
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.
INET_NTOA() und INET_ATON() hinzugefügt.
IF() hängt jetzt vom zweiten und dritten
Argument ab und nicht nur vom zweiten.
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.
REPLACE auf HEAP-Tabellen behoben.
SHOW VARIABLES hinzugefügt.
DELETE vieler Zeilen auf eine Tabelle mit komprimierten
Schlüsseln behoben, bei dem MySQL den Index scannte, um Zeilen zu finden.
CHECK auf Tabelle mit gelöschten Schlüsselblöcken
behoben.
LAST_INSERT_ID() zum Aktualisieren einer Tabelle mit einem
auto_increment-Schlüssel behoben.
NULLIF() hinzugefügt.
LOAD DATA INFILE auf eine Tabelle mit
BLOB/TEXT-Spalten behoben.
EXPLAIN SELECT ... gibt jetzt auch aus, ob MySQL eine temporäre
Tabelle oder Dateisortieren verwendet, wenn das SELECT aufgelöst
wird.
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 section 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.
CONCAT() behoben, bei dem eins der Argumente eine Funktion
war, die ein verändertes Argument zurückgab.
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.
DECIMAL()-Schlüsselfeld behoben, wenn die
Spalte Daten mit führenden Nullen enthielt.
myisamchk behoben, wenn auto_increment nicht der erste
Schlüssel ist.
DATETIME wird im ISO-8601-Format zugelassen: 2000-03-12T12:00:00
mysqld-Binärdatei kann
jetzt viele unterschiedliche Zeichensätze handhaben (welche, können Sie
beim Start von mysqld angeben).
REPAIR TABLE hinzugefügt.
mysql_thread_safe() hinzugefügt.
UMASK_DIR-Umgebungsvariable hinzugefügt.
CONNECTION_ID() hinzugefügt.
= auf BLOB- oder VARCHAR
BINARY-Schlüsseln, bei denen nur ein Teil der Spalte indexiert war, wurde
nicht die gesamte Spalte der Ergebniszeile verglichen.
ORDER BY.
GROUP BY-Teil angegeben wurden.
LOCK TABLE-Befehl. Dadurch wurde das Problem
behoben, das man bekam, wenn man test-ATIS test mit --fast oder
--check-only-changed laufen ließ.
SQL_Puffer_RESULT für SELECT hinzugefügt.
CHECK TABLE-Befehl hinzugefügt.
mysqladmin shutdown darauf wartet, dass der
lokale Server herunter fährt.
print_defaults für die `.rpm'-Dateien hinzugefügt.
mysqlbug aus der Client-`.rpm'-Datei entfernt.
MyISAM behoben, bei dem REPLACE ... SELECT ... eine
beschädigte Tabelle ergeben konnte.
myisamchk behoben, bei dem der auto_increment-Wert falsch
zurückgesetzt wurde.
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.
IF NOT EXISTS für CREATE DATABASE hinzugefügt.
--all-databases und --databases für mysqldump
hinzugefügt, um das Dumpen vieler Datenbanken zugleich zu ermöglichen.
DECIMAL()-Index in MyISAM-Tabellen
behoben.
mysqladmin shutdown auf eine lokale Verbindung
wartet mysqladmin jetzt, bis die PID-Datei entfernt ist, bevor es
sich beendet.
COUNT(DISTINCT ...)-Anfragen behoben.
myisamchk funktioniert jetzt sauber bei RAID-Tabellen.
LEFT JOIN und schluessel_feld IS NULL behoben.
net_clear() behoben, der den Fehler Aborted connection
in MySQL-Clients ausgeben konnte.
USE INDEX (schluessel_liste) und IGNORE INDEX
(schluessel_liste) als Join-Parameter in SELECT hinzugefügt.
DELETE und RENAME sollten jetzt auf RAID-Tabellen
funktionieren.
ALTER TABLE tabelle ADD (feld_liste)-Syntax wird zugelassen.
GRANT/REVOKE ALL PRIVILEGES betrifft jetzt nicht mehr GRANT
OPTION.
)) aus der Ausgabe von SHOW GRANTS
entfernt.
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.
mysqlaccess hinzugefügt. Dank an Steve Harvey
hierfür.
--i-am-a-dummy und --safe-updates für mysql
hinzugefügt.
select_limit und max_join_size für mysql
hinzugefügt.
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.
--skip-delay-key-write für mysqld hinzugefügt.
_rowid kann jetzt als Alias für eine eindeutig indexierte Spalte vom
Typ Ganzzahl benutzt werden.
SIGPIPE beim Kompilieren mit
--thread-safe-clients hinzugefügt, um Dinge für alte Clients sicher
zu machen.
LOCK TABLES ausführte.
INSERT DELAYED behoben.
datum_spalte BETWEEN konstanten_datum AND konstanten_datum
funktioniert.
NULL in einer Tabelle mit
BLOB/TEXT-Spalten änderte.
WHERE K1=1 and K3=2 and
(K2=2 and K4=4 or K2=3 and K4=5)
source für mysql hinzugefügt, um Lesen von
Stapeldateien innerhalb des mysql-Clients zu ermöglichen.
Original-Patch von Matthew Vanecek.
WITH GRANT OPTION-Option behoben.
GRANT-Fehler bei der Benutzung von Tabellen von
vielen Datenbanken in derselben Anfrage ausgeben.
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.
SELECT * from schluessel_teil_1=konstante und schluessel_teil_2 >
konstante2
VARCHAR-Spalten in
CHAR-Spalten den Spaltentyp nicht von dynamisch auf fest änderte.
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.
--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.
WHERE schluessel_spalte=RAND(...)
behoben.
SELECT ... LEFT JOIN ... schluessel_spalte IS
NULL behoben, wenn schluessel_spalte NULL-Werte enthalten
konnte.
LOAD DATA INFILE
behoben.
MyISAM behoben.
ISAM bei der Ausführung einiger ORDER BY ...
DESC-Anfragen behoben.
--delay-key-write schaltete verzögertes Schlüssel-Schreiben
nicht an.
TEXT-Spalten, die nur Änderungen der
Groß-/Kleinschreibung beinhalteten, in Ordnung gebracht.
INSERT DELAYED aktualisiert jetzt Timestamps, die angegeben sind.
YEARWEEK() und Optionen x, X, v und
V für DATE_FORMAT() hinzugefügt.
MAX(indexierte_spalte) und HEAP-Tabellen behoben.
BLOB NULL-Schlüsseln und LIKE "praefix%"
behoben.
MyISAM und Zeilen fester Länge < 5 Bytes behoben.
GROUP BY-Anfragen
ausführte.
ENUM-Feldwert zu Groß war.
pthread_mutex_timedwait, was bei INSERT DELAYED benutzt wird,
zu vermeiden. See section 3.6.1 Linux (alle Linux-Versionen).
MyISAM mit Schlüsseln > 250 Zeichen behoben.
MyISAM kann man jetzt ein INSERT zur selben Zeit
durchführen, in der andere Threads aus der Tabelle lesen.
max_write_lock_count für mysqld hinzugefügt, um eine
READ-Sperre nach einer bestimmten Anzahl von WRITE-Sperren zu
erzwingen.
delayed_key_write bei show variables invertiert.
concurrency in thread_concurrency umbenannt.
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.
FULL für SHOW PROCESSLIST hinzugefügt.
--verbose für mysqladmin hinzugefügt.
REPLACE() und LOAD DATA INFILE behoben.
mysqld-Variable interactive_timeout hinzugefügt.
mysql_data_seek() von ulong zu ulonglong
geändert.
mysqld-Option -O lower_case_tables={0|1} hinzugefügt, damit
Benutzer Tabellennamen to Kleinschreibung erzwingen können.
SELECT ... INTO DUMPFILE hinzugefügt.
mysqld-Option --ansi hinzugefügt, um einige Funktionen
ANSI-SQL-kompatibler zu machen.
#sql an.
` (" im --ansi-Modus).
[floor() überlaufsicher unter FreeBSD gemacht.
--quote-names für mysqldump hinzugefügt.
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.
FLOAT und DOUBLE (ohne jeden Längen-Modifikator) sind jetzt
keine festen Dezimalpunkt-Zahlen mehr.
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.
ROW_FORMAT={default | dynamic | static | compressed} für
CREATE_TABLE hinzugefügt.
DELETE FROM tabelle funktionierte nicht auf temporären Tabellen.
CHAR_LENGTH() geändert, so dass sie
Multi-Byte-Zeichen-sicher ist.
ORD(zeichenkette) hinzugefügt.
SELECT DISTINCT ... ORDER BY RAND() behoben.
ALTER TABLE + Hinzufügen einer Spalte nach dem letzten Feld
funktionierte nicht.
CREATE TABLE foo (a int not null auto_increment, b char(5), primary
key (b,a))
NULL sein
konnten, behoben.
AS auf Feldname mit CREATE TABLE tabelle SELECT ...
funktionierte nicht.
NATIONAL und NCHAR bei der Definition von
Zeichenspalten wird zugelassen. Das ist dasselbe, als wenn man
BINARY nicht benutzt.
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.
mysqld-Variable concurrency für Solaris hinzugefügt.
--relative für mysqladmin hinzugefügt, um mit
extended-status eine bessere Beobachtung von Änderungen zu erzielen.
COUNT(DISTINCT ...) auf eine leere Tabelle
behoben.
LOAD DATA INFILE und BLOB-Spalten behoben.
~ (Negation) hinzugefügt.
UDF-Funktionen behoben.
DATETIME-Werts in eine TIME-Spalte versucht
jetzt nicht mehr, darin 'Tage' zu speichern.
SUM()).
LIKE "%" auf einem Index, der NULL-Werte
enthalten darf, behoben.
REVOKE ALL PRIVILEGES widerrief nicht alle Berechtigungen.
SHOW GRANTS FOR benutzer hinzugefügt (von Sinisa).
date_add-Syntax date/datetime + INTERVAL # intervall_typ
hinzugefügt. Von Joshua Chamas.
LOAD DATA REPLACE in Ordnung gebracht.
REGEXP ist jetzt unabhängig von der verwendeten
Groß-/Kleinschreibung, wenn Sie nicht binäre Zeichenketten verwenden.
ASC ist jetzt wieder Vorgabe für ORDER BY.
LIMIT für UPDATE hinzugefügt.
mysql_change_user() hinzugefügt.
SHOW VARIABLES hinzugefügt.
--[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.
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.
YEAR(NOW()) und YEAR(CURDATE()) behoben.
CASE-Konstrukt hinzugefügt.
COALESCE() hinzugefügt.
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.
myisamchk ohne -a aktualisierte die
Index-Verteilung falsch.
SET SQL_LOW_PRIORITY_UPDATES=1 gab vorher einen Parser-Fehler.
WHERE-Klausel
benutzt werden. UPDATE tabelle SET KEY=KEY+1 WHERE KEY > 100
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.
LOCK TABLES in Kombination mit DELETE FROM
tabelle behoben.
NULL und
BLOB/TEXT-Spalten zu.
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.
ORDER BY
RAND() zu gestatten.
WHERE schluessel_spalte = funktion benutzt.
WHERE schluessel_spalte = spalten_name
benutzt, selbst wenn die Spalten nicht identisch komprimiert sind.
WHERE spalten_name IS NULL benutzt.
--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.
CASE): CASE, THEN,
WHEN, ELSE und END.
EXPORT_SET() und MD5() hinzugefügt.
MyISAM) mit vielen neuen
Features hinzugefügt. See section 8.1 MyISAM-Tabellen.
HEAP-Tabellen im Hauptspeicher erzeugen, die zum
Nachschlagen extrem schnell sind.
LOAD_FILE(datei) hinzugefügt, um die Inhalte einer
Datei als Zeichenkettenwert zu erhalten.
<=> 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.
EXTRACT(intervall FROM datetime)-Funktion hinzugefügt.
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.
SHOW COLUMNS hinzugefügt.
packed und comment für SHOW INDEX hinzugefügt.
CREATE TABLE ... COMMENT "kommentar")
hinzugefügt.
UNIQUE, wie bei CREATE TABLE tabelle (spalte int not null
UNIQUE), hinzugefügt.
CREATE TABLE tabelle SELECT ...
CREATE TABLE IF NOT EXISTS ...
CHAR(0)-Spalten wird zugelassen.
DATE_FORMAT() erfordert jetzt `%' vor jeglichem
Formatierungszeichen.
DELAYED ist jetzt ein reserviertes Wort (tut uns leid :( ).
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.
--skip-show-database für mysqld hinzugefügt.
UPDATE geändert hat,
funktioniert jetzt auch bei BLOB-/TEXT-Spalten.
INNER-Join-Syntax wurde hinzugefügt. HINWEIS: Hierdurch
wurde INNER zu einem reservierten Wort!
IP/NETMASK-Syntax angeben.
NOT NULL DATE/DATETIME-Spalte mit IS NULL
vergleichen, wird das zu einem Vergleich auf 0 geändert, um einige
ODBC-Applikationen zufrieden zu stellen (von shreeve@uci.edu).
NULL IN (...) gibt jetzt NULL anstelle von 0 zurück.
Das stellt sicher, dass null_spalte NOT IN (...) nicht mit
NULL-Werten übereinstimmt.
TIME-Spalten