Below is the list of changes that have just been committed into a local
5.0 repository of kostja. When kostja does a push these changes will
be propagated to the main repository and, within 24 hours after the
push, to the public repository.
For information on how to access the public repository
see http://dev.mysql.com/doc/mysql/en/installing-source-tree.html
ChangeSet@stripped, 2007-05-18 12:29:06+04:00, kostja@vajra.(none) +7 -0
Bug #27907 "Misleading error message when opening/locking tables"
Adjust the check that defines the error message to be returned.
mysql-test/r/sp-error.result@stripped, 2007-05-18 12:29:02+04:00, kostja@vajra.(none) +3 -3
Update results (more accurate error code)
mysql-test/r/sp-prelocking.result@stripped, 2007-05-18 12:29:02+04:00, kostja@vajra.(none)
+13 -0
Update results (more accurate error code)
mysql-test/r/trigger.result@stripped, 2007-05-18 12:29:02+04:00, kostja@vajra.(none) +2 -2
Update results (more accurate error code)
mysql-test/t/sp-error.test@stripped, 2007-05-18 12:29:02+04:00, kostja@vajra.(none) +3 -3
ER_NOT_LOCKED -> ER_NO_SUCH_TABLE
mysql-test/t/sp-prelocking.test@stripped, 2007-05-18 12:29:02+04:00, kostja@vajra.(none) +31
-0
Add a test case for Bug#27907
mysql-test/t/trigger.test@stripped, 2007-05-18 12:29:02+04:00, kostja@vajra.(none) +2 -2
ER_NOT_LOCKED -> ER_NO_SUCH_TABLE
sql/sql_base.cc@stripped, 2007-05-18 12:29:03+04:00, kostja@vajra.(none) +10 -3
Adjust the check for where-we-are for a better error message.
# This is a BitKeeper patch. What follows are the unified diffs for the
# set of deltas contained in the patch. The rest of the patch, the part
# that BitKeeper cares about, is below these diffs.
# User: kostja
# Host: vajra.(none)
# Root: /opt/local/work/mysql-5.0-runtime
--- 1.379/sql/sql_base.cc 2007-05-16 09:51:57 +04:00
+++ 1.380/sql/sql_base.cc 2007-05-18 12:29:03 +04:00
@@ -1669,10 +1669,17 @@ TABLE *open_table(THD *thd, TABLE_LIST *
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);
}
--- 1.58/mysql-test/r/trigger.result 2007-05-11 20:33:10 +04:00
+++ 1.59/mysql-test/r/trigger.result 2007-05-18 12:29:02 +04:00
@@ -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;
--- 1.65/mysql-test/t/trigger.test 2007-05-11 20:33:10 +04:00
+++ 1.66/mysql-test/t/trigger.test 2007-05-18 12:29:02 +04:00
@@ -1000,9 +1000,9 @@ create trigger t1_bi after insert on t1
# 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;
--- 1.112/mysql-test/r/sp-error.result 2007-03-14 21:02:30 +03:00
+++ 1.113/mysql-test/r/sp-error.result 2007-05-18 12:29:02 +04:00
@@ -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
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;
--- 1.113/mysql-test/t/sp-error.test 2007-03-14 21:02:30 +03:00
+++ 1.114/mysql-test/t/sp-error.test 2007-05-18 12:29:02 +04:00
@@ -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
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;
--- 1.5/mysql-test/r/sp-prelocking.result 2006-06-21 01:50:15 +04:00
+++ 1.6/mysql-test/r/sp-prelocking.result 2007-05-18 12:29:02 +04:00
@@ -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
--- 1.6/mysql-test/t/sp-prelocking.test 2006-11-20 23:41:41 +03:00
+++ 1.7/mysql-test/t/sp-prelocking.test 2007-05-18 12:29:02 +04:00
@@ -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
| Thread |
|---|
| • bk commit into 5.0 tree (kostja:1.2489) BUG#27907 | konstantin | 18 May |