• Mattias Jonsson's avatar
    Post push fix for valgrind warning in ha_partition.cc · ad15cd68
    Mattias Jonsson authored
    Bug#35161
    Fixed memory leak when failing to open a partition.
    
    Bug#20129
    Added tests for verifying REPAIR PARTITION.
    
    mysql-test/std_data/parts/t1_will_crash#P#p1_first_1024.MYD:
      Bug#20129: ALTER TABLE ... REPAIR PARTITION ... not working
      
      (see mysql-test/suite/parts/t/partition_repair_myisam.test
      Created by:
      CREATE TABLE t1_will_crash (
        a VARCHAR(255),
        b INT,
        c LONGTEXT,
        PRIMARY KEY (a, b))ENGINE=MyISAM
      PARTITION BY HASH (b)
      PARTITIONS 7;
      INSERT INTO t1_will_crash VALUES ...
      and then
      head -c 1024 var/master-data/test/t1_will_crash#P#p1.MYD
      into this file.
    mysql-test/std_data/parts/t1_will_crash#P#p2.MYD:
      Bug#20129: ALTER TABLE ... REPAIR PARTITION ... not working
      
      (see mysql-test/suite/parts/t/partition_repair_myisam.test)
      copy of file right after _mi_mark_file_changed in mi_write
      was done.
    mysql-test/std_data/parts/t1_will_crash#P#p2.MYI:
      Bug#20129: ALTER TABLE ... REPAIR PARTITION ... not working
      
      (see mysql-test/suite/parts/t/partition_repair_myisam.test)
      copy of file right after _mi_mark_file_changed in mi_write
      was done.
    mysql-test/std_data/parts/t1_will_crash#P#p3.MYI:
      Bug#20129: ALTER TABLE ... REPAIR PARTITION ... not working
      
      (see mysql-test/suite/parts/t/partition_repair_myisam.test)
      copy of file right after *share->write_record was done.
    mysql-test/std_data/parts/t1_will_crash#P#p4.MYI:
      Bug#20129: ALTER TABLE ... REPAIR PARTITION ... not working
      
      (see mysql-test/suite/parts/t/partition_repair_myisam.test)
      copy of file right after flush_cached_blocks
    mysql-test/std_data/parts/t1_will_crash#P#p6.MYD:
      Bug#20129: ALTER TABLE ... REPAIR PARTITION ... not working
      
      (see mysql-test/suite/parts/t/partition_repair_myisam.test)
      copy of file right after _mi_write_part_record in
      write_dynamic_record returned for the first time.
    mysql-test/std_data/parts/t1_will_crash#P#p6_2.MYD:
      Bug#20129: ALTER TABLE ... REPAIR PARTITION ... not working
      
      (see mysql-test/suite/parts/t/partition_repair_myisam.test)
      copy of file right after _mi_write_part_record in
      write_dynamic_record returned for the second time.
    mysql-test/std_data/parts/t1_will_crash#P#p6_3.MYD:
      Bug#20129: ALTER TABLE ... REPAIR PARTITION ... not working
      
      (see mysql-test/suite/parts/t/partition_repair_myisam.test)
      copy of file right after _mi_write_part_record in
      write_dynamic_record returned for the third time.
      (data file fully updated).
    mysql-test/suite/parts/r/partition_recover_myisam.result:
      Bug#35161
      
      Renamed since it was a test of recover
      and to make repair free for use without
      --myisam-recover
    mysql-test/suite/parts/r/partition_repair_myisam.result:
      Bug#20129: ALTER TABLE ... REPAIR PARTITION ... not working
      
      New result file for testing CHECK/REPAIR of partitioned tables
    mysql-test/suite/parts/t/partition_recover_myisam-master.opt:
      Bug#35161
      
      Renamed since it was a test of recover
      and to make repair free for use without
      --myisam-recover
    mysql-test/suite/parts/t/partition_recover_myisam.test:
      Bug#35161
      
      Renamed since it was a test of recover
      and to make repair free for use without
      --myisam-recover
    mysql-test/suite/parts/t/partition_repair_myisam.test:
      Bug#20129: ALTER TABLE ... REPAIR PARTITION ... not working
      
      New test file for testing CHECK/REPAIR of partitioned tables
    sql/ha_partition.cc:
      Bug#35161
      
      Fix of memory leak when open of partition failed.
    ad15cd68
partition_recover_myisam.result 1.61 KB
CREATE TABLE t1_will_crash (a INT, KEY (a)) ENGINE=MyISAM;
INSERT INTO t1_will_crash VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10), (11);
FLUSH TABLES;
# replacing t1.MYI with a corrupt + unclosed one created by doing:
# 'create table t1 (a int key(a))' head -c1024 t1.MYI > corrupt_t1.MYI 
SELECT * FROM t1_will_crash;
a
1
2
3
4
5
6
7
8
9
10
11
Warnings:
Error	145	Table './test/t1_will_crash' is marked as crashed and should be repaired
Error	1194	Table 't1_will_crash' is marked as crashed and should be repaired
Error	1034	1 client is using or hasn't closed the table properly
Error	1034	Size of indexfile is: 1024        Should be: 2048
Error	1034	Size of datafile is: 77       Should be: 7
Error	1034	Number of rows changed from 1 to 11
DROP TABLE t1_will_crash;
CREATE TABLE t1_will_crash (a INT, KEY (a))
ENGINE=MyISAM
PARTITION BY HASH(a)
PARTITIONS 3;
INSERT INTO t1_will_crash VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10), (11);
FLUSH TABLES;
# replacing t1#P#p1.MYI with a corrupt + unclosed one created by doing:
# 'create table t1 (a int key(a)) partition by hash (a) partitions 3'
# head -c1024 t1#P#p1.MYI > corrupt_t1#P#p1.MYI 
SELECT * FROM t1_will_crash;
a
1
2
3
4
5
6
7
8
9
10
11
Warnings:
Error	145	Table './test/t1_will_crash#P#p1' is marked as crashed and should be repaired
Error	1194	Table 't1_will_crash' is marked as crashed and should be repaired
Error	1034	1 client is using or hasn't closed the table properly
Error	1034	Size of indexfile is: 1024        Should be: 2048
Error	1034	Size of datafile is: 28       Should be: 7
Error	1034	Number of rows changed from 1 to 4
DROP TABLE t1_will_crash;