summaryrefslogtreecommitdiff
path: root/mysys/my_lock.c
diff options
context:
space:
mode:
authorunknown <monty@donna.mysql.com>2000-10-14 03:16:35 +0300
committerunknown <monty@donna.mysql.com>2000-10-14 03:16:35 +0300
commit518a621adf75a55cad471f82d926842f3bcbf997 (patch)
tree1b0bc8c3909ac0c3e49a7d72615c583c9a72254d /mysys/my_lock.c
parentda2c52f1fe73f1fca8d95875957b4bcb4bd84a4b (diff)
downloadmariadb-git-518a621adf75a55cad471f82d926842f3bcbf997.tar.gz
Fix of LEFT JOIN optimizer bug, problem with key cache on Windows and
a lot of portability issues. Docs/manual.texi: Changed FOREIGN KEY to FOREIGN KEY constraint client/mysqladmin.c: Don't flush MASTER or SLAVE on refresh configure.in: Fix for hpux 11.0 extra/perror.c: New error message include/my_pthread.h: Portability fix for windows myisam/mi_locking.c: Ensure that locking doesn't interfere with pread/pwrite on windows myisam/sort.c: checked with purecover mysys/mf_tempfile.c: Fix for windows mysys/my_lock.c: Ensure that locking doesn't interfere with pread/pwrite on windows mysys/my_winthread.c: Portability fix sql-bench/Results/ATIS-mysql-NT_4.0: New benchmark runs sql-bench/Results/RUN-mysql-NT_4.0: New benchmark runs sql-bench/Results/alter-table-mysql-NT_4.0: New benchmark runs sql-bench/Results/big-tables-mysql-NT_4.0: New benchmark runs sql-bench/Results/connect-mysql-NT_4.0: New benchmark runs sql-bench/Results/create-mysql-NT_4.0: New benchmark runs sql-bench/Results/insert-mysql-NT_4.0: New benchmark runs sql-bench/Results/select-mysql-NT_4.0: New benchmark runs sql-bench/Results/wisconsin-mysql-NT_4.0: New benchmark runs sql-bench/crash-me.sh: Fixed things for PostgreSQL sql-bench/limits/mysql-3.23.cfg: Update for new crash-me sql-bench/limits/mysql.cfg: Update for new crash-me sql-bench/print-limit-table: Fixed position for alter table rename sql-bench/test-insert.sh: Fix for PostgreSQL sql/field.cc: Fix for default values in CREATE ... SELECT sql/field.h: Fix for default values in CREATE ... SELECT sql/log.cc: Fixed typo sql/log_event.cc: Portability fix sql/mysqlbinlog.cc: Portability fix sql/mysqld.cc: Don't turn of concurrent insert with --skip-new or --safe sql/sql_base.cc: Portability fix sql/sql_class.cc: Portability fix sql/sql_class.h: Portability fix sql/sql_parse.cc: Fix for --log-slow-queries sql/sql_repl.cc: Portability fixes sql/sql_select.cc: Fixed optimizer bug for LEFT JOIN sql/sql_select.h: Fixed optimizer bug for LEFT JOIN sql/sql_table.cc: Fix for default values in CREATE ... SELECT sql/sql_yacc.yy: Added optional AS to: CREATE TABLE foo [ AS ] SELECT ...
Diffstat (limited to 'mysys/my_lock.c')
-rw-r--r--mysys/my_lock.c15
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;