diff options
author | unknown <monty@donna.mysql.com> | 2000-09-12 03:02:33 +0300 |
---|---|---|
committer | unknown <monty@donna.mysql.com> | 2000-09-12 03:02:33 +0300 |
commit | fe4cccd6a43496395ec52e9043cd4350e5eac69d (patch) | |
tree | 051686baf31e5363765879f2437ada3abea6b71b /mysys/my_open.c | |
parent | 1dc6a46936306fbccaf19275e6f9dc4acc1e48a1 (diff) | |
download | mariadb-git-fe4cccd6a43496395ec52e9043cd4350e5eac69d.tar.gz |
Update to new root alloc, OPTIMIZE TABLE and some other changes
Docs/manual.texi:
Added chapter for binary log, updated the changelog, linux section, OPTIMIZE TABLE...
client/mysqladmin.c:
Fixed bug with pid-file handling.
client/mysqldump.c:
Version change
configure.in:
Version change
include/Makefile.am:
Fix for SCO to get sched.h removed.
include/global.h:
Increased MY_NFILE; Added thread_safe_increment
include/my_sys.h:
Better root_alloc
include/mysql.h:
Better root_alloc
include/mysys_err.h:
Fix for PREAD/PWRITE on windows
libmysql/libmysql.c:
Better root_alloc
myisam/mi_locking.c:
Fix for PREAD/PWRITE on windows
myisam/mi_static.c:
Fix for PREAD/PWRITE on windows
mysys/default.c:
Better root_alloc
mysys/errors.c:
Fix for PREAD/PWRITE on windows
mysys/my_alloc.c:
Better root_alloc
mysys/my_create.c:
Fix for PREAD/PWRITE on windows
mysys/my_fopen.c:
Fix for PREAD/PWRITE on windows
mysys/my_open.c:
Fix for PREAD/PWRITE on windows
mysys/my_pread.c:
Fix for PREAD/PWRITE on windows
mysys/tree.c:
Better root_alloc
readline/bind.c:
Removed compiler warning
readline/isearch.c:
Removed compiler warning
scripts/safe_mysqld.sh:
Allow use of MYSQL_UNIX_PORT and MYSQL_TCP_PORT
sql-bench/crash-me.sh:
Version change
sql-bench/limits/mysql-3.23.cfg:
Update to latest MySQL version
sql/filesort.cc:
Added more statistics
sql/ha_berkeley.h:
Fixed bug with ORDER BY
sql/ha_myisam.cc:
Added OPTIMIZE TABLE and cleaned up the repair code
sql/ha_myisam.h:
Added OPTIMIZE TABLE and cleaned up the repair code
sql/handler.cc:
Added OPTIMIZE TABLE and cleaned up the repair code
sql/handler.h:
Added OPTIMIZE TABLE and cleaned up the repair code
sql/item_func.cc:
Fixed comment
sql/item_timefunc.cc:
Fixed possible month bug
sql/mini_client.cc:
Use of new root_alloc
sql/mysql_priv.h:
Added OPTIMIZE TABLE and cleaned up the repair code
sql/mysqld.cc:
Added more statistics
sql/opt_range.cc:
Use of new root_alloc
sql/slave.cc:
Use of new root_alloc
sql/sql_acl.cc:
Use of new root_alloc
sql/sql_class.cc:
Use of new root_alloc
sql/sql_parse.cc:
Use of new root_alloc
sql/sql_select.cc:
Added more statistics
sql/sql_table.cc:
Added OPTIMIZE TABLE and cleaned up the repair code
sql/sql_udf.cc:
Use of new root_alloc
sql/sql_yacc.yy:
Fixed that OPTIMIZE TABLE can take many tables as arguments
sql/table.cc:
Use of new root_alloc
sql/thr_malloc.cc:
Use of new root_alloc
support-files/mysql.server.sh:
Removed usage of AWK
Diffstat (limited to 'mysys/my_open.c')
-rw-r--r-- | mysys/my_open.c | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/mysys/my_open.c b/mysys/my_open.c index ef1db41e3f5..1f9d5cc3bae 100644 --- a/mysys/my_open.c +++ b/mysys/my_open.c @@ -48,12 +48,27 @@ File my_open(const char *FileName, int Flags, myf MyFlags) if ((int) fd >= 0) { if ((int) fd >= MY_NFILE) + { +#if defined(THREAD) && !defined(HAVE_PREAD) + (void) my_close(fd,MyFlags); + my_errno=EMFILE; + if (MyFlags & (MY_FFNF | MY_FAE | MY_WME)) + my_error(EE_OUT_OF_FILERESOURCES, MYF(ME_BELL+ME_WAITTANG), + FileName, my_errno); + DBUG_RETURN(-1); +#else + thread_safe_increment(my_file_opened,&THR_LOCK_open); +#endif DBUG_RETURN(fd); /* safeguard */ + } pthread_mutex_lock(&THR_LOCK_open); if ((my_file_info[fd].name = (char*) my_strdup(FileName,MyFlags))) { my_file_opened++; my_file_info[fd].type = FILE_BY_OPEN; +#if defined(THREAD) && !defined(HAVE_PREAD) + pthread_mutex_init(&my_file_info[fd].mutex,NULL); +#endif pthread_mutex_unlock(&THR_LOCK_open); DBUG_PRINT("exit",("fd: %d",fd)); DBUG_RETURN(fd); @@ -80,7 +95,7 @@ int my_close(File fd, myf MyFlags) DBUG_PRINT("my",("fd: %d MyFlags: %d",fd, MyFlags)); pthread_mutex_lock(&THR_LOCK_open); - if ((err = close(fd)) != 0) + if ((err = close(fd))) { my_errno=errno; if (MyFlags & (MY_FAE | MY_WME)) @@ -88,9 +103,12 @@ int my_close(File fd, myf MyFlags) } if ((uint) fd < MY_NFILE && my_file_info[fd].type != UNOPEN) { - my_file_opened--; my_free(my_file_info[fd].name, MYF(0)); +#if defined(THREAD) && !defined(HAVE_PREAD) + pthread_mutex_destroy(&my_file_info[fd].mutex); +#endif my_file_info[fd].type = UNOPEN; + my_file_opened--; } pthread_mutex_unlock(&THR_LOCK_open); DBUG_RETURN(err); |