summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/slave.cc2
-rw-r--r--sql/sql_base.cc6
-rwxr-xr-xtests/restore-lock.smack63
3 files changed, 68 insertions, 3 deletions
diff --git a/sql/slave.cc b/sql/slave.cc
index 88753047122..7fcfb803ac1 100644
--- a/sql/slave.cc
+++ b/sql/slave.cc
@@ -921,7 +921,7 @@ static void safe_connect(THD* thd, MYSQL* mysql, MASTER_INFO* mi)
mi->port, 0, 0))
{
sql_print_error(
- "Slave thread: error connecting to slave:%s, retry in %d sec",
+ "Slave thread: error connecting to master:%s, retry in %d sec",
mc_mysql_error(mysql), mi->connect_retry);
safe_sleep(thd, mi->connect_retry);
}
diff --git a/sql/sql_base.cc b/sql/sql_base.cc
index e5f8981d174..c8b8589bc7a 100644
--- a/sql/sql_base.cc
+++ b/sql/sql_base.cc
@@ -866,13 +866,15 @@ TABLE *reopen_name_locked_table(THD* thd, TABLE_LIST* table_list)
}
table->key_length=key_length;
- table->version=refresh_version;
- table->flush_version=flush_version;
+ table->version=0;
+ table->flush_version=0;
if (!key_cache_inited)
ha_key_cache();
table->in_use = thd;
check_unused();
pthread_mutex_unlock(&LOCK_open);
+ table->next = thd->open_tables;
+ thd->open_tables = table;
table->tablenr=thd->current_tablenr++;
table->used_fields=0;
table->const_table=0;
diff --git a/tests/restore-lock.smack b/tests/restore-lock.smack
new file mode 100755
index 00000000000..a591ab2d383
--- /dev/null
+++ b/tests/restore-lock.smack
@@ -0,0 +1,63 @@
+#! /usr/local/bin/mysql-super-smack
+
+query "select"
+ {
+ type "select";
+ query "select count(*) from w";
+ has_result_set "y";
+ parsed "n";
+ }
+
+query "restore"
+ {
+ type "restore";
+ query "restore table w from '/tmp'";
+ has_result_set "y";
+ parsed "n";
+ }
+
+query "drop"
+ {
+ type "drop";
+ query "drop table if exists w";
+ has_result_set "n";
+ parsed "n";
+ }
+
+
+
+client "restorer"
+ {
+ user "root";
+ pass "";
+ host "localhost";
+ db "test";
+ query_barrel "1 drop 1 restore";
+ }
+
+client "selector"
+ {
+ user "root";
+ pass "";
+ host "localhost";
+ db "test";
+ query_barrel "-3 1 select";
+ }
+
+main
+ {
+ selector.init();
+ restorer.init();
+ selector.create_threads(1);
+ restorer.create_threads(1);
+ selector.set_num_rounds(1);
+ restorer.set_num_rounds(1);
+ selector.connect();
+ restorer.connect();
+ restorer.unload_query_barrel();
+ selector.unload_query_barrel();
+ restorer.collect_threads();
+ selector.collect_threads();
+ selector.disconnect();
+ restorer.disconnect();
+ } \ No newline at end of file