Commit 7e66dbea authored by Martin Hansson's avatar Martin Hansson

Bug#44306: Assertion fail on duplicate key error in

'INSERT ... SELECT' statements

Merge
parents a83b1bdb fdd5a63f
...@@ -765,6 +765,11 @@ f1 f2 ...@@ -765,6 +765,11 @@ f1 f2
2 2 2 2
10 10 10 10
DROP TABLE t1, t2; DROP TABLE t1, t2;
CREATE TABLE t1 ( a INT KEY, b INT );
INSERT INTO t1 VALUES ( 0, 1 );
INSERT INTO t1 ( b ) SELECT MAX( b ) FROM t1 WHERE b = 2;
ERROR 23000: Duplicate entry '0' for key 'PRIMARY'
DROP TABLE t1;
SET SQL_MODE='STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'; SET SQL_MODE='STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
CREATE TABLE t1 (c VARCHAR(30), INDEX ix_c (c(10))); CREATE TABLE t1 (c VARCHAR(30), INDEX ix_c (c(10)));
CREATE TABLE t2 (d VARCHAR(10)); CREATE TABLE t2 (d VARCHAR(10));
......
...@@ -323,6 +323,16 @@ INSERT INTO t2 (f1, f2) ...@@ -323,6 +323,16 @@ INSERT INTO t2 (f1, f2)
SELECT * FROM t2; SELECT * FROM t2;
DROP TABLE t1, t2; DROP TABLE t1, t2;
#
# Bug#44306: Assertion fail on duplicate key error in 'INSERT ... SELECT'
# statements
#
CREATE TABLE t1 ( a INT KEY, b INT );
INSERT INTO t1 VALUES ( 0, 1 );
--error ER_DUP_ENTRY
INSERT INTO t1 ( b ) SELECT MAX( b ) FROM t1 WHERE b = 2;
DROP TABLE t1;
# #
# Bug #26207: inserts don't work with shortened index # Bug #26207: inserts don't work with shortened index
# #
......
...@@ -7092,15 +7092,17 @@ return_zero_rows(JOIN *join, select_result *result,TABLE_LIST *tables, ...@@ -7092,15 +7092,17 @@ return_zero_rows(JOIN *join, select_result *result,TABLE_LIST *tables,
if (!(result->send_fields(fields, if (!(result->send_fields(fields,
Protocol::SEND_NUM_ROWS | Protocol::SEND_EOF))) Protocol::SEND_NUM_ROWS | Protocol::SEND_EOF)))
{ {
bool send_error= FALSE;
if (send_row) if (send_row)
{ {
List_iterator_fast<Item> it(fields); List_iterator_fast<Item> it(fields);
Item *item; Item *item;
while ((item= it++)) while ((item= it++))
item->no_rows_in_result(); item->no_rows_in_result();
result->send_data(fields); send_error= result->send_data(fields);
} }
result->send_eof(); // Should be safe if (!send_error)
result->send_eof(); // Should be safe
} }
/* Update results for FOUND_ROWS */ /* Update results for FOUND_ROWS */
join->thd->limit_found_rows= join->thd->examined_row_count= 0; join->thd->limit_found_rows= join->thd->examined_row_count= 0;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment