mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
Fix for bug#10936: Cluster engine shows wrong key value for duplicate key error
This commit is contained in:
@ -416,10 +416,12 @@ INSERT INTO t1 VALUES
|
|||||||
SELECT COUNT(*) FROM t1;
|
SELECT COUNT(*) FROM t1;
|
||||||
COUNT(*)
|
COUNT(*)
|
||||||
2000
|
2000
|
||||||
|
INSERT INTO t1 VALUES (1,1,1);
|
||||||
|
ERROR 23000: Duplicate entry '1' for key 1
|
||||||
INSERT INTO t1 VALUES
|
INSERT INTO t1 VALUES
|
||||||
(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
|
(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
|
||||||
(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10);
|
(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10);
|
||||||
ERROR 23000: Duplicate entry '10' for key 1
|
ERROR 23000: Can't write; duplicate key in table 't1'
|
||||||
select count(*) from t1;
|
select count(*) from t1;
|
||||||
count(*)
|
count(*)
|
||||||
2000
|
2000
|
||||||
@ -437,7 +439,7 @@ begin;
|
|||||||
INSERT INTO t1 VALUES
|
INSERT INTO t1 VALUES
|
||||||
(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
|
(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
|
||||||
(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10);
|
(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10);
|
||||||
ERROR 23000: Duplicate entry '10' for key 1
|
ERROR 23000: Can't write; duplicate key in table 't1'
|
||||||
commit;
|
commit;
|
||||||
ERROR HY000: Got error 4350 'Transaction already aborted' from ndbcluster
|
ERROR HY000: Got error 4350 'Transaction already aborted' from ndbcluster
|
||||||
select * from t1 where pk1=1;
|
select * from t1 where pk1=1;
|
||||||
@ -456,7 +458,7 @@ begin;
|
|||||||
INSERT INTO t1 VALUES
|
INSERT INTO t1 VALUES
|
||||||
(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
|
(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
|
||||||
(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10);
|
(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10);
|
||||||
ERROR 23000: Duplicate entry '10' for key 1
|
ERROR 23000: Can't write; duplicate key in table 't1'
|
||||||
rollback;
|
rollback;
|
||||||
select * from t1 where pk1=1;
|
select * from t1 where pk1=1;
|
||||||
pk1 b c
|
pk1 b c
|
||||||
@ -474,7 +476,7 @@ begin;
|
|||||||
INSERT INTO t1 VALUES
|
INSERT INTO t1 VALUES
|
||||||
(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
|
(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
|
||||||
(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10);
|
(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10);
|
||||||
ERROR 23000: Duplicate entry '10' for key 1
|
ERROR 23000: Can't write; duplicate key in table 't1'
|
||||||
SELECT * FROM t1 WHERE pk1=10;
|
SELECT * FROM t1 WHERE pk1=10;
|
||||||
ERROR HY000: Got error 4350 'Transaction already aborted' from ndbcluster
|
ERROR HY000: Got error 4350 'Transaction already aborted' from ndbcluster
|
||||||
rollback;
|
rollback;
|
||||||
@ -494,7 +496,7 @@ begin;
|
|||||||
INSERT INTO t1 VALUES
|
INSERT INTO t1 VALUES
|
||||||
(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
|
(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
|
||||||
(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10);
|
(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10);
|
||||||
ERROR 23000: Duplicate entry '10' for key 1
|
ERROR 23000: Can't write; duplicate key in table 't1'
|
||||||
SELECT * FROM t1 WHERE pk1=10;
|
SELECT * FROM t1 WHERE pk1=10;
|
||||||
ERROR HY000: Got error 4350 'Transaction already aborted' from ndbcluster
|
ERROR HY000: Got error 4350 'Transaction already aborted' from ndbcluster
|
||||||
SELECT * FROM t1 WHERE pk1=10;
|
SELECT * FROM t1 WHERE pk1=10;
|
||||||
@ -517,7 +519,7 @@ begin;
|
|||||||
INSERT INTO t1 VALUES
|
INSERT INTO t1 VALUES
|
||||||
(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
|
(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
|
||||||
(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10);
|
(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10);
|
||||||
ERROR 23000: Duplicate entry '10' for key 1
|
ERROR 23000: Can't write; duplicate key in table 't1'
|
||||||
INSERT INTO t1 values (4000, 40, 44);
|
INSERT INTO t1 values (4000, 40, 44);
|
||||||
ERROR HY000: Got error 4350 'Transaction already aborted' from ndbcluster
|
ERROR HY000: Got error 4350 'Transaction already aborted' from ndbcluster
|
||||||
rollback;
|
rollback;
|
||||||
@ -534,7 +536,7 @@ select count(*) from t1;
|
|||||||
count(*)
|
count(*)
|
||||||
2000
|
2000
|
||||||
insert into t1 select * from t1 where b < 10 order by pk1;
|
insert into t1 select * from t1 where b < 10 order by pk1;
|
||||||
ERROR 23000: Duplicate entry '9' for key 1
|
ERROR 23000: Can't write; duplicate key in table 't1'
|
||||||
DELETE FROM t1 WHERE pk1=2;
|
DELETE FROM t1 WHERE pk1=2;
|
||||||
begin;
|
begin;
|
||||||
INSERT IGNORE INTO t1 VALUES(1,2,3),(2,3,4);
|
INSERT IGNORE INTO t1 VALUES(1,2,3),(2,3,4);
|
||||||
|
@ -434,6 +434,9 @@ SELECT COUNT(*) FROM t1;
|
|||||||
# Insert duplicate rows
|
# Insert duplicate rows
|
||||||
#
|
#
|
||||||
--error 1062
|
--error 1062
|
||||||
|
INSERT INTO t1 VALUES (1,1,1);
|
||||||
|
|
||||||
|
--error 1022
|
||||||
INSERT INTO t1 VALUES
|
INSERT INTO t1 VALUES
|
||||||
(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
|
(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
|
||||||
(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10);
|
(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10);
|
||||||
@ -457,7 +460,7 @@ rollback;
|
|||||||
#
|
#
|
||||||
begin;
|
begin;
|
||||||
|
|
||||||
--error 1062
|
--error 1022
|
||||||
INSERT INTO t1 VALUES
|
INSERT INTO t1 VALUES
|
||||||
(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
|
(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
|
||||||
(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10);
|
(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10);
|
||||||
@ -477,7 +480,7 @@ select count(*) from t1;
|
|||||||
#
|
#
|
||||||
begin;
|
begin;
|
||||||
|
|
||||||
--error 1062
|
--error 1022
|
||||||
INSERT INTO t1 VALUES
|
INSERT INTO t1 VALUES
|
||||||
(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
|
(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
|
||||||
(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10);
|
(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10);
|
||||||
@ -496,7 +499,7 @@ select count(*) from t1;
|
|||||||
#
|
#
|
||||||
begin;
|
begin;
|
||||||
|
|
||||||
--error 1062
|
--error 1022
|
||||||
INSERT INTO t1 VALUES
|
INSERT INTO t1 VALUES
|
||||||
(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
|
(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
|
||||||
(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10);
|
(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10);
|
||||||
@ -517,7 +520,7 @@ select count(*) from t1;
|
|||||||
#
|
#
|
||||||
begin;
|
begin;
|
||||||
|
|
||||||
--error 1062
|
--error 1022
|
||||||
INSERT INTO t1 VALUES
|
INSERT INTO t1 VALUES
|
||||||
(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
|
(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
|
||||||
(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10);
|
(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10);
|
||||||
@ -543,7 +546,7 @@ select count(*) from t1;
|
|||||||
#
|
#
|
||||||
begin;
|
begin;
|
||||||
|
|
||||||
--error 1062
|
--error 1022
|
||||||
INSERT INTO t1 VALUES
|
INSERT INTO t1 VALUES
|
||||||
(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
|
(1,1,1),(2,2,2),(3,3,3),(4,4,4),(5,5,5),
|
||||||
(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10);
|
(6,6,6),(7,7,7),(8,8,8),(9,9,9),(10,10,10);
|
||||||
@ -562,7 +565,7 @@ select count(*) from t1;
|
|||||||
# Insert duplicate rows using "insert .. select"
|
# Insert duplicate rows using "insert .. select"
|
||||||
|
|
||||||
#
|
#
|
||||||
--error 1062
|
--error 1022
|
||||||
insert into t1 select * from t1 where b < 10 order by pk1;
|
insert into t1 select * from t1 where b < 10 order by pk1;
|
||||||
|
|
||||||
DELETE FROM t1 WHERE pk1=2;
|
DELETE FROM t1 WHERE pk1=2;
|
||||||
|
@ -435,8 +435,13 @@ int ha_ndbcluster::ndb_err(NdbConnection *trans)
|
|||||||
DBUG_PRINT("info", ("transformed ndbcluster error %d to mysql error %d",
|
DBUG_PRINT("info", ("transformed ndbcluster error %d to mysql error %d",
|
||||||
err.code, res));
|
err.code, res));
|
||||||
if (res == HA_ERR_FOUND_DUPP_KEY)
|
if (res == HA_ERR_FOUND_DUPP_KEY)
|
||||||
m_dupkey= table->primary_key;
|
{
|
||||||
|
if (m_rows_to_insert == 1)
|
||||||
|
m_dupkey= table->primary_key;
|
||||||
|
else
|
||||||
|
// We are batching inserts, offending key is not available
|
||||||
|
m_dupkey= (uint) -1;
|
||||||
|
}
|
||||||
DBUG_RETURN(res);
|
DBUG_RETURN(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user