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 +15 −3 Original line number Diff line number Diff line Loading @@ -511,8 +511,13 @@ int ha_ndbcluster::ndb_err(NdbTransaction *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->s->primary_key; else // We are batching inserts, offending key is not available m_dupkey= (uint) -1; } DBUG_RETURN(res); } Loading Loading @@ -3119,6 +3124,13 @@ double ha_ndbcluster::scan_time() DBUG_RETURN(res); } /* Convert MySQL table locks into locks supported by Ndb Cluster. Note that MySQL Cluster does currently not support distributed table locks, so to be safe one should set cluster in Single User Mode, before relying on table locks when updating tables from several MySQL servers */ THR_LOCK_DATA **ha_ndbcluster::store_lock(THD *thd, THR_LOCK_DATA **to, Loading @@ -3134,7 +3146,7 @@ THR_LOCK_DATA **ha_ndbcluster::store_lock(THD *thd, /* Since NDB does not currently have table locks this is treated as a ordinary lock */ if ((lock_type >= TL_WRITE_ALLOW_WRITE && if ((lock_type >= TL_WRITE_CONCURRENT_INSERT && lock_type <= TL_WRITE) && !thd->in_lock_tables) lock_type= TL_WRITE_ALLOW_WRITE; 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 +15 −3 Original line number Diff line number Diff line Loading @@ -511,8 +511,13 @@ int ha_ndbcluster::ndb_err(NdbTransaction *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->s->primary_key; else // We are batching inserts, offending key is not available m_dupkey= (uint) -1; } DBUG_RETURN(res); } Loading Loading @@ -3119,6 +3124,13 @@ double ha_ndbcluster::scan_time() DBUG_RETURN(res); } /* Convert MySQL table locks into locks supported by Ndb Cluster. Note that MySQL Cluster does currently not support distributed table locks, so to be safe one should set cluster in Single User Mode, before relying on table locks when updating tables from several MySQL servers */ THR_LOCK_DATA **ha_ndbcluster::store_lock(THD *thd, THR_LOCK_DATA **to, Loading @@ -3134,7 +3146,7 @@ THR_LOCK_DATA **ha_ndbcluster::store_lock(THD *thd, /* Since NDB does not currently have table locks this is treated as a ordinary lock */ if ((lock_type >= TL_WRITE_ALLOW_WRITE && if ((lock_type >= TL_WRITE_CONCURRENT_INSERT && lock_type <= TL_WRITE) && !thd->in_lock_tables) lock_type= TL_WRITE_ALLOW_WRITE; Loading