1
0
mirror of https://github.com/MariaDB/server.git synced 2025-12-24 11:21:21 +03:00

Fix for bug #490 and #491 (see details below)

mysql-test/r/insert_select.result:
  Result update.
mysql-test/r/rpl_insert_id.result:
  Test update
mysql-test/t/insert_select.test:
  Check if a partly completed INSERT SELECT (failing because of "Duplicate key"
  after successfully inserting other rows) is written to the binlog if the
  table is not transactional and at least one row has been inserted (bug #491)
mysql-test/t/rpl_insert_id.test:
  Test for bug #490 (INSERT SELECT in auto_increment)
sql/sql_insert.cc:
  - In INSERT ... SELECT, if it fails with error but one row has been inserted and
  the table is not transactional, we must write to the binlog (the slave will stop
  because of the error code in the binlog event, this is normal). bug 491.
  - we must set INSERT_ID before writing to the binlog (bug 490
  accidentally introduced by another dev in 4.0.13).
This commit is contained in:
unknown
2003-05-24 16:43:53 +02:00
parent cceae0577b
commit 73e80314aa
5 changed files with 109 additions and 9 deletions

View File

@@ -1,6 +1,7 @@
#see if queries that use both
#auto_increment and LAST_INSERT_ID()
#are replicated well
# see if queries that use both
# auto_increment and LAST_INSERT_ID()
# are replicated well
source include/master-slave.inc;
connection master;
drop table if exists t1;
@@ -15,9 +16,11 @@ sync_with_master;
select * from t1;
select * from t2;
connection master;
#check if multi-line inserts,
#which set last_insert_id to the first id inserted,
#are replicated the same way
# check if multi-line inserts,
# which set last_insert_id to the first id inserted,
# are replicated the same way
drop table t1;
drop table t2;
create table t1(a int auto_increment, key(a));
@@ -32,6 +35,24 @@ sync_with_master;
select * from t1;
select * from t2;
connection master;
# check if INSERT SELECT in auto_increment is well replicated (bug #490)
drop table t1;
drop table t2;
create table t1(a int auto_increment, key(a));
create table t2(b int auto_increment, c int, key(b));
insert into t1 values (10);
insert into t1 values (null),(null),(null);
insert into t2 values (5,0);
insert into t2 (c) select * from t1;
select * from t2;
save_master_pos;
connection slave;
sync_with_master;
select * from t1;
select * from t2;
connection master;
drop table t1;
drop table t2;
save_master_pos;