mirror of
https://github.com/MariaDB/server.git
synced 2025-01-18 13:02:28 +01:00
1d3b16335a
#2709 Affected Rows for ON DUPL. KEY undocumented, perheps illogical 1. added COPY_INFO::updated to work with it in 'insert .. on duplicate' instead of COPY_INFO::deleted 2. added affected rows to output of "info:" in mysqltest.c client/mysqltest.c: added "affected rows" to output of "info : ".. mysql-test/r/insert_update.result: added tests for affected rows with insert .. duplicate (bug #2709) mysql-test/t/insert_update.test: added tests for affected rows with insert .. duplicate (bug #2709) sql/sql_class.h: added COPY_INFO::updated sql/sql_insert.cc: get write_record to work with COPY_INFO::updated instead of COPY_INFO::deleted for 'insert ... duplicate' statement
50 lines
1.5 KiB
Text
50 lines
1.5 KiB
Text
--disable_warnings
|
|
DROP TABLE IF EXISTS t1;
|
|
--enable_warnings
|
|
|
|
CREATE TABLE t1 (a INT, b INT, c INT, UNIQUE (A), UNIQUE(B));
|
|
INSERT t1 VALUES (1,2,10), (3,4,20);
|
|
INSERT t1 VALUES (5,6,30) ON DUPLICATE KEY UPDATE c=c+100;
|
|
SELECT * FROM t1;
|
|
INSERT t1 VALUES (5,7,40) ON DUPLICATE KEY UPDATE c=c+100;
|
|
SELECT * FROM t1;
|
|
INSERT t1 VALUES (8,4,50) ON DUPLICATE KEY UPDATE c=c+1000;
|
|
SELECT * FROM t1;
|
|
INSERT t1 VALUES (1,4,60) ON DUPLICATE KEY UPDATE c=c+10000;
|
|
SELECT * FROM t1;
|
|
-- error 1062
|
|
INSERT t1 VALUES (1,9,70) ON DUPLICATE KEY UPDATE c=c+100000, b=4;
|
|
SELECT * FROM t1;
|
|
TRUNCATE TABLE t1;
|
|
INSERT t1 VALUES (1,2,10), (3,4,20);
|
|
INSERT t1 VALUES (5,6,30), (7,4,40), (8,9,60) ON DUPLICATE KEY UPDATE c=c+100;
|
|
SELECT * FROM t1;
|
|
INSERT t1 SET a=5 ON DUPLICATE KEY UPDATE b=0;
|
|
SELECT * FROM t1;
|
|
INSERT t1 VALUES (2,1,11), (7,4,40) ON DUPLICATE KEY UPDATE c=c+VALUES(a);
|
|
SELECT *, VALUES(a) FROM t1;
|
|
explain extended SELECT *, VALUES(a) FROM t1;
|
|
explain extended select * from t1 where values(a);
|
|
DROP TABLE t1;
|
|
|
|
#
|
|
# test for Bug #2709 "Affected Rows for ON DUPL.KEY undocumented,
|
|
# perhaps illogical"
|
|
#
|
|
create table t1(a int primary key, b int);
|
|
insert into t1 values(1,1),(2,2),(3,3),(4,4),(5,5);
|
|
select * from t1;
|
|
|
|
enable_info;
|
|
insert into t1 values(4,14),(5,15),(6,16),(7,17),(8,18)
|
|
on duplicate key update b=b+10;
|
|
disable_info;
|
|
|
|
select * from t1;
|
|
|
|
enable_info;
|
|
replace into t1 values(5,25),(6,26),(7,27),(8,28),(9,29);
|
|
disable_info;
|
|
|
|
select * from t1;
|
|
drop table t1;
|