diff --git a/client/mysqldump.c b/client/mysqldump.c index 38202a5c253..6078a1e9dc0 100644 --- a/client/mysqldump.c +++ b/client/mysqldump.c @@ -154,7 +154,7 @@ static struct my_option my_long_options[] = {"first-slave", 'x', "Locks all tables across all databases.", (gptr*) &opt_first_slave, (gptr*) &opt_first_slave, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, - {"flush-logs", 'F', "Flush logs file in server before starting dump.", + {"flush-logs", 'F', "Flush logs file in server before starting dump. Note that if you use this option in combination with the --all-databases (or -A) option, the logs will be flushed for each database dumped.", (gptr*) &flush_logs, (gptr*) &flush_logs, 0, GET_BOOL, NO_ARG, 0, 0, 0, 0, 0, 0}, {"force", 'f', "Continue even if we get an sql-error.", diff --git a/mysql-test/r/lock.result b/mysql-test/r/lock.result index ad5251b9110..31a18fe6cec 100644 --- a/mysql-test/r/lock.result +++ b/mysql-test/r/lock.result @@ -41,5 +41,9 @@ lock tables t1 write; check table t2; Table Op Msg_type Msg_text test.t2 check error Table 't2' was not locked with LOCK TABLES +insert into t1 select nr from t1; +Table 't1' was not locked with LOCK TABLES unlock tables; +lock tables t1 write, t1 as t1_alias read; +insert into t1 select index1,nr from t1 as t1_alias; drop table t1,t2; diff --git a/mysql-test/t/lock.test b/mysql-test/t/lock.test index 385713174d2..9015ce12fde 100644 --- a/mysql-test/t/lock.test +++ b/mysql-test/t/lock.test @@ -51,5 +51,9 @@ check table t1; # Check error message lock tables t1 write; check table t2; +--error 1100 +insert into t1 select nr from t1; unlock tables; +lock tables t1 write, t1 as t1_alias read; +insert into t1 select index1,nr from t1 as t1_alias; drop table t1,t2; diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 40153ad847e..efb008f4a6e 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -824,8 +824,12 @@ TABLE *open_table(THD *thd,const char *db,const char *table_name, { if (table->key_length == key_length && !memcmp(table->table_cache_key,key,key_length) && - !my_strcasecmp(table->table_name,alias)) + !my_strcasecmp(table->table_name,alias) && + table->query_id != thd->query_id) + { + table->query_id=thd->query_id; goto reset; + } } my_printf_error(ER_TABLE_NOT_LOCKED,ER(ER_TABLE_NOT_LOCKED),MYF(0),alias); DBUG_RETURN(0);