Commit 4d5670eb authored by Ramil Kalimullin's avatar Ramil Kalimullin

Fix for bug #37310: 'on update CURRENT_TIMESTAMP' option crashes the table

Problem: data consistency check (maximum record length) for a correct
MyISAM table with CHECKSUM=1 and ROW_FORMAT=DYNAMIC option 
may fail due to wrong inner MyISAM parameter. In result we may 
have the table marked as 'corrupted'. 

Fix: properly set MyISAM maximum record length parameter.
parent d7445d04
...@@ -192,7 +192,7 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs, ...@@ -192,7 +192,7 @@ int mi_create(const char *name,uint keys,MI_KEYDEF *keydefs,
packed=(packed+7)/8; packed=(packed+7)/8;
if (pack_reclength != INT_MAX32) if (pack_reclength != INT_MAX32)
pack_reclength+= reclength+packed + pack_reclength+= reclength+packed +
test(test_all_bits(options, HA_OPTION_CHECKSUM | HA_PACK_RECORD)); test(test_all_bits(options, HA_OPTION_CHECKSUM | HA_OPTION_PACK_RECORD));
min_pack_length+=packed; min_pack_length+=packed;
if (!ci->data_file_length && ci->max_rows) if (!ci->data_file_length && ci->max_rows)
......
...@@ -1861,4 +1861,26 @@ id ref ...@@ -1861,4 +1861,26 @@ id ref
3 2 3 2
4 5 4 5
DROP TABLE t1, t2; DROP TABLE t1, t2;
CREATE TABLE t1 (a INT) ENGINE=MyISAM CHECKSUM=1 ROW_FORMAT=DYNAMIC;
INSERT INTO t1 VALUES (0);
UPDATE t1 SET a=1;
SELECT a FROM t1;
a
1
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
INSERT INTO t1 VALUES (0), (5), (4), (2);
UPDATE t1 SET a=2;
SELECT a FROM t1;
a
2
2
2
2
2
CHECK TABLE t1;
Table Op Msg_type Msg_text
test.t1 check status OK
DROP TABLE t1;
End of 5.0 tests End of 5.0 tests
...@@ -1210,4 +1210,19 @@ SELECT * FROM t1; ...@@ -1210,4 +1210,19 @@ SELECT * FROM t1;
DROP TABLE t1, t2; DROP TABLE t1, t2;
#
# Bug#37310: 'on update CURRENT_TIMESTAMP' option crashes the table
#
CREATE TABLE t1 (a INT) ENGINE=MyISAM CHECKSUM=1 ROW_FORMAT=DYNAMIC;
INSERT INTO t1 VALUES (0);
UPDATE t1 SET a=1;
SELECT a FROM t1;
CHECK TABLE t1;
INSERT INTO t1 VALUES (0), (5), (4), (2);
UPDATE t1 SET a=2;
SELECT a FROM t1;
CHECK TABLE t1;
DROP TABLE t1;
--echo End of 5.0 tests --echo End of 5.0 tests
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