diff options
-rw-r--r-- | myisam/mi_write.c | 11 | ||||
-rw-r--r-- | mysql-test/r/bulk_replace.result | 5 | ||||
-rw-r--r-- | mysql-test/t/bulk_replace.test | 14 |
3 files changed, 30 insertions, 0 deletions
diff --git a/myisam/mi_write.c b/myisam/mi_write.c index 81064dd1d6a..7ad71f44217 100644 --- a/myisam/mi_write.c +++ b/myisam/mi_write.c @@ -152,6 +152,17 @@ err: save_errno=my_errno; if (my_errno == HA_ERR_FOUND_DUPP_KEY || my_errno == HA_ERR_RECORD_FILE_FULL) { + if (info->bulk_insert) + { + int j; + for (j=0 ; j < share->base.keys ; j++) + { + if (is_tree_inited(& info->bulk_insert[j])) + { + reset_tree(& info->bulk_insert[j]); + } + } + } info->errkey= (int) i; while ( i-- > 0) { diff --git a/mysql-test/r/bulk_replace.result b/mysql-test/r/bulk_replace.result new file mode 100644 index 00000000000..80eedd277a1 --- /dev/null +++ b/mysql-test/r/bulk_replace.result @@ -0,0 +1,5 @@ +a b c +3 1 3 +2 2 2 +Table Op Msg_type Msg_text +test.t1 check status OK diff --git a/mysql-test/t/bulk_replace.test b/mysql-test/t/bulk_replace.test new file mode 100644 index 00000000000..d366004c16f --- /dev/null +++ b/mysql-test/t/bulk_replace.test @@ -0,0 +1,14 @@ +# +# this is a test of bulk-insert code +# as used by REPLACE +# +# by Monty +# + +drop table if exists t1; +CREATE TABLE t1 (a int, unique (a), b int not null, unique(b), c int not null, index(c)); +replace into t1 values (1,1,1),(2,2,2),(3,1,3); +select * from t1; +check table t1; +drop table t1; + |