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 BY
s
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
BLOB
s) 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 ... prozeduranalyse([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 in Ordnung
gebracht.
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]
DATETIME
hinzugefügt.
LOW_PRIORITY
-Attribut für LOAD DATA INFILE
hinzugefügt.
LOAD DATA INFILE
werden größere Puffer
verwendet.
DECIMAL(x,y)
funktioniert jetzt gemäß ANSI-SQL.
LAST_INSERT_ID()
wird jetzt bei INSERT INTO ... SELECT
aktualisiert.
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.
mysql_num_fields()
auf ein MYSQL
-Objekt aufrufen,
sondern müssen statt dessen mysql_field_count()
benutzen.
LIBEWRAP
; Patch von Henning P. Schmiedehausen.
AUTO_INCREMENT
wird nur noch für numerische Spalten zugelassen.
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.
--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.
CREATE TABLE
-Optionen: PACK_KEYS
und CHECKSUM
.
mysqld
-Option --default-table-type
hinzugefügt.
Go to the first, previous, next, last section, table of contents.