Commit 2486c23c authored by unknown's avatar unknown

BUG#26325 - TEMPORARY TABLE "corrupt" after first read, according

            to CHECK TABLE

CHECK/REPAIR TABLE reports "File not found" error when issued
against temporary table.

Fixed by disabling a brunch of code (in case it gets temporary table)
that is responsible for updating frm version as it is not needed
for temporary tables.


mysql-test/r/check.result:
  A test case for BUG#26325.
mysql-test/t/check.test:
  A test case for BUG#26325.
sql/handler.cc:
  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.
parent 7dc85356
...@@ -14,3 +14,11 @@ test.v1 check status OK ...@@ -14,3 +14,11 @@ test.v1 check status OK
test.t2 check status OK test.t2 check status OK
drop view v1; drop view v1;
drop table t1, t2; 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;
...@@ -36,3 +36,12 @@ Create view v1 as Select * from t1; ...@@ -36,3 +36,12 @@ Create view v1 as Select * from t1;
Check Table v1,t2; Check Table v1,t2;
drop view v1; drop view v1;
drop table t1, t2; 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;
...@@ -1997,7 +1997,13 @@ static bool update_frm_version(TABLE *table, bool needs_lock) ...@@ -1997,7 +1997,13 @@ static bool update_frm_version(TABLE *table, bool needs_lock)
int result= 1; int result= 1;
DBUG_ENTER("update_frm_version"); 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); DBUG_RETURN(0);
strxnmov(path, sizeof(path)-1, mysql_data_home, "/", table->s->db, "/", strxnmov(path, sizeof(path)-1, mysql_data_home, "/", table->s->db, "/",
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment