diff options
author | unknown <monty@tik.mysql.fi> | 2001-09-06 23:57:32 +0300 |
---|---|---|
committer | unknown <monty@tik.mysql.fi> | 2001-09-06 23:57:32 +0300 |
commit | 44e61cdad7da3d5c98002b56dcfa3d026b205bcf (patch) | |
tree | e9cc497510dfb664a30e2714aaceae4638a512a0 /Docs | |
parent | 07a887b3836904c19a7dcc74ac1b73e82dbed7ec (diff) | |
download | mariadb-git-44e61cdad7da3d5c98002b56dcfa3d026b205bcf.tar.gz |
Fixed a problem using LOCK TABLES and BDB tables
Docs/manual.texi:
Added description of C thread functions
sql-bench/test-create.sh:
Faster --fast option
Diffstat (limited to 'Docs')
-rw-r--r-- | Docs/manual.texi | 168 |
1 files changed, 117 insertions, 51 deletions
diff --git a/Docs/manual.texi b/Docs/manual.texi index 4f2b551f464..389e8befec5 100644 --- a/Docs/manual.texi +++ b/Docs/manual.texi @@ -6149,9 +6149,9 @@ Nothing; In the long run we plan to be fully ANSI 92 / ANSI 99 compliant. @menu * Quick Standard Installation:: Quick Standard Installation of MySQL * General Installation Issues:: General Installation Issues -* Installing source:: Installing a MySQL source distribution -* Post-installation:: Post-installation setup and testing -* Upgrade:: Upgrading/Downgrading MySQL +* Installing source:: Installing a MySQL source distribution +* Post-installation:: Post-installation setup and testing +* Upgrade:: Upgrading/Downgrading MySQL * Operating System Specific Notes:: Operating System Specific Notes @end menu @@ -8202,7 +8202,7 @@ If your client programs are using threads, you need to also compile a thread-safe version of the MySQL client library with the @code{--with-thread-safe-client} configure options. This will create a @code{libmysqlclient_r} library with which you should link your threaded -applications. @xref{Thread-safe clients}. +applications. @xref{Threaded clients}. @item Options that pertain to particular systems can be found in the @@ -38964,9 +38964,10 @@ likely it is that we can fix the problem! * C API datatypes:: C API Datatypes * C API function overview:: C API Function Overview * C API functions:: C API Function Descriptions +* C Thread functions:: * C API problems:: Common questions and problems when using the C API * Building clients:: Building Client Programs -* Thread-safe clients:: How to Make a Thread-safe Client +* Threaded clients:: How to Make a Threaded Client @end menu The C API code is distributed with MySQL. It is included in the @@ -39007,7 +39008,7 @@ the buffer associated with a connection is not decreased until the connection is closed, at which time client memory is reclaimed. For programming with threads, consult the 'how to make a thread-safe -client' chapter. @xref{Thread-safe clients}. +client' chapter. @xref{Threaded clients}. @node C API datatypes, C API function overview, C, C @@ -39455,7 +39456,7 @@ recently invoked function that can succeed or fail, allowing you to determine when an error occurred and what it was. -@node C API functions, C API problems, C API function overview, C +@node C API functions, C Thread functions, C API function overview, C @subsection C API Function Descriptions @menu @@ -40373,7 +40374,7 @@ of @code{mysql_field_count()} whether or not the statement was a @code{MYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES *result, MYSQL_FIELD_OFFSET offset)} -* Thread-safe clients:: How to Make a Thread-safe Client +* Threaded clients:: How to Make a Threaded Client @subsubheading Description Sets the field cursor to the given offset. The next call to @@ -41650,8 +41651,71 @@ The connection to the server was lost during the query. An unknown error occurred. @end table +@node C Thread functions, C API problems, C API functions, C +@subsection C Threaded Function Descriptions -@node C API problems, Building clients, C API functions, C +You need to use the following functions when you want to create a +threaded client. @xref{Threaded clients}. + +@menu +* my_init:: +* my_thread_init():: +* my_thread_end():: +@end menu + +@node my_init, my_thread_init(), C Thread functions, C Thread functions +@subsubsection @code{my_init()} + +@findex @code{my_init()} + +@subsubheading Description + +This function needs to be called once in the program before calling any +MySQL function. This initializes some global variables that MySQL +needs. If you are using a thread safe client library, this will also +call @code{my_thread_init()} for this thread. + +This is automaticly called by @code{mysql_init()} +and @code{mysql_connect()}. + +@subsubheading Return Values + +none. + +@node my_thread_init(), my_thread_end(), my_init, C Thread functions +@subsubsection @code{my_thread_init()} + +@findex @code{my_thread_init()} + +@subsubheading Description + +This function needs to be called for each created thread to initialize +thread specific variables. + +This is automaticly called by @code{my_init()} and @code{mysql_connect()}. + +@subsubheading Return Values + +none. + +@node my_thread_end(), , my_thread_init(), C Thread functions +@subsubsection @code{my_thread_end()} + +@findex @code{my_thread_end()} + +@subsubheading Description + +This function needs to be called before calling @code{pthread_exit()} to +freed memory allocated by @code{my_thread_init()}. + +Note that this function is NOT invoked automaticly be the client +library! + +@subsubheading Return Values + +none. + +@node C API problems, Building clients, C Thread functions, C @subsection Common questions and problems when using the C API @tindex @code{mysql_query()} @@ -41806,7 +41870,7 @@ If this happens on your system, you must include the math library by adding @code{-lm} to the end of the compile/link line. -@node Building clients, Thread-safe clients, C API problems, C +@node Building clients, Threaded clients, C API problems, C @subsection Building Client Programs @cindex client programs, building @@ -41827,11 +41891,11 @@ For clients that use MySQL header files, you may need to specify a files. -@node Thread-safe clients, , Building clients, C -@subsection How to Make a Thread-safe Client +@node Threaded clients, , Building clients, C +@subsection How to Make a Threaded Client -@cindex clients, thread-safe -@cindex thread-safe clients +@cindex clients, threaded +@cindex threaded clients The client library is almost thread safe. The biggest problem is that the subroutines in @file{net.c} that read from sockets are not @@ -41846,20 +41910,21 @@ Windows binaries are by default compiled to be thread safe). Newer binary distributions should have both a normal and a thread-safe client library. -To get a really thread-safe client where you can interrupt the client -from other threads and set timeouts when talking with the MySQL -server, you should use the @code{-lmysys}, @code{-lstring}, and @code{-ldbug} -libraries and the @code{net_serv.o} code that the server uses. +To get a threaded client where you can interrupt the client from other +threads and set timeouts when talking with the MySQL server, you should +use the @code{-lmysys}, @code{-lstring}, and @code{-ldbug} libraries and +the @code{net_serv.o} code that the server uses. If you don't need interrupts or timeouts, you can just compile a thread safe client library @code{(mysqlclient_r)} and use this. @xref{C,, MySQL C API}. In this case you don't have to worry about the @code{net_serv.o} object file or the other MySQL libraries. -When using a threaded client and you want to use timeouts and interrupts, -you can make great use of the routines in the @file{thr_alarm.c} file. -If you are using routines from the @code{mysys} library, the only thing -you must remember is to call @code{my_init()} first! +When using a threaded client and you want to use timeouts and +interrupts, you can make great use of the routines in the +@file{thr_alarm.c} file. If you are using routines from the +@code{mysys} library, the only thing you must remember is to call +@code{my_init()} first! @xref{C Thread functions}. All functions except @code{mysql_real_connect()} are by default thread safe. The following notes describe how to compile a thread safe @@ -41906,11 +41971,38 @@ If you program with POSIX threads, you can use establish and release a mutex lock. @end itemize +You need to know the following if you have a thread that is calling +MySQL functions, but that thread has not created the connection to the +MySQL database: + +When you call @code{mysql_init()} or @code{mysql_connect()}, MySQL will +create a thread specific variable for the thread that is used by the +debug library (among other things). + +If you have in a thread call a MySQL function, before a thread has +called @code{mysql_init()} or @code{mysql_connect()}, the thread will +not have the necessary thread specific variables in place and you are +likely to end up with a core dump sooner or later. + +The get things to work smoothly you have to do the following: + +@enumerate +@item +Call @code{my_init()} at the start of your program if it calls +any other MySQL function before calling @code{mysql_real_connect()}. +@item +Call @code{my_thread_init()} in the thread handler before calling +any MySQL function. +@item +In the thread, call @code{my_thread_end()} before calling +@code{pthread_exit()}. This will free the memory used by MySQL thread +specific variables. +@end enumerate + You may get some errors because of undefined symbols when linking your client with @code{mysqlclient_r}. In most cases this is because you haven't included the thread libraries on the link/compile line. - @node Cplusplus, Java, C, Clients @section MySQL C++ APIs @@ -44221,34 +44313,6 @@ thread that is waiting on the disk-full condition will allow the other threads to continue. @end itemize -You need to know the following if you have a thread that is calling -MySQL functions, but that thread has not created the connection to the -MySQL database: - -When you call @code{mysql_init()} or @code{mysql_connect()}, MySQL will -create a thread specific variable for the thread that is used by the -debug library (among other things). - -If you have in a thread call a MySQL function, before a thread has -called @code{mysql_init()} or @code{mysql_connect()}, the thread will -not have the necessary thread specific variables in place and you are -likely to end up with a core dump sooner or later. - -The get things to work smoothly you have to do the following: - -@enumerate -@item -Call @code{my_init()} at the start of your program if it calls -any other MySQL function before calling @code{mysql_real_connect()}. -@item -Call @code{my_thread_init()} in the thread handler before calling -any MySQL function. -@item -In the thread, call @code{my_thread_end()} before calling -@code{pthread_exit()}. This will free the memory used by MySQL thread -specific variables. -@end enumerate - Exceptions to the above behaveour is when you use @code{REPAIR} or @code{OPTIMIZE} or when the indexes are created in a batch after an @code{LOAD DATA INFILE} or after an @code{ALTER TABLE} statement. @@ -46707,6 +46771,8 @@ not yet 100% confident in this code. @appendixsubsec Changes in release 3.23.42 @itemize @bullet @item +Fixed a problem when using @code{LOCK TABLES} and @code{BDB} tables. +@item Fixed problem with @code{REPAIR TABLE} on MyISAM tables with row lengths between 65517 - 65520 bytes @item |