Commit 59e0502e authored by mikael@dator5.(none)'s avatar mikael@dator5.(none)

BUG#17138: Stored procedure error

Review fixes
parent c91d6eb7
...@@ -1043,11 +1043,12 @@ alter table t1 add partition (partition p2 values in (3)); ...@@ -1043,11 +1043,12 @@ alter table t1 add partition (partition p2 values in (3));
alter table t1 drop partition p2; alter table t1 drop partition p2;
use test; use test;
drop database db99; drop database db99;
drop procedure if exists mysqltest_1;
create table t1 (a int) create table t1 (a int)
partition by list (a) partition by list (a)
(partition p0 values in (0)); (partition p0 values in (0));
insert into t1 values (0); insert into t1 values (0);
create procedure po () create procedure mysqltest_1 ()
begin begin
begin begin
declare continue handler for sqlexception begin end; declare continue handler for sqlexception begin end;
...@@ -1056,6 +1057,7 @@ end; ...@@ -1056,6 +1057,7 @@ end;
prepare stmt1 from 'alter table t1'; prepare stmt1 from 'alter table t1';
execute stmt1; execute stmt1;
end// end//
call po()// call mysqltest_1()//
drop table t1; drop table t1;
drop procedure mysqltest_1;
End of 5.1 tests End of 5.1 tests
...@@ -1202,7 +1202,9 @@ drop database db99; ...@@ -1202,7 +1202,9 @@ drop database db99;
# #
#BUG 17138 Problem with stored procedure and analyze partition #BUG 17138 Problem with stored procedure and analyze partition
# #
drop procedure mysqltest_1 if exists; --disable_warnings
drop procedure if exists mysqltest_1;
--enable_warnings
create table t1 (a int) create table t1 (a int)
partition by list (a) partition by list (a)
......
...@@ -981,8 +981,13 @@ int write_record(THD *thd, TABLE *table,COPY_INFO *info) ...@@ -981,8 +981,13 @@ int write_record(THD *thd, TABLE *table,COPY_INFO *info)
goto err; goto err;
table->file->restore_auto_increment(); // it's too early here! BUG#20188 table->file->restore_auto_increment(); // it's too early here! BUG#20188
is_duplicate_key_error= table->file->is_fatal_error(error, 0); is_duplicate_key_error= table->file->is_fatal_error(error, 0);
if (info->ignore && !is_duplicate_key_error) if (!is_duplicate_key_error)
{
if (info->ignore)
goto ok_or_after_trg_err; goto ok_or_after_trg_err;
else
goto err;
}
if ((int) (key_nr = table->file->get_dup_key(error)) < 0) if ((int) (key_nr = table->file->get_dup_key(error)) < 0)
{ {
error=HA_ERR_FOUND_DUPP_KEY; /* Database can't find key */ error=HA_ERR_FOUND_DUPP_KEY; /* Database can't find key */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment