#At file:///misc/mysql/forest/35616/51-35616/
2710 Tatiana A. Nurnberg 2008-08-19 [merge]
auto-merged
added:
mysql-test/std_data/parts/t1_will_crash#P#p1_first_1024.MYD
mysql-test/std_data/parts/t1_will_crash#P#p2.MYD
mysql-test/std_data/parts/t1_will_crash#P#p2.MYI
mysql-test/std_data/parts/t1_will_crash#P#p3.MYI
mysql-test/std_data/parts/t1_will_crash#P#p4.MYI
mysql-test/std_data/parts/t1_will_crash#P#p6.MYD
mysql-test/std_data/parts/t1_will_crash#P#p6_2.MYD
mysql-test/std_data/parts/t1_will_crash#P#p6_3.MYD
mysql-test/suite/parts/r/partition_repair_myisam.result
mysql-test/suite/parts/t/partition_repair_myisam.test
renamed:
mysql-test/suite/parts/r/partition_repair_myisam.result =>
mysql-test/suite/parts/r/partition_recover_myisam.result
mysql-test/suite/parts/t/partition_repair_myisam-master.opt =>
mysql-test/suite/parts/t/partition_recover_myisam-master.opt
mysql-test/suite/parts/t/partition_repair_myisam.test =>
mysql-test/suite/parts/t/partition_recover_myisam.test
modified:
BUILD/check-cpu
mysql-test/r/group_min_max.result
mysql-test/t/csv.test
mysql-test/t/group_min_max.test
mysys/mf_pack.c
netware/BUILD/compile-linux-tools
netware/BUILD/nwbootstrap
netware/Makefile.am
netware/mysql_install_db.c
sql/ha_partition.cc
sql/sql_select.cc
sql/sql_show.cc
mysql-test/suite/parts/t/partition_recover_myisam.test
=== modified file 'BUILD/check-cpu'
--- a/BUILD/check-cpu 2008-02-07 23:12:34 +0000
+++ b/BUILD/check-cpu 2008-08-18 17:33:00 +0000
@@ -176,7 +176,7 @@ check_cpu () {
fi
cc_ver=`$cc --version | sed 1q`
- cc_verno=`echo $cc_ver | sed -e 's/^.*gcc/gcc/g; s/[^0-9. ]//g; s/^ *//g; s/ .*//g'`
+ cc_verno=`echo $cc_ver | sed -e 's/^.*(GCC)//g; s/[^0-9. ]//g; s/^ *//g; s/ .*//g'`
set -- `echo $cc_verno | tr '.' ' '`
cc_major=$1
cc_minor=$2
=== modified file 'mysql-test/r/group_min_max.result'
--- a/mysql-test/r/group_min_max.result 2008-08-15 19:30:17 +0000
+++ b/mysql-test/r/group_min_max.result 2008-08-19 12:21:18 +0000
@@ -2372,28 +2372,3 @@ a MIN(b) MAX(b) AVG(b)
2 1 3 2.0000
1 1 3 2.0000
DROP TABLE t1;
-create table t1 (a int, b int, primary key (a,b), key `index` (a,b)) engine=MyISAM;
-insert into t1 (a,b) values (0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(0,6),(0,7),
-(0,8),(0,9),(0,10),(0,11);
-insert into t1 (a,b) select a, max(b)+1 from t1 where a = 0 group by a;
-select * from t1;
-a b
-0 0
-0 1
-0 2
-0 3
-0 4
-0 5
-0 6
-0 7
-0 8
-0 9
-0 10
-0 11
-0 12
-explain extended select sql_buffer_result a, max(b)+1 from t1 where a = 0 group by a;
-id select_type table type possible_keys key key_len ref rows Extra
-1 SIMPLE t1 range PRIMARY,index PRIMARY 4 NULL 5 Using where; Using index for group-by;
Using temporary
-Warnings:
-Note 1003 select sql_buffer_result `test`.`t1`.`a` AS `a`,(max(`test`.`t1`.`b`) + 1) AS
`max(b)+1` from `test`.`t1` where (`test`.`t1`.`a` = 0) group by `test`.`t1`.`a`
-drop table t1;
=== added file 'mysql-test/std_data/parts/t1_will_crash#P#p1_first_1024.MYD'
Files a/mysql-test/std_data/parts/t1_will_crash#P#p1_first_1024.MYD 1970-01-01 00:00:00
+0000 and b/mysql-test/std_data/parts/t1_will_crash#P#p1_first_1024.MYD 2008-08-19
09:44:22 +0000 differ
=== added file 'mysql-test/std_data/parts/t1_will_crash#P#p2.MYD'
Files a/mysql-test/std_data/parts/t1_will_crash#P#p2.MYD 1970-01-01 00:00:00 +0000 and
b/mysql-test/std_data/parts/t1_will_crash#P#p2.MYD 2008-08-19 09:44:22 +0000 differ
=== added file 'mysql-test/std_data/parts/t1_will_crash#P#p2.MYI'
Files a/mysql-test/std_data/parts/t1_will_crash#P#p2.MYI 1970-01-01 00:00:00 +0000 and
b/mysql-test/std_data/parts/t1_will_crash#P#p2.MYI 2008-08-19 09:44:22 +0000 differ
=== added file 'mysql-test/std_data/parts/t1_will_crash#P#p3.MYI'
Files a/mysql-test/std_data/parts/t1_will_crash#P#p3.MYI 1970-01-01 00:00:00 +0000 and
b/mysql-test/std_data/parts/t1_will_crash#P#p3.MYI 2008-08-19 09:44:22 +0000 differ
=== added file 'mysql-test/std_data/parts/t1_will_crash#P#p4.MYI'
Files a/mysql-test/std_data/parts/t1_will_crash#P#p4.MYI 1970-01-01 00:00:00 +0000 and
b/mysql-test/std_data/parts/t1_will_crash#P#p4.MYI 2008-08-19 09:44:22 +0000 differ
=== added file 'mysql-test/std_data/parts/t1_will_crash#P#p6.MYD'
Files a/mysql-test/std_data/parts/t1_will_crash#P#p6.MYD 1970-01-01 00:00:00 +0000 and
b/mysql-test/std_data/parts/t1_will_crash#P#p6.MYD 2008-08-19 09:44:22 +0000 differ
=== added file 'mysql-test/std_data/parts/t1_will_crash#P#p6_2.MYD'
Files a/mysql-test/std_data/parts/t1_will_crash#P#p6_2.MYD 1970-01-01 00:00:00 +0000 and
b/mysql-test/std_data/parts/t1_will_crash#P#p6_2.MYD 2008-08-19 09:44:22 +0000 differ
=== added file 'mysql-test/std_data/parts/t1_will_crash#P#p6_3.MYD'
Files a/mysql-test/std_data/parts/t1_will_crash#P#p6_3.MYD 1970-01-01 00:00:00 +0000 and
b/mysql-test/std_data/parts/t1_will_crash#P#p6_3.MYD 2008-08-19 09:44:22 +0000 differ
=== renamed file 'mysql-test/suite/parts/r/partition_repair_myisam.result' =>
'mysql-test/suite/parts/r/partition_recover_myisam.result'
=== added file 'mysql-test/suite/parts/r/partition_repair_myisam.result'
--- a/mysql-test/suite/parts/r/partition_repair_myisam.result 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/parts/r/partition_repair_myisam.result 2008-08-19 09:44:22 +0000
@@ -0,0 +1,463 @@
+# REPAIR USE_FRM is not implemented for partitioned tables.
+# test of non partitioned myisam for reference
+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
+CHECK TABLE t1_will_crash;
+Table Op Msg_type Msg_text
+test.t1_will_crash check warning 1 client is using or hasn't closed the table properly
+test.t1_will_crash check error Size of indexfile is: 1024 Should be: 2048
+test.t1_will_crash check warning Size of datafile is: 77 Should be: 7
+test.t1_will_crash check error Corrupt
+REPAIR TABLE t1_will_crash;
+Table Op Msg_type Msg_text
+test.t1_will_crash repair warning Number of rows changed from 1 to 11
+test.t1_will_crash repair status OK
+SELECT * FROM t1_will_crash;
+a
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+DROP TABLE t1_will_crash;
+# test of check/repair of a damaged partition's MYI-file
+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;
+# test with CHECK/REPAIR TABLE
+# 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
+CHECK TABLE t1_will_crash;
+Table Op Msg_type Msg_text
+test.t1_will_crash check warning 1 client is using or hasn't closed the table properly
+test.t1_will_crash check error Size of indexfile is: 1024 Should be: 2048
+test.t1_will_crash check warning Size of datafile is: 28 Should be: 7
+test.t1_will_crash check error Partition p1 returned error
+test.t1_will_crash check error Corrupt
+REPAIR TABLE t1_will_crash;
+Table Op Msg_type Msg_text
+test.t1_will_crash repair warning Number of rows changed from 1 to 4
+test.t1_will_crash repair status OK
+SELECT * FROM t1_will_crash;
+a
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+FLUSH TABLES;
+# test with ALTER TABLE ... CHECK/REPAIR PARTITION
+# replacing t1_will_crash#P#p1.MYI with a corrupt + unclosed one
+ALTER TABLE t1_will_crash CHECK PARTITION p0, p2;
+Table Op Msg_type Msg_text
+test.t1_will_crash check status OK
+ALTER TABLE t1_will_crash CHECK PARTITION p0, p1;
+Table Op Msg_type Msg_text
+test.t1_will_crash check warning 1 client is using or hasn't closed the table properly
+test.t1_will_crash check error Size of indexfile is: 1024 Should be: 2048
+test.t1_will_crash check warning Size of datafile is: 28 Should be: 7
+test.t1_will_crash check error Partition p1 returned error
+test.t1_will_crash check error Corrupt
+ALTER TABLE t1_will_crash CHECK PARTITION p1, p2;
+Table Op Msg_type Msg_text
+test.t1_will_crash check warning Table is marked as crashed
+test.t1_will_crash check warning 1 client is using or hasn't closed the table properly
+test.t1_will_crash check error Size of indexfile is: 1024 Should be: 2048
+test.t1_will_crash check warning Size of datafile is: 28 Should be: 7
+test.t1_will_crash check error Partition p1 returned error
+test.t1_will_crash check error Corrupt
+ALTER TABLE t1_will_crash REPAIR PARTITION p0, p2;
+Table Op Msg_type Msg_text
+test.t1_will_crash repair status OK
+ALTER TABLE t1_will_crash REPAIR PARTITION p0, p1;
+Table Op Msg_type Msg_text
+test.t1_will_crash repair warning Number of rows changed from 1 to 4
+test.t1_will_crash repair status OK
+SELECT * FROM t1_will_crash;
+a
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+DROP TABLE t1_will_crash;
+# test of check/repair of a damaged subpartition's MYI-file
+CREATE TABLE t1_will_crash (a INT, KEY (a))
+ENGINE=MyISAM
+PARTITION BY RANGE (a)
+SUBPARTITION BY HASH (a)
+SUBPARTITIONS 2
+(PARTITION p0 VALUES LESS THAN (7),
+PARTITION p1 VALUES LESS THAN MAXVALUE);
+INSERT INTO t1_will_crash VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10), (11);
+SELECT * FROM t1_will_crash;
+a
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+FLUSH TABLES;
+# test with CHECK/REPAIR TABLE
+# replacing t1_will_crash#P#p1#SP#p1sp0.MYI with a corrupt + unclosed one
+CHECK TABLE t1_will_crash;
+Table Op Msg_type Msg_text
+test.t1_will_crash check warning 1 client is using or hasn't closed the table properly
+test.t1_will_crash check error Size of indexfile is: 1024 Should be: 2048
+test.t1_will_crash check warning Size of datafile is: 14 Should be: 7
+test.t1_will_crash check error Subpartition p1sp0 returned error
+test.t1_will_crash check error Corrupt
+REPAIR TABLE t1_will_crash;
+Table Op Msg_type Msg_text
+test.t1_will_crash repair warning Number of rows changed from 1 to 2
+test.t1_will_crash repair status OK
+SELECT * FROM t1_will_crash;
+a
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+FLUSH TABLES;
+# test with ALTER TABLE ... CHECK/REPAIR PARTITION
+# replacing t1_will_crash#P#p1#SP#p1sp0.MYI with a corrupt + unclosed one
+ALTER TABLE t1_will_crash CHECK PARTITION p0;
+Table Op Msg_type Msg_text
+test.t1_will_crash check status OK
+ALTER TABLE t1_will_crash CHECK PARTITION all;
+Table Op Msg_type Msg_text
+test.t1_will_crash check warning 1 client is using or hasn't closed the table properly
+test.t1_will_crash check error Size of indexfile is: 1024 Should be: 2048
+test.t1_will_crash check warning Size of datafile is: 14 Should be: 7
+test.t1_will_crash check error Subpartition p1sp0 returned error
+test.t1_will_crash check error Corrupt
+ALTER TABLE t1_will_crash CHECK PARTITION p1;
+Table Op Msg_type Msg_text
+test.t1_will_crash check warning Table is marked as crashed
+test.t1_will_crash check warning 1 client is using or hasn't closed the table properly
+test.t1_will_crash check error Size of indexfile is: 1024 Should be: 2048
+test.t1_will_crash check warning Size of datafile is: 14 Should be: 7
+test.t1_will_crash check error Subpartition p1sp0 returned error
+test.t1_will_crash check error Corrupt
+ALTER TABLE t1_will_crash REPAIR PARTITION p0;
+Table Op Msg_type Msg_text
+test.t1_will_crash repair status OK
+ALTER TABLE t1_will_crash REPAIR PARTITION p0, p1;
+Table Op Msg_type Msg_text
+test.t1_will_crash repair warning Number of rows changed from 1 to 2
+test.t1_will_crash repair status OK
+SELECT * FROM t1_will_crash;
+a
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+DROP TABLE t1_will_crash;
+# test of check/repair of crashed partitions in variuos states
+CREATE TABLE t1_will_crash (
+a VARCHAR(255),
+b INT,
+c LONGTEXT,
+PRIMARY KEY (a, b))
+ENGINE=MyISAM
+PARTITION BY HASH (b)
+PARTITIONS 7;
+SELECT COUNT(*) FROM t1_will_crash;
+COUNT(*)
+33
+SELECT (b % 7) AS partition, COUNT(*) AS rows FROM t1_will_crash GROUP BY (b % 7);
+partition rows
+0 2
+1 5
+2 5
+3 5
+4 4
+5 4
+6 8
+SELECT (b % 7) AS partition, b, a, length(c) FROM t1_will_crash ORDER BY partition, b, a;
+partition b a length(c)
+0 0 lost 64
+0 7 z lost 64
+1 1 abc 64
+1 8 tuw 64
+1 29 kkkkkkkkKkk 64
+1 71 1 broken when head -c1024 on datafile 1024
+1 71 eee 64
+2 2 def 64
+2 9 vxy 64
+2 23 lll 64
+2 30 2 crashed after _mi_mark_changed 64
+2 79 ccc 64
+3 3 ghi 64
+3 10 aaa 64
+3 17 nnn 64
+3 24 3 crashed after write_record 64
+3 73 ddd 64
+4 4 pqr 64
+4 11 bbb 64
+4 18 4 crashed after flush_cached_blocks 64
+4 67 fff 64
+5 5 mno 64
+5 19 mmm 64
+5 40 5 still here since crash in next row in multirow insert? 64
+5 89 a 64
+6 6 jkl 64
+6 13 ooo 64
+6 27 6 row 7 (crash before completely written to datafile) 128
+6 34 6 row 2 64
+6 48 6 row 4 64
+6 62 6 row 6 64
+6 83 64
+6 97 zzzzzZzzzzz 64
+FLUSH TABLES;
+# truncating p0 to simulate an empty datafile (not recovered!)
+# replacing p1 with only the first 1024 bytes (not recovered!)
+# replacing p3 with a crashed one at the last row in first insert
+# (crashed right after *share->write_record())
+# replacing p6 with a crashed MYD file (1) (splitted dynamic record)
+ANALYZE TABLE t1_will_crash;
+Table Op Msg_type Msg_text
+test.t1_will_crash analyze status OK
+OPTIMIZE TABLE t1_will_crash;
+Table Op Msg_type Msg_text
+test.t1_will_crash optimize warning Number of rows changed from 8 to 7
+test.t1_will_crash optimize status OK
+CHECK TABLE t1_will_crash;
+Table Op Msg_type Msg_text
+test.t1_will_crash check error Size of datafile is: 0 Should be: 164
+test.t1_will_crash check error Partition p0 returned error
+test.t1_will_crash check error Corrupt
+REPAIR TABLE t1_will_crash;
+Table Op Msg_type Msg_text
+test.t1_will_crash repair warning Number of rows changed from 2 to 0
+test.t1_will_crash repair info Found block that points outside data file at 344
+test.t1_will_crash repair warning Number of rows changed from 5 to 4
+test.t1_will_crash repair warning Number of rows changed from 0 to 5
+test.t1_will_crash repair status OK
+SELECT COUNT(*) FROM t1_will_crash;
+COUNT(*)
+29
+SELECT (b % 7) AS partition, COUNT(*) AS rows FROM t1_will_crash GROUP BY (b % 7);
+partition rows
+1 4
+2 5
+3 5
+4 4
+5 4
+6 7
+SELECT (b % 7) AS partition, b, a, length(c) FROM t1_will_crash ORDER BY partition, b, a;
+partition b a length(c)
+1 1 abc 64
+1 8 tuw 64
+1 29 kkkkkkkkKkk 64
+1 71 eee 64
+2 2 def 64
+2 9 vxy 64
+2 23 lll 64
+2 30 2 crashed after _mi_mark_changed 64
+2 79 ccc 64
+3 3 ghi 64
+3 10 aaa 64
+3 17 nnn 64
+3 24 3 crashed after write_record 64
+3 73 ddd 64
+4 4 pqr 64
+4 11 bbb 64
+4 18 4 crashed after flush_cached_blocks 64
+4 67 fff 64
+5 5 mno 64
+5 19 mmm 64
+5 40 5 still here since crash in next row in multirow insert? 64
+5 89 a 64
+6 6 jkl 64
+6 13 ooo 64
+6 34 6 row 2 64
+6 48 6 row 4 64
+6 62 6 row 6 64
+6 83 64
+6 97 zzzzzZzzzzz 64
+FLUSH TABLES;
+#
+# replacing p2 with crashed files (after _mi_mark_changed)
+ALTER TABLE t1_will_crash CHECK PARTITION p2;
+Table Op Msg_type Msg_text
+test.t1_will_crash check warning 1 client is using or hasn't closed the table properly
+test.t1_will_crash check status OK
+# crash was when index only marked as opened, no real corruption
+ALTER TABLE t1_will_crash CHECK PARTITION p2;
+Table Op Msg_type Msg_text
+test.t1_will_crash check status OK
+FLUSH TABLES;
+#
+# replacing p4 with updated but not closed index file
+ALTER TABLE t1_will_crash OPTIMIZE PARTITION p4;
+Table Op Msg_type Msg_text
+test.t1_will_crash optimize error Found key at page 2048 that points to record outside
datafile
+test.t1_will_crash optimize error Partition p4 returned error
+test.t1_will_crash optimize status Operation failed
+ALTER TABLE t1_will_crash CHECK PARTITION p4;
+Table Op Msg_type Msg_text
+test.t1_will_crash check warning Table is marked as crashed and last repair failed
+test.t1_will_crash check warning 1 client is using or hasn't closed the table properly
+test.t1_will_crash check warning Size of datafile is: 368 Should be: 252
+test.t1_will_crash check error Found 4 keys of 3
+test.t1_will_crash check error Partition p4 returned error
+test.t1_will_crash check error Corrupt
+ALTER TABLE t1_will_crash REPAIR PARTITION p4;
+Table Op Msg_type Msg_text
+test.t1_will_crash repair warning Number of rows changed from 3 to 4
+test.t1_will_crash repair status OK
+FLUSH TABLES;
+#
+# replacing p6 with a crashed MYD file (2) (splitted dynamic record)
+ALTER TABLE t1_will_crash CHECK PARTITION p6;
+Table Op Msg_type Msg_text
+test.t1_will_crash check warning Size of datafile is: 868 Should be: 604
+test.t1_will_crash check error Unexpected byte: 0 at link: 340
+test.t1_will_crash check error Partition p6 returned error
+test.t1_will_crash check error Corrupt
+ALTER TABLE t1_will_crash REPAIR PARTITION p6;
+Table Op Msg_type Msg_text
+test.t1_will_crash repair info Delete link points outside datafile at 340
+test.t1_will_crash repair info Delete link points outside datafile at 340
+test.t1_will_crash repair status OK
+SELECT (b % 7) AS partition, b, a, length(c) FROM t1_will_crash
+WHERE (b % 7) = 6
+ORDER BY partition, b, a;
+partition b a length(c)
+6 6 jkl 64
+6 13 ooo 64
+6 34 6 row 2 64
+6 48 6 row 4 64
+6 62 6 row 6 64
+6 83 64
+6 97 zzzzzZzzzzz 64
+FLUSH TABLES;
+#
+# replacing p6 with a crashed MYD file (3) (splitted dynamic record)
+# Different results from the corrupt table, which can lead to dropping
+# of the not completely written rows when using REBUILD on a corrupt
+# table, depending if one reads via index or direct on datafile.
+# Since crash when reuse of deleted row space, CHECK MEDIUM or EXTENDED
+# is required (MEDIUM is default) to verify correct behavior!
+SELECT (b % 7) AS partition, b, a, length(c) FROM t1_will_crash
+WHERE (b % 7) = 6
+ORDER BY partition, b, a;
+partition b a length(c)
+6 6 jkl 64
+6 13 ooo 64
+6 34 6 row 2 64
+6 83 64
+6 97 zzzzzZzzzzz 64
+SELECT (b % 7) AS partition, b, a FROM (SELECT b,a FROM t1_will_crash) q
+WHERE (b % 7) = 6
+ORDER BY partition, b, a;
+partition b a
+6 6 jkl
+6 13 ooo
+6 34 6 row 2
+6 48 6 row 4
+6 62 6 row 6
+6 83
+6 97 zzzzzZzzzzz
+ALTER TABLE t1_will_crash CHECK PARTITION p6;
+Table Op Msg_type Msg_text
+test.t1_will_crash check warning Size of datafile is: 868 Should be: 604
+test.t1_will_crash check error Record-count is not ok; is 8 Should be: 7
+test.t1_will_crash check warning Found 10 key parts. Should be: 7
+test.t1_will_crash check error Partition p6 returned error
+test.t1_will_crash check error Corrupt
+ALTER TABLE t1_will_crash REPAIR PARTITION p6;
+Table Op Msg_type Msg_text
+test.t1_will_crash repair warning Number of rows changed from 7 to 8
+test.t1_will_crash repair status OK
+SELECT COUNT(*) FROM t1_will_crash;
+COUNT(*)
+29
+SELECT (b % 7) AS partition, COUNT(*) AS rows FROM t1_will_crash GROUP BY (b % 7);
+partition rows
+1 4
+2 4
+3 5
+4 4
+5 4
+6 8
+SELECT (b % 7) AS partition, b, a, length(c) FROM t1_will_crash ORDER BY partition, b, a;
+partition b a length(c)
+1 1 abc 64
+1 8 tuw 64
+1 29 kkkkkkkkKkk 64
+1 71 eee 64
+2 2 def 64
+2 9 vxy 64
+2 23 lll 64
+2 79 ccc 64
+3 3 ghi 64
+3 10 aaa 64
+3 17 nnn 64
+3 24 3 crashed after write_record 64
+3 73 ddd 64
+4 4 pqr 64
+4 11 bbb 64
+4 18 4 crashed after flush_cached_blocks 64
+4 67 fff 64
+5 5 mno 64
+5 19 mmm 64
+5 40 5 still here since crash in next row in multirow insert? 64
+5 89 a 64
+6 6 jkl 64
+6 13 ooo 64
+6 27 6 row 7 (crash before completely written to datafile) 128
+6 34 6 row 2 64
+6 48 6 row 4 64
+6 62 6 row 6 64
+6 83 64
+6 97 zzzzzZzzzzz 64
+ALTER TABLE t1_will_crash CHECK PARTITION all EXTENDED;
+Table Op Msg_type Msg_text
+test.t1_will_crash check status OK
+DROP TABLE t1_will_crash;
=== renamed file 'mysql-test/suite/parts/t/partition_repair_myisam-master.opt' =>
'mysql-test/suite/parts/t/partition_recover_myisam-master.opt'
=== renamed file 'mysql-test/suite/parts/t/partition_repair_myisam.test' =>
'mysql-test/suite/parts/t/partition_recover_myisam.test'
--- a/mysql-test/suite/parts/t/partition_repair_myisam.test 2008-07-07 15:54:42 +0000
+++ b/mysql-test/suite/parts/t/partition_recover_myisam.test 2008-08-19 09:44:22 +0000
@@ -1,3 +1,4 @@
+# test the auto-recover (--myisam-recover) of partitioned myisam tables
--source include/have_partition.inc
--disable_warnings
--disable_query_log
=== added file 'mysql-test/suite/parts/t/partition_repair_myisam.test'
--- a/mysql-test/suite/parts/t/partition_repair_myisam.test 1970-01-01 00:00:00 +0000
+++ b/mysql-test/suite/parts/t/partition_repair_myisam.test 2008-08-19 09:44:22 +0000
@@ -0,0 +1,242 @@
+# test of check/repair of partitioned myisam tables
+--source include/have_partition.inc
+--disable_warnings
+--disable_query_log
+drop table if exists t1_will_crash;
+--enable_query_log
+--enable_warnings
+
+--echo # REPAIR USE_FRM is not implemented for partitioned tables.
+
+--echo # test of non partitioned myisam for reference
+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;
+--echo # replacing t1.MYI with a corrupt + unclosed one created by doing:
+--echo # 'create table t1 (a int key(a))' head -c1024 t1.MYI > corrupt_t1.MYI
+--remove_file $MYSQLTEST_VARDIR/master-data/test/t1_will_crash.MYI
+--copy_file std_data/corrupt_t1.MYI $MYSQLTEST_VARDIR/master-data/test/t1_will_crash.MYI
+CHECK TABLE t1_will_crash;
+REPAIR TABLE t1_will_crash;
+SELECT * FROM t1_will_crash;
+DROP TABLE t1_will_crash;
+
+--echo # test of check/repair of a damaged partition's MYI-file
+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;
+--echo # test with CHECK/REPAIR TABLE
+--echo # replacing t1#P#p1.MYI with a corrupt + unclosed one created by doing:
+--echo # 'create table t1 (a int key(a)) partition by hash (a) partitions 3'
+--echo # head -c1024 t1#P#p1.MYI > corrupt_t1#P#p1.MYI
+--remove_file $MYSQLTEST_VARDIR/master-data/test/t1_will_crash#P#p1.MYI
+--copy_file std_data/corrupt_t1#P#p1.MYI
$MYSQLTEST_VARDIR/master-data/test/t1_will_crash#P#p1.MYI
+CHECK TABLE t1_will_crash;
+REPAIR TABLE t1_will_crash;
+SELECT * FROM t1_will_crash;
+FLUSH TABLES;
+--echo # test with ALTER TABLE ... CHECK/REPAIR PARTITION
+--echo # replacing t1_will_crash#P#p1.MYI with a corrupt + unclosed one
+--remove_file $MYSQLTEST_VARDIR/master-data/test/t1_will_crash#P#p1.MYI
+--copy_file std_data/corrupt_t1#P#p1.MYI
$MYSQLTEST_VARDIR/master-data/test/t1_will_crash#P#p1.MYI
+ALTER TABLE t1_will_crash CHECK PARTITION p0, p2;
+ALTER TABLE t1_will_crash CHECK PARTITION p0, p1;
+ALTER TABLE t1_will_crash CHECK PARTITION p1, p2;
+ALTER TABLE t1_will_crash REPAIR PARTITION p0, p2;
+ALTER TABLE t1_will_crash REPAIR PARTITION p0, p1;
+SELECT * FROM t1_will_crash;
+DROP TABLE t1_will_crash;
+
+--echo # test of check/repair of a damaged subpartition's MYI-file
+CREATE TABLE t1_will_crash (a INT, KEY (a))
+ENGINE=MyISAM
+PARTITION BY RANGE (a)
+SUBPARTITION BY HASH (a)
+SUBPARTITIONS 2
+(PARTITION p0 VALUES LESS THAN (7),
+ PARTITION p1 VALUES LESS THAN MAXVALUE);
+INSERT INTO t1_will_crash VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10), (11);
+SELECT * FROM t1_will_crash;
+FLUSH TABLES;
+--echo # test with CHECK/REPAIR TABLE
+--echo # replacing t1_will_crash#P#p1#SP#p1sp0.MYI with a corrupt + unclosed one
+--remove_file $MYSQLTEST_VARDIR/master-data/test/t1_will_crash#P#p1#SP#p1sp0.MYI
+--copy_file std_data/corrupt_t1#P#p1.MYI
$MYSQLTEST_VARDIR/master-data/test/t1_will_crash#P#p1#SP#p1sp0.MYI
+CHECK TABLE t1_will_crash;
+REPAIR TABLE t1_will_crash;
+SELECT * FROM t1_will_crash;
+FLUSH TABLES;
+--echo # test with ALTER TABLE ... CHECK/REPAIR PARTITION
+--echo # replacing t1_will_crash#P#p1#SP#p1sp0.MYI with a corrupt + unclosed one
+--remove_file $MYSQLTEST_VARDIR/master-data/test/t1_will_crash#P#p1#SP#p1sp0.MYI
+--copy_file std_data/corrupt_t1#P#p1.MYI
$MYSQLTEST_VARDIR/master-data/test/t1_will_crash#P#p1#SP#p1sp0.MYI
+ALTER TABLE t1_will_crash CHECK PARTITION p0;
+ALTER TABLE t1_will_crash CHECK PARTITION all;
+ALTER TABLE t1_will_crash CHECK PARTITION p1;
+ALTER TABLE t1_will_crash REPAIR PARTITION p0;
+ALTER TABLE t1_will_crash REPAIR PARTITION p0, p1;
+SELECT * FROM t1_will_crash;
+DROP TABLE t1_will_crash;
+
+--echo # test of check/repair of crashed partitions in variuos states
+CREATE TABLE t1_will_crash (
+ a VARCHAR(255),
+ b INT,
+ c LONGTEXT,
+ PRIMARY KEY (a, b))
+ENGINE=MyISAM
+PARTITION BY HASH (b)
+PARTITIONS 7;
+
+# creating a longer string for for filling the records
+let $i= 3;
+let $lt= longtext;
+while ($i>0)
+{
+ let $lt= $lt$lt;
+ dec $i;
+}
+
+# Tests (mapped to partition)
+# Partition
+# 0 - truncated datafile (size = 0 bytes)
+# 1 - head -c 1024 of datafile (simulates crashed write)
+# 2 - after _mi_mark_file_changed (only marked index as opened)
+# 3 - after write_record (updated datafile + not closed/updated index)
+# 4 - after flush_cached_blocks (updated index/datafiles, not closed index)
+# 5 - (Not used) after mi_state_info_write (fully uppdated/closed index file)
+# (this was verified to be a harmless crash, since everything was written)
+# 6 - partly updated datafile (insert 6 small records, delete 5,3,1,
+# insert one larger record (2.5 X small) and break in gdb before it has
+# been completely written (in write_dynamic_record)
+# (done with 3 different MYD files, since it also affects
+# the delete-linked-list)
+
+--disable_query_log
+eval INSERT INTO t1_will_crash VALUES
+ ('abc', 1, '$lt'), ('def', 2, '$lt'), ('ghi', 3, '$lt'), ('jkl', 6, '$lt'),
+ ('mno', 5, '$lt'), ('pqr', 4, '$lt'), ('tuw', 8, '$lt'), ('vxy', 9, '$lt'),
+ ('z lost', 7, '$lt'), ('aaa', 10, '$lt'), ('bbb', 11, '$lt'),
+ ('zzzzzZzzzzz', 97, '$lt'), ('a', 89, '$lt'), (' ', 83, '$lt'),
+ ('ccc', 79, '$lt'), ('ddd', 73, '$lt'), ('eee', 71, '$lt'),
+ ('fff', 67, '$lt'), ('ooo', 13, '$lt'), ('nnn', 17, '$lt'),
+ ('mmm', 19, '$lt'), ('lll', 23, '$lt'), ('kkkkkkkkKkk', 29, '$lt'),
+ (' lost', 0, '$lt'), ('1 broken when head -c1024 on datafile', 71,
+ '$lt$lt$lt$lt$lt$lt$lt$lt$lt$lt$lt$lt$lt$lt$lt$lt'),
+ ('3 crashed after write_record', 24, '$lt');
+eval INSERT INTO t1_will_crash VALUES
+ ('2 crashed after _mi_mark_changed', 30, '$lt');
+# if crashed here, part p5 would need to be repaired before next statement
+# but since we use pre fabricated crashed files, we can skip that here.
+eval INSERT INTO t1_will_crash VALUES
+ ('5 still here since crash in next row in multirow insert?', 40, '$lt'),
+ ('4 crashed after flush_cached_blocks', 18, '$lt');
+# There is no write after mi_state_info_write, so this is not tested.
+#eval INSERT INTO t1_will_crash VALUES
+# ('5 crashed after mi_state_info_write', 12, '$lt');
+eval INSERT INTO t1_will_crash VALUES
+ ('6 row 1', 27, '$lt'), ('6 row 2', 34, '$lt'),
+ ('6 row 3', 41, '$lt'), ('6 row 4', 48, '$lt'),
+ ('6 row 5', 55, '$lt'), ('6 row 6', 62, '$lt');
+DELETE FROM t1_will_crash WHERE b in (27, 55);
+DELETE FROM t1_will_crash WHERE b = 41;
+eval INSERT INTO t1_will_crash VALUES
+ ('6 row 7 (crash before completely written to datafile)', 27, '$lt$lt');
+--enable_query_log
+SELECT COUNT(*) FROM t1_will_crash;
+SELECT (b % 7) AS partition, COUNT(*) AS rows FROM t1_will_crash GROUP BY (b % 7);
+SELECT (b % 7) AS partition, b, a, length(c) FROM t1_will_crash ORDER BY partition, b, a;
+FLUSH TABLES;
+# testing p0, p1, p3, p6(1)
+--echo # truncating p0 to simulate an empty datafile (not recovered!)
+--remove_file $MYSQLTEST_VARDIR/master-data/test/t1_will_crash#P#p0.MYD
+--write_file $MYSQLTEST_VARDIR/master-data/test/t1_will_crash#P#p0.MYD
+EOF
+
+--echo # replacing p1 with only the first 1024 bytes (not recovered!)
+--remove_file $MYSQLTEST_VARDIR/master-data/test/t1_will_crash#P#p1.MYD
+--copy_file std_data/parts/t1_will_crash#P#p1_first_1024.MYD
$MYSQLTEST_VARDIR/master-data/test/t1_will_crash#P#p1.MYD
+
+--echo # replacing p3 with a crashed one at the last row in first insert
+--echo # (crashed right after *share->write_record())
+--remove_file $MYSQLTEST_VARDIR/master-data/test/t1_will_crash#P#p3.MYI
+--copy_file std_data/parts/t1_will_crash#P#p3.MYI
$MYSQLTEST_VARDIR/master-data/test/t1_will_crash#P#p3.MYI
+
+--echo # replacing p6 with a crashed MYD file (1) (splitted dynamic record)
+--remove_file $MYSQLTEST_VARDIR/master-data/test/t1_will_crash#P#p6.MYD
+--copy_file std_data/parts/t1_will_crash#P#p6.MYD
$MYSQLTEST_VARDIR/master-data/test/t1_will_crash#P#p6.MYD
+ANALYZE TABLE t1_will_crash;
+OPTIMIZE TABLE t1_will_crash;
+CHECK TABLE t1_will_crash;
+REPAIR TABLE t1_will_crash;
+SELECT COUNT(*) FROM t1_will_crash;
+SELECT (b % 7) AS partition, COUNT(*) AS rows FROM t1_will_crash GROUP BY (b % 7);
+SELECT (b % 7) AS partition, b, a, length(c) FROM t1_will_crash ORDER BY partition, b, a;
+FLUSH TABLES;
+
+# testing p2, p4, p6(2, 3)
+--echo #
+--echo # replacing p2 with crashed files (after _mi_mark_changed)
+--remove_file $MYSQLTEST_VARDIR/master-data/test/t1_will_crash#P#p2.MYI
+--remove_file $MYSQLTEST_VARDIR/master-data/test/t1_will_crash#P#p2.MYD
+--copy_file std_data/parts/t1_will_crash#P#p2.MYI
$MYSQLTEST_VARDIR/master-data/test/t1_will_crash#P#p2.MYI
+--copy_file std_data/parts/t1_will_crash#P#p2.MYD
$MYSQLTEST_VARDIR/master-data/test/t1_will_crash#P#p2.MYD
+ALTER TABLE t1_will_crash CHECK PARTITION p2;
+--echo # crash was when index only marked as opened, no real corruption
+ALTER TABLE t1_will_crash CHECK PARTITION p2;
+FLUSH TABLES;
+
+--echo #
+--echo # replacing p4 with updated but not closed index file
+--remove_file $MYSQLTEST_VARDIR/master-data/test/t1_will_crash#P#p4.MYI
+--copy_file std_data/parts/t1_will_crash#P#p4.MYI
$MYSQLTEST_VARDIR/master-data/test/t1_will_crash#P#p4.MYI
+#SHOW TABLE STATUS like 't1_will_crash';
+#ALTER TABLE t1_will_crash ANALYZE PARTITION p4;
+#SHOW TABLE STATUS like 't1_will_crash';
+ALTER TABLE t1_will_crash OPTIMIZE PARTITION p4;
+#SHOW TABLE STATUS like 't1_will_crash';
+ALTER TABLE t1_will_crash CHECK PARTITION p4;
+#SHOW TABLE STATUS like 't1_will_crash';
+ALTER TABLE t1_will_crash REPAIR PARTITION p4;
+#SHOW TABLE STATUS like 't1_will_crash';
+FLUSH TABLES;
+
+--echo #
+--echo # replacing p6 with a crashed MYD file (2) (splitted dynamic record)
+--remove_file $MYSQLTEST_VARDIR/master-data/test/t1_will_crash#P#p6.MYD
+--copy_file std_data/parts/t1_will_crash#P#p6_2.MYD
$MYSQLTEST_VARDIR/master-data/test/t1_will_crash#P#p6.MYD
+#ALTER TABLE t1_will_crash OPTIMIZE PARTITION p6;
+ALTER TABLE t1_will_crash CHECK PARTITION p6;
+ALTER TABLE t1_will_crash REPAIR PARTITION p6;
+SELECT (b % 7) AS partition, b, a, length(c) FROM t1_will_crash
+WHERE (b % 7) = 6
+ORDER BY partition, b, a;
+FLUSH TABLES;
+
+--echo #
+--echo # replacing p6 with a crashed MYD file (3) (splitted dynamic record)
+--remove_file $MYSQLTEST_VARDIR/master-data/test/t1_will_crash#P#p6.MYD
+--copy_file std_data/parts/t1_will_crash#P#p6_3.MYD
$MYSQLTEST_VARDIR/master-data/test/t1_will_crash#P#p6.MYD
+--echo # Different results from the corrupt table, which can lead to dropping
+--echo # of the not completely written rows when using REBUILD on a corrupt
+--echo # table, depending if one reads via index or direct on datafile.
+--echo # Since crash when reuse of deleted row space, CHECK MEDIUM or EXTENDED
+--echo # is required (MEDIUM is default) to verify correct behavior!
+SELECT (b % 7) AS partition, b, a, length(c) FROM t1_will_crash
+WHERE (b % 7) = 6
+ORDER BY partition, b, a;
+SELECT (b % 7) AS partition, b, a FROM (SELECT b,a FROM t1_will_crash) q
+WHERE (b % 7) = 6
+ORDER BY partition, b, a;
+# NOTE: REBUILD PARTITION without CHECK before, 2 + (1) records will be lost!
+#ALTER TABLE t1_will_crash REBUILD PARTITION p6;
+ALTER TABLE t1_will_crash CHECK PARTITION p6;
+ALTER TABLE t1_will_crash REPAIR PARTITION p6;
+SELECT COUNT(*) FROM t1_will_crash;
+SELECT (b % 7) AS partition, COUNT(*) AS rows FROM t1_will_crash GROUP BY (b % 7);
+SELECT (b % 7) AS partition, b, a, length(c) FROM t1_will_crash ORDER BY partition, b, a;
+ALTER TABLE t1_will_crash CHECK PARTITION all EXTENDED;
+DROP TABLE t1_will_crash;
=== modified file 'mysql-test/t/csv.test'
--- a/mysql-test/t/csv.test 2008-08-15 06:53:54 +0000
+++ b/mysql-test/t/csv.test 2008-08-19 13:16:20 +0000
@@ -1795,6 +1795,7 @@ lock tables t1 read;
connect (con1,localhost,root,,);
--connection con1
--remove_file $MYSQLTEST_VARDIR/master-data/test/t1.CSV
+--replace_result $MYSQLTEST_VARDIR . master-data/ '' 13 2
# EE_FILENOTFOUND 29
--error 29
select * from t1;
=== modified file 'mysql-test/t/group_min_max.test'
--- a/mysql-test/t/group_min_max.test 2008-08-15 19:30:17 +0000
+++ b/mysql-test/t/group_min_max.test 2008-08-19 12:21:18 +0000
@@ -942,15 +942,3 @@ SELECT a, MIN(b), MAX(b), AVG(b) FROM t1
SELECT a, MIN(b), MAX(b), AVG(b) FROM t1 GROUP BY a ORDER BY a DESC;
DROP TABLE t1;
-
-#
-# Bug#38195: Incorrect handling of aggregate functions when loose index scan is
-# used causes server crash.
-#
-create table t1 (a int, b int, primary key (a,b), key `index` (a,b)) engine=MyISAM;
-insert into t1 (a,b) values (0,0),(0,1),(0,2),(0,3),(0,4),(0,5),(0,6),(0,7),
-(0,8),(0,9),(0,10),(0,11);
-insert into t1 (a,b) select a, max(b)+1 from t1 where a = 0 group by a;
-select * from t1;
-explain extended select sql_buffer_result a, max(b)+1 from t1 where a = 0 group by a;
-drop table t1;
=== modified file 'mysys/mf_pack.c'
--- a/mysys/mf_pack.c 2008-07-17 17:45:08 +0000
+++ b/mysys/mf_pack.c 2008-08-18 17:11:55 +0000
@@ -354,7 +354,7 @@ size_t unpack_dirname(char * to, const c
length-= (size_t) (suffix-buff)-1;
if (length+(h_length= strlen(tilde_expansion)) <= FN_REFLEN)
{
- if (tilde_expansion[h_length-1] == FN_LIBCHAR)
+ if ((h_length > 0) && (tilde_expansion[h_length-1] == FN_LIBCHAR))
h_length--;
if (buff+h_length < suffix)
bmove(buff+h_length,suffix,length);
=== modified file 'netware/BUILD/compile-linux-tools'
--- a/netware/BUILD/compile-linux-tools 2006-04-05 08:39:44 +0000
+++ b/netware/BUILD/compile-linux-tools 2008-08-18 15:08:57 +0000
@@ -53,6 +53,9 @@ make
# so the file will be linked
(cd sql; make sql_yacc.cc)
+# we need initilizing SQL files.
+(cd netware; make test_db.sql init_db.sql)
+
# copying required linux tools
cp extra/comp_err extra/comp_err.linux
cp libmysql/conf_to_src libmysql/conf_to_src.linux
=== modified file 'netware/BUILD/nwbootstrap'
--- a/netware/BUILD/nwbootstrap 2006-12-02 03:25:41 +0000
+++ b/netware/BUILD/nwbootstrap 2008-08-18 15:08:57 +0000
@@ -91,8 +91,8 @@ done
echo "starting build..."
# check for bk and repo_dir
-bk help > /dev/null
-repo_dir=`bk root $repo_dir`
+bzr help > /dev/null
+repo_dir=`bzr root $repo_dir`
cd $repo_dir
doc_dir="$repo_dir/../mysqldoc"
@@ -100,7 +100,7 @@ doc_dir="$repo_dir/../mysqldoc"
temp_dir="$build_dir/mysql-$$.tmp"
# export the bk tree
-command="bk export";
+command="bzr export";
if test $revision; then command="$command -r$revision"; fi
command="$command $temp_dir"
echo "exporting $repo_dir..."
@@ -183,6 +183,8 @@ awk 'BEGIN{x=0;} END{printf("\n");} x==
# build linux tools
echo "compiling linux tools..."
./netware/BUILD/compile-linux-tools
+test -f ./netware/init_db.sql # this must exist
+test -f ./netware/test_db.sql # this must exist
# compile
if test $build
=== modified file 'netware/Makefile.am'
--- a/netware/Makefile.am 2007-10-30 19:06:49 +0000
+++ b/netware/Makefile.am 2008-08-18 15:08:57 +0000
@@ -107,8 +107,7 @@ init_db.sql: $(top_srcdir)/scripts/mysql
@echo "CREATE DATABASE mysql;" > $@;
@echo "CREATE DATABASE test;" >> $@;
@echo "use mysql;" >> $@;
- @cat $(top_srcdir)/scripts/mysql_system_tables.sql \
- $(top_srcdir)/scripts/mysql_system_tables_fix.sql >> $@;
+ @cat $(top_srcdir)/scripts/mysql_system_tables.sql >> $@;
# Build test_db.sql from init_db.sql plus
# some test data
=== modified file 'netware/mysql_install_db.c'
--- a/netware/mysql_install_db.c 2006-08-14 05:28:41 +0000
+++ b/netware/mysql_install_db.c 2008-08-18 17:33:00 +0000
@@ -324,9 +324,10 @@ void create_paths()
******************************************************************************/
int mysql_install_db(int argc, char *argv[])
{
- arg_list_t al;
- int i, j, err;
- char skip;
+ arg_list_t al;
+ int i, j, err;
+ char skip;
+ struct stat info;
// private options
static char *private_options[] =
@@ -362,6 +363,24 @@ int mysql_install_db(int argc, char *arg
add_arg(&al, "--skip-grant-tables");
add_arg(&al, "--skip-innodb");
+ if ((err = stat(sql_file, &info)) != 0)
+ {
+ printf("ERROR - %s:\n", strerror(errno));
+ printf("\t%s\n\n", sql_file);
+ // free args
+ free_args(&al);
+ exit(-1);
+ }
+
+ if ((err = stat(sql_file, &info)) != 0)
+ {
+ printf("ERROR - %s:\n", strerror(errno));
+ printf("\t%s\n\n", sql_file);
+ // free args
+ free_args(&al);
+ exit(-1);
+ }
+
// spawn mysqld
err = spawn(mysqld, &al, TRUE, sql_file, out_log, err_log);
@@ -394,9 +413,9 @@ int main(int argc, char **argv)
// install the database
if (mysql_install_db(argc, argv))
{
- printf("ERROR - The database creation failed!\n");
+ printf("ERROR - Failed to create the database!\n");
printf(" %s\n", strerror(errno));
- printf("See the following log for more infomration:\n");
+ printf("See the following log for more information:\n");
printf("\t%s\n\n", err_log);
exit(-1);
}
=== modified file 'sql/ha_partition.cc'
--- a/sql/ha_partition.cc 2008-08-15 18:26:25 +0000
+++ b/sql/ha_partition.cc 2008-08-19 10:26:30 +0000
@@ -2494,6 +2494,8 @@ int ha_partition::open(const char *name,
err_handler:
while (file-- != m_file)
(*file)->close();
+ if (!is_clone)
+ bitmap_free(&(m_part_info->used_partitions));
DBUG_RETURN(error);
}
=== modified file 'sql/sql_select.cc'
--- a/sql/sql_select.cc 2008-08-15 19:30:17 +0000
+++ b/sql/sql_select.cc 2008-08-19 12:21:18 +0000
@@ -1794,8 +1794,7 @@ JOIN::exec()
if (!items1)
{
items1= items0 + all_fields.elements;
- if (sort_and_group || curr_tmp_table->group ||
- tmp_table_param.precomputed_group_by)
+ if (sort_and_group || curr_tmp_table->group)
{
if (change_to_use_tmp_fields(thd, items1,
tmp_fields_list1, tmp_all_fields1,
@@ -9629,8 +9628,6 @@ create_tmp_table(THD *thd,TMP_TABLE_PARA
MI_COLUMNDEF *recinfo;
uint total_uneven_bit_length= 0;
bool force_copy_fields= param->force_copy_fields;
- /* Treat sum functions as normal ones when loose index scan is used. */
- save_sum_fields|= param->precomputed_group_by;
DBUG_ENTER("create_tmp_table");
DBUG_PRINT("enter",
("distinct: %d save_sum_fields: %d rows_limit: %lu group: %d",
=== modified file 'sql/sql_show.cc'
--- a/sql/sql_show.cc 2008-08-15 20:42:29 +0000
+++ b/sql/sql_show.cc 2008-08-18 16:15:56 +0000
@@ -6644,17 +6644,15 @@ int initialize_schema_table(st_plugin_in
{
sql_print_error("Plugin '%s' init function returned error.",
plugin->name.str);
- goto err;
+ plugin->data= NULL;
+ my_free(schema_table, MYF(0));
+ DBUG_RETURN(1);
}
/* Make sure the plugin name is not set inside the init() function. */
schema_table->table_name= plugin->name.str;
}
-
DBUG_RETURN(0);
-err:
- my_free(schema_table, MYF(0));
- DBUG_RETURN(1);
}
int finalize_schema_table(st_plugin_int *plugin)
| Thread |
|---|
| • bzr commit into mysql-5.1 branch (azundris:2710) | Tatiana A. Nurnberg | 19 Aug |