Bug #29458 check/optimize/repair/analyze table reports 'corrupt' unnessesarily

Submitted: 30 Jun 2007 18:18 Modified: 12 May 2009 0:37
Reporter: Shane Bester (Platinum Quality Contributor) Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Errors Severity:S3 (Non-critical)
Version:5.0.46, 5.1.21 OS:Any
Assigned to: Staale Smedseng CPU Architecture:Any

[30 Jun 2007 18:18] Shane Bester
Description:
check/optimize/analyze/repair table wrongly returns 'corrupt' in at least these cases:

1) table didn't exist
2) somebody did KILL <id> and killed the check table

mysql> drop table if exists a;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> check table a;
+--------+-------+----------+------------------------------+
| Table  | Op    | Msg_type | Msg_text                     |
+--------+-------+----------+------------------------------+
| test.a | check | Error    | Table 'test.a' doesn't exist |
| test.a | check | error    | Corrupt                      |
+--------+-------+----------+------------------------------+
2 rows in set (0.00 sec)

So, how can a table be corrupt and not exist?

How to repeat:
drop table if exists a;
check table a;
optimize table a;
repair table a;
analyze table a;

Suggested fix:
I think a more appropriate error would be to just return this:
+--------+-------+----------+------------------------------+
| Table  | Op    | Msg_type | Msg_text                     |
+--------+-------+----------+------------------------------+
| test.a | check | Error    | Table 'test.a' doesn't exist |
+--------+-------+----------+------------------------------+

Also, look at Msg_type column.  One row is 'Error' and the other is 'error', which looks inconsistent.
[19 Nov 2007 14:35] Chad MILLER
Stealing this since it blocks an important bug of mine, Bug#25347.
[3 Oct 2008 13:39] Chad MILLER
This is still in the main trees, as of late September 2008.

Server version: 6.0.7-alpha-debug-log Source distribution

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> drop table if exists a;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> check table a;
+--------+-------+----------+------------------------------+
| Table  | Op    | Msg_type | Msg_text                     |
+--------+-------+----------+------------------------------+
| test.a | check | Error    | Table 'test.a' doesn't exist | 
| test.a | check | error    | Corrupt                      | 
+--------+-------+----------+------------------------------+
2 rows in set (0.00 sec)

mysql> optimize table a;
+--------+----------+----------+------------------------------+
| Table  | Op       | Msg_type | Msg_text                     |
+--------+----------+----------+------------------------------+
| test.a | optimize | Error    | Table 'test.a' doesn't exist | 
| test.a | optimize | error    | Corrupt                      | 
+--------+----------+----------+------------------------------+
2 rows in set (0.00 sec)

mysql> repair table a;
+--------+--------+----------+------------------------------+
| Table  | Op     | Msg_type | Msg_text                     |
+--------+--------+----------+------------------------------+
| test.a | repair | Error    | Table 'test.a' doesn't exist | 
| test.a | repair | error    | Corrupt                      | 
+--------+--------+----------+------------------------------+
2 rows in set (0.00 sec)

mysql> analyze table a;
+--------+---------+----------+------------------------------+
| Table  | Op      | Msg_type | Msg_text                     |
+--------+---------+----------+------------------------------+
| test.a | analyze | Error    | Table 'test.a' doesn't exist | 
| test.a | analyze | error    | Corrupt                      | 
+--------+---------+----------+------------------------------+
2 rows in set (0.00 sec)
[27 Feb 2009 8:39] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/67799
[27 Feb 2009 15:53] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/67883
[4 Mar 2009 12:19] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/68229

2827 Staale Smedseng	2009-03-04
      Missing change to funcs_1.myisam_views after push of Bug#29458
[5 Mar 2009 8:41] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/68316

2830 Staale Smedseng	2009-03-05
      Addendum to previous patch for Bug#29458. A number 
      of system errnos when opening a table are masked 
      as ER_FILE_NOT_FOUND. This patch handles this as
      "Operation failed" as well.
[5 Mar 2009 10:35] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/68340

2833 He Zhenxing	2009-03-05 [merge]
      Auto merge
[5 Mar 2009 10:36] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/68341

3102 He Zhenxing	2009-03-05 [merge]
      Auto merge
[13 Mar 2009 19:03] Bugs System
Pushed into 5.1.33 (revid:joro@sun.com-20090313111355-7bsi1hgkvrg8pdds) (version source revid:zhou.li@sun.com-20090311061050-ihp0g77znonq1tuq) (merge vers: 5.1.33) (pib:6)
[18 Mar 2009 2:47] Paul DuBois
Noted in 5.1.33 changelog.

CHECK TABLE, REPAIR TABLE, ANALYZE TABLE, and OPTIMIZE TABLE
erroneously reported a table to be corrupt if the table did not exist
or the statement was terminated with KILL.

Setting report to NDI pending push into 5.0.x/6.0.x.
[18 Mar 2009 13:20] Bugs System
Pushed into 6.0.11-alpha (revid:joro@sun.com-20090318122208-1b5kvg6zeb4hxwp9) (version source revid:matthias.leich@sun.com-20090310140952-gwtoq87wykhji3zi) (merge vers: 6.0.11-alpha) (pib:6)
[18 Mar 2009 14:25] Paul DuBois
Noted in 6.0.11 changelog.

Setting report to NDI pending push into 5.0.x.
[9 May 2009 16:40] Bugs System
Pushed into 5.1.34-ndb-6.2.18 (revid:jonas@mysql.com-20090508185236-p9b3as7qyauybefl) (version source revid:jonas@mysql.com-20090508100057-30ote4xggi4nq14v) (merge vers: 5.1.33-ndb-6.2.18) (pib:6)
[9 May 2009 17:37] Bugs System
Pushed into 5.1.34-ndb-6.3.25 (revid:jonas@mysql.com-20090509063138-1u3q3v09wnn2txyt) (version source revid:jonas@mysql.com-20090508175813-s6yele2z3oh6o99z) (merge vers: 5.1.33-ndb-6.3.25) (pib:6)
[9 May 2009 18:35] Bugs System
Pushed into 5.1.34-ndb-7.0.6 (revid:jonas@mysql.com-20090509154927-im9a7g846c6u1hzc) (version source revid:jonas@mysql.com-20090509073226-09bljakh9eppogec) (merge vers: 5.1.33-ndb-7.0.6) (pib:6)
[11 May 2009 11:03] Davi Arnaut
5.0 bazaar trigger failed to run. Pushed to 5.0.80
[12 May 2009 0:37] Paul DuBois
Noted in 5.0.80 changelog.

Portions of this website are copyright © 2001, 2002 The PHP Group

Page generated in 0.078 sec. using MySQL 8.4.7-u6-cloud

Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the respective copyright holders.
It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.