mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Fix for bug#38821: Assert table->auto_increment_field_not_null failed
in open_table() Problem: repeating "CREATE... ( AUTOINCREMENT) ... SELECT" may lead to an assertion failure. Fix: reset table->auto_increment_field_not_null after each record writing.
This commit is contained in:
@ -1546,4 +1546,15 @@ SHOW INDEX FROM t1;
|
|||||||
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
|
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment
|
||||||
t1 1 c1 1 c1 A NULL NULL NULL YES BTREE
|
t1 1 c1 1 c1 A NULL NULL NULL YES BTREE
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
CREATE TABLE t1 (a INTEGER AUTO_INCREMENT PRIMARY KEY, b INTEGER NOT NULL);
|
||||||
|
INSERT IGNORE INTO t1 (b) VALUES (5);
|
||||||
|
CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY)
|
||||||
|
SELECT a FROM t1;
|
||||||
|
CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY)
|
||||||
|
SELECT a FROM t1;
|
||||||
|
ERROR 23000: Duplicate entry '1' for key 1
|
||||||
|
CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY)
|
||||||
|
SELECT a FROM t1;
|
||||||
|
ERROR 23000: Duplicate entry '1' for key 1
|
||||||
|
DROP TABLE t1, t2;
|
||||||
End of 5.0 tests
|
End of 5.0 tests
|
||||||
|
@ -1172,4 +1172,22 @@ SHOW INDEX FROM t1;
|
|||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#38821: Assert table->auto_increment_field_not_null failed in open_table()
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a INTEGER AUTO_INCREMENT PRIMARY KEY, b INTEGER NOT NULL);
|
||||||
|
INSERT IGNORE INTO t1 (b) VALUES (5);
|
||||||
|
|
||||||
|
CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY)
|
||||||
|
SELECT a FROM t1;
|
||||||
|
--error 1062
|
||||||
|
CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY)
|
||||||
|
SELECT a FROM t1;
|
||||||
|
--error 1062
|
||||||
|
CREATE TABLE IF NOT EXISTS t2 (a INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY)
|
||||||
|
SELECT a FROM t1;
|
||||||
|
|
||||||
|
DROP TABLE t1, t2;
|
||||||
|
|
||||||
|
|
||||||
--echo End of 5.0 tests
|
--echo End of 5.0 tests
|
||||||
|
@ -2897,7 +2897,11 @@ bool select_insert::send_data(List<Item> &values)
|
|||||||
DBUG_RETURN(1);
|
DBUG_RETURN(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!(error= write_record(thd, table, &info)))
|
|
||||||
|
error= write_record(thd, table, &info);
|
||||||
|
table->auto_increment_field_not_null= FALSE;
|
||||||
|
|
||||||
|
if (!error)
|
||||||
{
|
{
|
||||||
if (table->triggers || info.handle_duplicates == DUP_UPDATE)
|
if (table->triggers || info.handle_duplicates == DUP_UPDATE)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user