Bug #17455 Partitions: OPTIMIZE/REPAIR TABLE,wrong message + warnings depending on engine
Submitted: 16 Feb 2006 13:56 Modified: 31 May 2006 4:57
Reporter: Matthias Leich Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Partitions Severity:S3 (Non-critical)
Version:5.1 OS:
Assigned to: Mikael Ronström CPU Architecture:Any

[16 Feb 2006 13:56] Matthias Leich
Description:
It looks like we get a wrong Msg_text and the unspecific
warning
   Error   1030    Got error <number> from storage engine
when executing OPTIMIZE or REPAIR TABLE  <partitioned table>
and the storage engine does not support the command.
Example:
SET SESSION storage_engine='BDB';
CREATE TABLE t_not_partitioned ( f_int1 BIGINT);
CREATE TABLE t_partitioned ( f_int1 BIGINT)
PARTITION BY HASH(f_int1) PARTITIONS 2;
OPTIMIZE TABLE t_not_partitioned;
Table	Op	Msg_type	Msg_text
test.t_not_partitioned	optimize	status	OK
OPTIMIZE TABLE t_partitioned;
Table	Op	Msg_type	Msg_text
test.t_partitioned	optimize	status	OK
REPAIR TABLE t_not_partitioned EXTENDED;
Table	Op	Msg_type	Msg_text
test.t_not_partitioned	repair	note	The storage engine for 
                                            the table doesn't support repair
REPAIR TABLE t_partitioned EXTENDED;
Table	Op	Msg_type	Msg_text
test.t_partitioned	repair	status	Table is already up to date
                  <----- The Msg_text is wrong, because the 
                           storage engine does not support the feature
                            "REPAIR". Therefore the server cannot know,
                            if the table is already up to date.
Warnings:
Error	1030	Got error -1 from storage engine
                   <------ I guess the storage engine tells that it
                             doe not know REPAIR.

Other storage engines like MEMORY/InnoDB/.. show similar
effects depending on their capabilities.

My environment:
   - Intel PC with Linux(SuSE 9.3)
   - MySQL compiled from source
         Version 5.1 last ChangeSet@1.2117, 2006-02-16

How to repeat:
Please execute the statements above or use my attached 
testscript ml102.test
  copy it to mysql-test/t
  echo "Dummy" > r/ml102.result   # Produce a dummy file with 
                                                   # expected results
  ./mysql-test-run ml102

Suggested fix:
Please implement a behaviour like on non partitioned tables or
at least document the current behaviour within the manual.
[16 Feb 2006 13:57] Matthias Leich
testcase

Attachment: ml102.test (application/test, text), 388 bytes.

[24 May 2006 11:52] Mikael Ronström
Reviewed by Sergey Gluhov
[26 May 2006 17:21] Mikael Ronström
Will appear in version 5.1.12
[30 May 2006 7:31] Mikael Ronström
I think the behaviour now follows the normal reporting behaviour of non-partitioned
tables although of course you can get reports on many partitions in one command and
not on just one table.
[31 May 2006 4:57] Jon Stephens
Thank you for your bug report. This issue has been committed to our
source repository of that product and will be incorporated into the
next release.

If necessary, you can access the source repository and build the latest
available version, including the bugfix, yourself. More information 
about accessing the source trees is available at
    http://www.mysql.com/doc/en/Installing_source_tree.html

Additional info:

Documented bugfix in 5.1.12 changelog. Closed.