Bug #27907 "Misleading error message when opening/locking tables"
Adjust the check that defines the error message to be returned.
This commit is contained in:
parent
6d6674e71f
commit
1016aa36ec
@ -1030,7 +1030,7 @@ select bug12329();
|
||||
bug12329()
|
||||
101
|
||||
execute stmt1;
|
||||
ERROR HY000: Table 't2' was not locked with LOCK TABLES
|
||||
ERROR 42S02: Table 'test.t2' doesn't exist
|
||||
deallocate prepare stmt1;
|
||||
drop function bug12329;
|
||||
drop table t1, t2;
|
||||
@ -1152,12 +1152,12 @@ create trigger t1_ai after insert on t1 for each row insert into t2 values (new.
|
||||
create view v1 as select * from t1;
|
||||
drop table t2;
|
||||
insert into v1 values (1);
|
||||
ERROR HY000: Table 't2' was not locked with LOCK TABLES
|
||||
ERROR 42S02: Table 'test.t2' doesn't exist
|
||||
drop trigger t1_ai;
|
||||
create function bug11555_1() returns int return (select max(i) from t2);
|
||||
create trigger t1_ai after insert on t1 for each row set @a:=bug11555_1();
|
||||
insert into v1 values (2);
|
||||
ERROR HY000: Table 't2' was not locked with LOCK TABLES
|
||||
ERROR 42S02: Table 'test.t2' doesn't exist
|
||||
drop function bug11555_1;
|
||||
drop table t1;
|
||||
drop view v1;
|
||||
|
@ -254,4 +254,17 @@ execute stmt;
|
||||
deallocate prepare stmt;
|
||||
drop function bug19634;
|
||||
drop table t1, t2, t3;
|
||||
drop table if exists bug_27907_logs;
|
||||
drop table if exists bug_27907_t1;
|
||||
create table bug_27907_logs (a int);
|
||||
create table bug_27907_t1 (a int);
|
||||
create trigger bug_27907_t1_ai after insert on bug_27907_t1
|
||||
for each row
|
||||
begin
|
||||
insert into bug_27907_logs (a) values (1);
|
||||
end|
|
||||
drop table bug_27907_logs;
|
||||
insert into bug_27907_t1(a) values (1);
|
||||
ERROR 42S02: Table 'test.bug_27907_logs' doesn't exist
|
||||
drop table bug_27907_t1;
|
||||
End of 5.0 tests
|
||||
|
@ -820,9 +820,9 @@ call p1();
|
||||
drop trigger t1_bi;
|
||||
create trigger t1_bi after insert on t1 for each row insert into t3 values (new.id);
|
||||
execute stmt1;
|
||||
ERROR HY000: Table 't3' was not locked with LOCK TABLES
|
||||
ERROR 42S02: Table 'test.t3' doesn't exist
|
||||
call p1();
|
||||
ERROR HY000: Table 't3' was not locked with LOCK TABLES
|
||||
ERROR 42S02: Table 'test.t3' doesn't exist
|
||||
deallocate prepare stmt1;
|
||||
drop procedure p1;
|
||||
drop table t1, t2, t3;
|
||||
|
@ -1454,7 +1454,7 @@ select bug12329();
|
||||
# Until we implement proper mechanism for invalidation of PS/SP when table
|
||||
# or SP's are changed the following statement will fail with 'Table ... was
|
||||
# not locked' error (this mechanism should be based on the new TDC).
|
||||
--error 1100
|
||||
--error ER_NO_SUCH_TABLE
|
||||
execute stmt1;
|
||||
deallocate prepare stmt1;
|
||||
drop function bug12329;
|
||||
@ -1639,13 +1639,13 @@ create trigger t1_ai after insert on t1 for each row insert into t2 values (new.
|
||||
create view v1 as select * from t1;
|
||||
drop table t2;
|
||||
# Limitation, the desired error is ER_VIEW_INVALID
|
||||
--error ER_TABLE_NOT_LOCKED
|
||||
--error ER_NO_SUCH_TABLE
|
||||
insert into v1 values (1);
|
||||
drop trigger t1_ai;
|
||||
create function bug11555_1() returns int return (select max(i) from t2);
|
||||
create trigger t1_ai after insert on t1 for each row set @a:=bug11555_1();
|
||||
# Limitation, the desired error is ER_VIEW_INVALID
|
||||
--error ER_TABLE_NOT_LOCKED
|
||||
--error ER_NO_SUCH_TABLE
|
||||
insert into v1 values (2);
|
||||
drop function bug11555_1;
|
||||
drop table t1;
|
||||
|
@ -301,5 +301,36 @@ deallocate prepare stmt;
|
||||
drop function bug19634;
|
||||
drop table t1, t2, t3;
|
||||
|
||||
#
|
||||
# Bug #27907 Misleading error message when opening/locking tables
|
||||
#
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists bug_27907_logs;
|
||||
drop table if exists bug_27907_t1;
|
||||
--enable_warnings
|
||||
|
||||
create table bug_27907_logs (a int);
|
||||
create table bug_27907_t1 (a int);
|
||||
|
||||
delimiter |;
|
||||
|
||||
create trigger bug_27907_t1_ai after insert on bug_27907_t1
|
||||
for each row
|
||||
begin
|
||||
insert into bug_27907_logs (a) values (1);
|
||||
end|
|
||||
|
||||
delimiter ;|
|
||||
|
||||
drop table bug_27907_logs;
|
||||
|
||||
#
|
||||
# was failing before with error ER_NOT_LOCKED
|
||||
#
|
||||
--error ER_NO_SUCH_TABLE
|
||||
insert into bug_27907_t1(a) values (1);
|
||||
|
||||
drop table bug_27907_t1;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
@ -1000,9 +1000,9 @@ create trigger t1_bi after insert on t1 for each row insert into t3 values (new.
|
||||
# Until we implement proper mechanism for invalidation of PS/SP when table
|
||||
# or SP's are changed these two statements will fail with 'Table ... was
|
||||
# not locked' error (this mechanism should be based on the new TDC).
|
||||
--error 1100 #ER_TABLE_NOT_LOCKED
|
||||
--error ER_NO_SUCH_TABLE
|
||||
execute stmt1;
|
||||
--error 1100 #ER_TABLE_NOT_LOCKED
|
||||
--error ER_NO_SUCH_TABLE
|
||||
call p1();
|
||||
deallocate prepare stmt1;
|
||||
drop procedure p1;
|
||||
|
@ -1669,10 +1669,17 @@ TABLE *open_table(THD *thd, TABLE_LIST *table_list, MEM_ROOT *mem_root,
|
||||
VOID(pthread_mutex_unlock(&LOCK_open));
|
||||
}
|
||||
}
|
||||
if ((thd->locked_tables) && (thd->locked_tables->lock_count > 0))
|
||||
my_error(ER_TABLE_NOT_LOCKED, MYF(0), alias);
|
||||
else
|
||||
/*
|
||||
No table in the locked tables list. In case of explicit LOCK TABLES
|
||||
this can happen if a user did not include the able into the list.
|
||||
In case of pre-locked mode locked tables list is generated automatically,
|
||||
so we may only end up here if the table did not exist when
|
||||
locked tables list was created.
|
||||
*/
|
||||
if (thd->prelocked_mode == PRELOCKED)
|
||||
my_error(ER_NO_SUCH_TABLE, MYF(0), table_list->db, table_list->alias);
|
||||
else
|
||||
my_error(ER_TABLE_NOT_LOCKED, MYF(0), alias);
|
||||
DBUG_RETURN(0);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user