mirror of
https://github.com/MariaDB/server.git
synced 2025-01-17 12:32:27 +01:00
Merge.
This commit is contained in:
commit
ba7ba4e0e9
4 changed files with 36 additions and 1 deletions
12
mysql-test/r/archive_debug.result
Normal file
12
mysql-test/r/archive_debug.result
Normal file
|
@ -0,0 +1,12 @@
|
|||
#
|
||||
# BUG#12402794 - 60976: CRASH, VALGRIND WARNING AND MEMORY LEAK
|
||||
# WITH PARTITIONED ARCHIVE TABLES
|
||||
#
|
||||
CREATE TABLE t1(a INT) ENGINE=ARCHIVE;
|
||||
INSERT INTO t1 VALUES(1);
|
||||
SET SESSION debug='d,simulate_archive_open_failure';
|
||||
CHECK TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 check error Corrupt
|
||||
SET SESSION debug=DEFAULT;
|
||||
DROP TABLE t1;
|
13
mysql-test/t/archive_debug.test
Normal file
13
mysql-test/t/archive_debug.test
Normal file
|
@ -0,0 +1,13 @@
|
|||
--source include/have_archive.inc
|
||||
--source include/have_debug.inc
|
||||
|
||||
--echo #
|
||||
--echo # BUG#12402794 - 60976: CRASH, VALGRIND WARNING AND MEMORY LEAK
|
||||
--echo # WITH PARTITIONED ARCHIVE TABLES
|
||||
--echo #
|
||||
CREATE TABLE t1(a INT) ENGINE=ARCHIVE;
|
||||
INSERT INTO t1 VALUES(1);
|
||||
SET SESSION debug='d,simulate_archive_open_failure';
|
||||
CHECK TABLE t1;
|
||||
SET SESSION debug=DEFAULT;
|
||||
DROP TABLE t1;
|
|
@ -114,6 +114,15 @@ int az_open (azio_stream *s, const char *path, int Flags, File fd)
|
|||
|
||||
errno = 0;
|
||||
s->file = fd < 0 ? my_open(path, Flags, MYF(0)) : fd;
|
||||
DBUG_EXECUTE_IF("simulate_archive_open_failure",
|
||||
{
|
||||
if (s->file >= 0)
|
||||
{
|
||||
my_close(s->file, MYF(0));
|
||||
s->file= -1;
|
||||
my_errno= EMFILE;
|
||||
}
|
||||
});
|
||||
|
||||
if (s->file < 0 )
|
||||
{
|
||||
|
|
|
@ -1586,11 +1586,12 @@ int ha_archive::check(THD* thd, HA_CHECK_OPT* check_opt)
|
|||
azflush(&(share->archive_write), Z_SYNC_FLUSH);
|
||||
pthread_mutex_unlock(&share->mutex);
|
||||
|
||||
if (init_archive_reader())
|
||||
DBUG_RETURN(HA_ADMIN_CORRUPT);
|
||||
/*
|
||||
Now we will rewind the archive file so that we are positioned at the
|
||||
start of the file.
|
||||
*/
|
||||
init_archive_reader();
|
||||
read_data_header(&archive);
|
||||
while (!(rc= get_row(&archive, table->record[0])))
|
||||
count--;
|
||||
|
|
Loading…
Reference in a new issue