summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/r/check.result8
-rw-r--r--mysql-test/t/check.test9
-rw-r--r--sql/handler.cc8
3 files changed, 24 insertions, 1 deletions
diff --git a/mysql-test/r/check.result b/mysql-test/r/check.result
index 739eab2ed76..0bff34dba20 100644
--- a/mysql-test/r/check.result
+++ b/mysql-test/r/check.result
@@ -15,3 +15,11 @@ test.v1 check status OK
test.t2 check status OK
drop view v1;
drop table t1, t2;
+CREATE TEMPORARY TABLE t1(a INT);
+CHECK TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+REPAIR TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 repair status OK
+DROP TABLE t1;
diff --git a/mysql-test/t/check.test b/mysql-test/t/check.test
index eb72d75da3c..363f9d419d6 100644
--- a/mysql-test/t/check.test
+++ b/mysql-test/t/check.test
@@ -37,3 +37,12 @@ Create view v1 as Select * from t1;
Check Table v1,t2;
drop view v1;
drop table t1, t2;
+
+#
+# BUG#26325 - TEMPORARY TABLE "corrupt" after first read, according to CHECK
+# TABLE
+#
+CREATE TEMPORARY TABLE t1(a INT);
+CHECK TABLE t1;
+REPAIR TABLE t1;
+DROP TABLE t1;
diff --git a/sql/handler.cc b/sql/handler.cc
index 2d836b30862..55e2e478027 100644
--- a/sql/handler.cc
+++ b/sql/handler.cc
@@ -2355,7 +2355,13 @@ static bool update_frm_version(TABLE *table)
int result= 1;
DBUG_ENTER("update_frm_version");
- if (table->s->mysql_version != MYSQL_VERSION_ID)
+ /*
+ No need to update frm version in case table was created or checked
+ by server with the same version. This also ensures that we do not
+ update frm version for temporary tables as this code doesn't support
+ temporary tables.
+ */
+ if (table->s->mysql_version == MYSQL_VERSION_ID)
DBUG_RETURN(0);
strxmov(path, table->s->normalized_path.str, reg_ext, NullS);