The initial release of MySQL 4.1.3 for Windows was accidentally compiled without support for the Spatial Extensions (OpenGIS). This was fixed by rebuilding from the same 4.1 code snapshot with the missing option and releasing those packages as version 4.1.3a.
To enable compiling the newly released PHP 5 against MySQL 4.1.3 on Windows, the Windows packages had to be rebuilt once more to add a few missing symbols to the MySQL client library. These packages were released as MySQL 4.1.3b.
End of Product Lifecycle. Active development and support for MySQL database server versions 3.23, 4.0, and 4.1 has ended. However, for MySQL 4.0 and 4.1, there is still extended support available. For details, see http://www.mysql.com/company/legal/lifecycle/#calendar. According to the MySQL Lifecycle Policy (see http://www.mysql.com/company/legal/lifecycle/#policy), only Security and Severity Level 1 issues will still be fixed for MySQL 4.0 and 4.1. Please consider upgrading to a recent version (MySQL 5.0 or 5.1).
Functionality added or changed:
Incompatible Change:
C API change: mysql_shutdown()
now requires a second argument. This is a source-level
incompatibility that affects how you compile client programs; it
does not affect the ability of compiled clients to communicate
with older servers. See Section 17.2.3.63, “mysql_shutdown()”.
Incompatible Change:
The timezone system variable has been removed
and replaced by system_time_zone. See
Section 5.1.3, “System Variables”.
LIKE now supports the use of a prepared
statement parameter or delimited constant expression as the
argument to ESCAPE .
(Bug#4200)
DROP DATABASE IF EXISTS, DROP TABLE
IF EXISTS, single-table DELETE and
single-table UPDATE are now written to the
binary log even if they changed nothing on the master (for
example, even if the DELETE matched no row).
The old behavior sometimes caused bad surprises in replication
setups.
Basic time zone conversion function
CONVERT_TZ() was added. It
assumes that its first argument is a datetime value in the time
zone specified by its second argument and returns the equivalent
datetime value in the time zone specified by its third argument.
Changed the slave SQL thread to print fewer useless error
messages (no more message duplication; no more messages when an
error is skipped (because of
slave-skip-errors).
Language-specific collations were added for the
ucs2 and utf8 Unicode
character sets: Icelandic, Latvian, Romanian, Slovenian, Polish,
Estonian, Swedish, Turkish, Czech, Danish, Lithuanian, Slovak,
Spanish, Traditional Spanish.
Support for per-connection time zones was added. Now you can set
the current time zone for a connection by setting the
@@time_zone system variable to a value such
as '+10:00' or
'Europe/Moscow' (where
'Europe/Moscow' is the name of one of the
time zones described in the system tables). Functions like
CURRENT_TIMESTAMP,
UNIX_TIMESTAMP, and so forth honor this time
zone. Values of TIMESTAMP type are also
interpreted as values in this time zone. So now our
TIMESTAMP type behaves similar to Oracle's
TIMESTAMP WITH LOCAL TIME ZONE. That is,
values stored in such a column are normalized toward UTC and
converted back to the current connection time zone when they are
retrieved from such a column. To set up the tables that store
time zone information, see Section 2.10, “Post-Installation Setup and Testing”.
sync_frm is now a settable global variable
(not only a startup option).
Added --innodb-safe-binlog server option, which
adds consistency guarantees between the content of
InnoDB tables and the binary log. See
Section 5.3.4, “The Binary Log”.
Added the ARCHIVE storage engine.
OPTIMIZE TABLE for InnoDB
tables is now mapped to ALTER TABLE instead
of ANALYZE TABLE.
CHECK TABLE now can be killed. It then marks
the table as corrupted. See Section 12.5.5.3, “KILL Syntax”.
Added the sync_binlog=N global variable and
startup option, which makes the MySQL server synchronize its
binary log to disk (fdatasync()) after every
Nth write to the binary log.
Added SQL syntax for prepared statements. See Section 12.7, “SQL Syntax for Prepared Statements”.
Replication and mysqlbinlog now have better support for the case that the session character set and collation variables are changed within a given session. See Section 14.7, “Replication Features and Known Problems”.
Bugs fixed:
Replication:
Complex expressions using AND,
OR, or both could result in a crash if the
query containing the expression query was ignored, either by a
replication server due to --replicate-*-table
rules, or by any MySQL server due to a syntax error.
(Bug#3969, Bug#4494)
Fixed CREATE DATABASE IF NOT EXISTS for Win32
which caused an error if database existed.
(Bug#4378)
Fixed a bug of using parameters in some prepared statements via SQL syntax. (Bug#4280)
Fixed bug in prepared EXPLAIN statement which
led to server crash.
(Bug#4271)
Added missing root account to Windows version
of mysqld.
(Bug#4242)
Fixed a bug with server crash on attempt to execute a non-prepared statement. (Bug#4236)
Fixed some byte order bugs with prepared statements on machines with high-byte-first. (Bug#4173)
The range optimizer did not perform correctly when using many
IN() queries on different key parts.
(Bug#4157)
Fixed a bug with server crash on attempt to prepare a statement with character set introducer. (Bug#4105)
Fixed problem with NULL and derived tables.
(Bug#4097)
mysql_stmt_close() hung when
attempting to close a statement after failed
mysql_stmt_fetch() call.
(Bug#4079)
Fixed wrong UNION results if display length
of fields for numeric types was set less than real length of
values in them.
(Bug#4067)
Made DROP DATABASE honor the value of
lower_case_table_names.
(Bug#4066)
During the installation process of the server RPM on Linux, if
mysqld was run as the root
system user and with --log-bin pointing to a
directory outside of /var/lib/mysql, it
created binary log files owned by root in
this directory, which remained owned by root
after the installation. Now mysqld is started
as the mysql system user instead.
(Bug#4038)
Fixed a bug in client-side conversion of string column to
MYSQL_TIME application buffer (prepared
statements API).
(Bug#4030)
The microseconds part of
MYSQL_TYPE_TIME/MYSQL_TYPE_DATETIME
columns was not sent to the client by prepared statements.
(Bug#4026)
Fixed potential memory overrun in
mysql_real_connect() (which
required a compromised DNS server and certain operating
systems).
(Bug#4017)
Fixed a bug in MERGE tables created with
INSERT_METHOD=LAST, that were not able to
report a key number that caused “Duplicate entry”
error for UNIQUE key in
INSERT. As a result, error message was not
precise enough (error 1022 instead of error 1062) and
INSERT ... ON DUPLICATE KEY UPDATE did not
work.
(Bug#4008)
Using --with-charset with
configure did not affect the MySQL client
library.
(Bug#3990)
Tables were unlocked too early in cases of a subquery in a
query's HAVING clause.
(Bug#3984)
Under rare circumstances, MATCH ... AGAINST(... IN
BOOLEAN MODE) could yield incorrect results if, in the
collation used for the data, one byte could match many (as in
utf8_general_ci and
latin1_german2_ci.)
(Bug#3964)
Performance of COUNT(DISTINCT)
degraded in cases like COUNT(DISTINCT a
TEXT, b CHAR(1)) (no index used).
(Bug#3904)
mysqlbinlog didn't escape the string content of user variables, and did not deal well when these variables were in non-ASCII character sets; this is now fixed by always printing the string content of user variables in hexadecimal. The character set and collation of the string is now also printed. (Bug#3875)
The slave SQL thread refused to replicate INSERT ...
SELECT if it examined more than 4 billion rows.
(Bug#3871)
In rare circumstances, DELETE from a table
with FULLTEXT indexes resulted in a corrupted
table, if words of different lengths could be considered equal.
This is possible with some collations, for example,
utf8_general_ci and
latin1_german2_ci.
(Bug#3808)
Fixed bug with wrong result of CONCAT(?,
in prepared
statements.
(Bug#3796)col_name)
Fixed bug of re-execution optimized
COUNT(*),
MAX() and
MIN() functions in prepared
statements.
(Bug#2687)
Fixed bug which caused different number of warnings to be
generated when bad datetime as string or as number was inserted
into DATETIME or TIMESTAMP
column.
(Bug#2336)
mysqldump when it did not return any error if the output device was full. (Bug#1851)
Fixed a bug in authentication code that allowed a malicious user to bypass password verification with specially crafted packets, using a modified client library. (CVE-2004-0627, CVE-2004-0628)

User Comments
Add your own comment.