mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Bug#9725 - "disapearing query/hang" and "unknown error" with "on duplicate key update"
INSERT IGNORE...UPDATE causes break in protocol or unknown error message. Fix so that protocol doesn't break by properly ignoring dups. mysql-test/r/insert_update.result: Test for Bug#9725 mysql-test/t/insert_update.test: Test for Bug#9725 sql/sql_insert.cc: Ignore the failure in update_row when IGNORE is set. BitKeeper/etc/logging_ok: Logging to logging@openlogging.org accepted
This commit is contained in:
@ -13,6 +13,7 @@ administrador@light.hegel.local
|
|||||||
ahlentz@co3064164-a.rochd1.qld.optusnet.com.au
|
ahlentz@co3064164-a.rochd1.qld.optusnet.com.au
|
||||||
akishkin@work.mysql.com
|
akishkin@work.mysql.com
|
||||||
antony@ltantony.dsl-verizon.net
|
antony@ltantony.dsl-verizon.net
|
||||||
|
antony@ltantony.mysql.com
|
||||||
antony@ltantony.rdg.cyberkinetica.com
|
antony@ltantony.rdg.cyberkinetica.com
|
||||||
antony@ltantony.rdg.cyberkinetica.homeunix.net
|
antony@ltantony.rdg.cyberkinetica.homeunix.net
|
||||||
arjen@bitbike.com
|
arjen@bitbike.com
|
||||||
|
@ -167,3 +167,16 @@ a b c VALUES(a)
|
|||||||
2 1 11 NULL
|
2 1 11 NULL
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
|
create table t1 (a int not null unique);
|
||||||
|
insert into t1 values (1),(2);
|
||||||
|
insert ignore into t1 select 1 on duplicate key update a=2;
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
2
|
||||||
|
insert ignore into t1 select a from t1 on duplicate key update a=a+1 ;
|
||||||
|
select * from t1;
|
||||||
|
a
|
||||||
|
1
|
||||||
|
3
|
||||||
|
drop table t1;
|
||||||
|
@ -80,3 +80,15 @@ INSERT t1 SELECT a,b,c FROM t2 WHERE d=2 ON DUPLICATE KEY UPDATE c=c+VALUES(a);
|
|||||||
SELECT *, VALUES(a) FROM t1;
|
SELECT *, VALUES(a) FROM t1;
|
||||||
DROP TABLE t1;
|
DROP TABLE t1;
|
||||||
DROP TABLE t2;
|
DROP TABLE t2;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#9725 - "disapearing query/hang" and "unknown error" with "on duplicate key update"
|
||||||
|
# INSERT INGORE...UPDATE gives bad error or breaks protocol.
|
||||||
|
#
|
||||||
|
create table t1 (a int not null unique);
|
||||||
|
insert into t1 values (1),(2);
|
||||||
|
insert ignore into t1 select 1 on duplicate key update a=2;
|
||||||
|
select * from t1;
|
||||||
|
insert ignore into t1 select a from t1 on duplicate key update a=a+1 ;
|
||||||
|
select * from t1;
|
||||||
|
drop table t1;
|
||||||
|
@ -632,7 +632,11 @@ int write_record(TABLE *table,COPY_INFO *info)
|
|||||||
if (fill_record(*info->update_fields, *info->update_values, 0))
|
if (fill_record(*info->update_fields, *info->update_values, 0))
|
||||||
goto err;
|
goto err;
|
||||||
if ((error=table->file->update_row(table->record[1],table->record[0])))
|
if ((error=table->file->update_row(table->record[1],table->record[0])))
|
||||||
|
{
|
||||||
|
if ((error == HA_ERR_FOUND_DUPP_KEY) && info->ignore)
|
||||||
|
break;
|
||||||
goto err;
|
goto err;
|
||||||
|
}
|
||||||
info->updated++;
|
info->updated++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user