Loading extra/resolve_stack_dump.c +4 −4 Original line number Diff line number Diff line Loading @@ -159,7 +159,7 @@ static uchar hex_val(char c) l = tolower(c); if(l < 'a' || l > 'f') return HEX_INVALID; return 10 + c - 'a'; return (uchar)10 + ((uchar)c - (uchar)'a'); } static my_long_addr_t read_addr(char** buf) Loading Loading @@ -189,7 +189,7 @@ static int init_sym_entry(SYM_ENTRY* se, char* buf) /* empty - skip more space */; --buf; /* now we are on the symbol */ for(p = se->symbol, p_end = se->symbol + sizeof(se->symbol); for(p = se->symbol, p_end = se->symbol + sizeof(se->symbol) - 1; *buf != '\n' && *buf; ++buf,++p ) { if(p < p_end) Loading @@ -203,7 +203,7 @@ static int init_sym_entry(SYM_ENTRY* se, char* buf) static void init_sym_table() { char buf[256]; char buf[512]; if(init_dynamic_array(&sym_table, sizeof(SYM_ENTRY), INIT_SYM_TABLE, INC_SYM_TABLE)) die("Failed in init_dynamic_array() -- looks like out of memory problem"); Loading Loading @@ -236,7 +236,7 @@ static void verify_sort() get_dynamic(&sym_table, (gptr)&se, i); if(se.addr < last) die("sym table does not appear to be sorted, did you forget \ --numeric-sort arg to nm"); --numeric-sort arg to nm? trouble addr = %p, last = %p", se.addr, last); last = se.addr; } } Loading mysql-test/r/backup.result 0 → 100644 +39 −0 Original line number Diff line number Diff line Table Op Msg_type Msg_text t1 backup error Failed copying .frm file: errno = 2 test.t1 backup status Operation failed Table Op Msg_type Msg_text test.t1 backup status OK Table Op Msg_type Msg_text test.t1 restore status OK count(*) 0 Table Op Msg_type Msg_text test.t1 backup status OK Table Op Msg_type Msg_text t1 restore error Failed copying .frm file Table Op Msg_type Msg_text test.t1 restore status OK n 23 45 67 Table Op Msg_type Msg_text test.t1 backup status OK test.t2 backup status OK test.t3 backup status OK Table Op Msg_type Msg_text test.t1 restore status OK test.t2 restore status OK test.t3 restore status OK n 23 45 67 m 123 145 167 k 223 245 267 mysql-test/t/backup.test 0 → 100644 +31 −0 Original line number Diff line number Diff line connect (con1,localhost,root,,test,0,mysql-master.sock); connect (con2,localhost,root,,test,0,mysql-master.sock); connection con1; set SQL_LOG_BIN=0; drop table if exists t1; create table t1(n int); backup table t1 to '../bogus'; backup table t1 to '../tmp'; drop table t1; restore table t1 from '../tmp'; select count(*) from t1; insert into t1 values (23),(45),(67); backup table t1 to '../tmp'; drop table t1; restore table t1 from '../bogus'; restore table t1 from '../tmp'; select n from t1; create table t2(m int not null primary key); create table t3(k int not null primary key); insert into t2 values (123),(145),(167); insert into t3 values (223),(245),(267); backup table t1,t2,t3 to '../tmp'; drop table t1,t2,t3; restore table t1,t2,t3 from '../tmp'; select n from t1; select m from t2; select k from t3; drop table t1,t2,t3; #restore table t1 from '../tmp'; #connection con2; #lock tables t1 write; mysql-test/t/rpl000004.test +1 −1 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ load data infile '../../std_data/words.dat' into table t1; drop table if exists t2; create table t2 (word char(20) not null); load data infile '../../std_data/words.dat' into table t2; create table t3 (word char(20) not null); create table t3 (word char(20) not null primary key); connection slave; use test; drop table if exists t1; Loading sql/ha_myisam.cc +34 −5 Original line number Diff line number Diff line Loading @@ -375,6 +375,7 @@ int ha_myisam::restore(THD* thd, HA_CHECK_OPT *check_opt) tmp_check_opt.init(); tmp_check_opt.quick = 1; tmp_check_opt.flags |= T_VERY_SILENT; return repair(thd, &tmp_check_opt); err: Loading @@ -396,24 +397,52 @@ int ha_myisam::backup(THD* thd, HA_CHECK_OPT *check_opt) char* backup_dir = thd->lex.backup_dir; char src_path[FN_REFLEN], dst_path[FN_REFLEN]; char* table_name = table->real_name; int error = 0; const char* errmsg = ""; if (!fn_format(dst_path, table_name, backup_dir, reg_ext, 4 + 64)) return HA_ADMIN_INVALID; { errmsg = "failed in fn_format() for .frm file: errno=%d"; error = HA_ADMIN_INVALID; goto err; } if (my_copy(fn_format(src_path, table->path,"", reg_ext, 4), dst_path, MYF(MY_WME | MY_HOLD_ORIGINAL_MODES ))) { return HA_ADMIN_FAILED; error = HA_ADMIN_FAILED; errmsg = "Failed copying .frm file: errno = %d"; goto err; } if (!fn_format(dst_path, table_name, backup_dir, MI_NAME_DEXT, 4 + 64)) return HA_ADMIN_INVALID; { errmsg = "failed in fn_format() for .MYD file: errno=%d"; error = HA_ADMIN_INVALID; goto err; } if (my_copy(fn_format(src_path, table->path,"", MI_NAME_DEXT, 4), dst_path, MYF(MY_WME | MY_HOLD_ORIGINAL_MODES )) ) return HA_ADMIN_FAILED; { errmsg = "Failed copying .MYD file: errno = %d"; error= HA_ADMIN_FAILED; goto err; } return HA_ADMIN_OK; err: { MI_CHECK param; myisamchk_init(¶m); param.thd = thd; param.op_name = (char*)"backup"; param.table_name = table->table_name; param.testflag = 0; mi_check_print_error(¶m,errmsg, errno ); return error; } } Loading Loading
extra/resolve_stack_dump.c +4 −4 Original line number Diff line number Diff line Loading @@ -159,7 +159,7 @@ static uchar hex_val(char c) l = tolower(c); if(l < 'a' || l > 'f') return HEX_INVALID; return 10 + c - 'a'; return (uchar)10 + ((uchar)c - (uchar)'a'); } static my_long_addr_t read_addr(char** buf) Loading Loading @@ -189,7 +189,7 @@ static int init_sym_entry(SYM_ENTRY* se, char* buf) /* empty - skip more space */; --buf; /* now we are on the symbol */ for(p = se->symbol, p_end = se->symbol + sizeof(se->symbol); for(p = se->symbol, p_end = se->symbol + sizeof(se->symbol) - 1; *buf != '\n' && *buf; ++buf,++p ) { if(p < p_end) Loading @@ -203,7 +203,7 @@ static int init_sym_entry(SYM_ENTRY* se, char* buf) static void init_sym_table() { char buf[256]; char buf[512]; if(init_dynamic_array(&sym_table, sizeof(SYM_ENTRY), INIT_SYM_TABLE, INC_SYM_TABLE)) die("Failed in init_dynamic_array() -- looks like out of memory problem"); Loading Loading @@ -236,7 +236,7 @@ static void verify_sort() get_dynamic(&sym_table, (gptr)&se, i); if(se.addr < last) die("sym table does not appear to be sorted, did you forget \ --numeric-sort arg to nm"); --numeric-sort arg to nm? trouble addr = %p, last = %p", se.addr, last); last = se.addr; } } Loading
mysql-test/r/backup.result 0 → 100644 +39 −0 Original line number Diff line number Diff line Table Op Msg_type Msg_text t1 backup error Failed copying .frm file: errno = 2 test.t1 backup status Operation failed Table Op Msg_type Msg_text test.t1 backup status OK Table Op Msg_type Msg_text test.t1 restore status OK count(*) 0 Table Op Msg_type Msg_text test.t1 backup status OK Table Op Msg_type Msg_text t1 restore error Failed copying .frm file Table Op Msg_type Msg_text test.t1 restore status OK n 23 45 67 Table Op Msg_type Msg_text test.t1 backup status OK test.t2 backup status OK test.t3 backup status OK Table Op Msg_type Msg_text test.t1 restore status OK test.t2 restore status OK test.t3 restore status OK n 23 45 67 m 123 145 167 k 223 245 267
mysql-test/t/backup.test 0 → 100644 +31 −0 Original line number Diff line number Diff line connect (con1,localhost,root,,test,0,mysql-master.sock); connect (con2,localhost,root,,test,0,mysql-master.sock); connection con1; set SQL_LOG_BIN=0; drop table if exists t1; create table t1(n int); backup table t1 to '../bogus'; backup table t1 to '../tmp'; drop table t1; restore table t1 from '../tmp'; select count(*) from t1; insert into t1 values (23),(45),(67); backup table t1 to '../tmp'; drop table t1; restore table t1 from '../bogus'; restore table t1 from '../tmp'; select n from t1; create table t2(m int not null primary key); create table t3(k int not null primary key); insert into t2 values (123),(145),(167); insert into t3 values (223),(245),(267); backup table t1,t2,t3 to '../tmp'; drop table t1,t2,t3; restore table t1,t2,t3 from '../tmp'; select n from t1; select m from t2; select k from t3; drop table t1,t2,t3; #restore table t1 from '../tmp'; #connection con2; #lock tables t1 write;
mysql-test/t/rpl000004.test +1 −1 Original line number Diff line number Diff line Loading @@ -8,7 +8,7 @@ load data infile '../../std_data/words.dat' into table t1; drop table if exists t2; create table t2 (word char(20) not null); load data infile '../../std_data/words.dat' into table t2; create table t3 (word char(20) not null); create table t3 (word char(20) not null primary key); connection slave; use test; drop table if exists t1; Loading
sql/ha_myisam.cc +34 −5 Original line number Diff line number Diff line Loading @@ -375,6 +375,7 @@ int ha_myisam::restore(THD* thd, HA_CHECK_OPT *check_opt) tmp_check_opt.init(); tmp_check_opt.quick = 1; tmp_check_opt.flags |= T_VERY_SILENT; return repair(thd, &tmp_check_opt); err: Loading @@ -396,24 +397,52 @@ int ha_myisam::backup(THD* thd, HA_CHECK_OPT *check_opt) char* backup_dir = thd->lex.backup_dir; char src_path[FN_REFLEN], dst_path[FN_REFLEN]; char* table_name = table->real_name; int error = 0; const char* errmsg = ""; if (!fn_format(dst_path, table_name, backup_dir, reg_ext, 4 + 64)) return HA_ADMIN_INVALID; { errmsg = "failed in fn_format() for .frm file: errno=%d"; error = HA_ADMIN_INVALID; goto err; } if (my_copy(fn_format(src_path, table->path,"", reg_ext, 4), dst_path, MYF(MY_WME | MY_HOLD_ORIGINAL_MODES ))) { return HA_ADMIN_FAILED; error = HA_ADMIN_FAILED; errmsg = "Failed copying .frm file: errno = %d"; goto err; } if (!fn_format(dst_path, table_name, backup_dir, MI_NAME_DEXT, 4 + 64)) return HA_ADMIN_INVALID; { errmsg = "failed in fn_format() for .MYD file: errno=%d"; error = HA_ADMIN_INVALID; goto err; } if (my_copy(fn_format(src_path, table->path,"", MI_NAME_DEXT, 4), dst_path, MYF(MY_WME | MY_HOLD_ORIGINAL_MODES )) ) return HA_ADMIN_FAILED; { errmsg = "Failed copying .MYD file: errno = %d"; error= HA_ADMIN_FAILED; goto err; } return HA_ADMIN_OK; err: { MI_CHECK param; myisamchk_init(¶m); param.thd = thd; param.op_name = (char*)"backup"; param.table_name = table->table_name; param.testflag = 0; mi_check_print_error(¶m,errmsg, errno ); return error; } } Loading