Loading mysql-test/r/ndb_insert.result +9 −7 Original line number Diff line number Diff line Loading @@ -416,10 +416,12 @@ INSERT INTO t1 VALUES SELECT COUNT(*) FROM t1; COUNT(*) 2000 INSERT INTO t1 VALUES (1,1,1); ERROR 23000: Duplicate entry '1' for key 1 INSERT INTO t1 VALUES (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); ERROR 23000: Duplicate entry '10' for key 1 ERROR 23000: Can't write; duplicate key in table 't1' select count(*) from t1; count(*) 2000 Loading @@ -437,7 +439,7 @@ begin; INSERT INTO t1 VALUES (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); ERROR 23000: Duplicate entry '10' for key 1 ERROR 23000: Can't write; duplicate key in table 't1' commit; ERROR HY000: Got error 4350 'Transaction already aborted' from ndbcluster select * from t1 where pk1=1; Loading @@ -456,7 +458,7 @@ begin; INSERT INTO t1 VALUES (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); ERROR 23000: Duplicate entry '10' for key 1 ERROR 23000: Can't write; duplicate key in table 't1' rollback; select * from t1 where pk1=1; pk1 b c Loading @@ -474,7 +476,7 @@ begin; INSERT INTO t1 VALUES (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); ERROR 23000: Duplicate entry '10' for key 1 ERROR 23000: Can't write; duplicate key in table 't1' SELECT * FROM t1 WHERE pk1=10; ERROR HY000: Got error 4350 'Transaction already aborted' from ndbcluster rollback; Loading @@ -494,7 +496,7 @@ begin; INSERT INTO t1 VALUES (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); ERROR 23000: Duplicate entry '10' for key 1 ERROR 23000: Can't write; duplicate key in table 't1' SELECT * FROM t1 WHERE pk1=10; ERROR HY000: Got error 4350 'Transaction already aborted' from ndbcluster SELECT * FROM t1 WHERE pk1=10; Loading @@ -517,7 +519,7 @@ begin; INSERT INTO t1 VALUES (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); 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); ERROR HY000: Got error 4350 'Transaction already aborted' from ndbcluster rollback; Loading @@ -534,7 +536,7 @@ select count(*) from t1; count(*) 2000 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; begin; INSERT IGNORE INTO t1 VALUES(1,2,3),(2,3,4); Loading mysql-test/t/ndb_insert.test +9 −6 Original line number Diff line number Diff line Loading @@ -434,6 +434,9 @@ SELECT COUNT(*) FROM t1; # Insert duplicate rows # --error 1062 INSERT INTO t1 VALUES (1,1,1); --error 1022 INSERT INTO t1 VALUES (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); Loading @@ -457,7 +460,7 @@ rollback; # begin; --error 1062 --error 1022 INSERT INTO t1 VALUES (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); Loading @@ -477,7 +480,7 @@ select count(*) from t1; # begin; --error 1062 --error 1022 INSERT INTO t1 VALUES (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); Loading @@ -496,7 +499,7 @@ select count(*) from t1; # begin; --error 1062 --error 1022 INSERT INTO t1 VALUES (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); Loading @@ -517,7 +520,7 @@ select count(*) from t1; # begin; --error 1062 --error 1022 INSERT INTO t1 VALUES (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); Loading @@ -543,7 +546,7 @@ select count(*) from t1; # begin; --error 1062 --error 1022 INSERT INTO t1 VALUES (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); Loading @@ -562,7 +565,7 @@ select count(*) from t1; # Insert duplicate rows using "insert .. select" # --error 1062 --error 1022 insert into t1 select * from t1 where b < 10 order by pk1; DELETE FROM t1 WHERE pk1=2; Loading sql/ha_ndbcluster.cc +7 −2 Original line number Diff line number Diff line Loading @@ -435,8 +435,13 @@ int ha_ndbcluster::ndb_err(NdbConnection *trans) DBUG_PRINT("info", ("transformed ndbcluster error %d to mysql error %d", err.code, res)); if (res == HA_ERR_FOUND_DUPP_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); } Loading Loading
mysql-test/r/ndb_insert.result +9 −7 Original line number Diff line number Diff line Loading @@ -416,10 +416,12 @@ INSERT INTO t1 VALUES SELECT COUNT(*) FROM t1; COUNT(*) 2000 INSERT INTO t1 VALUES (1,1,1); ERROR 23000: Duplicate entry '1' for key 1 INSERT INTO t1 VALUES (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); ERROR 23000: Duplicate entry '10' for key 1 ERROR 23000: Can't write; duplicate key in table 't1' select count(*) from t1; count(*) 2000 Loading @@ -437,7 +439,7 @@ begin; INSERT INTO t1 VALUES (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); ERROR 23000: Duplicate entry '10' for key 1 ERROR 23000: Can't write; duplicate key in table 't1' commit; ERROR HY000: Got error 4350 'Transaction already aborted' from ndbcluster select * from t1 where pk1=1; Loading @@ -456,7 +458,7 @@ begin; INSERT INTO t1 VALUES (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); ERROR 23000: Duplicate entry '10' for key 1 ERROR 23000: Can't write; duplicate key in table 't1' rollback; select * from t1 where pk1=1; pk1 b c Loading @@ -474,7 +476,7 @@ begin; INSERT INTO t1 VALUES (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); ERROR 23000: Duplicate entry '10' for key 1 ERROR 23000: Can't write; duplicate key in table 't1' SELECT * FROM t1 WHERE pk1=10; ERROR HY000: Got error 4350 'Transaction already aborted' from ndbcluster rollback; Loading @@ -494,7 +496,7 @@ begin; INSERT INTO t1 VALUES (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); ERROR 23000: Duplicate entry '10' for key 1 ERROR 23000: Can't write; duplicate key in table 't1' SELECT * FROM t1 WHERE pk1=10; ERROR HY000: Got error 4350 'Transaction already aborted' from ndbcluster SELECT * FROM t1 WHERE pk1=10; Loading @@ -517,7 +519,7 @@ begin; INSERT INTO t1 VALUES (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); 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); ERROR HY000: Got error 4350 'Transaction already aborted' from ndbcluster rollback; Loading @@ -534,7 +536,7 @@ select count(*) from t1; count(*) 2000 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; begin; INSERT IGNORE INTO t1 VALUES(1,2,3),(2,3,4); Loading
mysql-test/t/ndb_insert.test +9 −6 Original line number Diff line number Diff line Loading @@ -434,6 +434,9 @@ SELECT COUNT(*) FROM t1; # Insert duplicate rows # --error 1062 INSERT INTO t1 VALUES (1,1,1); --error 1022 INSERT INTO t1 VALUES (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); Loading @@ -457,7 +460,7 @@ rollback; # begin; --error 1062 --error 1022 INSERT INTO t1 VALUES (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); Loading @@ -477,7 +480,7 @@ select count(*) from t1; # begin; --error 1062 --error 1022 INSERT INTO t1 VALUES (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); Loading @@ -496,7 +499,7 @@ select count(*) from t1; # begin; --error 1062 --error 1022 INSERT INTO t1 VALUES (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); Loading @@ -517,7 +520,7 @@ select count(*) from t1; # begin; --error 1062 --error 1022 INSERT INTO t1 VALUES (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); Loading @@ -543,7 +546,7 @@ select count(*) from t1; # begin; --error 1062 --error 1022 INSERT INTO t1 VALUES (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); Loading @@ -562,7 +565,7 @@ select count(*) from t1; # Insert duplicate rows using "insert .. select" # --error 1062 --error 1022 insert into t1 select * from t1 where b < 10 order by pk1; DELETE FROM t1 WHERE pk1=2; Loading
sql/ha_ndbcluster.cc +7 −2 Original line number Diff line number Diff line Loading @@ -435,8 +435,13 @@ int ha_ndbcluster::ndb_err(NdbConnection *trans) DBUG_PRINT("info", ("transformed ndbcluster error %d to mysql error %d", err.code, res)); if (res == HA_ERR_FOUND_DUPP_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); } Loading