diff options
author | monty@donna.mysql.com <> | 2000-10-14 03:16:35 +0300 |
---|---|---|
committer | monty@donna.mysql.com <> | 2000-10-14 03:16:35 +0300 |
commit | 7ac13c89e62da94aab70d3e8e89d368cb7bc7e5c (patch) | |
tree | 1b0bc8c3909ac0c3e49a7d72615c583c9a72254d /mysys/my_lock.c | |
parent | 5134b08422d9e69228fe5f66a51f0e5f12c81e86 (diff) | |
download | mariadb-git-7ac13c89e62da94aab70d3e8e89d368cb7bc7e5c.tar.gz |
Fix of LEFT JOIN optimizer bug, problem with key cache on Windows and
a lot of portability issues.
Diffstat (limited to 'mysys/my_lock.c')
-rw-r--r-- | mysys/my_lock.c | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/mysys/my_lock.c b/mysys/my_lock.c index 4f1506f20cf..ed637648353 100644 --- a/mysys/my_lock.c +++ b/mysys/my_lock.c @@ -109,10 +109,17 @@ int my_lock(File fd, int locktype, my_off_t start, my_off_t length, printf("Error: DosSetFileLocks() == %d\n",rc); } #elif defined(HAVE_LOCKING) - if (MyFlags & MY_SEEK_NOT_DONE) - VOID(my_seek(fd,start,MY_SEEK_SET,MYF(MyFlags & ~MY_SEEK_NOT_DONE))); - if (!locking(fd,locktype,(ulong) length) || errno == EINVAL) - DBUG_RETURN(0); + /* Windows */ + { + my_bool error; + pthread_mutex_lock(&my_file_info[fd].mutex); + if (MyFlags & MY_SEEK_NOT_DONE) + VOID(my_seek(fd,start,MY_SEEK_SET,MYF(MyFlags & ~MY_SEEK_NOT_DONE))); + error= locking(fd,locktype,(ulong) length) && errno != EINVAL; + pthread_mutex_unlock(&my_file_info[fd].mutex); + if (!error) + DBUG_RETURN(0); + } #else #if defined(HAVE_FCNTL) lock.l_type= (short) locktype; |