Do not allow dropping a table referenced by a FOREIGN
KEY
constraint, unless the user does SET
foreign_key_checks = 0
. The error message here is
somewhat misleading “Cannot delete or update a parent
row...,” and must be changed in a future version 4.1.x.
Make InnoDB
to remember the
CONSTRAINT
name given by a user for a
FOREIGN KEY
.
Change the print format of FOREIGN KEY
constraints spanning multiple databases to
`
.
But when parsing them, we must also accept
db_name
`.`tbl_name
``
,
because that was the output format in < 4.0.18.
db_name
.tbl_name
`
An optimization in locking: If
autocommit = 1
, then we do
not need to make a plain SELECT
set shared locks even on the
SERIALIZABLE
isolation
level, because we know that the transaction is read only. A
read-only transaction can always be performed on the
REPEATABLE READ
level, and
that does not endanger the serializability.
Implement an automatic downgrade from >= 4.1.1 -> 4.0.18
if the user has not created tables in
.ibd
files or used other 4.1.x features.
Consult the manual section on
multiple tablespaces
carefully if you want to downgrade!
Fixed a bug: MySQL should not allow
REPLACE
to internally perform
an UPDATE
if the table is
referenced by a FOREIGN KEY
. The MySQL
manual states that REPLACE
must
resolve a duplicate-key error semantically with
DELETE
+
INSERT
, and not by an
UPDATE
. In versions < 4.0.18
and < 4.1.2, MySQL could resolve a duplicate key conflict
in REPLACE
by doing an
UPDATE
on the existing row, and
FOREIGN KEY
checks could behave in a
semantically wrong way. (Bug#2418)
Fixed a bug: generate FOREIGN KEY
constraint identifiers locally for each table, in the form
db_name/tbl_name_ibfk_number
. If
the user gives the constraint name explicitly, then remember
it. These changes should ensure that foreign key id's in a
slave are the same as in the master, and DROP FOREIGN
KEY
does not break replication. (Bug#2167)
Fixed a bug: allow quoting of identifiers in InnoDB's
FOREIGN KEY
definitions with a backtick (`)
and a double quote ("). You can now use also spaces in table
and column names, if you quote the identifiers. (Bug#1725,
Bug#2424)
Fixed a bug: FOREIGN KEY ... ON UPDATE/DELETE NO
ACTION
must check the foreign key constraint, not
ignore it. Since we do not have deferred constraints in
InnoDB
, this bugfix makes
InnoDB
to check NO
ACTION
constraints immediately, like it checks
RESTRICT
constraints.
Fixed a bug: InnoDB
crashed in
RENAME TABLE
if
db_name.tbl_name
is shorter than 5
characters. (Bug#2689)
Fixed a bug: in SHOW TABLE
STATUS
, InnoDB
row count and
index cardinality estimates wrapped around at 512 million in
32-bit computers. Note that unless MySQL is compiled with the
big_tables
option, they still
wrap around at 4 billion.
Fixed a bug: If there was a UNIQUE
secondary index, and NULL
values in that
unique index, then with the IS
NULL
predicate, InnoDB
returned
only the first matching row, though there can be many. This
bug was introduced in 4.0.16. (Bug#2483)
User Comments
Add your own comment.