Commit bea9f826 authored by Sergei Golubchik's avatar Sergei Golubchik

5.2 merge

parents 3aa370bb aa2f88ba
...@@ -482,7 +482,7 @@ sub main { ...@@ -482,7 +482,7 @@ sub main {
} }
} }
if ( not defined @$completed ) { if ( not @$completed ) {
mtr_error("Test suite aborted"); mtr_error("Test suite aborted");
} }
......
create table t1 (a int) engine=myisam data directory='MYSQL_TMP_DIR';
insert t1 values (1);
repair table t1;
Table Op Msg_type Msg_text
test.t1 repair error Can't create new tempfile: 'MYSQL_TMP_DIR/t1.TMD'
test.t1 repair status Operation failed
drop table t1;
create table t2 (a int) engine=aria data directory='MYSQL_TMP_DIR';
insert t2 values (1);
repair table t2;
Table Op Msg_type Msg_text
test.t2 repair error Can't create new tempfile: 'MYSQL_TMP_DIR/t2.TMD'
test.t2 repair status Operation failed
drop table t2;
#
# MDEV-5543 MyISAM repair unsafe usage of TMD files
#
--source include/have_symlink.inc
--source include/not_windows.inc
--source include/have_maria.inc
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
eval create table t1 (a int) engine=myisam data directory='$MYSQL_TMP_DIR';
insert t1 values (1);
--system ln -s $MYSQL_TMP_DIR/foobar5543 $MYSQL_TMP_DIR/t1.TMD
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
repair table t1;
drop table t1;
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
eval create table t2 (a int) engine=aria data directory='$MYSQL_TMP_DIR';
insert t2 values (1);
--system ln -s $MYSQL_TMP_DIR/foobar5543 $MYSQL_TMP_DIR/t2.TMD
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
repair table t2;
drop table t2;
--list_files $MYSQL_TMP_DIR foobar5543
--system rm $MYSQL_TMP_DIR/t1.TMD $MYSQL_TMP_DIR/t2.TMD
/* Copyright (C) 2004-2008 MySQL AB & MySQL Finland AB & TCX DataKonsult AB /* Copyright (C) 2004-2008 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
Copyright (C) 2008-2009 Sun Microsystems, Inc. Copyright (C) 2008-2009 Sun Microsystems, Inc.
Copyright (c) 2009, 2014, SkySQL Ab.
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
...@@ -1610,7 +1611,7 @@ int ha_maria::repair(THD *thd, HA_CHECK *param, bool do_optimize) ...@@ -1610,7 +1611,7 @@ int ha_maria::repair(THD *thd, HA_CHECK *param, bool do_optimize)
param->db_name= table->s->db.str; param->db_name= table->s->db.str;
param->table_name= table->alias.c_ptr(); param->table_name= table->alias.c_ptr();
param->tmpfile_createflag= O_RDWR | O_TRUNC; param->tmpfile_createflag= O_RDWR | O_TRUNC | O_EXCL;
param->using_global_keycache= 1; param->using_global_keycache= 1;
param->thd= thd; param->thd= thd;
param->tmpdir= &mysql_tmpdir_list; param->tmpdir= &mysql_tmpdir_list;
......
/* /*
Copyright (c) 2000, 2011, Oracle and/or its affiliates Copyright (c) 2000, 2011, Oracle and/or its affiliates
Copyright (c) 2009, 2014, SkySQL Ab.
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
...@@ -1187,7 +1188,7 @@ int ha_myisam::repair(THD *thd, HA_CHECK &param, bool do_optimize) ...@@ -1187,7 +1188,7 @@ int ha_myisam::repair(THD *thd, HA_CHECK &param, bool do_optimize)
param.db_name= table->s->db.str; param.db_name= table->s->db.str;
param.table_name= table->alias.c_ptr(); param.table_name= table->alias.c_ptr();
param.tmpfile_createflag = O_RDWR | O_TRUNC; param.tmpfile_createflag= O_RDWR | O_TRUNC | O_EXCL;
param.using_global_keycache = 1; param.using_global_keycache = 1;
param.thd= thd; param.thd= thd;
param.tmpdir= &mysql_tmpdir_list; param.tmpdir= &mysql_tmpdir_list;
......
...@@ -937,7 +937,7 @@ xtPublic xtBool myxt_create_row_from_key(XTOpenTablePtr XT_UNUSED(ot), XTIndexPt ...@@ -937,7 +937,7 @@ xtPublic xtBool myxt_create_row_from_key(XTOpenTablePtr XT_UNUSED(ot), XTIndexPt
*/ */
byte *key_ptr = key; // Cannot take the address of a register variable! byte *key_ptr = key; // Cannot take the address of a register variable!
memcpy(record+keyseg->start+keyseg->bit_start, memcpy(record+keyseg->start+keyseg->bit_start,
(char*) &key_ptr,sizeof(char*)); &key_ptr,sizeof(char*));
my_store_blob_length(record+keyseg->start, my_store_blob_length(record+keyseg->start,
(uint) keyseg->bit_start,length); (uint) keyseg->bit_start,length);
......
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