diff options
author | Michael Widenius <monty@askmonty.org> | 2012-03-13 16:38:43 +0200 |
---|---|---|
committer | Michael Widenius <monty@askmonty.org> | 2012-03-13 16:38:43 +0200 |
commit | 6f06cef02b062f240806cad555275c54fd68eba6 (patch) | |
tree | 0f0a13215822bd8fe1f0dae21d68be7e5a3accdb /mysql-test | |
parent | 223483aedf0c53bc66cb6833210228b46448003a (diff) | |
download | mariadb-git-6f06cef02b062f240806cad555275c54fd68eba6.tar.gz |
Fixed bug lp:917689 "Archive table corruption crashing MariaDB signal 11"
Added 'from_end' as extra parameter to Field::unpack() to detect wrong from data.
Change ha_archive::unpack_row() to detect wrong field lengths.
Replication code changed to detect wrong field information in events.
mysql-test/r/archive.result:
dded test case for lp:917689
sql/field.cc:
Added 'from_end' as extra parameter to Field::unpack() to detect wrong from data.
Removed not used 'unpack_key' functions.
sql/field.h:
Added 'from_end' as extra parameter to Field::unpack() to detect wrong from data.
Removed not used 'unpack_key' functions.
Removed some not needed unpack() functions.
sql/filesort.cc:
Added buffer end parameter to unpack_addon_fields()
sql/log_event.h:
Added end of buffer argument to unpack_row()
sql/log_event_old.cc:
Added end of buffer argument to unpack_row()
sql/log_event_old.h:
Added end of buffer argument to unpack_row()
sql/records.cc:
Added buffer end parameter to unpack_addon_fields()
sql/rpl_record.cc:
Added end of buffer argument to unpack_row()
Added detection of wrong field information in events
sql/rpl_record.h:
Added end of buffer argument to unpack_row()
sql/rpl_record_old.cc:
Added end of buffer argument to unpack_row()
Added detection of wrong field information in events
sql/rpl_record_old.h:
Added end of buffer argument to unpack_row()
sql/table.h:
Added buffer end parameter to unpack()
storage/archive/ha_archive.cc:
Change ha_archive::unpack_row() to detect wrong field lengths.
This fixes lp:917689
Diffstat (limited to 'mysql-test')
-rw-r--r-- | mysql-test/r/archive.result | 11 | ||||
-rw-r--r-- | mysql-test/std_data/t917689.ARZ | bin | 0 -> 8687 bytes | |||
-rw-r--r-- | mysql-test/t/archive.test | 11 | ||||
-rw-r--r-- | mysql-test/t/sp.test | 5 |
4 files changed, 26 insertions, 1 deletions
diff --git a/mysql-test/r/archive.result b/mysql-test/r/archive.result index 0ec84efa842..f2cdf2adfca 100644 --- a/mysql-test/r/archive.result +++ b/mysql-test/r/archive.result @@ -12801,3 +12801,14 @@ OPTIMIZE TABLE t1; Table Op Msg_type Msg_text test.t1 optimize status OK DROP TABLE t1; +# +# BUG#917689 Using wrong archive table causes crash +# +create table t1 (a int, b char(50)) engine=archive; +select * from t1; +ERROR HY000: Table 't1' is marked as crashed and should be repaired +show warnings; +Level Code Message +Error 127 Got error 127 when reading table `test`.`t1` +Error 1194 Table 't1' is marked as crashed and should be repaired +drop table t1; diff --git a/mysql-test/std_data/t917689.ARZ b/mysql-test/std_data/t917689.ARZ Binary files differnew file mode 100644 index 00000000000..4770ca0c257 --- /dev/null +++ b/mysql-test/std_data/t917689.ARZ diff --git a/mysql-test/t/archive.test b/mysql-test/t/archive.test index 6f788fc3cc6..0f274b6225d 100644 --- a/mysql-test/t/archive.test +++ b/mysql-test/t/archive.test @@ -1727,3 +1727,14 @@ CHECKSUM TABLE t1 EXTENDED; FLUSH TABLE t1; OPTIMIZE TABLE t1; DROP TABLE t1; + +--echo # +--echo # BUG#917689 Using wrong archive table causes crash +--echo # +create table t1 (a int, b char(50)) engine=archive; +--remove_file $MYSQLD_DATADIR/test/t1.ARZ +copy_file std_data/t917689.ARZ $MYSQLD_DATADIR/test/t1.ARZ; +--error 1194 +select * from t1; +show warnings; +drop table t1; diff --git a/mysql-test/t/sp.test b/mysql-test/t/sp.test index fa1572e561f..c7bfa42da95 100644 --- a/mysql-test/t/sp.test +++ b/mysql-test/t/sp.test @@ -194,12 +194,15 @@ begin insert into test.t1 values (x, z); end| +let $start_value= `SELECT @@max_join_size`| call mixset("mixset", 19)| show variables like 'max_join_size'| select id,data,@z from t1| delete from t1| drop procedure mixset| - +--disable_query_log +eval SET @@max_join_size= $start_value| +--enable_query_log # Multiple CALL statements, one with OUT parameter. --disable_warnings |