Functionality added or changed:
PRIMARY KEY
now implies NOT NULL
. (Bug #390)
--enable-local-infile
to match the Unix build configuration.
mysql-test-run
. time
does not
accept all required parameters on many platforms (for example, QNX) and timing
the tests is not really required (it's not a benchmark anyway).
SHOW MASTER STATUS
and SHOW SLAVE STATUS
required the
SUPER
privilege; now they accept REPLICATION CLIENT
as well.
(Bug #343)
myisam_repair_threads
variable to enable it.
See section 4.5.7.4 SHOW VARIABLES
.
innodb_max_dirty_pages_pct
variable which controls amount of
dirty pages allowed in InnoDB
buffer pool.
CURRENT_USER()
and Access denied
error messages now report the
hostname exactly as it was specified in the GRANT
command.
InnoDB
tables now support ANALYZE TABLE
.
--new
now changes binary items (0xFFDF
) to be
treated as binary strings instead of numbers by default. This fixes some
problems with character sets where it's convenient to input the string
as a binary item. After this change you have to convert the binary
string to INTEGER
with a CAST
if you want to compare two
binary items with each other and know which one is bigger than the other.
SELECT CAST(0xfeff AS UNSIGNED) < CAST(0xff AS UNSIGNED)
.
This will be the default behaviour in MySQL 4.1. (Bug #152)
delayed_insert_timeout
on Linux (most modern glibc
libraries have a fixed pthread_cond_timedwait
). (Bug #211)
max_insert_delayed_threads
. (Bug #211)
UPDATE ... LIMIT
to also count accepted, but not changed rows.
BIT_AND()
and BIT_OR()
now return an unsigned 64 bit value.
--log-warnings
).
--skip-symlink
and --use-symbolic-links
and
replaced these with --symbolic-links
.
innodb_flush_log_at_trx_commit
was changed
from 0 to 1 to make InnoDB
tables ACID by default.
See section 7.5.3 InnoDB Startup Options.
SHOW KEYS
to display keys that are disabled by
ALTER TABLE DISABLE KEYS
command.
CREATE TABLE
, first
try if the default table type exists before falling back to MyISAM
.
MEMORY
as an alias for HEAP
.
rnd
to my_rnd
as the name was too generic
and is an exported symbol in libmysqlclient
(thanks to Dennis Haney
for the initial patch).
mysqldump
no longer silently deletes the binlogs when called with
--master-data
or --first-slave
;
while this behaviour was convenient for some
users, others may suffer from it. Now one has to explicitely ask for
this deletion with the new --delete-master-logs
option.
replicate-wild-ignore-table=mysql.%
)
to exclude mysql.user
, mysql.host
, mysql.db
,
mysql.tables_priv
and mysql.columns_priv
from
replication, then GRANT
and REVOKE
will not be replicated.
Bugs fixed:
Access denied
error message had wrong Using password
value. (Bug #398)
NATURAL LEFT JOIN
, NATURAL RIGHT JOIN
and
RIGHT JOIN
when using many joined tables. The problem was that
the JOIN
method was not always associated with the tables
surrounding the JOIN
method. If you have a query that uses many
RIGHT JOIN
or NATURAL ... JOINS
you should check that they
work as you expected after upgrading MySQL to this version. (Bug #291)
mysql
command line client no longer looks for \*
commands
inside backtick-quoted strings.
Unknown error
when using UPDATE ... LIMIT
. (Bug #373)
GROUP BY
with constants. (Bug #387)
UNION
and OUTER JOIN
. (Bug #386)
UPDATE
and the query required a
temporary table bigger than tmp_table_size
. (Bug #286)
mysql_install_db
with the -IN-RPM
option for the Mac OS X
installation to not fail on systems with improperly configured hostname
configurations.
LOAD DATA INFILE
will now read 000000
as a zero date instead as
"2000-00-00"
.
DELETE FROM table WHERE const_expression
always to delete the whole table (even if expression result was false).
(Bug #355)
FORMAT('nan',#)
. (Bug #284)
HAVING ... COUNT(DISTINCT ...)
.
*
) in
MATCH ... AGAINST()
in some complex joins.
REPAIR ... USE_FRM
command, when used on read-only,
nonexisting table or a table with a crashed index file.
--no-defaults
, with a prompt
that contained hostname and connection to non-existing db was requested
LEFT
, RIGHT
and MID
when used with
multi-byte character sets and some GROUP BY
queries. (Bug #314)
ORDER BY
being discarded for some
DISTINCT
queries. (Bug #275)
SET SQL_BIG_SELECTS=1
works as documented (This corrects
a new bug introduced in 4.0)
UPDATE ... ORDER BY
. (Bug #241)
WHERE
clause with constant
expression like in WHERE 1 AND (a=1 AND b=1)
.
SET SQL_BIG_SELECTS=1
works again.
SHOW GRANTS
.
FULLTEXT
index stopped working after ALTER TABLE
that converts TEXT
field to CHAR
. (Bug #283)
SELECT
and wildcarded select list,
when user only had partial column SELECT
privileges on the table.
SET PASSWORD
.
NATURAL JOIN
s in the query.
SUM()
didn't return NULL
when there was no rows in result
or when all values was NULL
.
--open-files-limit
in
mysqld_safe
. (Bug #264)
SHOW PROCESSLIST
.
NAN
in FORMAT(...)
function ...
ALTER TABLE ENABLE / DISABLE KEYS
which failed to
force a refresh of table data in the cache.
LOAD DATA INFILE
for custom parameters
(ENCLOSED
, TERMINATED
and so on) and temporary tables
(Bugs #183 and #222).
FLUSH LOGS
was
issued on the master. (Bug #254)
LOAD DATA INFILE IGNORE
: when reading
the binary log, mysqlbinlog
and the replication code read REPLACE
instead of IGNORE
. This could make the slave's table
become different from the master's table. (Bug #218)
relay_log_space_limit
was set to a too
small value. (Bug #79)
MyISAM
when a row is inserted into a table with a
large number of NULL
columns. Bug was caused by wrong calculation
of the record length, as the space required for storage of NULL
bits was not added to the total record length.
SELECT
@nonexistent_variable caused the
error in client - server protocol due to net_printf() being sent to
the client twice.
SQL_BIG_SELECTS
option.
SHOW PROCESSLIST
which only displayed a localhost
in the "Host"
column. This was caused by a glitch that only used
current thread information instead of information from the linked list of threads.
InnoDB
tables as well.
mysqldump
when it was called with
--master-data
: the CHANGE MASTER TO
commands appended to
the SQL dump had wrong coordinates. (Bug #159)
USER()
was replicated
on the slave ; this caused segfault on the slave. (Bug #178).
USER()
is still badly replicated on the slave (it is
replicated to ""
).