mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 21:12:26 +01:00
Merge
This commit is contained in:
commit
91c422e029
3 changed files with 33 additions and 16 deletions
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
m_dupkey= table->s->primary_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);
|
||||
}
|
||||
|
||||
|
@ -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,
|
||||
|
@ -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…
Reference in a new issue