summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorholyfoot/hf@mysql.com/deer.(none) <>2006-09-04 19:47:24 +0500
committerholyfoot/hf@mysql.com/deer.(none) <>2006-09-04 19:47:24 +0500
commitc32f62bebb609f6a0c2c91c303c15a482a5b28d3 (patch)
treeab01e92f008386033f759954a88640fa0fff6727
parent5a0d5670b8fe0f17c8c9033d812076132a81904b (diff)
downloadmariadb-git-c32f62bebb609f6a0c2c91c303c15a482a5b28d3.tar.gz
bug #12620 (UTF-8 indexing causes ER_NO_KEYFILE error)
The problem is that on some Mac OS X-es the file writing/reading call with zero bytes to read/write returns error. So here i try to eliminate that kinds of calls.
-rw-r--r--myisam/mi_check.c9
-rw-r--r--mysys/my_chsize.c4
2 files changed, 9 insertions, 4 deletions
diff --git a/myisam/mi_check.c b/myisam/mi_check.c
index 1e62e5e641d..65ce70a97df 100644
--- a/myisam/mi_check.c
+++ b/myisam/mi_check.c
@@ -1366,7 +1366,8 @@ int mi_repair(MI_CHECK *param, register MI_INFO *info,
param->temp_filename);
goto err;
}
- if (filecopy(param,new_file,info->dfile,0L,new_header_length,
+ if (new_header_length &&
+ filecopy(param,new_file,info->dfile,0L,new_header_length,
"datafile-header"))
goto err;
info->s->state.dellink= HA_OFFSET_ERROR;
@@ -2063,7 +2064,8 @@ int mi_repair_by_sort(MI_CHECK *param, register MI_INFO *info,
param->temp_filename);
goto err;
}
- if (filecopy(param, new_file,info->dfile,0L,new_header_length,
+ if (new_header_length &&
+ filecopy(param, new_file,info->dfile,0L,new_header_length,
"datafile-header"))
goto err;
if (param->testflag & T_UNPACK)
@@ -2431,7 +2433,8 @@ int mi_repair_parallel(MI_CHECK *param, register MI_INFO *info,
param->temp_filename);
goto err;
}
- if (filecopy(param, new_file,info->dfile,0L,new_header_length,
+ if (new_header_length &&
+ filecopy(param, new_file,info->dfile,0L,new_header_length,
"datafile-header"))
goto err;
if (param->testflag & T_UNPACK)
diff --git a/mysys/my_chsize.c b/mysys/my_chsize.c
index cf26428d65f..efc19927183 100644
--- a/mysys/my_chsize.c
+++ b/mysys/my_chsize.c
@@ -44,7 +44,9 @@ int my_chsize(File fd, my_off_t newlength, int filler, myf MyFlags)
DBUG_PRINT("my",("fd: %d length: %lu MyFlags: %d",fd,(ulong) newlength,
MyFlags));
- oldsize = my_seek(fd, 0L, MY_SEEK_END, MYF(MY_WME+MY_FAE));
+ if ((oldsize = my_seek(fd, 0L, MY_SEEK_END, MYF(MY_WME+MY_FAE))) == newlength)
+ DBUG_RETURN(0);
+
DBUG_PRINT("info",("old_size: %ld", (ulong) oldsize));
if (oldsize > newlength)