Bug#44306: Assertion fail on duplicate key error in
'INSERT ... SELECT' statements Merge
This commit is contained in:
commit
7e66dbea48
@ -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)
|
|||||||
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,
|
|||||||
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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user