3480 Georgi Kodinov 2010-08-10 [merge]
3479 Jon Olav Hauglid 2010-08-09
Bug #54106 assert in Protocol::end_statement,
INSERT IGNORE ... SELECT ... UNION SELECT ...
This assert was triggered by INSERT IGNORE ... SELECT. The assert checks that a
statement either sends OK or an error to the client. If the bug was triggered
on release builds, it caused OK to be sent to the client instead of the correct
error message (in this case ER_FIELD_SPECIFIED_TWICE).
The reason the assert was triggered, was that lex->no_error was set to TRUE
during JOIN::optimize() because of IGNORE. This causes all errors to be ignored.
However, not all errors can be ignored. Some, such as ER_FIELD_SPECIFIED_TWICE
will cause the INSERT to fail no matter what. But since lex->no_error was set,
the critical errors were ignored, the INSERT failed and neither OK nor the
error message was sent to the client.
This patch fixes the problem by temporarily turning off lex->no_error in
places where errors cannot be ignored during processing of INSERT ... SELECT.
Test case added to insert.test.
=== modified file 'README'
--- a/README 2009-08-11 14:25:40 +0000
+++ b/README 2010-08-10 13:39:57 +0000
@@ -1,5 +1,5 @@
-This is a release of MySQL, a dual-license SQL database server.
-MySQL is brought to you by the MySQL team at Sun Microsystems, Inc.
+This is a release of MySQL, a dual-license SQL DBMS.
+MySQL is brought to you by the MySQL team at Oracle Corporation.
License information can be found in these files:
- For GPL (free) distributions, see the COPYING file and
Attachment: [text/bzr-bundle] email@example.com
|• bzr push into mysql-5.1-bugteam branch (Georgi.Kodinov:3479 to 3480) ||Georgi Kodinov||10 Aug|