summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjcole@abel.spaceapes.com <>2001-04-04 01:38:47 -0500
committerjcole@abel.spaceapes.com <>2001-04-04 01:38:47 -0500
commitfeca8212dce157fb8f7c6481e042ddded33b51db (patch)
tree16254ac1219c1d5391aedb44e14336d61cd48494
parent09fa56ff86c35cc0161ace77d1b411b341614f5a (diff)
downloadmariadb-git-feca8212dce157fb8f7c6481e042ddded33b51db.tar.gz
Edits to first 10,000 lines from read-through of manual.texi.
-rw-r--r--Docs/manual.texi2473
1 files changed, 1272 insertions, 1201 deletions
diff --git a/Docs/manual.texi b/Docs/manual.texi
index d30601fc3b7..131a18a5bca 100644
--- a/Docs/manual.texi
+++ b/Docs/manual.texi
@@ -1102,20 +1102,20 @@ Debugging a MySQL server
@end menu
This is the @strong{MySQL} reference manual; it documents @strong{MySQL}
-Version @value{mysql_version}. As @strong{MySQL} is work in progress,
-the manual gets updated frequently. There is a very good chance that
-this version is out of date, unless you are looking at it online. The
+Version @value{mysql_version}. As @strong{MySQL} is work in progress,
+the manual gets updated frequently. There is a very good chance that
+this version is out of date, unless you are looking at it online. The
most recent version of this manual is available at
-@uref{http://www.mysql.com/documentation/} in many different formats. If you
+@uref{http://www.mysql.com/documentation/} in many different formats. If you
have a hard time finding information in the manual, you can try the
searchable PHP version at @uref{http://www.mysql.com/documentation/manual.php}.
@strong{MySQL} is a very fast, multi-threaded, multi-user, and robust SQL
(Structured Query Language) database server.
-@strong{MySQL} is free software. It is licensed with the @strong{GNU
+@strong{MySQL} is free software. It is licensed with the @strong{GNU
GENERAL PUBLIC LICENSE} @uref{http://www.gnu.org/}.
- @xref{Licensing and Support}.
+@xref{Licensing and Support}.
@uref{http://www.mysql.com/, The @strong{MySQL} home page}
provides the latest information about @strong{MySQL}.
@@ -1124,7 +1124,8 @@ The following list describes some useful sections of the manual:
@itemize @bullet
@item
-To get information about the company behind MySQL, see @xref{What is MySQL AB}.
+For information about the company behind @strong{MySQL}, see
+@ref{What is MySQL AB}.
@item
For a discussion of @strong{MySQL}'s capabilities, see @ref{Features}.
@@ -1137,12 +1138,11 @@ For tips on porting @strong{MySQL} to new architectures or operating
systems, see @ref{Porting}.
@item
-For information about upgrading from a Version 3.21 release, see
-@ref{Upgrading-from-3.21}.
+For information about upgrading from a Version 3.22 release, see
+@ref{Upgrading-from-3.22}.
@item
-For a tutorial introduction to @strong{MySQL}, see
-@ref{Tutorial}.
+For a tutorial introduction to @strong{MySQL}, see @ref{Tutorial}.
@item
For examples of SQL and benchmarking information, see the benchmarking
@@ -1180,12 +1180,11 @@ security bug in @strong{MySQL}, you should send an email to
@cindex @code{mysqlbug} script, location
If you have any suggestions concerning additions or corrections to this
-manual, please send them to the manual team at
-(@email{docs@@mysql.com}).
+manual, please send them to the manual team at @email{docs@@mysql.com}.
This is a reference manual; it does not provide general instruction on SQL
or relational database concepts. If you want general information about SQL,
-see @ref{General-SQL}. For books that focus more specifically on
+see @ref{General-SQL}. For books that focus more specifically on
@strong{MySQL}, see @ref{MySQL-Books}.
@cindex MySQL, defined
@@ -1202,11 +1201,11 @@ builds its business providing services around the @strong{MySQL} database.
@item @strong{MySQL} is a database management system.
-A database is a structured collection of data. It may be anything from a
+A database is a structured collection of data. It may be anything from a
simple shopping list to a picture gallery or the vast amounts of
-information in a corporate network. To add, access, and process data
+information in a corporate network. To add, access, and process data
stored in a computer database, you need a database management system
-such as @strong{MySQL}. Since computers are very good at handling large
+such as @strong{MySQL}. Since computers are very good at handling large
amounts of data, database management plays a central role in computing,
as stand-alone utilities, or as parts of other applications.
@@ -1215,9 +1214,9 @@ as stand-alone utilities, or as parts of other applications.
@item @strong{MySQL} is a relational database management system.
A relational database stores data in separate tables rather than putting
-all the data in one big storeroom. This adds speed and flexibility. The
+all the data in one big storeroom. This adds speed and flexibility. The
tables are linked by defined relations making it possible to combine
-data from several tables on request. The SQL part of @strong{MySQL}
+data from several tables on request. The SQL part of @strong{MySQL}
stands for "Structured Query Language" - the most common standardized
language used to access databases.
@@ -1225,12 +1224,12 @@ language used to access databases.
@cindex SQL, defined
@item @strong{MySQL} is Open Source Software.
-Open source means that it is possible for anyone to use and modify.
+Open Source means that it is possible for anyone to use and modify.
Anybody can download @strong{MySQL} from the Internet and use it
-without paying anything. Anybody so inclined can study the source code
-and change it to fit their needs. @strong{MySQL} uses the GPL (GNU
+without paying anything. Anybody so inclined can study the source code
+and change it to fit their needs. @strong{MySQL} uses the GPL (GNU
General Public License) @uref{http://www.gnu.org}, to define what you
-may and may not do with the software in different situations. If you
+may and may not do with the software in different situations. If you
feel uncomfortable with the GPL or need to embed @strong{MySQL} into a
commercial application you can buy a commercially licensed version from
us.
@@ -1240,17 +1239,17 @@ us.
@item Why use @strong{MySQL}?
-@strong{MySQL} is very fast, reliable, and easy to use. If that is what
-you are looking for, you should give it a try. @strong{MySQL} also has a
+@strong{MySQL} is very fast, reliable, and easy to use. If that is what
+you are looking for, you should give it a try. @strong{MySQL} also has a
very practical set of features developed in very close cooperation with
-our users. You can find a performance comparison of @strong{MySQL}
-to some other database managers on our benchmark page. @xref{Benchmarks}.
+our users. You can find a performance comparison of @strong{MySQL}
+to some other database managers on our benchmark page. @xref{Benchmarks}.
@strong{MySQL} was originally developed to handle very large databases
much faster than existing solutions and has been successfully used in
highly demanding production environments for several years. Though
under constant development, @strong{MySQL} today offers a rich and very
-useful set of functions. The connectivity, speed, and security make
+useful set of functions. The connectivity, speed, and security make
@strong{MySQL} highly suited for accessing databases on the Internet.
@item The technical features of @strong{MySQL}
@@ -1258,7 +1257,7 @@ useful set of functions. The connectivity, speed, and security make
For advanced technical information, see @ref{Reference}. @strong{MySQL} is
a client/server system that consists of a multi-threaded SQL server
that supports different backends, several different client programs and
-libraries, administrative tools, and a programming interface.
+libraries, administrative tools, and several programming interfaces.
We also provide @strong{MySQL} as a multi-threaded library which you can
link into your application to get a smaller, faster, easier to manage
@@ -1266,8 +1265,8 @@ product.
@item @strong{MySQL} has a lot of contributed software available.
-It is very likely that you will find that your favorite
-application/language already supports @strong{MySQL}.
+It is very likely that you will find that your favorite application or
+language already supports @strong{MySQL}.
@end table
@@ -1282,51 +1281,51 @@ MY-SEQUEL). But we try to avoid correcting people who say MY-SEQUEL.
@section What Is MySQL AB
@strong{MySQL AB} is the Swedish company owned and run by the @strong{MySQL}
-founders and main developers. We are dedicated to developing
-@strong{MySQL} and spreading our database to new users. @strong{MySQL AB}
-owns the copyright to the @strong{MySQL} server source code and the
-@strong{MySQL} trademark. A significant amount of revenues from our
-services goes to developing @strong{MySQL}. @xref{What-is}.
+founders and main developers. We are dedicated to developing @strong{MySQL}
+and spreading our database to new users. @strong{MySQL AB} owns the copyright
+to the @strong{MySQL} server source code and the @strong{MySQL} trademark.
+A significant amount of revenues from our services goes to developing
+@strong{MySQL}. @xref{What-is}.
@strong{MySQL AB} has been profitable providing @strong{MySQL} from the start.
We don't get any outside funding, but have earned all our money ourselves.
-We are searching after partners that would like to support our
-development of @strong{MySQL} so that we could accelerate the
-development pace. If you are interested in doing this, you can email
-@email{partner@@mysql.com} about this!
+We are searching after partners that would like to support our development
+of @strong{MySQL} so that we could accelerate the development pace. If you
+are interested in doing this, you can email @email{partner@@mysql.com} about
+this!
-@strong{MySQL AB} has currently 20+ people on its payroll and is
-growing rapidly. @uref{http://www.mysql.com/development/team.html}.
+@strong{MySQL AB} has currently 20+ people on its payroll and is growing
+rapidly. @uref{http://www.mysql.com/development/team.html}.
Our main sources of income are:
@itemize @bullet
@item
-Commercial high quality support for @strong{MySQL} provided by
-@strong{MySQL} developers. If you are interested in getting support,
-please visit @uref{https://order.mysql.com/} to view our support options
-or to order support.
+Commercial high quality support for @strong{MySQL} provided by the
+@strong{MySQL} developers themselves. If you are interested in purchasing
+a support contract, please visit @uref{https://order.mysql.com/} to view our
+support options or to order support.
@item
-Consulting services. We have developers/consults in 12 countries and
-partners in many other countries that can help you with almost any
+Consulting services. We have developers and consultants in 12 countries
+and partners in many other countries that can help you with almost any
@strong{MySQL} related issues. If you need consulting services, please
email a good description of your needs to @email{info@@mysql.com}! If we
can't handle this ourselves we can usually find a partner or a developer
that can help you with your problems.
@item
-We sell licenses for using @strong{MySQL} as an embedded
-database. @xref{Cost}. If you have a commercial product for which you
-need a fast, high quality database, but you can't afford to make your
-product Open Source, you can buy the right to use the @strong{MySQL} server
-under a normal commercial copyright. If you are interested in this you can
-buy @strong{MySQL} licenses at @uref{https://order.mysql.com/} or contact
-us at @email{licensing@@mysql.com}.
+We sell licenses for using @strong{MySQL} as an embedded database.
+@xref{Cost}. If you have a commercial product for which you need a fast,
+high quality database, but you can't afford to make your product Open Source,
+you can buy the right to use the @strong{MySQL} server under a normal
+commercial copyright. If you are interested in this you can buy
+@strong{MySQL} licenses at @uref{https://order.mysql.com/} or contact us
+at @email{licensing@@mysql.com}.
@item
-Advertising; @uref{http://www.mysql.com/} is a very popular web site with
+Advertising. @uref{http://www.mysql.com/} is a very popular web site with
more than 10,000,000 page views per months (January 2001). By putting a
banner on this you are guaranteed to reach a lot of potential customers
in the Open source, Linux and database community. If you are interested
@@ -1340,12 +1339,12 @@ of @strong{MySQL AB} please visit
@email{partner@@mysql.com}.
@item
-We provide @strong{MySQL} training through our partner programs. For more
+We provide @strong{MySQL} training through our partner programs. For more
information, please email @email{info@@mysql.com}.
@item
The @strong{MySQL} brand has, since 1995, been associated with speed and
-reliability, and is known to be something you can depend upon. If you are
+reliability, and is known to be something you can depend upon. If you are
interested in using the @strong{MySQL} trademark in your marketing, you
can email @email{info@@mysql.com} about this.
@end itemize
@@ -1363,7 +1362,7 @@ Available and affordable for all.
@item
Easy to use.
@item
-Continuously improving while remaining fast and safe.
+Continuously improved while remaining fast and safe.
@item
Fun to use and improve.
@item
@@ -1405,7 +1404,7 @@ and @code{dvips}. The PDF version is produced with @code{pdftex}.
@cindex Texinfo
This manual is written and maintained by David Axmark, Michael (Monty)
-Widenius, Jeremy Cole, and Paul DuBois. For other contributors,
+Widenius, Jeremy Cole, and Paul DuBois. For other contributors,
see @ref{Credits}.
@node Manual conventions, , Manual-info, Manual-info
@@ -1532,22 +1531,23 @@ alternatives are listed within braces (@samp{@{} and @samp{@}}):
@{DESCRIBE | DESC@} tbl_name @{col_name | wild@}
@end example
-@cindex MySQL version
@cindex MySQL history
@cindex history of MySQL
+@cindex MySQL name
+@cindex My, derivation
@node History, MySQL-Books, Manual-info, Introduction
@section History of MySQL
We once started out with the intention of using @code{mSQL} to connect to our
tables using our own fast low-level (ISAM) routines. However, after some
testing we came to the conclusion that @code{mSQL} was not fast enough nor
-flexible enough for our needs. This resulted in a new SQL interface to our
-database but with almost the same API interface as @code{mSQL}. This API was
+flexible enough for our needs. This resulted in a new SQL interface to our
+database but with almost the same API interface as @code{mSQL}. This API was
chosen to ease porting of third-party code.
The derivation of the name @strong{MySQL} is not perfectly clear. Our base
directory and a large number of our libraries and tools have had the prefix
-``my'' for well over 10 years. However, Monty's daughter (some years younger)
+``my'' for well over 10 years. However, Monty's daughter (some years younger)
is also named My. Which of the two gave its name to @strong{MySQL} is
still a mystery, even for us.
@@ -1568,8 +1568,7 @@ contributing to the development of @strong{MySQL}.
@emph{MySQL}
@multitable @columnfractions .3 .7
-@item Available @tab
-@uref{http://service.bfast.com/bfast/click?bfmid=2181&sourceid=34233559&bfpid=0735709211&bfmtype=book, Barnes and Noble}
+@item Available @tab @uref{http://service.bfast.com/bfast/click?bfmid=2181&sourceid=34233559&bfpid=0735709211&bfmtype=book, Barnes and Noble}
@item Publisher @tab New Riders
@item Author @tab Paul DuBois
@item Pub Date @tab 1st Edition December 1999
@@ -1581,51 +1580,55 @@ contributing to the development of @strong{MySQL}.
@item Errata @tab
@uref{http://www.mysql.com/documentation/pauls-mysql-book-errata.html, are available here}
@end multitable
-Foreword by Michael ``Monty'' Widenius, @strong{MySQL} Moderator.@*
+
+Foreword by Michael ``Monty'' Widenius, @strong{MySQL} Moderator.
+@*
In @emph{MySQL}, Paul DuBois provides you with a comprehensive guide to
-one of the most popular relational database systems. Paul has
+one of the most popular relational database systems. Paul has
contributed to the online documentation for @strong{MySQL} and is an
-active member of the @strong{MySQL} community. The principal @strong{MySQL}
+active member of the @strong{MySQL} community. The principal @strong{MySQL}
developer, Monty Widenius, and a network of his fellow developers
reviewed the manuscript, and provided Paul with the kind of insight
-no one else could supply.@*
+no one else could supply.
+@*
Instead of merely giving you a general overview of @strong{MySQL}, Paul
-teaches you how to make the most of its capabilities. Through two
+teaches you how to make the most of its capabilities. Through two
sample database applications that run throughout the book, he
-gives you solutions to problems you're sure to face. He helps you
+gives you solutions to problems you're sure to face. He helps you
integrate @strong{MySQL} efficiently with third-party tools, such as PHP
and Perl, enabling you to generate dynamic Web pages through
-database queries. He teaches you to write programs that access
+database queries. He teaches you to write programs that access
@strong{MySQL} databases, and also provides a comprehensive set of
references to column types, operators, functions, SQL syntax,
@strong{MySQL} programming, C API, Perl @code{DBI}, and PHP API.
@emph{MySQL} simply gives you the kind of information you won't find
-anywhere else.@*
+anywhere else.
+@*
If you use @strong{MySQL}, this book provides you with:
@itemize @bullet
@item
-An introduction to @strong{MySQL} and SQL
+An introduction to @strong{MySQL} and SQL.
@item
-Coverage of @strong{MySQL}'s data types and how to use them
+Coverage of @strong{MySQL}'s data types and how to use them.
@item
-Thorough treatment of how to write client programs in C
+Thorough treatment of how to write client programs in C.
@item
A guide to using the Perl @code{DBI} and PHP APIs for developing
-command-line and Web-based applications
+command-line and Web-based applications.
@item
Tips on administrative issues such as user accounts, backup,
-crash recovery, and security
+crash recovery, and security.
@item
-Help in choosing an ISP for @strong{MySQL} access
+Help in choosing an ISP for @strong{MySQL} access.
@item
A comprehensive reference for @strong{MySQL}'s data types, operators,
-functions, and SQL statements and utilities
+functions, and SQL statements and utilities.
@item
Complete reference guides for @strong{MySQL}'s C API, the Perl @code{DBI} API,
-and PHP's @strong{MySQL}-related functions
+and PHP's @strong{MySQL}-related functions.
@end itemize
@*
@@ -1642,11 +1645,11 @@ and PHP's @strong{MySQL}-related functions
This book teaches you how to use @strong{MySQL} and @code{mSQL}, two popular
and robust database products that support key subsets of SQL on both Linux
-and Unix systems. Anyone who knows basic C, Java, Perl, or Python can
+and Unix systems. Anyone who knows basic C, Java, Perl, or Python can
write a program to interact with a database, either as a stand-alone
-application or through a Web page. This book takes you through the
+application or through a Web page. This book takes you through the
whole process, from installation and configuration to programming
-interfaces and basic administration. Includes ample tutorial
+interfaces and basic administration. Includes plenty of tutorial
material.
@*
@@ -1661,14 +1664,16 @@ material.
@item Price @tab $39.99
@end multitable
-Sams Teach Yourself @strong{MySQL} in 21 Days is for
-intermediate Linux users who want to move into databases. A large share of
-the audience is Web developers who need a database to store large amounts of
-information that can be retrieved via the Web.
-@emph{Sams' Teach Yourself MySQL in 21 Days} is a practical, step-by-step
+Sams' @emph{Teach Yourself MySQL in 21 Days} is for intermediate Linux users
+who want to move into databases. A large share of the audience is Web
+developers who need a database to store large amounts of information that
+can be retrieved via the Web.
+
+Sams' @emph{Teach Yourself MySQL in 21 Days} is a practical, step-by-step
tutorial. The reader will learn to design and employ this open source
-database technology into his/her Web site using practical, hands-on examples
-to follow.@*
+database technology into his or her Web site using practical, hands-on
+examples to follow.
+@*
@emph{E-Commerce Solutions with MySQL}
@multitable @columnfractions .3 .7
@@ -1696,9 +1701,9 @@ No description available.
@end multitable
This book puts together information on installing, setting up, and
-troubleshooting Apache, MySQL, PHP3, and IMP into one complete
-volume. You also learn how each piece is part of a whole by learning,
-step-by-step, how to create a web-based e-mail system. Learn to run
+troubleshooting Apache, @strong{MySQL}, PHP3, and IMP into one complete
+volume. You also learn how each piece is part of a whole by learning,
+step-by-step, how to create a web-based e-mail system. Learn to run
the equivalent of Active Server Pages (ASP) using PHP3, set up an
e-commerce site using a database and the Apache web server, and create
a data entry system (such as sales, product quality tracking, customer
@@ -1730,13 +1735,13 @@ No description available.
@item Price @tab $47.99
@end multitable
-In this follow-up to the best-selling Beginning Linux Programming, you
-will learn from the authors' real-world knowledge and experience of
+In this follow-up to the best-selling @emph{Beginning Linux Programming},
+you will learn from the authors' real-world knowledge and experience of
developing software for Linux; you'll be taken through the development
of a sample 'DVD Store' application, with 'theme' chapters addressing
-different aspects of its implementation. Meanwhile, individual
-'take-a-break' chapters cover important topics that go beyond the
-bounds of the central theme. All focus on the practical aspects of
+different aspects of its implementation. Meanwhile, individual
+``take-a-break'' chapters cover important topics that go beyond the
+bounds of the central theme. All focus on the practical aspects of
programming, showing how crucial it is to choose the right tools for
the job, use them as they should be used, and get things right first
time.
@@ -1753,15 +1758,15 @@ time.
@item Price @tab $49.99
@end multitable
-PHP3 and MySQL Web Development introduces you to the advantages of
-implementing both MySQL and PHP3. These advantages are detailed
-through the provision of both statistics and several case studies. A
+@emph{PHP and MySQL Web Development} introduces you to the advantages
+of implementing both @strong{MySQL} and PHP. These advantages are detailed
+through the provision of both statistics and several case studies. A
practical web application is developed throughout the book, providing
you with the tools necessary to implement a functional online
-database. Each function is developed separately, allowing you the
+database. Each function is developed separately, allowing you the
choice to incorporate only those parts that you would like to
-implement. Programming concepts of the PHP3 language are highlighted,
-including functions which tie MySQL support into a PHP3 script and
+implement. Programming concepts of the PHP language are highlighted,
+including functions which tie @strong{MySQL} support into a PHP script and
advanced topics regarding table manipulation.
@*
@@ -1779,7 +1784,7 @@ advanced topics regarding table manipulation.
@end multitable
This book contains complete descriptions of the new standards for
-syntax, data structures, and retrieval processes of SQL databases. As
+syntax, data structures, and retrieval processes of SQL databases. As
an example-based reference manual, it includes all of the CLI
functions, information, schema tables, and status codes, as well as a
working SQL database provided on the companion disk.
@@ -1797,9 +1802,9 @@ working SQL database provided on the companion disk.
@end multitable
A new and improved revision of the bestselling C language
-reference. This manual introduces the notion of "Clean C, " writing C
+reference. This manual introduces the notion of "Clean C", writing C
code that can be compiled as a C++ program, C programming style that
-emphasizes correctness, portability, and maintainability. and
+emphasizes correctness, portability, maintainability, and
incorporates the ISO C Amendment 1 (1994) which specifies new
facilities for writing portable, international programs in C.
@*
@@ -1815,16 +1820,17 @@ facilities for writing portable, international programs in C.
@item Price @tab $39.95
@end multitable
-C++ For Real Programmers bridges the gap between C++ as described in
-beginner and intermediate-level books and C++ as it is practiced by
-experts. Numerous valuable techniques are described, organized into
+@emph{C++ For Real Programmers} bridges the gap between C++ as described
+in beginner and intermediate-level books and C++ as it is practiced by
+experts. Numerous valuable techniques are described, organized into
three simple themes: indirection, class hierarchies, and memory
-management. It also provides indepth coverage of template creation,
-exception handling, pointers and optimization techniques. The focus of
-the book is on ANSI C++ and so is compiler independent. C++ For Real
-Programmers is a revision of Secrets of the C++ Masters and includes a
-new appendix comparing C++ with Java. The book comes with a 3.5" disk
-for Windows with source code.
+management. It also provides in-depth coverage of template creation,
+exception handling, pointers and optimization techniques. The focus of
+the book is on ANSI C++ and, as such, is compiler independent.
+
+@emph{C++ For Real Programmers} is a revision of
+@emph{Secrets of the C++ Masters} and includes a new appendix comparing C++
+with Java. The book comes with a 3.5" disk for Windows with source code.
@*
@emph{Algorithms in C}
@@ -1838,11 +1844,11 @@ for Windows with source code.
@item Price @tab $45.75
@end multitable
-Algorithms in C describes a variety of algorithms in a number of areas
-of interest, including: sorting, searching, string-processing, and
-geometric, graph and mathematical algorithms. The book emphasizes
-fundamental techniques, providing readers with the tools to
-confidently implement, run, and debug useful algorithms.
+@emph{Algorithms in C} describes a variety of algorithms in a number of
+areas of interest, including: sorting, searching, string-processing, and
+geometric, graph and mathematical algorithms. The book emphasizes
+fundamental techniques, providing readers with the tools to confidently
+implement, run, and debug useful algorithms.
@*
@emph{Multithreaded Programming with Pthreads}
@@ -1856,13 +1862,13 @@ confidently implement, run, and debug useful algorithms.
@item Price @tab $34.95
@end multitable
-Based on the best-selling Threads Primer, Multithreaded Programming
-with Pthreads gives you a solid understanding of Posix threads: what
-they are, how they work, when to use them, and how to optimize
-them. It retains the clarity and humor of the Primer, but includes
-expanded comparisons to Win32 and OS/2 implementations. Code examples
-tested on all of the major UNIX platforms are featured along with
-detailed explanations of how and why they use threads.
+Based on the best-selling @emph{Threads Primer},
+@emph{Multithreaded Programming with Pthreads} gives you a solid
+understanding of Posix threads: what they are, how they work, when to use
+them, and how to optimize them. It retains the clarity and humor of
+@emph{Threads Primer}, but includes expanded comparisons to Win32 and OS/2
+implementations. Code examples tested on all of the major UNIX platforms
+are featured along with detailed explanations of how and why they use threads.
@*
@emph{Programming the PERL DBI: Database Programming with PERL}
@@ -1876,27 +1882,27 @@ detailed explanations of how and why they use threads.
@item Price @tab $27.96
@end multitable
-Programming the Perl DBI is coauthored by Alligator Descartes, one of
-the most active members of the DBI community, and by Tim Bunce, the
-inventor of DBI. For the uninitiated, the book explains the
-architecture of DBI and shows you how to write DBI-based programs. For
-the experienced DBI dabbler, this book explains DBI's nuances and the
-peculiarities of each individual DBD.
+@emph{Programming the Perl DBI} is coauthored by Alligator Descartes, one
+of the most active members of the DBI community, and by Tim Bunce, the
+inventor of DBI. For the uninitiated, the book explains the architecture
+of DBI and shows you how to write DBI-based programs. For the experienced
+DBI dabbler, this book explains DBI's nuances and the peculiarities of each
+individual DBD.
The book includes:
@itemize @bullet
@item
-An introduction to DBI and its design
+An introduction to DBI and its design.
@item
-How to construct queries and bind parameters
+How to construct queries and bind parameters.
@item
-Working with database, driver, and statement handles
+Working with database, driver, and statement handles.
@item
-Debugging techniques
+Debugging techniques.
@item
-Coverage of each existing DBD
+Coverage of each existing DBD.
@item
-A complete reference to DBI
+A complete reference to DBI.
@end itemize
@*
@@ -1914,28 +1920,29 @@ of @strong{MySQL}:
@c with max limits (from crash-me) and so on.
@itemize @bullet
@item
-Fully multi-threaded using kernel threads. That means it can easily
+Fully multi-threaded using kernel threads. This means it can easily
use multiple CPUs if available.
@item
-C, C++, Eiffel, Java, Perl, PHP, Python and Tcl APIs. @xref{Clients}.
+C, C++, Eiffel, Java, Perl, PHP, Python and Tcl APIs. @xref{Clients}.
@item
-Works on many different platforms. @xref{Which OS}.
+Works on many different platforms. @xref{Which OS}.
@item
Many column types: signed/unsigned integers 1, 2, 3, 4, and 8 bytes
long, @code{FLOAT}, @code{DOUBLE}, @code{CHAR}, @code{VARCHAR},
@code{TEXT}, @code{BLOB}, @code{DATE}, @code{TIME}, @code{DATETIME},
-@code{TIMESTAMP}, @code{YEAR}, @code{SET}, and @code{ENUM} types. @xref{Column
-types}.
+@code{TIMESTAMP}, @code{YEAR}, @code{SET}, and @code{ENUM} types.
+@xref{Column types}.
@item
Very fast joins using an optimized one-sweep multi-join.
@item
Full operator and function support in the @code{SELECT} and @code{WHERE}
-parts of queries. Example:
+parts of queries. For example:
+
@example
mysql> SELECT CONCAT(first_name, " ", last_name) FROM tbl_name
WHERE income/dependents > 10000 AND age > 30;
@@ -1943,14 +1950,13 @@ mysql> SELECT CONCAT(first_name, " ", last_name) FROM tbl_name
@item
SQL functions are implemented through a highly optimized class library and
-should be as fast as they can get! Usually there shouldn't be any memory
-allocation at all after query initialization.
+should be as fast as possible! Usually there isn't any memory allocation
+at all after query initialization.
@item
-Full support for SQL @code{GROUP BY} and @code{ORDER BY}
-clauses. Support for group functions (@code{COUNT()},
-@code{COUNT(DISTINCT)}, @code{AVG()}, @code{STD()}, @code{SUM()},
-@code{MAX()} and @code{MIN()}).
+Full support for SQL @code{GROUP BY} and @code{ORDER BY} clauses. Support
+for group functions (@code{COUNT()}, @code{COUNT(DISTINCT ...)},
+@code{AVG()}, @code{STD()}, @code{SUM()}, @code{MAX()} and @code{MIN()}).
@item
Support for @code{LEFT OUTER JOIN} and @code{RIGHT OUTER JOIN} with ANSI
@@ -1961,22 +1967,22 @@ You can mix tables from different databases in the same query (as of
Version 3.22).
@item
-A privilege and password system that is very flexible and secure and
+A privilege and password system that is very flexible and secure, and
allows host-based verification. Passwords are secure because all
password traffic is encrypted when you connect to a server.
@item
-ODBC (Open-DataBase-Connectivity) support for Win32 (with source). All
+ODBC (Open-DataBase-Connectivity) support for Win32 (with source). All
ODBC 2.5 functions and many others. For example, you can use MS Access to
-connect to your @strong{MySQL} server. @xref{ODBC}.
+connect to your @strong{MySQL} server. @xref{ODBC}.
@item
Very fast B-tree disk tables with index compression.
@item
-Up to 32 indexes per table are allowed. Each index may consist of 1 to 16
-columns or parts of columns. The maximum index length is 500 bytes (this
-may be changed when compiling @strong{MySQL}). An index may use a prefix
+Up to 32 indexes per table are allowed. Each index may consist of 1 to 16
+columns or parts of columns. The maximum index length is 500 bytes (this
+may be changed when compiling @strong{MySQL}). An index may use a prefix
of a @code{CHAR} or @code{VARCHAR} field.
@item
@@ -1996,38 +2002,38 @@ subset of a table's columns; those columns that are not explicitly given
values are set to their default values.
@item
-Uses GNU Automake, Autoconf, and @code{libtool} for portability.
+Uses GNU Automake, Autoconf, and Libtool for portability.
@item
-Written in C and C++. Tested with a broad range of different compilers.
+Written in C and C++. Tested with a broad range of different compilers.
@item
A very fast thread-based memory allocation system.
@item
-No memory leaks. Tested with a commercial memory leakage detector
-(@code{purify}).
+No memory leaks. @strong{MySQL} has been tested with Purify, a commercial
+memory leakage detector.
@item
Includes @code{myisamchk}, a very fast utility for table checking,
-optimization, and repair.
-@xref{Maintenance}.
+optimization, and repair. All of the functionality of @code{myisamchk}
+is also available through the SQL interface as well. @xref{Maintenance}.
@item
Full support for several different character sets, including
-ISO-8859-1 (Latin1), big5, ujis, and more. For example, the
+ISO-8859-1 (Latin1), big5, ujis, and more. For example, the
Scandinavian characters `@ringaccent{a}', `@"a' and `@"o' are allowed
in table and column names.
@item
-All data are saved in the chosen character set. All comparisons for normal
+All data are saved in the chosen character set. All comparisons for normal
string columns are case insensitive.
@item
Sorting is done according to the chosen character set (the Swedish
-way by default). It is possible to change this when the @strong{MySQL} server
+way by default). It is possible to change this when the @strong{MySQL} server
is started up. To see an example of very advanced sorting, look at the
-Czech sorting code. @strong{MySQL} supports many different character sets
+Czech sorting code. @strong{MySQL} supports many different character sets
that can be specified at compile and run time.
@item
@@ -2035,22 +2041,23 @@ Aliases on tables and columns are allowed as in the SQL92 standard.
@item
@code{DELETE}, @code{INSERT}, @code{REPLACE}, and @code{UPDATE} return
-how many rows were changed (affected). It is possible to return the number
-of rows matched instead by setting a flag when connecting to the server.
+the number of rows that were changed (affected). It is possible to return
+the number of rows matched instead by setting a flag when connecting to the
+server.
@item
-Function names do not clash with table or column names. For example, @code{ABS}
-is a valid column name. The only restriction is that for a function call, no
-spaces are allowed between the function name and the @samp{(} that follows it.
-@xref{Reserved words}.
+Function names do not clash with table or column names. For example,
+@code{ABS} is a valid column name. The only restriction is that for a
+function call, no spaces are allowed between the function name and the
+@samp{(} that follows it. @xref{Reserved words}.
@item
All @strong{MySQL} programs can be invoked with the @code{--help} or @code{-?}
options to obtain online assistance.
@item
-The server can provide error messages to clients in many
-languages. @xref{Languages}.
+The server can provide error messages to clients in many languages.
+@xref{Languages}.
@item
Clients may connect to the @strong{MySQL} server using TCP/IP Sockets,
@@ -2058,7 +2065,7 @@ Unix Sockets (Unixes), or Named Pipes (NT).
@item
The @strong{MySQL}-specific @code{SHOW} command can be used to retrieve
-information about databases, tables, and indexes. The @code{EXPLAIN} command
+information about databases, tables, and indexes. The @code{EXPLAIN} command
can be used to determine how the optimizer resolves a query.
@end itemize
@@ -2066,30 +2073,28 @@ can be used to determine how the optimizer resolves a query.
@node Stability, Year 2000 compliance, Features, Introduction
@section How Stable Is MySQL?
-This section addresses the questions ``How stable is
-@strong{MySQL}?'' and ``Can I depend on @strong{MySQL} in this project?''
-We will try to clarify some issues and to answer some of the more
-important questions that seem to concern many people. This section has been
-put together from information gathered from the mailing list (which is very
-active in reporting bugs).
+This section addresses the questions ``How stable is @strong{MySQL}?'' and
+``Can I depend on @strong{MySQL} in this project?'' We will try to clarify
+some issues and to answer some of the more important questions that seem to
+concern many people. This section has been put together from information
+gathered from the mailing list (which is very active in reporting bugs).
At TcX, @strong{MySQL} has worked without any problems in our projects since
-mid-1996. When @strong{MySQL} was released to a wider public, we noticed that
+mid-1996. When @strong{MySQL} was released to a wider public, we noticed that
there were some pieces of ``untested code'' that were quickly found by the
new users who made queries in a manner different than our own. Each new
release has had fewer portability problems than the previous one (even though
each has had many new features).
-
@c FIX We've been stable for quite a while now. :) (jcole)
Each release of @strong{MySQL} has been usable, and there have been problems
-only when users start to use code from the ``gray zones.'' Naturally, outside
+only when users start to use code from the ``gray zones.'' Naturally, outside
users don't know what the gray zones are; this section attempts to indicate
-those that are currently known. The descriptions deal with Version 3.23.x
-of @strong{MySQL}. All known and reported bugs are fixed in the
-latest version, with the exception of the bugs listed in the bugs section,
-which are things that are design-related. @xref{Bugs}.
+those that are currently known. The descriptions deal with Version 3.23
+of @strong{MySQL}. All known and reported bugs are fixed in the latest
+version, with the exception of the bugs listed in the bugs section, which
+are things that are design-related. @xref{Bugs}.
@strong{MySQL} is written in multiple layers and different independent
modules. These modules are listed below with an indication of how
@@ -2100,12 +2105,12 @@ well-tested each of them is:
@table @strong
@item The ISAM table handler --- Stable
This manages storage and retrieval of all data in @strong{MySQL} Version 3.22
-and earlier. In all @strong{MySQL} releases there hasn't been a
-single (reported) bug in this code. The only known way to get a
-corrupted table is to kill the server in the middle of an update. Even
-that is unlikely to destroy any data beyond rescue, because all data are
-flushed to disk between each query. There hasn't been a single bug
-report about lost data because of bugs in @strong{MySQL}.
+and earlier. In all @strong{MySQL} releases there hasn't been a single
+(reported) bug in this code. The only known way to get a corrupted table
+is to kill the server in the middle of an update. Even that is unlikely
+to destroy any data beyond rescue, because all data are flushed to disk
+between each query. There hasn't been a single bug report about lost data
+because of bugs in @strong{MySQL}.
@cindex ISAM table handler
@cindex storing, data
@@ -2113,15 +2118,15 @@ report about lost data because of bugs in @strong{MySQL}.
@cindex data, ISAM table handler
@item The MyISAM table handler --- Gamma
-This is new in @strong{MySQL} Version 3.23. It's largely based on the ISAM
+This is new in @strong{MySQL} Version 3.23. It's largely based on the ISAM
table code but has a lot of new and very useful features.
@item The parser and lexical analyser --- Stable
There hasn't been a single reported bug in this system for a long time.
@item The C client code --- Stable
-No known problems. In early Version 3.20 releases, there were some limitations
-in the send/receive buffer size. As of Version 3.21, the buffer size is now
+No known problems. In early Version 3.20 releases, there were some limitations
+in the send/receive buffer size. As of Version 3.21, the buffer size is now
dynamic up to a default of 16M.
@item Standard client programs --- Stable
@@ -2130,7 +2135,7 @@ These include @code{mysql}, @code{mysqladmin}, @code{mysqlshow},
@item Basic SQL --- Stable
The basic SQL function system and string classes and dynamic memory
-handling. Not a single reported bug in this system.
+handling. Not a single reported bug in this system.
@item Query optimizer --- Stable
@@ -2139,7 +2144,7 @@ handling. Not a single reported bug in this system.
@item Join optimizer --- Stable
@item Locking --- Gamma
-This is very system-dependent. On some systems there are big problems
+This is very system-dependent. On some systems there are big problems
using standard OS locking (@code{fcntl()}). In these cases, you should run the
@strong{MySQL} daemon with the @code{--skip-locking} flag. Problems are known
to occur on some Linux systems, and on SunOS when using NFS-mounted file
@@ -2148,20 +2153,20 @@ systems.
@item Linux threads --- Stable
The major problem found has been with the @code{fcntl()} call, which is
fixed by using the @w{@code{--skip-locking}} option to
-@code{mysqld}. Some people have reported lockup problems with Version 0.5.
+@code{mysqld}. Some people have reported lockup problems with Version 0.5.
LinuxThreads will need to be recompiled if you plan to use
-1000+ concurrent connections. Although it is possible to run that many
+1000+ concurrent connections. Although it is possible to run that many
connections with the default LinuxThreads (however, you will never go
above 1021), the default stack spacing of 2 MB makes the application
unstable, and we have been able to reproduce a coredump after creating
-1021 idle connections. See Linux Notes for more details.
+1021 idle connections. @xref{Linux}.
@item Solaris 2.5+ pthreads --- Stable
We use this for all our production work.
@item MIT-pthreads (Other systems) --- Stable
There have been no reported bugs since Version 3.20.15 and no known bugs since
-Version 3.20.16. On some systems, there is a ``misfeature'' where some
+Version 3.20.16. On some systems, there is a ``misfeature'' where some
operations are quite slow (a 1/20 second sleep is done between each query).
Of course, MIT-pthreads may slow down everything a bit, but index-based
@code{SELECT} statements are usually done in one time frame so there shouldn't
@@ -2173,19 +2178,19 @@ in @strong{MySQL}, but most often in the thread implementation itself.
@item @code{LOAD DATA ...}, @code{INSERT ... SELECT} --- Stable
Some people thought they had found bugs here, but these usually have
-turned out to be misunderstandings. Please check the manual before reporting
+turned out to be misunderstandings. Please check the manual before reporting
problems!
@item @code{ALTER TABLE} --- Stable
Small changes in Version 3.22.12.
@item DBD --- Stable
-Now maintained by Jochen Wiedmann
-@email{wiedmann@@neckar-alb.de}. Thanks!
+Now maintained by Jochen Wiedmann
+(@email{wiedmann@@neckar-alb.de}). Thanks!
@item @code{mysqlaccess} --- Stable
-Written and maintained by Yves Carlier
-@email{Yves.Carlier@@rug.ac.be}. Thanks!
+Written and maintained by Yves Carlier
+(@email{Yves.Carlier@@rug.ac.be}). Thanks!
@item @code{GRANT} --- Stable
Big changes made in @strong{MySQL} Version 3.22.12.
@@ -2204,9 +2209,9 @@ between @strong{MySQL} and BDB tables, so it will take some time before this
is as tested as the other table types.
@item Innobase Tables -- Alpha
-This is a very recent addition to @code{MySQL} and are not very tested yet.
+This is a very recent addition to @code{MySQL} and is not very tested yet.
-@item Automatic recovery of MyISAM tables - Beta.
+@item Automatic recovery of MyISAM tables - Beta
This only affects the new code that checks if the table was closed properly
on open and executes an automatic check/repair of the table if it wasn't.
@@ -2215,14 +2220,14 @@ The usage of keys on @code{MERGE} tables is still not that tested. The
other part of the @code{MERGE} code is quite well tested.
@item FULLTEXT -- Beta
-Text search seams to work, but is still not widely used.
+Text search seems to work, but is still not widely used.
@end table
-MySQL AB provides e-mail support for paying customers, but the @strong{MySQL}
-mailing list usually provides answers to common questions. Bugs are
-usually fixed right away with a patch; for serious bugs, there is almost
-always a new release.
+@strong{MySQL AB} provides e-mail support for paying customers, but the
+@strong{MySQL} mailing list usually provides answers to common questions.
+Bugs are usually fixed right away with a patch; for serious bugs, there is
+almost always a new release.
@cindex Year 2000 compliance
@cindex compliance, Y2K
@@ -2240,9 +2245,8 @@ until @code{2069}; all 2-digit years are regarded to be in the range
@code{year} column, @strong{MySQL} treats it as @code{2001}.
@item
-All @strong{MySQL} date
-functions are stored in one file @file{sql/time.cc} and coded very carefully
-to be year 2000-safe.
+All @strong{MySQL} date functions are stored in one file @file{sql/time.cc}
+and coded very carefully to be year 2000-safe.
@item
In @strong{MySQL} Version 3.22 and later, the new @code{YEAR} column type
@@ -2265,20 +2269,28 @@ any problems with dates until the year 2030:
@example
mysql> DROP TABLE IF EXISTS y2k;
+Query OK, 0 rows affected (0.01 sec)
+
mysql> CREATE TABLE y2k (date date, date_time datetime, time_stamp timestamp);
-mysql> INSERT INTO y2k VALUES ("1998-12-31","1998-12-31 23:59:59",19981231235959);
-mysql> INSERT INTO y2k VALUES ("1999-01-01","1999-01-01 00:00:00",19990101000000);
-mysql> INSERT INTO y2k VALUES ("1999-09-09","1999-09-09 23:59:59",19990909235959);
-mysql> INSERT INTO y2k VALUES ("2000-01-01","2000-01-01 00:00:00",20000101000000);
-mysql> INSERT INTO y2k VALUES ("2000-02-28","2000-02-28 00:00:00",20000228000000);
-mysql> INSERT INTO y2k VALUES ("2000-02-29","2000-02-29 00:00:00",20000229000000);
-mysql> INSERT INTO y2k VALUES ("2000-03-01","2000-03-01 00:00:00",20000301000000);
-mysql> INSERT INTO y2k VALUES ("2000-12-31","2000-12-31 23:59:59",20001231235959);
-mysql> INSERT INTO y2k VALUES ("2001-01-01","2001-01-01 00:00:00",20010101000000);
-mysql> INSERT INTO y2k VALUES ("2004-12-31","2004-12-31 23:59:59",20041231235959);
-mysql> INSERT INTO y2k VALUES ("2005-01-01","2005-01-01 00:00:00",20050101000000);
-mysql> INSERT INTO y2k VALUES ("2030-01-01","2030-01-01 00:00:00",20300101000000);
-mysql> INSERT INTO y2k VALUES ("2050-01-01","2050-01-01 00:00:00",20500101000000);
+Query OK, 0 rows affected (0.00 sec)
+
+mysql> INSERT INTO y2k VALUES
+ -> ("1998-12-31","1998-12-31 23:59:59",19981231235959),
+ -> ("1999-01-01","1999-01-01 00:00:00",19990101000000),
+ -> ("1999-09-09","1999-09-09 23:59:59",19990909235959),
+ -> ("2000-01-01","2000-01-01 00:00:00",20000101000000),
+ -> ("2000-02-28","2000-02-28 00:00:00",20000228000000),
+ -> ("2000-02-29","2000-02-29 00:00:00",20000229000000),
+ -> ("2000-03-01","2000-03-01 00:00:00",20000301000000),
+ -> ("2000-12-31","2000-12-31 23:59:59",20001231235959),
+ -> ("2001-01-01","2001-01-01 00:00:00",20010101000000),
+ -> ("2004-12-31","2004-12-31 23:59:59",20041231235959),
+ -> ("2005-01-01","2005-01-01 00:00:00",20050101000000),
+ -> ("2030-01-01","2030-01-01 00:00:00",20300101000000),
+ -> ("2050-01-01","2050-01-01 00:00:00",20500101000000);
+Query OK, 13 rows affected (0.01 sec)
+Records: 13 Duplicates: 0 Warnings: 0
+
mysql> SELECT * FROM y2k;
+------------+---------------------+----------------+
| date | date_time | time_stamp |
@@ -2297,8 +2309,8 @@ mysql> SELECT * FROM y2k;
| 2030-01-01 | 2030-01-01 00:00:00 | 20300101000000 |
| 2050-01-01 | 2050-01-01 00:00:00 | 00000000000000 |
+------------+---------------------+----------------+
-
13 rows in set (0.00 sec)
+
@end example
This shows that the @code{DATE} and @code{DATETIME} types will not
@@ -2306,8 +2318,8 @@ give any problems with future dates (they handle dates until the year
9999).
The @code{TIMESTAMP} type, which is used to store the current time, has a
-range up to only @code{2030-01-01}. @code{TIMESTAMP} has a range of
-@code{1970} to @code{2030} on 32-bit machines (signed value). On 64-bit
+range up to only @code{2030-01-01}. @code{TIMESTAMP} has a range of
+@code{1970} to @code{2030} on 32-bit machines (signed value). On 64-bit
machines it handles times up to @code{2106} (unsigned value).
Even though @strong{MySQL} is Y2K-compliant, it is your responsibility to
@@ -2346,10 +2358,6 @@ Alameda, CA USA
A SQL tutorial is available on the net at
http://www.geocities.com/SiliconValley/Vista/2207/sql1.html.
-@c A nice german 404 error. (jcole)
-@c SQL in 21 Tagen (online book in German language):
-@c http://www.mut.de/leseecke/buecher/sql/inhalt.htm
-
@node Useful Links, , General-SQL, Introduction
@section Useful MySQL-related Links
@@ -2362,450 +2370,448 @@ Apart from the following links, you can find and download a lot of
@cindex related information URLs
@strong{MySQL}
@subheading Tutorials and Manuals
-@itemize @bullet
-@item @uref{http://www.4t2.com/mysql}@*
+@table @asis
+@item @uref{http://www.4t2.com/mysql}
Information about the German MySQL mailing list.
@item @uref{http://www2.rent-a-database.de/mysql/}
@strong{MySQL} manual in German.
-@item @uref{http://www.bitmover.com:8888//home/bk/mysql}@*
+@item @uref{http://www.bitmover.com:8888//home/bk/mysql}
Web access to the @strong{MySQL} BitKeeper repository.
-@item @uref{http://www.analysisandsolutions.com/code/mybasic.htm}@*
+@item @uref{http://www.analysisandsolutions.com/code/mybasic.htm}
Beginners @strong{MySQL} Tutorial on how to install and set up
@strong{MySQL} on a Windows machine.
-@item @uref{http://www.devshed.com/Server_Side/MySQL/}@*
+@item @uref{http://www.devshed.com/Server_Side/MySQL/}
A lot of @strong{MySQL} tutorials.
-@item @uref{http://mysql.hitstar.com/}@*
+@item @uref{http://mysql.hitstar.com/}
MySQL manual in Chinese.
-@item @uref{http://www.linuxplanet.com/linuxplanet/tutorials/1046/1/}@*
+@item @uref{http://www.linuxplanet.com/linuxplanet/tutorials/1046/1/}
Setting Up a @strong{MySQL}-based Web site.
-@item @uref{http://www.hotwired.com/webmonkey/backend/tutorials/tutorial1.html}@*
+@item @uref{http://www.hotwired.com/webmonkey/backend/tutorials/tutorial1.html}
@strong{MySQL}-Perl tutorial.
-@item @uref{http://www.iserver.com/support/contrib/perl5/modules.html}@*
+@item @uref{http://www.iserver.com/support/contrib/perl5/modules.html}
Installing new Perl modules that require locally installed modules.
-@item @uref{http://www.hotwired.com/webmonkey/databases/tutorials/tutorial4.html}@*
+@item @uref{http://www.hotwired.com/webmonkey/databases/tutorials/tutorial4.html}
PHP/@strong{MySQL} Tutorial.
-@item @uref{http://www.useractive.com/}@*
+@item @uref{http://www.useractive.com/}
Hands on tutorial for @strong{MySQL}.
-@end itemize
+@end table
@subheading Porting MySQL/Using MySQL on Different Systems
-@itemize @bullet
-@item @uref{http://xclave.macnn.com/MySQL/}@*
-The Mac OS Xclave. Running @strong{MySQL} on Mac OS X
-@item @uref{http://www.prnet.de/RegEx/mysql.html}@*
+@table @asis
+@item @uref{http://xclave.macnn.com/MySQL/}
+The Mac OS Xclave. Running @strong{MySQL} on Mac OS X.
+
+@item @uref{http://www.prnet.de/RegEx/mysql.html}
MySQL for Mac OS X Server.
-@item @uref{http://www.latencyzero.com/macosx/mysql.html}@*
-Bulding MySQL for Mac OS X
-@item @uref{http://www.essencesw.com/Software/mysqllib.html}@*
+
+@item @uref{http://www.latencyzero.com/macosx/mysql.html}
+Building MySQL for Mac OS X.
+
+@item @uref{http://www.essencesw.com/Software/mysqllib.html}
New Client libraries for the Mac OS Classic (Macintosh).
-@item @uref{http://www.lilback.com/macsql/}@*
+
+@item @uref{http://www.lilback.com/macsql/}
Client libraries for Mac OS Classic (Macintosh).
-@end itemize
+@end table
@subheading Perl-related Links
-@itemize @bullet
-@item @uref{http://dbimysql.photoflux.com/}@*
+
+@table @asis
+@item @uref{http://dbimysql.photoflux.com/}
Perl DBI with @strong{MySQL} FAQ.
-@end itemize
+@end table
@subheading MySQL Discussion Forums
-@itemize @bullet
-@item @uref{http://www.weberdev.com/}@*
+
+@table @asis
+@item @uref{http://www.weberdev.com/}
Examples using @strong{MySQL}; (check Top 20)
-@item @uref{http://futurerealm.com/forum/futureforum.htm}@*
+
+@item @uref{http://futurerealm.com/forum/futureforum.htm}
FutureForum Web Discussion Software.
-@end itemize
+@end table
@c FIX We should get longer descriptions for things in this category!
@subheading Commercial Applications that Support MySQL
-@itemize @bullet
-@item @uref{http://www.supportwizard.com/}@*
+@table @asis
+@item @uref{http://www.supportwizard.com/}
SupportWizard; Interactive helpdesk on the Web (This product includes a
licensed copy of @strong{MySQL}.)
-@item @uref{http://www.sonork.com/}@*
-Sonork, Instant Messenger that is not only Internet oriented. It's
+@item @uref{http://www.sonork.com/}
+Sonork, Instant Messenger that is not only Internet oriented. It's
focused on private networks and on small to medium companies. Client
is free, server is free for up to 5 seats.
-@item @uref{http://www.stweb.org/}@*
+@item @uref{http://www.stweb.org/}
StWeb - Stratos Web and Application server - An easy-to-use, cross
platform, Internet/Intranet development and deployment system for
-development of web-enabled applications. The standard version of StWeb
+development of web-enabled applications. The standard version of StWeb
has a native interface to @strong{MySQL} database.
-@item @uref{http://www.rightnowtech.com/}@*
+@item @uref{http://www.rightnowtech.com/}
Right Now Web; Web automation for customer service.
-@item @uref{http://www.icaap.org/Bazaar/}@*
+@item @uref{http://www.icaap.org/Bazaar/}
Bazaar; Interactive Discussion Forums with Web interface.
@cindex PhoneSweep
-@item @uref{http://www.phonesweep.com/}@*
-PhoneSweepT is the world's first commercial Telephone Scanner. Many break-ins
+@item @uref{http://www.phonesweep.com/}
+PhoneSweepT is the world's first commercial Telephone Scanner. Many break-ins
in recent years have come not through the Internet, but through unauthorized
-dial-up modems. PhoneSweep lets you find these modems by repeatedly placing
+dial-up modems. PhoneSweep lets you find these modems by repeatedly placing
phone calls to every phone number that your organization
-controls. PhoneSweep has a built-in expert system that can recognize
+controls. PhoneSweep has a built-in expert system that can recognize
more than 250 different kinds of remote-access programs, including
-Carbon Copy(TM), pcANYWHERE(TM), and Windows NT RAS. All information is stored
-in the SQL database. It then generates a comprehensive report detailing
-which services were discovered on which dial-up numbers in your
-organization.
-
-@end itemize
+Carbon Copy(TM), pcANYWHERE(TM), and Windows NT RAS. All information is stored
+in the SQL database. It then generates a comprehensive report detailing
+which services were discovered on which dial-up numbers in your organization.
+@end table
@subheading SQL Clients and Report Writers
-@itemize @bullet
-@item @uref{http://www.urbanresearch.com/software/utils/urbsql/index.html}@*
+@table @asis
+@item @uref{http://www.urbanresearch.com/software/utils/urbsql/index.html}
@strong{MySQL} Editor/Utility for MS Windows Platforms.
-@item @uref{http://ksql.sourceforge.net/}@*
+@item @uref{http://ksql.sourceforge.net/}
KDE @strong{MySQL} client.
-@item @uref{http://www.ecker-software.de}@*
+@item @uref{http://www.ecker-software.de}
A Windows GUI client by David Ecker.
-@item @uref{http://www.icaap.org/software/kiosk/}@*
-Kiosk; a @strong{MySQL} client for database management. Written in Perl.
+@item @uref{http://www.icaap.org/software/kiosk/}
+Kiosk; a @strong{MySQL} client for database management. Written in Perl.
Will be a part of Bazaar.
@item @uref{http://www.casestudio.com/}
Db design tool that supports MySQL 3.23.
-@item @uref{http://home.skif.net/~voland/zeos/eng/index.html}@*
+@item @uref{http://home.skif.net/~voland/zeos/eng/index.html}
Zeos - A client that supports @strong{MySQL}, Interbase and PostgreSQL.
@item @uref{http://www.geocities.com/SiliconValley/Ridge/4280/GenericReportWriter/grwhome.html}
A free report writer in Java
-@item @uref{http://www.javaframework.de}@*
+@item @uref{http://www.javaframework.de}
MySQLExport - Export of @strong{MySQL} create statements and data in a lot of
different formats (SQL, HTML, CVS, text, ZIP, GZIP...)
-@item @uref{http://dlabs.4t2.com}@*
-M2D, a MySQL-ADmin-client for windows. It supports administration of
-MySQL-Databases, creating of new DBs and tables, editing etc.
+@item @uref{http://dlabs.4t2.com}
+M2D, a @strong{MySQL} Administration client for Windows. M2D supports
+administration of @strong{MySQL} databases, creation of new databasess and
+tables, editing, and more.
-@item @uref{http://www.scibit.com/Products/Software/Utils/Mascon.asp}@*
-Mascon is a powerful Win32 GUI for the administering MySQL server databases.
+@item @uref{http://www.scibit.com/Products/Software/Utils/Mascon.asp}
+Mascon is a powerful Win32 GUI for administering MySQL databases.
-@item @uref{http://www.rtlabs.com/}@*
+@item @uref{http://www.rtlabs.com/}
MacSQL Monitor. GUI for MySQL, ODBC, and JDBC databases for the Mac OS.
-@end itemize
+@end table
@subheading Distributions that Include MySQL
@c FIX add the rest (at least a couple more Linuxes)
-@itemize @bullet
-@item @uref{http://www.suse.com/}@*
+@table @asis
+@item @uref{http://www.suse.com/}
SuSE Linux (6.1 and above)
-@item @uref{http://www.redhat.com/}@*
+
+@item @uref{http://www.redhat.com/}
RedHat Linux (7.0 and above)
+
@item @uref{http://distro.conectiva.com.br}
Conectiva Linux (4.0 and above)
-@end itemize
+@end table
@subheading Web Development Tools that Support @strong{MySQL}
-@itemize @bullet
-@item @uref{http://www.php.net/}@*
+@table @asis
+@item @uref{http://www.php.net/}
PHP: A server-side HTML-embedded scripting language.
-@item @uref{http://www.midgard-project.org}@*
+@item @uref{http://www.midgard-project.org}
The Midgard Application Server; a powerful Web development environment
based on @strong{MySQL} and PHP.
-@item @uref{http://www.smartworker.org}@*
+@item @uref{http://www.smartworker.org}
SmartWorker is a platform for Web application development.
-@item @uref{http://xsp.lentus.se/}@*
+@item @uref{http://xsp.lentus.se/}
XSP: e(X)tendible (S)erver (P)ages and is a HTML embedded tag language
written in Java (previously known as XTAGS.)
@cindex dbServ
-@item @uref{http://www.dbServ.de/}@*
+@item @uref{http://www.dbServ.de/}
dbServ is an extension to a web server to integrate database output into
-your HTML code. You may use any HTML function in your output. Only the
-client will stop you. It works as standalone server or as JAVA servlet.
+your HTML code. You may use any HTML function in your output. Only the
+client will stop you. It works as standalone server or as Java servlet.
-@item @uref{http://www.chilisoft.com/}@*
+@item @uref{http://www.chilisoft.com/}
Platform independent ASP from Chili!Soft
-@c @item
-@c no answer from server 990830
-@c @uref{http://www.voicenet.com/~zellert/tjFM}@*
-@c A JDBC driver for @strong{MySQL}.
+@item @uref{http://www.voicenet.com/~zellert/tjFM}
+A JDBC driver for @strong{MySQL}.
-@item @uref{http://www.wernhart.priv.at/php/}@*
+@item @uref{http://www.wernhart.priv.at/php/}
@strong{MySQL} + PHP demos.
-@item @uref{http://www.dbwww.com/}@*
+@item @uref{http://www.dbwww.com/}
ForwardSQL: HTML interface to manipulate @strong{MySQL} databases.
-@item @uref{http://www.daa.com.au/~james/www-sql/}@*
+@item @uref{http://www.daa.com.au/~james/www-sql/}
WWW-SQL: Display database information.
-@item @uref{http://www.minivend.com/minivend/}@*
+@item @uref{http://www.minivend.com/minivend/}
Minivend: A Web shopping cart.
-@item @uref{http://www.heitml.com/}@*
+@item @uref{http://www.heitml.com/}
HeiTML: A server-side extension of HTML and a 4GL language at the same time.
-@item @uref{http://www.metahtml.com/}@*
+@item @uref{http://www.metahtml.com/}
Metahtml: A Dynamic Programming Language for WWW Applications.
-@item @uref{http://www.binevolve.com/}@*
+@item @uref{http://www.binevolve.com/}
VelocityGen for Perl and Tcl.
-@item @uref{http://hawkeye.net/}@*
+@item @uref{http://hawkeye.net/}
Hawkeye Internet Server Suite.
-@item @uref{http://www.fastflow.com/}@*
+@item @uref{http://www.fastflow.com/}
Network Database Connection For Linux
-@item @uref{http://www.wdbi.net/}@*
+@item @uref{http://www.wdbi.net/}
WDBI: Web browser as a universal front end to databases which supports
@strong{MySQL} well.
-@item @uref{http://www.webgroove.com/}@*
+@item @uref{http://www.webgroove.com/}
WebGroove Script: HTML compiler and server-side scripting language.
-@item @uref{http://www.ihtml.com/}@*
+@item @uref{http://www.ihtml.com/}
A server-side Web site scripting language.
-@item @uref{ftp://ftp.igc.apc.org/pub/myodbc/README}@*
+@item @uref{ftp://ftp.igc.apc.org/pub/myodbc/README}
How to use @strong{MySQL} with ColdFusion on Solaris.
-@item @uref{http://calistra.com/MySQL/}@*
+@item @uref{http://calistra.com/MySQL/}
Calistra's ODBC @strong{MySQL} Administrator.
@cindex Webmerger
-@item @uref{http://www.webmerger.com}@*
+@item @uref{http://www.webmerger.com}
Webmerger - This CGI tool interprets files and generates dynamic output
-based on a set of simple tags. Ready-to-run drivers for @strong{MySQL} and
+based on a set of simple tags. Ready-to-run drivers for @strong{MySQL} and
PostgreSQL through ODBC.
-@item @uref{http://phpclub.net/}@*
+@item @uref{http://phpclub.net/}
PHPclub - Tips and tricks for PHP.
-@item @uref{http://www.penguinservices.com/scripts}@*
+@item @uref{http://www.penguinservices.com/scripts}
@strong{MySQL} and Perl Scripts.
-@item @uref{http://www.widgetchuck.com}@*
+@item @uref{http://www.widgetchuck.com}
The Widgetchuck; Web Site Tools and Gadgets
-@item @uref{http://www.adcycle.com/}@*
+@item @uref{http://www.adcycle.com/}
AdCycle - advertising management software.
@cindex pwPage
-@item @uref{http://sourceforge.net/projects/pwpage/}@*
-pwPage - provides an extremely
-fast and simple approach to the creation of database forms. That is,
-if a database table exists and an HTML page has been constructed using
-a few simple guidelines, pwPage can be immediately used for table data
-selections, insertions, updates, deletions and selectable table content
-reviewing.
-
-@item @uref{http://www.omnis-software.com/products/studio/studio.html}@*
+@item @uref{http://sourceforge.net/projects/pwpage/}
+pwPage - provides an extremely fast and simple approach to the creation
+of database forms. That is, if a database table exists and an HTML page
+has been constructed using a few simple guidelines, pwPage can be
+immediately used for table data selections, insertions, updates, deletions
+and selectable table content reviewing.
+
+@item @uref{http://www.omnis-software.com/products/studio/studio.html}
OMNIS Studio is a rapid application development (RAD) tool.
@cindex Web+
-@item @uref{http://www.webplus.com}@*
+@item @uref{http://www.webplus.com}
talentsoft Web+ 4.6 - a powerful and comprehensive development language for
use in creating web-based client/server applications without writing
complicated, low-level, and time-consuming CGI programs.
-
-@end itemize
+@end table
@subheading Database Design Tools with MySQL Support
-@itemize @bullet
-@item @uref{http://www.mysql.com/documentation/dezign/}@*
+
+@table @asis
+@item @uref{http://www.mysql.com/documentation/dezign/}
"DeZign for databases" is a database development tool that uses an
entity relationship diagram (ERD).
-@end itemize
+@end table
@subheading Web Servers with @strong{MySQL} Tools
-@itemize @bullet
-@item @uref{http://bourbon.netvision.net.il/mysql/mod_auth_mysql/}@*
+@table @asis
+@item @uref{http://bourbon.netvision.net.il/mysql/mod_auth_mysql/}
An Apache authentication module.
-@item @uref{http://www.roxen.com/}@*
+
+@item @uref{http://www.roxen.com/}
The Roxen Challenger Web server.
-@end itemize
+@end table
@subheading Extensions for Other Programs
-@itemize @bullet
-@item @uref{http://www.seawood.org/msql_bind/}@*
+@table @asis
+@item @uref{http://www.seawood.org/msql_bind/}
@strong{MySQL} support for BIND (The Internet Domain Name Server).
-@item @uref{http://www.inet-interactive.com/sendmail/}@*
+@item @uref{http://www.inet-interactive.com/sendmail/}
@strong{MySQL} support for Sendmail and Procmail.
-@end itemize
+@end table
@subheading Using @strong{MySQL} with Other Programs
-@itemize @bullet
+@table @asis
@item @uref{http://www.iserver.com/support/addonhelp/database/mysql/msaccess.html}
Using @strong{MySQL} with Access.
@item @uref{http://www.iserver.com/support/contrib/perl5/modules.html}
Installing new Perl modules that require locally installed modules.
-@end itemize
+@end table
@subheading ODBC-related Links
-@itemize @bullet
-@item @uref{http://www.iodbc.org/}@*
-Popular iODBC Driver Manager (libiodbc) now available in Open Source format.
+@table @asis
+@item @uref{http://www.iodbc.org/}
+Popular iODBC Driver Manager (libiodbc) now available as Open Source.
-@item @uref{http://users.ids.net/~bjepson/freeODBC/}@*
+@item @uref{http://users.ids.net/~bjepson/freeODBC/}
The FreeODBC Pages.
-@item @uref{http:/http://genix.net/unixODBC/}@*
+@item @uref{http:/http://genix.net/unixODBC/}
The unixODBC Project goals are to develop and promote unixODBC to be the
-definitive standard for ODBC on the Linux platform. This is to include GUI
+definitive standard for ODBC on the Linux platform. This is to include GUI
support for KDE.
-@item @uref{http://www.sw-soft.com/products/BtrieveODBC/}@*
-A @strong{MySQL}-based ODBC drivers for Btrieve. From SWsoft.
-@end itemize
+@item @uref{http://www.sw-soft.com/products/BtrieveODBC/}
+A @strong{MySQL}-based ODBC driver for Btrieve.
+@end table
@subheading @strong{API}-related Links
-@itemize @bullet
-@c FIX i get no route on this host on 7/31/2k, check later (jcole)
-@item @uref{http://www.amedea.cz/mysqlx/index.html}@*
-MySQL COM extension - With this COM object you can use MySQL also on
-Windows with ASP pages or with Delphi, Visual Basic, Visual C++, etc.
-
-@item @uref{http://www.jppp.com/}@*
+@table @asis
+@item @uref{http://www.jppp.com/}
Partially implemented TDataset-compatible components for @strong{MySQL}.
-@item @uref{http://www.riverstyx.net/qpopmysql/}@*
+@item @uref{http://www.riverstyx.net/qpopmysql/}
qpopmysql - A patch to allow POP3 authentication from a @strong{MySQL}
-database. There's also a link to Paul Khavkine's patch for Procmail to allow
-any MTA to deliver to users in a @strong{MySQL} database.
+database. There's also a link to Paul Khavkine's patch for Procmail to
+allow any MTA to deliver to users in a @strong{MySQL} database.
-@item @uref{http://www.pbc.ottawa.on.ca}@*
+@item @uref{http://www.pbc.ottawa.on.ca}
Visual Basic class generator for Active X.
-@item @uref{http://www.essencesw.com/Software/mysqllib.html}@*
+@item @uref{http://www.essencesw.com/Software/mysqllib.html}
New Client libraries for the Mac OS Classic (Macintosh).
-@item @uref{http://www.lilback.com/macsql/}@*
+@item @uref{http://www.lilback.com/macsql/}
Client libraries for the Macintosh.
-@item @uref{http://www.essencesw.com/Plugins/mysqlplug.html}@*
-Plugin for REALbasic (for Machintosh)
+@item @uref{http://www.essencesw.com/Plugins/mysqlplug.html}
+Plugin for REALbasic (for Macintosh)
-@item @uref{http://www.iis.ee.ethz.ch/~neeri/macintosh/gusi-qa.html}@*
-A library that emulates BSD sockets and pthreads on Macintosh. This can
-be used if you want to compile the @strong{MySQL} client library on Mac. It
-could probably even be sued to port @strong{MySQL} to Macintosh, but we
+@item @uref{http://www.iis.ee.ethz.ch/~neeri/macintosh/gusi-qa.html}
+A library that emulates BSD sockets and pthreads on Macintosh. This can
+be used if you want to compile the @strong{MySQL} client library on Mac.
+It could probably even be sued to port @strong{MySQL} to Macintosh, but we
don't know of anyone that has tried that.
-@c 404 not found
-@c @item @uref{http://tfdec1.fys.kuleuven.ac.be/~michael/fpc-linux/mysql}@*
-@c @strong{MySQL} binding to Free Pascal.
-
-@item @uref{http://www.dedecker.net/jessie/scmdb/}@*
+@cindex SCMDB
+@item @uref{http://www.dedecker.net/jessie/scmdb/}
SCMDB - an add-on for SCM that ports the mysql C library to scheme (SCM).
With this library scheme developers can make connections to a mySQL
database and use embedded SQL in their programs.
-@cindex SCMDB
-@end itemize
+@end table
@subheading Other @strong{MySQL}-related Links
-@itemize @bullet
+@table @asis
@item @uref{http://www.satisoft.com/, SAT}
The Small Application Toolkit (SAT) is a collection of utilities
intended to simplify the development of small, multi-user, GUI based
applications in a (Microsoft -or- X) Windows Client / Unix Server
environment.
-@item @uref{http://www.wix.com/mysql-hosting/}@*
+@item @uref{http://www.wix.com/mysql-hosting/}
Registry of Web providers who support @strong{MySQL}.
-@item @uref{http://www.softagency.co.jp/mysql/index.en.phtml}@*
+@item @uref{http://www.softagency.co.jp/mysql/index.en.phtml}
Links about using @strong{MySQL} in Japan/Asia.
-@item @uref{http://abattoir.cc.ndsu.nodak.edu/~nem/mysql/udf/}@*
+@item @uref{http://abattoir.cc.ndsu.nodak.edu/~nem/mysql/udf/}
@strong{MySQL} UDF Registry.
-@item @uref{http://www.open.com.au/products.html}@*
+@item @uref{http://www.open.com.au/products.html}
Commercial Web defect tracking system.
-@item @uref{http://www.stonekeep.com/pts/}@*
+@item @uref{http://www.stonekeep.com/pts/}
PTS: Project Tracking System.
-@item @uref{http://tomato.nvgc.vt.edu/~hroberts/mot}@*
+@item @uref{http://tomato.nvgc.vt.edu/~hroberts/mot}
Job and software tracking system.
-@item @uref{http://www.cynergi.net/non-secure/exportsql/}@*
+@item @uref{http://www.cynergi.net/non-secure/exportsql/}
ExportSQL: A script to export data from Access95+.
-@item @uref{http://SAL.KachinaTech.COM/H/1/MYSQL.html}@*
+@item @uref{http://SAL.KachinaTech.COM/H/1/MYSQL.html}
SAL (Scientific Applications on Linux) @strong{MySQL} entry.
-@item @uref{http://www.infotech-nj.com/itech/index.shtml}@*
+@item @uref{http://www.infotech-nj.com/itech/index.shtml}
A consulting company which mentions @strong{MySQL} in the right company.
-@item @uref{http://www.pmpcs.com/}@*
-PMP Computer Solutions. Database developers using @strong{MySQL} and
+@item @uref{http://www.pmpcs.com/}
+PMP Computer Solutions. Database developers using @strong{MySQL} and
@code{mSQL}.
-@item @uref{http://www.aewa.org/}@*
+@item @uref{http://www.aewa.org/}
Airborne Early Warning Association.
-@item @uref{http://www.dedserius.com/y2kmatrix/}@*
+@item @uref{http://www.dedserius.com/y2kmatrix/}
Y2K tester.
-@end itemize
+@end table
@subheading SQL and Database Interfaces
-@itemize @bullet
-@item @uref{http://java.sun.com/products/jdbc/}@*
+
+@table @asis
+@item @uref{http://java.sun.com/products/jdbc/}
The JDBC database access API.
-@item @uref{http://www.gagme.com/mysql}@*
+@item @uref{http://www.gagme.com/mysql}
Patch for @code{mSQL} Tcl.
-@item @uref{http://www.amsoft.ru/easysql/}@*
+@item @uref{http://www.amsoft.ru/easysql/}
EasySQL: An ODBC-like driver manager.
-@item @uref{http://www.lightlink.com/hessling/rexxsql.html}@*
+@item @uref{http://www.lightlink.com/hessling/rexxsql.html}
A REXX interface to SQL databases.
-@item @uref{http://www.mytcl.cx/}@*
+@item @uref{http://www.mytcl.cx/}
Tcl interface based on tcl-sql with many bugfixes.
-@item @uref{http://www.binevolve.com/~tdarugar/tcl-sql/}@*
+@item @uref{http://www.binevolve.com/~tdarugar/tcl-sql/}
Tcl interface.
-@end itemize
+@end table
@subheading Examples of MySQL Use
-@itemize @bullet
+@table @asis
@c Added 990601
@c EMAIL: thuss@little6.com (Todd Huss)
-@item @uref{http://www.little6.com/about/linux/}@*
+@item @uref{http://www.little6.com/about/linux/}
Little6 Inc., An online contract and job finding site that is powered by
@strong{MySQL}, PHP3, and Linux.
@@ -2815,124 +2821,115 @@ Little6 Inc., An online contract and job finding site that is powered by
DELECis - A tool that makes it very easy to create an automatically generated
table documentation. They have used @strong{MySQL} as an example.
-@c @item
-@c Added 990531. Removed 000201 -> No answer from server
-@c EMAIL: sfambro@hotmail.com (Steve Fambro)
-@c @uref{http://shredder.elen.utah.edu/steve.html, Steve Fambro}
-@c Uses @strong{MySQL} and webmerger. There is an employee database, and a
-@c license plate database with all of the registered Utah vehicles (over
-@c 1.2 million). The License plate field is indexed.....so the *searches*
-@c are instantaneous.
-
@c Added 990521
@c EMAIL: info@worldrecords.com (Jim Rota)
-@item @uref{http://www.worldrecords.com}@*
+@item @uref{http://www.worldrecords.com}
World Records - A search engine for information about music that uses
@strong{MySQL} and PHP.
-@item @uref{http://www.webtechniques.com/archives/1998/01/note/}@*
+@item @uref{http://www.webtechniques.com/archives/1998/01/note/}
A Contact Database using @strong{MySQL} and PHP.
-@item @uref{http://modems.rosenet.net/mysql/}@*
+@item @uref{http://modems.rosenet.net/mysql/}
Web based interface and Community Calendar with PHP.
-@item @uref{http://www.odbsoft.com/cook/sources.htm}@*
+@item @uref{http://www.odbsoft.com/cook/sources.htm}
Perl package to generate html from a SQL table structure and for generating
SQL statements from an html form.
-@item @uref{http://www.gusnet.cx/proj/telsql/}@*
+@item @uref{http://www.gusnet.cx/proj/telsql/}
Basic telephone database using @code{DBI}/@code{DBD}.
-@item @uref{http://tecfa.unige.ch/guides/java/staf2x/ex/jdbc/coffee-break}@*
+@item @uref{http://tecfa.unige.ch/guides/java/staf2x/ex/jdbc/coffee-break}
JDBC examples by Daniel K. Schneider.
@item @uref{http://www.spade.com/linux/howto/PostgreSQL-HOWTO-41.html}
SQL BNF
-@item @uref{http://www.ooc.com/}@*
+@item @uref{http://www.ooc.com/}
Object Oriented Concepts Inc; CORBA applications with examples in source.
-@item @uref{http://www.pbc.ottawa.on.ca/}@*
+@item @uref{http://www.pbc.ottawa.on.ca/}
DBWiz; Includes an example of how to manage cursors in VB.
@cindex Pluribus
-@item @uref{http://keilor.cs.umass.edu/pluribus/}@*
+@item @uref{http://keilor.cs.umass.edu/pluribus/}
Pluribus is a free search engine that learns to improve
-the quality of its results over time. Pluribus works by recording
-which pages a user prefers among those returned for a query. A user
+the quality of its results over time. Pluribus works by recording
+which pages a user prefers among those returned for a query. A user
votes for a page by selecting it; Pluribus then uses that knowledge
to improve the quality of the results when someone else submits the
-same (or similar) query. Uses PHP and @strong{MySQL}.
+same (or similar) query. Uses PHP and @strong{MySQL}.
@c EMAIL: paul@sword.damocles.com (Paul Bannister)
-@item @uref{http://www.stopbit.com/}@*
+@item @uref{http://www.stopbit.com/}
Stopbit - A technology news site using @strong{MySQL} and PHP.
@c Added 990604
@c EMAIL: ah@dybdahl.dk
-@item @uref{http://www.jokes2000.com/scripts/}@*
+@item @uref{http://www.jokes2000.com/scripts/}
Example scripts at Jokes2000.
-@item @uref{http://www.linuxsupportline.com/~kalendar/}@*
+@item @uref{http://www.linuxsupportline.com/~kalendar/}
KDE based calendar manager - The calendar manager has both single user
(file based) and multi-user (@strong{MySQL} database) support.
-@item @uref{http://tim.desert.net/~tim/imger/}@*
+@item @uref{http://tim.desert.net/~tim/imger/}
Example of storing/retrieving images with @strong{MySQL} and CGI.
-@item @uref{http://www.penguinservices.com/scripts}@*
+@item @uref{http://www.penguinservices.com/scripts}
Online shopping cart system.
-
@c Added 990928 from editor@city-gallery.com
@cindex Old Photo Album
-@item @uref{http://www.city-gallery.com/album/}@*
+@item @uref{http://www.city-gallery.com/album/}
Old Photo Album - The album is a collaborative popular history of photography
project that generates all pages from data stored in a @strong{MySQL}
-database. Pages are dynamically generated through a php3 interface to the
-database content. Users contribute images and descriptions. Contributed images
-are stored on the web server to avoid storing them in the database as BLOBs.
-All other information is stored on the shared @strong{MySQL} server.
-@end itemize
+database. Pages are dynamically generated through a php3 interface to the
+database content. Users contribute images and descriptions. Contributed
+images are stored on the web server to avoid storing them in the database
+as BLOBs. All other information is stored on the shared @strong{MySQL} server.
+@end table
@subheading General Database Links
-@itemize @bullet
-@item @uref{http://www.pcslink.com/~ej/dbweb.html}@*
+
+@table @asis
+@item @uref{http://www.pcslink.com/~ej/dbweb.html}
Database Jump Site
-@item @uref{http://black.hole-in-the.net/guy/webdb/}@*
+@item @uref{http://black.hole-in-the.net/guy/webdb/}
Homepage of the webdb-l (Web Databases) mailing list.
-@item @uref{http://www.symbolstone.org/technology/perl/DBI/index.html}@*
+@item @uref{http://www.symbolstone.org/technology/perl/DBI/index.html}
Perl @code{DBI}/@code{DBD} modules homepage.
-@item @uref{http://www.student.uni-koeln.de/cygwin/}@*
-Cygwin tools. Unix on top of Windows.
+@item @uref{http://www.student.uni-koeln.de/cygwin/}
+Cygwin tools. Unix on top of Windows.
-@item @uref{http://dbasecentral.com/}@*
+@item @uref{http://dbasecentral.com/}
dbasecentral.com; Development and distribution of powerful and easy-to-use
database applications and systems.
@cindex Tek-Tips forums
@cindex forums, Tek-Tips
-@item @uref{http://www.Tek-Tips.com}@*
+@item @uref{http://www.tek-tips.com/}
Tek-Tips Forums are 800+ independent peer-to-peer non-commercial support
forums for Computer Professionals. Features include automatic e-mail
notification of responses, a links library, and member confidentiality
guaranteed.
-@item @uref{http://www.public.asu.edu/~peterjn/btree/}@*
-B-Trees: Balanced Tree Data Structures
+@item @uref{http://www.public.asu.edu/~peterjn/btree/}
+B-Trees: Balanced Tree Data Structures.
-@item @uref{http://www.fit.qut.edu.au/~maire/baobab/lecture/sld001.htm}@*
-A lecture about B-Trees
-@end itemize
+@item @uref{http://www.fit.qut.edu.au/~maire/baobab/lecture/sld001.htm}
+A lecture about B-Trees.
+@end table
-There are also many Web pages that use
-@strong{MySQL}. @xref{Users}. Send any additions to this list to
-@email{webmaster@@mysql.com}. We now require that you show a
-@strong{MySQL} logo somewhere if you wish your site to be added.
-(It is okay to have it on a ``used tools'' page or something similar.)
+There are also many Web pages that use @strong{MySQL}. @xref{Users}.
+Send any additions to this list to @email{webmaster@@mysql.com}. We now
+require that you show a @strong{MySQL} logo somewhere if you wish your
+site to be added. It is okay to have it on a ``used tools'' page or
+something similar.
@cindex reporting, errors
@cindex MySQL mailing lists
@@ -2986,87 +2983,87 @@ users.
Your local site may have many subscribers to @email{mysql@@lists.mysql.com}.
If so, it may have a local mailing list, so that messages sent from
-@code{lists.mysql.com} to your site are propagated to the local list. In such
+@code{lists.mysql.com} to your site are propagated to the local list. In such
cases, please contact your system administrator to be added to or dropped
from the local @strong{MySQL} list.
The following @strong{MySQL} mailing lists exist:
@table @code
-@item @uref{mailto:announce-subscribe@@lists.mysql.com, announce}
+@item @email{announce-subscribe@@lists.mysql.com, announce}
This is for announcement of new versions of @strong{MySQL} and related
-programs. This is a low volume list that we think all @strong{MySQL}
-users should be on.
+programs. This is a low volume list all @strong{MySQL} users should
+subscribe to.
-@item @uref{mailto:mysql-subscribe@@lists.mysql.com, mysql}
-The main list for general @strong{MySQL} discussion. Please note that some
-topics are better discussed on the more-specialized lists. If you post to the
+@item @email{mysql-subscribe@@lists.mysql.com, mysql}
+The main list for general @strong{MySQL} discussion. Please note that some
+topics are better discussed on the more-specialized lists. If you post to the
wrong list, you may not get an answer!
-@item @uref{mailto:mysql-digest-subscribe@@lists.mysql.com, mysql-digest}
-The @code{mysql} list in digest form. That means you get all individual
+@item @email{mysql-digest-subscribe@@lists.mysql.com, mysql-digest}
+The @code{mysql} list in digest form. That means you get all individual
messages, sent as one large mail message once a day.
-@item @uref{mailto:bugs-subscribe@@lists.mysql.com, bugs}
+@item @email{bugs-subscribe@@lists.mysql.com, bugs}
On this list you should only post a full, repeatable bug report using
the @code{mysqlbug} script (if you are running on Windows, you should
include a description of the operating system and the @strong{MySQL} version).
-Preferably, you should test the problem using the latest stable or
-development version of @strong{MySQL} before posting!
-Anyone should be able to repeat the bug by just using
-@code{mysql test < script} on the included test case. All bugs posted on
-this list will be corrected or documented in the next @strong{MySQL} release!
-If there are only small code changes involved, we will also post a patch that
-fixes the problem.
-
-@item @uref{mailto:bugs-digest-subscribe@@lists.mysql.com, bugs-digest}
+Preferably, you should test the problem using the latest stable or development
+version of @strong{MySQL} before posting! Anyone should be able to repeat the
+bug by just using @code{mysql test < script} on the included test case. All
+bugs posted on this list will be corrected or documented in the next
+@strong{MySQL} release! If there are only small code changes involved, we
+will also post a patch that fixes the problem.
+
+@item @email{bugs-digest-subscribe@@lists.mysql.com, bugs-digest}
The @code{bugs} list in digest form.
-@item @uref{mailto:developer-subscribe@@lists.mysql.com, developer}
+@item @email{developer-subscribe@@lists.mysql.com, developer}
This list has been depreciated in favor of the
-@uref{mailto:internals-subscribe@@lists.mysql.com, internals} list (below).
+@email{internals-subscribe@@lists.mysql.com, internals} list (below).
-@item @uref{mailto:developer-digest-subscribe@@lists.mysql.com, developer-digest}
-This list has been depreciated in favor of the
-@uref{mailto:internals-digest-subscribe@@lists.mysql.com, internals-digest} list
-(below).
+@item @email{developer-digest-subscribe@@lists.mysql.com, developer-digest}
+This list has been deprecated in favor of the
+@email{internals-digest-subscribe@@lists.mysql.com, internals-digest}
+list (below).
-@item @uref{mailto:internals-subscribe@@lists.mysql.com, internals}
-A list for people who work on the @strong{MySQL} code. On this list one
+@item @email{internals-subscribe@@lists.mysql.com, internals}
+A list for people who work on the @strong{MySQL} code. On this list one
can also discuss @strong{MySQL} development and post patches.
-@item @uref{mailto:internals-digest-subscribe@@lists.mysql.com, internals-digest}
-A digest version of the @uref{mailto:internals-subscribe@@lists.mysql.com, internals} list.
+@item @email{internals-digest-subscribe@@lists.mysql.com, internals-digest}
+A digest version of the @email{internals-subscribe@@lists.mysql.com, internals}
+list.
-@item @uref{mailto:java-subscribe@@lists.mysql.com, java}
-Discussion about @strong{MySQL} and Java. Mostly about the JDBC drivers.
+@item @email{java-subscribe@@lists.mysql.com, java}
+Discussion about @strong{MySQL} and Java. Mostly about the JDBC drivers.
-@item @uref{mailto:java-digest-subscribe@@lists.mysql.com, java-digest}
+@item @email{java-digest-subscribe@@lists.mysql.com, java-digest}
A digest version of the @code{java} list.
-@item @uref{mailto:win32-subscribe@@lists.mysql.com, win32}
+@item @email{win32-subscribe@@lists.mysql.com, win32}
All things concerning @strong{MySQL} on Microsoft operating systems such as
Win95, Win98, NT, and Win2000.
-@item @uref{mailto:win32-digest-subscribe@@lists.mysql.com, win32-digest}
+@item @email{win32-digest-subscribe@@lists.mysql.com, win32-digest}
A digest version of the @code{win32} list.
-@item @uref{mailto:myodbc-subscribe@@lists.mysql.com, myodbc}
+@item @email{myodbc-subscribe@@lists.mysql.com, myodbc}
All things about connecting to @strong{MySQL} with ODBC.
-@item @uref{mailto:myodbc-digest-subscribe@@lists.mysql.com, myodbc-digest}
+@item @email{myodbc-digest-subscribe@@lists.mysql.com, myodbc-digest}
A digest version of the @code{myodbc} list.
-@item @uref{mailto:plusplus-subscribe@@lists.mysql.com, plusplus}
+@item @email{plusplus-subscribe@@lists.mysql.com, plusplus}
All things concerning programming with the C++ API to @strong{MySQL}.
-@item @uref{mailto:plusplus-digest-subscribe@@lists.mysql.com, plusplus-digest}
+@item @email{plusplus-digest-subscribe@@lists.mysql.com, plusplus-digest}
A digest version of the @code{plusplus} list.
-@item @uref{mailto:msql-mysql-modules-subscribe@@lists.mysql.com, msql-mysql-modules}
+@item @email{msql-mysql-modules-subscribe@@lists.mysql.com, msql-mysql-modules}
A list about the Perl support in @strong{MySQL}.
-@item @uref{mailto:msql-mysql-modules-digest-subscribe@@lists.mysql.com, msql-mysql-modules-digest}
+@item @email{msql-mysql-modules-digest-subscribe@@lists.mysql.com, msql-mysql-modules-digest}
A digest version of the @code{msql-mysql-modules} list.
@end table
@@ -3077,7 +3074,7 @@ unsubscribe from the @code{myodbc} list, send a message to
@email{myodbc-subscribe@@lists.mysql.com} or
@email{myodbc-unsubscribe@@lists.mysql.com}.
-There is also a german mailing list. You can find information about this
+There is also a german mailing list. You can find information about this
at: @uref{http://www.4t2.com/mysql}.
@cindex net etiquette
@@ -3094,8 +3091,8 @@ Start by searching the @strong{MySQL} online manual at:
@*
@uref{http://www.mysql.com/documentation/manual.php}
@*
-We try to keep the manual up to date by
-updating it frequently with solutions to newly found problems!
+We try to keep the manual up to date by updating it frequently with
+solutions to newly found problems!
@item
Search the @strong{MySQL} mailing list archives:
@@ -3104,12 +3101,12 @@ Search the @strong{MySQL} mailing list archives:
@*
@item
You can also use @uref{http://www.mysql.com/search.html} to search all the
-Web pages (including the manual) that are located at
+Web pages (including the manual) that are located at
@uref{http://www.mysql.com/}.
@end itemize
If you can't find an answer in the manual or the archives, check with your
-local @strong{MySQL} expert. If you still can't find an answer to your
+local @strong{MySQL} expert. If you still can't find an answer to your
question, go ahead and read the next section about how to send mail to
@email{mysql@@lists.mysql.com}.
@@ -3124,9 +3121,9 @@ question, go ahead and read the next section about how to send mail to
@section How to Report Bugs or Problems
Writing a good bug report takes patience, but doing it right the first
-time saves time for us and for you. A good bug report containing a full
+time saves time for us and for you. A good bug report containing a full
test case for the bug will make it very likely that we will fix it in
-the next release. This section will help you write your report correctly
+the next release. This section will help you write your report correctly
so that you don't waste your time doing things that may not help us much
or at all.
@@ -3139,16 +3136,16 @@ still include all the necessary information listed in this section.
The @code{mysqlbug} script helps you generate a report by determining much
of the following information automatically, but if something important is
-missing, please include it with your message! Please read this section
+missing, please include it with your message! Please read this section
carefully and make sure that all the information described here is included
in your report.
@cindex bug reports, email address
-The normal plase to report bugs and problems is
-@email{mysql@@lists.mysql.com}. If you can make a test case that clearly
-shows the bug, you should post it to the @email{bugs@@lists.mysql.com}
-list. Note that on this list you should only post a full, repeatable bug
-report using the @code{mysqlbug} script. If you are running on Windows,
+The normal place to report bugs and problems is
+@email{mysql@@lists.mysql.com}. If you can make a test case that clearly
+demonstrates the bug, you should post it to the @email{bugs@@lists.mysql.com}
+list. Note that on this list you should only post a full, repeatable bug
+report using the @code{mysqlbug} script. If you are running on Windows,
you should include a description of the operating system and the
@strong{MySQL} version. Preferably, you should test the problem using
the latest stable or development version of @strong{MySQL} before
@@ -3183,7 +3180,7 @@ the version number of the platform.
Remember also to provide information about your compiler, if it is related to
the problem. Often people find bugs in compilers and think the problem is
-@strong{MySQL} related. Most compilers are under development all the time and
+@strong{MySQL}-related. Most compilers are under development all the time and
become better version by version. To determine whether or not your
problem depends on your compiler, we need to know what compiler is used.
Note that every compiling problem should be regarded as a bug report and
@@ -3193,17 +3190,17 @@ It is most helpful when a good description of the problem is included in the
bug report. That is, a good example of all the things you did that led to
the problem and the problem itself exactly described. The best reports are
those that include a full example showing how to reproduce the bug or
-problem. @xref{Reproducable test case}.
+problem. @xref{Reproducable test case}.
If a program produces an error message, it is very important to include the
-message in your report! If we try to search for something from the archives
+message in your report! If we try to search for something from the archives
using programs, it is better that the error message reported exactly matches
-the one that the program produces. (Even the case should be
-observed!) You should never try to remember what the error message was;
-instead, copy and paste the entire message into your report!
+the one that the program produces. (Even the case should be observed!)
+You should never try to remember what the error message was; instead, copy
+and paste the entire message into your report!
If you have a problem with MyODBC, you should try to genereate a MyODBC
-trace file. @xref{MyODBC bug report}.
+trace file. @xref{MyODBC bug report}.
Please remember that many of the people who will read your report will
do so using an 80-column display. When generating reports or examples
@@ -3213,14 +3210,14 @@ for output that would exceed the available width for such a display
(for example, with the @code{EXPLAIN SELECT} statement; see the
example below).
-Please include the following information in your report:
@cindex bug reports, criteria for
+Please include the following information in your report:
@itemize @bullet
@item
The version number of the @strong{MySQL} distribution you are using (for
example, @strong{MySQL} Version 3.22.22). You can find out which version you
-are running by executing @code{mysqladmin version}. @code{mysqladmin} can be
+are running by executing @code{mysqladmin version}. @code{mysqladmin} can be
found in the @file{bin} directory under your @strong{MySQL} installation
directory.
@@ -3228,17 +3225,17 @@ directory.
The manufacturer and model of the machine you are working on.
@item
-The operating system name and version. For most operating systems, you can
+The operating system name and version. For most operating systems, you can
get this information by executing the Unix command @code{uname -a}.
@item
-Sometimes the amount of memory (real and virtual) is relevant.
-If in doubt, include these values.
+Sometimes the amount of memory (real and virtual) is relevant. If in doubt,
+include these values.
@item
If you are using a source distribution of @strong{MySQL}, the name and
-version number of the compiler used is needed.
-If you have a binary distribution, the distribution name is needed.
+version number of the compiler used is needed. If you have a binary
+distribution, the distribution name is needed.
@item
If the problem occurs during compilation, include the exact error
@@ -3246,9 +3243,9 @@ message(s) and also a few lines of context around the offending code in the
file where the error occurred.
@item
-If @code{mysqld} died, you should also report query that crashed
-@code{mysqld}. You can usually find this out by running @code{mysqld} with
-logging enabled. @xref{Using log files}.
+If @code{mysqld} died, you should also report the query that crashed
+@code{mysqld}. You can usually find this out by running @code{mysqld} with
+logging enabled. @xref{Using log files}.
@item
If any database table is related to the problem, include the output from
@@ -3284,9 +3281,9 @@ mysql> SHOW STATUS;
@item
If a bug or problem occurs while running @strong{mysqld}, try to provide an
-input script that will reproduce the anomaly. This script should include any
-necessary source files. The more closely the script can reproduce your
-situation, the better. If you can make a repeatable test case, you should
+input script that will reproduce the anomaly. This script should include any
+necessary source files. The more closely the script can reproduce your
+situation, the better. If you can make a repeatable test case, you should
post this to @email{bugs@@lists.mysql.com} for a high priority treatment!
If you can't provide a script, you should at least include the output
@@ -3300,27 +3297,26 @@ dump your tables using @code{mysqldump} and create a @file{README} file
that describes your problem.
Create a compressed archive of your files using
-@code{tar} and @code{gzip} or @code{zip}, and use @code{ftp}
-to transfer the archive to @uref{ftp://support.mysql.com/pub/mysql/secret/}.
-Then send a short description of the problem to @email{bugs@@lists.mysql.com}.
+@code{tar} and @code{gzip} or @code{zip}, and use @code{ftp} to transfer the
+archive to @uref{ftp://support.mysql.com/pub/mysql/secret/}. Then send a
+short description of the problem to @email{bugs@@lists.mysql.com}.
@item
If you think that @strong{MySQL} produces a strange result from a query,
include not only the result, but also your opinion of what the result
-should be and an account describing the basis for your opinion.
+should be, and an account describing the basis for your opinion.
@item
When giving an example of the problem, it's better to use the variable names,
table names, etc., that exist in your actual situation than to come up with
-new names. The problem could be related to the name of a variable or table!
-These cases are rare, perhaps, but it is better to be safe than
-sorry. After all, it should be easier for you to provide an example that
-uses your actual situation, and it is by all means better for us. In case you
-have data you don't want to show to others, you can use @code{ftp} to
-transfer it to @uref{ftp://support.mysql.com/pub/mysql/secret/}. If the data
-are really top secret and you don't want to show them even to us, then go ahead
-and provide an example using other names, but please regard this as the last
-choice.
+new names. The problem could be related to the name of a variable or table!
+These cases are rare, perhaps, but it is better to be safe than sorry.
+After all, it should be easier for you to provide an example that uses your
+actual situation, and it is by all means better for us. In case you have data
+you don't want to show to others, you can use @code{ftp} to transfer it to
+@uref{ftp://support.mysql.com/pub/mysql/secret/}. If the data are really top
+secret and you don't want to show them even to us, then go ahead and provide
+an example using other names, but please regard this as the last choice.
@item
Include all the options given to the relevant programs, if possible. For
@@ -3335,7 +3331,7 @@ as Perl or PHP, please include the version number(s) of those as well.
If your question is related to the privilege system, please include the
output of @code{mysqlaccess}, the output of @code{mysqladmin reload}, and all
the error messages you get when trying to connect! When you test your
-privileges, you should first run @code{mysqlaccess}. After this, execute
+privileges, you should first run @code{mysqlaccess}. After this, execute
@code{mysqladmin reload version} and try to connect with the program that
gives you trouble. @code{mysqlaccess} can be found in the @file{bin}
directory under your @strong{MySQL} installation directory.
@@ -3349,12 +3345,12 @@ so, we can't use it.
If we can't verify exactly what the patch is meant for, we won't use it.
Test cases will help us here. Show that the patch will handle all the
-situations that may occur. If we find a borderline case (even a rare one)
+situations that may occur. If we find a borderline case (even a rare one)
where the patch won't work, it may be useless.
@item
Guesses about what the bug is, why it occurs, or what it depends on,
-are usually wrong. Even the @strong{MySQL} team can't guess such things
+are usually wrong. Even the @strong{MySQL} team can't guess such things
without first using a debugger to determine the real cause of a bug.
@item
@@ -3363,7 +3359,7 @@ and mail archive so others know that you have tried to solve the
problem yourself.
@item
-If you get a @code{parse error}, please check your syntax closely! If
+If you get a @code{parse error}, please check your syntax closely! If
you can't find something wrong with it, it's extremely likely that your
current version of @strong{MySQL} doesn't support the query you are
using. If you are using the current version and the manual at
@@ -3374,46 +3370,44 @@ case, your only options are to implement the syntax yourself or e-mail
If the manual covers the syntax you are using, but you have an older version
of @strong{MySQL}, you should check the @strong{MySQL} change history to see
-when the syntax was implemented. @xref{News}. In this case, you have the
-option of upgrading to a newer version of @strong{MySQL}.
+when the syntax was implemented. In this case, you have the option of
+upgrading to a newer version of @strong{MySQL}. @xref{News}.
@item
If you have a problem such that your data appears corrupt or you get
errors when you access some particular table, you should first check and then
-try repairing your tables with @code{myisamchk} or @code{CHECK TABLE}/
-@code{REPAIR TABLE}.
-@xref{Maintenance}.
-
-@item
-If you often get corrupted tables you should try to find out when and
-why this happens! In this case, the
-@file{mysql-data-directory/'hostname'.err} file may contain some
-information about what happened. @xref{Error log}. Please include any relevant
-information from this file in your bug report! Normally @code{mysqld}
-should @strong{NEVER} crash a table if nothing killed it in the middle
-of an update! If you can find the cause of @code{mysqld} dying,
+try repairing your tables with @code{myisamchk} or @code{CHECK TABLE} and
+@code{REPAIR TABLE}. @xref{Maintenance}.
+
+@item
+If you often get corrupted tables you should try to find out when and why this
+happens! In this case, the @file{mysql-data-directory/'hostname'.err} file
+may contain some information about what happened. @xref{Error log}. Please
+include any relevant information from this file in your bug report! Normally
+@code{mysqld} should @strong{NEVER} crash a table if nothing killed it in the
+middle of an update! If you can find the cause of @code{mysqld} dying,
it's much easier for us to provide you with a fix for the problem!
@xref{What is crashing}.
@item
-If possible, download the most recent version of @strong{MySQL} and check
-whether or not it solves your problem. All versions of @strong{MySQL} are
-thoroughly tested and should work without problems! We believe in making
-everything as backward compatible as possible, and you should be able to
-switch @strong{MySQL} versions in minutes! @xref{Which version}.
+If possible, download and install the most recent version of @strong{MySQL}
+and check whether or not it solves your problem. All versions of
+@strong{MySQL} are thoroughly tested and should work without problems! We
+believe in making everything as backward compatible as possible, and you
+should be able to switch @strong{MySQL} versions in minutes!
+@xref{Which version}.
@end itemize
-If you are a support customer, please cross-post the bug report to
-@email{mysql-support@@mysql.com} for higher priority treatment, as well as to
-the appropriate mailing list to see if someone else has experienced (and
-perhaps solved) the problem.
@cindex technical support, mailing address
@cindex support, mailing address
@cindex customer support, mailing address
@cindex mailing address, for customer support
+If you are a support customer, please cross-post the bug report to
+@email{mysql-support@@mysql.com} for higher priority treatment, as well as to
+the appropriate mailing list to see if someone else has experienced (and
+perhaps solved) the problem.
-For information on reporting bugs in @strong{MyODBC}, see @ref{ODBC
-Problems}.
+For information on reporting bugs in @strong{MyODBC}, see @ref{ODBC Problems}.
For solutions to some common problems, see @xref{Problems}.
@@ -3482,10 +3476,10 @@ The formal terms of the GPL license can be found at @ref{GPL license}.
Basically, our licensing policy and interpretation of the GPL is as follows:
Note that older versions of @strong{MySQL} are still using a more
-@uref{http://www.mysql.com/support/arrangements/mypl.html, strict license}. See the documentation for that version for more information.
-If you need a commercial @strong{MySQL} license, because the GPL license
-doesn't suit your application, you can buy one at
-@uref{https://order.mysql.com/license.htmy}.
+@uref{http://www.mysql.com/support/arrangements/mypl.html, strict license}.
+See the documentation for that version for more information. If you need a
+commercial @strong{MySQL} license, because the GPL license doesn't suit your
+application, you can buy one at @uref{https://order.mysql.com/license.htmy}.
For normal internal use, @strong{MySQL} costs nothing. You do not have
to pay us if you do not want to.
@@ -3497,13 +3491,12 @@ A license is required if:
You link a part of the of @strong{MySQL} that has a GPL Copyright to a
program that is not free software (embedded usage of the @strong{MySQL}
server). In this case your application would also become GPL through the
-clause in the GPL license that acts as a virus. By licensing
-@strong{MySQL} from us under a commercial license you will avoid this
-problem.
+clause in the GPL license that acts as a virus. By licensing @strong{MySQL}
+from us under a commercial license you will avoid this problem.
@item
You have a commercial application that ONLY works with @strong{MySQL}
-and ships the application with the @strong{MySQL} server. This is
+and ships the application with the @strong{MySQL} server. This is
because we view this as linking even if it is done over the network.
@item
@@ -3519,7 +3512,7 @@ A license is @strong{NOT} required if:
@item
You do not need a license to include the client code in commercial
programs. The client part of @strong{MySQL} licensed with the
-LGPL @code{GNU Library General Public License}. The @code{mysql} command-line
+LGPL @code{GNU Library General Public License}. The @code{mysql} command-line
client includes code from the @code{readline} library that is under
the @code{GPL}.
@@ -3529,13 +3522,13 @@ like @strong{MySQL} and want to encourage further development, you are
certainly welcome to purchase a license or @strong{MySQL} support anyway.
@item
-If you use @strong{MySQL} in a commercial context such that
-you profit by its use, we ask that you further the development of
-@strong{MySQL} by purchasing some level of support. We feel that if
-@strong{MySQL} helps your business, it is reasonable to ask that you help
-@strong{MySQL}. (Otherwise, if you ask us support questions, you are not
-only using for free something into which we've put a lot a work, you're
-asking us to provide free support, too.)
+If you use @strong{MySQL} in a commercial context such that you profit by
+its use, we ask that you further the development of @strong{MySQL} by
+purchasing some level of support. We feel that if @strong{MySQL} helps
+your business, it is reasonable to ask that you help @strong{MySQL}.
+(Otherwise, if you ask us support questions, you are not only using for
+free something into which we've put a lot a work, you're asking us to
+provide free support, too.)
@end itemize
For circumstances under which a @strong{MySQL} license is required, you
@@ -3547,11 +3540,11 @@ running on that machine!
If you have any questions as to whether or not a license is required for
your particular use of @strong{MySQL}, please read this again and then
-contact us. @xref{Contact information}.
+contact us. @xref{Contact information}.
If you require a @strong{MySQL} license, the easiest way to pay for it
is to use the license form on @strong{MySQL}'s secure server at
-@uref{https://order.mysql.com/license.htmy}. Other forms of payment are
+@uref{https://order.mysql.com/license.htmy}. Other forms of payment are
discussed in @ref{Payment information}.
@cindex copyrights
@@ -3572,22 +3565,21 @@ programs in the @file{client} directory is GPL. Each file has a header
that shows which copyright is used for that file.
@item The client library and the (GNU @code{getopt}) library are covered
-by the ``GNU LIBRARY GENERAL PUBLIC LICENSE.'' @xref{LGPL license}.
+by the ``GNU LIBRARY GENERAL PUBLIC LICENSE.'' @xref{LGPL license}.
@item Some parts of the source (the @code{regexp} library) are covered
by a Berkeley-style copyright.
@item
All the source in the server and the (GNU @code{readline}) library
-is covered by the ``GNU GENERAL PUBLIC LICENSE.'' @xref{GPL
-license}. This is also available as the file @file{COPYING} in the
-distributions.
+is covered by the ``GNU GENERAL PUBLIC LICENSE.'' @xref{GPL license}.
+This is also available as the file @file{COPYING} in the distributions.
@end enumerate
One goal is that the SQL client library should be free enough that it is
possible to add @strong{MySQL} support into commercial products
-without a license. For this reason, we chose the LGPL license for the
+without a license. For this reason, we chose the LGPL license for the
client code.
@cindex licensing, free
@cindex free licensing
@@ -3598,13 +3590,13 @@ user for his own or company usage.
However, if you use @strong{MySQL} for something important to you, you may
want to help secure its development by purchasing licenses or a support
-contract. @xref{Support}.
+contract. @xref{Support}.
@node Copyright changes, , Copyright, Copyright
@subsection Copyright Changes
-The stable versions of @strong{MySQL} are still using a more strict
-license. See the documentation for that version for more information.
+Version 3.22 of @strong{MySQL} is still using a more strict license.
+See the documentation for that version for more information.
@node Licensing examples, Cost, Copyright, Licensing and Support
@section Example Licensing Situations
@@ -3624,8 +3616,8 @@ must license the @strong{MySQL} server. Generally these examples
involve providing @strong{MySQL} as an integral part of a product.
Note that a single @strong{MySQL} license covers any number of CPUs and
-@code{mysqld} servers on a machine! There is no artificial limit on the number
-of clients that connect to the server in any way.
+@code{mysqld} servers on a machine! There is no artificial limit on the
+number of clients that connect to the server in any way.
@node Products that use MySQL, ISP, Licensing examples, Licensing examples
@subsection Selling Products that use MySQL
@@ -3647,7 +3639,7 @@ designed your application around @strong{MySQL}, then you've really made
a commercial product that requires the engine, so you need a license.
@item
-If your application does not require @strong{MySQL}, you need not obtain
+If your application does not require @strong{MySQL}, you do not need to obtain
a license. For example, if using @strong{MySQL} just adds some new optional
features to your product (such as adding logging to a database if
@strong{MySQL} is used rather than logging to a text file), it should
@@ -3680,7 +3672,7 @@ don't need a license.
@cindex Internet Service Providers
Internet Service Providers (ISPs) often host @strong{MySQL} servers for
-their customers. With the GPL license this does not require a license.
+their customers. With the GPL license this does not require a license.
On the other hand, we do encourage people to use ISPs that have
@strong{MySQL} support, as this will give them the confidence that if
@@ -3707,9 +3699,8 @@ don't have to pay for a license.
This is true even if you run a commercial Web server that uses
@strong{MySQL}, because you are not selling an embedded @strong{MySQL}
-version yourself. However, in this case we would like you to purchase
-@strong{MySQL} support, because @strong{MySQL} is helping your
-enterprise.
+version yourself. However, in this case we would like you to purchase
+@strong{MySQL} support, because @strong{MySQL} is helping your enterprise.
@cindex costs, licensing and support
@cindex licensing costs
@@ -3724,9 +3715,9 @@ enterprise.
@end menu
Our current license prices are shown below. These prices are now under
-review because of the change to a GPL copyright. New prices and terms
-will be posted on the @strong{MySQL} web site
-@uref{http://www.mysql.com/} as soon as they are ready.
+review because of the change to a GPL copyright. New prices and terms
+will be posted on the @strong{MySQL} web site at @uref{http://www.mysql.com/}
+as soon as they are ready.
All prices are in US Dollars. If you pay by credit card, the currency is
EURO (European Union Euro) so the prices will differ slightly.
@@ -3748,32 +3739,32 @@ For high volume (OEM) purchases, the following prices apply:
@end multitable
For OEM purchases, you must act as the middle-man for eventual problems
-or extension requests from your users. We also require that OEM
+or extension requests from your users. We also require that OEM
customers have at least an extended e-mail support contract. Note that
OEM licenses only apply for products where the user doesn't have direct
-access to the @strong{MySQL} server (embedded system). In other words,
+access to the @strong{MySQL} server (embedded system). In other words,
the @strong{MySQL} server should only be used with the application
that was supplied you.
-If you have a low-margin high-volume product, you can always talk to us
-about other terms (for example, a percent of the sale price). If you do,
+If you have a low-margin, high-volume product, you can always talk to us
+about other terms (for example, a percent of the sale price). If you do,
please be informative about your product, pricing, market, and any other
information that may be relevant.
A full-price license is not a support agreement and includes very minimal
-support. This means that we try to answer any relevant questions. If the
+support. This means that we try to answer any relevant questions. If the
answer is in the documentation, we will direct you to the appropriate
-section. If you have not purchased a license or support, we probably will not
-answer at all.
+section. If you have not purchased a license or support, we probably will
+not answer at all.
If you discover what we consider a real bug, we are likely to fix it in
-any case. But if you pay for support we will notify you about the fix
+any case. But if you pay for support we will notify you about the fix
status instead of just fixing it in a later release.
More comprehensive support is sold separately. Descriptions of what each
level of support includes are given in @ref{Support}. Costs for the various
types of commercial support are shown below. Support level prices are in
-EURO (European Union Euro). One EURO is about 1.06 USD.
+EURO (European Union Euro). One EURO is about 1.06 USD.
@multitable @columnfractions .5 .5
@item @strong{Type of support} @tab @strong{Cost per year}
@@ -3788,8 +3779,8 @@ You may upgrade from any lower level of support to a higher level of
support for the difference in price between the two support levels.
We do also provide telephone support (mostly emergency support but also
-24/7 support). This support option doesn't however have a fixed price
-but is negotiated for case to case. If you are interested in this option
+24/7 support). This support option doesn't however have a fixed price
+but is negotiated for case to case. If you are interested in this option
you can email @email{sales@@mysql.com} and tell us about your needs.
Note that as our sales staff is very busy, it may take some time until
@@ -3852,8 +3843,8 @@ with your company information and ask us to bill you.
@subsection Contact Information
For commercial licensing, please contact the @strong{MySQL} licensing
-team. The much preferred method is by e-mail to
-@email{licensing@@mysql.com}. Fax is also possible but handling of
+team. The much preferred method is by e-mail to
+@email{licensing@@mysql.com}. Fax is also possible but handling of
these may take much longer (Fax +46-8-729 69 05).
If you represent a business that is interested in partnering with
@@ -3879,7 +3870,7 @@ list}.
For general information inquires, please send e-mail to
@email{info@@mysql.com}.
-For questions or comments about the workings or content of this Web site,
+For questions or comments about the workings or content of the Web site,
please send e-mail to @email{webmaster@@mysql.com}.
@cindex support, types
@@ -3897,27 +3888,26 @@ please send e-mail to @email{webmaster@@mysql.com}.
* Table handler support:: Support for other table handlers
@end menu
-The following holds for all support options.
+The following is true of all support options:
@itemize @bullet
@item
The support is per year.
@item
-Fixing or provide reasonable workarounds for any repeatable bug.
+We will fix, or provide a reasonable workaround for any repeatable bug.
@item
-A reasonable effort to find and fix any other MySQL related bug.
+We will give a reasonable effort to find and fix any other MySQL related bug.
@item
-The following doesn't hold for Basic email support (As this only includes
-basic installation support):
+The higher level of support contract the more effort we will put into finding
+a solution to your problems.
+@item
+The following is true for all support contracts except Basic email support:
-For not bug related things, like helping you optimize your queries or
-your system, extending MySQL with new functionality... we charge 200
+For non-bug related things, like helping you optimize your queries or
+your system, extending MySQL with new functionality, etc., we charge 200
EURO/hour, which is deducted from your support contract. In other words,
if you have login support (2000 EURO), you can expect us to work up to
10 hours to help you with things like this.
-@item
-The higher level of support contract the more effort we will put into finding
-a solution to your problems..
@end itemize
@cindex email, technical support
@@ -3940,20 +3930,19 @@ solved the problem you have. @xref{Asking questions}.
However, by purchasing basic e-mail support, you also have access to the
support address @email{mysql-support@@mysql.com}, which is not available
-as part of the minimal support that you get by purchasing a
-@strong{MySQL} license. This means that for especially critical
-questions, you can cross-post your message to
-@email{mysql-support@@mysql.com}. (If the message contains sensitive
-data, you should post only to @email{mysql-support@@mysql.com}.)
+as part of the minimal support that you get by purchasing a @strong{MySQL}
+license. This means that for especially critical questions, you can
+cross-post your message to @email{mysql-support@@mysql.com}. (If the
+message contains sensitive data, you should post only to
+@email{mysql-support@@mysql.com}.)
-@emph{REMEMBER!} to ALWAYS include your registration number and
-expiration date when you send a message to
-@email{mysql-support@@mysql.com}.
+@strong{REMEMBER!} to ALWAYS include your registration number and expiration
+date when you send a message to @email{mysql-support@@mysql.com}.
-Note that if you have encountered a critical repeatable bug and follow
+Note that if you have encountered a critical, repeatable bug, and follow
the rules outlined in the manual section of how to report bugs and send
it to @email{bugs@@lists.mysql.com}, we promise to try to fix this as
-soon as possible, regardless of your support level! @xref{Bug reports}.
+soon as possible, regardless of your support level! @xref{Bug reports}.
Basic e-mail support includes the following types of service:
@@ -3976,22 +3965,21 @@ platforms are those for which @strong{MySQL} is known to work.
@xref{Which OS}.
@item
-We will help you with bugs and missing features. Any bugs that are found are
-fixed for the next @strong{MySQL} release. If the bug is critical for
+We will help you with bugs and missing features. Any bugs that are found are
+fixed for the next @strong{MySQL} release. If the bug is critical for
you, we will mail you a patch for it as soon the bug is fixed. Critical
bugs always have the highest priority for us, and we ensure that they are
fixed as soon as possible.
@item
Your suggestions for the further development of @strong{MySQL} will be
-taken into consideration. By taking email support you have already
-helped the further development of @strong{MySQL}. If you want to have
+taken into consideration. By taking email support you have already
+helped the further development of @strong{MySQL}. If you want to have
more input, upgrade to a higher level of support.
@item
If you want us to help optimize your system, you must upgrade to a
higher level of support.
-
@end itemize
@cindex extended email support
@@ -4008,8 +3996,8 @@ non-registered users.
@item
Your suggestions for the further development of @strong{MySQL} will
-receive strong consideration. Simple extensions that suit the basic
-goals of @strong{MySQL} are implemented in a matter of days. By taking
+receive strong consideration. Simple extensions that suit the basic
+goals of @strong{MySQL} are implemented in a matter of days. By taking
extended e-mail support you have already helped the further development
of @strong{MySQL}.
@@ -4036,7 +4024,7 @@ We will provide hints on optimizing @code{mysqld} for your situation.
@item
You are allowed to influence the priority of items on the @strong{MySQL}
-TODO List. @xref{TODO}. This will ensure that the features you really need
+TODO List. @xref{TODO}. This will ensure that the features you really need
will be implemented sooner than they might be otherwise.
@end itemize
@@ -4065,7 +4053,7 @@ to solve the problem ``in place.''
@item
Like any database vendor, we can't guarantee that we can rescue any data from
crashed tables, but if the worst happens, we will help you rescue as much as
-possible. @strong{MySQL} has proven itself very reliable, but anything is
+possible. @strong{MySQL} has proven itself very reliable, but anything is
possible due to circumstances beyond our control (for example, if your system
crashes or someone kills the server by executing a @code{kill -9} command).
@@ -4094,11 +4082,11 @@ Your e-mail has the highest possible priority.
@item
We will actively examine your system and help you optimize it and your
-queries. We may also optimize and/or extend @strong{MySQL} to better
+queries. We may also optimize and/or extend @strong{MySQL} to better
suit your needs.
@item
-You may also request special extensions just for you. For example:
+You may also request special extensions just for you. For example:
@example
mysql> select MY_FUNC(col1,col2) from table;
@end example
@@ -4106,13 +4094,13 @@ mysql> select MY_FUNC(col1,col2) from table;
@item
We will provide a binary distribution of all important @strong{MySQL}
releases for your system, as long as we can get an account on a
-similar system. In the worst case, we may require access to your system
+similar system. In the worst case, we may require access to your system
to be able to create a binary distribution.
@item
If you can provide accommodations and pay for traveler fares, you can
even get a @strong{MySQL} developer to visit you and offer you help with
-your troubles. Extended login support entitles you to one personal
+your troubles. Extended login support entitles you to one personal
encounter per year, but we are always very flexible towards our
customers! If the visit takes 16 hours or more, the first 8 hours is
without charge. For the hours above 8 hours, you will be charged with a
@@ -4148,7 +4136,7 @@ support for.
We at @code{MySQL AB} will help you create a proper bug report for the
table handler and submit it to the developers for the specific table
-handler. We will also do our best to ensure that you will get a timely
+handler. We will also do our best to ensure that you will get a timely
answer or solution from the developers of the table handler.
Even if we are quite confident that we can solve most problems within a
@@ -4194,9 +4182,9 @@ To see which platforms are supported, see @ref{Which OS}.
@item
Several versions of @strong{MySQL} are available in both binary and
-source distributions. We also provide public access to our current
- source tree for those who want to see our most recent developments and
-help us test new code. To determine which version and type of
+source distributions. We also provide public access to our current
+source tree for those who want to see our most recent developments and
+help us test new code. To determine which version and type of
distribution you should use, see @ref{Many versions}.
@item
@@ -4225,10 +4213,10 @@ information about the current version and for downloading instructions.
Our main download mirror is located at:
-@uref{http://download.sourceforge.net/mirrors/mysql/, http://download.sourceforge.net/mirrors/mysql/}
+@uref{http://download.sourceforge.net/mirrors/mysql/}
If you are interested in becoming a @strong{MySQL} mirror site, you may
-anonymously rsync with: @code{rsync://download.sourceforge.net/mysql/}. Please
+anonymously rsync with: @code{rsync://download.sourceforge.net/mysql/}. Please
send e-mail to @email{webmaster@@mysql.com} notifying us of your mirror to be
added to the list below.
@@ -4977,7 +4965,7 @@ Please report bad or out-of-date mirrors to @email{webmaster@@mysql.com}.
@section Operating Systems Supported by MySQL
We use GNU Autoconf, so it is possible to port @strong{MySQL} to all modern
-systems with working Posix threads and a C++ compiler. (To compile only the
+systems with working Posix threads and a C++ compiler. (To compile only the
client code, a C++ compiler is required but not threads.) We use and develop
the software ourselves primarily on Sun Solaris (Versions 2.5 - 2.7) and
RedHat Linux Version 6.x.
@@ -4988,46 +4976,46 @@ sucessfully on the following operating system/thread package combinations:
@itemize @bullet
@item
-AIX 4.x with native threads. @xref{IBM-AIX}.
+AIX 4.x with native threads. @xref{IBM-AIX}.
@item
-BSDI 2.x with the included MIT-pthreads package. @xref{BSDI}.
+BSDI 2.x with the included MIT-pthreads package. @xref{BSDI}.
@item
-BSDI 3.0, 3.1 and 4.x with native threads. @xref{BSDI}.
+BSDI 3.0, 3.1 and 4.x with native threads. @xref{BSDI}.
@item
-DEC Unix 4.x with native threads. @xref{Alpha-DEC-UNIX}.
+DEC Unix 4.x with native threads. @xref{Alpha-DEC-UNIX}.
@item
-FreeBSD 2.x with the included MIT-pthreads package. @xref{FreeBSD}.
+FreeBSD 2.x with the included MIT-pthreads package. @xref{FreeBSD}.
@item
-FreeBSD 3.x and 4.x with native threads. @xref{FreeBSD}.
+FreeBSD 3.x and 4.x with native threads. @xref{FreeBSD}.
@item
-HP-UX 10.20 with the included MIT-pthreads package. @xref{HP-UX 10.20}.
+HP-UX 10.20 with the included MIT-pthreads package. @xref{HP-UX 10.20}.
@item
-HP-UX 11.x with the native threads. @xref{HP-UX 11.x}.
+HP-UX 11.x with the native threads. @xref{HP-UX 11.x}.
@item
-Linux 2.0+ with LinuxThreads 0.7.1+ or @code{glibc} 2.0.7+ . @xref{Linux}.
+Linux 2.0+ with LinuxThreads 0.7.1+ or @code{glibc} 2.0.7+. @xref{Linux}.
@item
-Mac OS X Server. @xref{Mac OS X}.
+Mac OS X Server. @xref{Mac OS X}.
@item
-NetBSD 1.3/1.4 Intel and NetBSD 1.3 Alpha (Requires GNU make). @xref{NetBSD}.
+NetBSD 1.3/1.4 Intel and NetBSD 1.3 Alpha (Requires GNU make). @xref{NetBSD}.
@item
OpenBSD > 2.5 with native therads. OpenBSD < 2.5 with the included
-MIT-pthreads package. @xref{OpenBSD}.
+MIT-pthreads package. @xref{OpenBSD}.
@item
-OS/2 Warp 3, FixPack 29 and OS/2 Warp 4, FixPack 4. @xref{OS/2}.
+OS/2 Warp 3, FixPack 29 and OS/2 Warp 4, FixPack 4. @xref{OS/2}.
@item
-SGI Irix 6.x with native threads. @xref{SGI-Irix}.
+SGI Irix 6.x with native threads. @xref{SGI-Irix}.
@item
-Solaris 2.5 and above with native threads on SPARC and x86. @xref{Solaris}.
+Solaris 2.5 and above with native threads on SPARC and x86. @xref{Solaris}.
@item
-SunOS 4.x with the included MIT-pthreads package. @xref{Solaris}.
+SunOS 4.x with the included MIT-pthreads package. @xref{Solaris}.
@item
-SCO OpenServer with a recent port of the FSU Pthreads package. @xref{SCO}.
+SCO OpenServer with a recent port of the FSU Pthreads package. @xref{SCO}.
@item
-SCO UnixWare 7.0.1. @xref{SCO Unixware}.
+SCO UnixWare 7.0.1. @xref{SCO Unixware}.
@item
Tru64 Unix
@item
-Win95, Win98, NT, and Win2000. @xref{Windows}.
+Win95, Win98, NT, and Win2000. @xref{Windows}.
@end itemize
@cindex MySQL binary distribution
@@ -5045,17 +5033,14 @@ release or the last stable release:
@item
Normally, if you are beginning to use @strong{MySQL} for the first time
or trying to port it to some system for which there is no binary
-distribution, we recommend going with the development release (currently
-Version @value{mysql_version}. This is because there are usually no really
-serious bugs in the development release, and you can easily test it on
-your machine with the @code{crash-me} and benchmark tests.
-@xref{Benchmarks}. Note that all @strong{MySQL} releases are
+distribution, we recommend going with the stable release (currently
+Version @value{mysql_version}. Note that all @strong{MySQL} releases are
checked with the @strong{MySQL} benchmarks and an extensive test suite
before each release.
@item
Otherwise, if you are running an old system and want to upgrade, but
-don't want to take chances with the development version, you should
+don't want to take chances with a non-seamless upgrade, you should
upgrade to the latest in the same branch you are using (where only the
last version number is newer than yours). We have tried to fix only
fatal bugs and make small, relatively safe changes to that version.
@@ -5066,26 +5051,27 @@ distribution or a binary distribution. In most cases you should probably
use a binary distribution, if there exist one for your platform, as this
is generally, it will be easier to install than a source distribution.
-In the following cases you will probably be better of with a source
+In the following cases you will probably be better off with a source
installation:
@itemize @bullet
@item
-If you want to install @strong{MySQL} at some explicit location. (The standard
+If you want to install @strong{MySQL} at some explicit location. (The standard
binary distributions are 'ready to run' at any place, but you may want
to get even more flexibility).
@item
If you want to configure @code{mysqld} with some extra feature that is NOT in
-the standard binary distributions. Here is a list of the most common
-extra options that you may want to use
+the standard binary distributions. Here is a list of the most common
+extra options that you may want to use:
@itemize @bullet
@item --with-berkeley-db
+@item --with-innobase
@item --with-raid
@item --with-libwrap
@item --with-named-z-lib (This is done for some of the binaries)
-@item --with-debugging[=full]
+@item --with-debug[=full]
@end itemize
@item
@@ -5100,13 +5086,13 @@ processor.
@item
If you have found a bug and reported it to the @strong{MySQL}
-development team you will probably got a patch that you need to apply to
+development team you will probably receive a patch that you need to apply to
the source distribution to get the bug fixed.
@item
If you want to read (and/or modify) the C and C++ code that makes up
-@strong{MySQL}, you should get a source distribution. The source code is
-always the ultimate manual. Source distributions also contain more
+@strong{MySQL}, you should get a source distribution. The source code is
+always the ultimate manual. Source distributions also contain more
tests and examples than binary distributions.
@end itemize
@@ -5119,21 +5105,19 @@ numbers and a suffix. For example, a release name like
@itemize @bullet
@item
-The first number (@code{3}) describes the file format. All
-Version 3 releases have the same file format. When a Version 4 appears, every
-table will have to be converted to the new format (nice tools for this will
-be included, of course.)
+The first number (@code{3}) describes the file format. All Version 3
+releases have the same file format.
@item
-The second number (@code{21}) is the release level. Normally there are two to
-choose from. One is the release/stable branch (currently @code{22}) and the
-other is the development branch (currently @code{23}) . Normally both are
+The second number (@code{21}) is the release level. Normally there are two to
+choose from. One is the release/stable branch (currently @code{23}) and the
+other is the development branch (currently @code{4.0}). Normally both are
stable, but the development version may have quirks, missing documentation on
new features, or may fail to compile on some systems.
@item
The third number (@code{17}) is the version number within the
-release level. This is incremented for each new distribution. Usually you
+release level. This is incremented for each new distribution. Usually you
want the latest version for the release level you have choosen.
@item
@@ -5141,7 +5125,8 @@ The suffix (@code{beta}) indicates the stability level of the release.
The possible suffixes are:
@itemize @minus
-@item @code{alpha} indicates that the release contains some large section of
+@item
+@code{alpha} indicates that the release contains some large section of
new code that hasn't been 100% tested. Known bugs (usually there are none)
should be documented in the News section. @xref{News}. There are also new
commands and extensions in most alpha releases. Active development that
@@ -5150,8 +5135,8 @@ will be tested before doing a release. There should be no known bugs in any
@strong{MySQL} release.
@item
-@code{beta} means that all new code has been tested. No major new
-features that could cause corruption on old code are added. There should
+@code{beta} means that all new code has been tested. No major new
+features that could cause corruption on old code are added. There should
be no known bugs. A version changes from alpha to beta when there
haven't been any reported fatal bugs within an alpha version for at least
a month and we don't plan to add any features that could make any old command
@@ -5159,7 +5144,7 @@ more unreliable.
@item
@code{gamma} is a beta that has been around a while and seems to work fine.
-Only minor fixes are added. This is what many other companies call a release.
+Only minor fixes are added. This is what many other companies call a release.
@item
If there is no suffix, it means that the version has been run for a
@@ -5173,6 +5158,7 @@ All versions of @strong{MySQL} are run through our standard tests and
benchmarks to ensure that they are relatively safe to use. Because the
standard tests are extended over time to check for all previously found bugs,
the test suite keeps getting better.
+
@cindex releases, testing
@cindex testing, of MySQL releases
@@ -5180,18 +5166,17 @@ Note that all releases have been tested at least with:
@table @asis
@item An internal test suite
-This is part of a production system for a customer. It has many tables with
+This is part of a production system for a customer. It has many tables with
hundreds of megabytes of data.
@item The @strong{MySQL} benchmark suite
-This runs a range of common queries. It is also a test to see whether the
+This runs a range of common queries. It is also a test to see whether the
latest batch of optimizations actually made the code faster.
@xref{Benchmarks}.
@item The @code{crash-me} test
This tries to determine what features the database supports and what its
-capabilities and limitations are.
-@xref{Benchmarks}.
+capabilities and limitations are. @xref{Benchmarks}.
@end table
Another test is that we use the newest @strong{MySQL} version in our internal
@@ -5203,17 +5188,17 @@ gigabytes of data to work with.
@node Many versions, Installation layouts, Which version, Installing
@section How and When Updates Are Released
-@strong{MySQL} is evolving quite rapidly here at MySQL AB and we want
-to share this with other @strong{MySQL} users. We try to make a release
+@strong{MySQL} is evolving quite rapidly here at @strong{MySQL AB} and we
+want to share this with other @strong{MySQL} users. We try to make a release
when we have very useful features that others seem to have a need for.
We also try to help out users who request features that are easy to
-implement. We take note of what our licensed users want to have, and
+implement. We take note of what our licensed users want to have, and
we especially take note of what our extended e-mail supported customers
want and try to help them out.
-No one has to download a new release. The News section will tell you if
-the new release has something you really want. @xref{News}.
+No one has to download a new release. The News section will tell you if
+the new release has something you really want. @xref{News}.
We use the following policy when updating @strong{MySQL}:
@@ -5221,7 +5206,7 @@ We use the following policy when updating @strong{MySQL}:
@item
For each minor update, the last number in the version string is incremented.
When there are major new features or minor incompatibilities with previous
-versions, the second number in the version string is incremented. When the
+versions, the second number in the version string is incremented. When the
file format changes, the first number is increased.
@item
@@ -5242,19 +5227,19 @@ small bugs.
@item
For non-critical but annoying bugs, we will make patches available if they
-are sent to us. Otherwise we will combine many of them into a larger
+are sent to us. Otherwise we will combine many of them into a larger
patch.
@item
If there is, by any chance, a fatal bug in a release we will make a new
-release as soon as possible. We would like other companies to do this,
+release as soon as possible. We would like other companies to do this,
too.
@end itemize
The current stable release is Version 3.23; We have already moved active
-development to Version 4.0. Bugs will still be fixed in the stable version.
+development to Version 4.0. Bugs will still be fixed in the stable version.
We don't believe in a complete freeze, as this also leaves out bug fixes
-and things that ``must be done.'' ``Somewhat frozen'' means that we may
+and things that ``must be done.'' ``Somewhat frozen'' means that we may
add small things that ``almost surely will not affect anything that's
already working.''
@@ -5342,13 +5327,13 @@ GNU @code{gunzip} to uncompress the distribution.
@item
A reasonable @code{tar} to unpack the distribution. GNU @code{tar} is
-known to work. Sun @code{tar} is known to have problems.
+known to work. Sun @code{tar} is known to have problems.
@end itemize
@cindex RPM, defined
@cindex RedHat Package Manager
An alternative installation method under Linux is to use RPM (RedHat Package
-Manager) distributions. @xref{Linux-RPM}.
+Manager) distributions. @xref{Linux-RPM}.
@c texi2html fails to split chapters if I use strong for all of this.
If you run into problems, @strong{PLEASE ALWAYS USE} @code{mysqlbug} when
@@ -5454,7 +5439,7 @@ The most important for installation purposes are the @file{bin} and
@table @file
@item bin
@tindex PATH environment variable
-@tindex Environment variable, PATH
+@tindex environment variable, PATH
This directory contains client programs and the server
You should add the full pathname of this directory to your
@code{PATH} environment variable so that your shell finds the @strong{MySQL}
@@ -5467,9 +5452,9 @@ the server access permissions.
@item
If you would like to use @code{mysqlaccess} and have the @strong{MySQL}
-distribution in some nonstandard place, you must change the location where
-@code{mysqlaccess} expects to find the @code{mysql} client. Edit the
-@file{bin/mysqlaccess} script at approximately line 18. Search for a line
+distribution in some non-standard place, you must change the location where
+@code{mysqlaccess} expects to find the @code{mysql} client. Edit the
+@file{bin/mysqlaccess} script at approximately line 18. Search for a line
that looks like this:
@example
@@ -5513,9 +5498,9 @@ see @ref{Perl support}.
@item
If you would like @strong{MySQL} to start automatically when you boot your
machine, you can copy @code{support-files/mysql.server} to the location where
-your system has its startup files. More information can be found in the
-@code{support-files/mysql.server} script itself and in @ref{Automatic
-start}.
+your system has its startup files. More information can be found in the
+@code{support-files/mysql.server} script itself and in
+@ref{Automatic start}.
@end enumerate
@@ -5607,7 +5592,6 @@ and you should now be able to start using @strong{MySQL}.
If something goes wrong, you can find more information in the binary
installation chapter. @xref{Installing binary}.
-
@cindex client programs, building
@cindex linking
@cindex building, client programs
@@ -5617,10 +5601,10 @@ installation chapter. @xref{Installing binary}.
If you compile @strong{MySQL} clients that you've written yourself or that
you obtain from a third party, they must be linked using the
-@code{-lmysqlclient} option on the link command. You may also need to
+@code{-lmysqlclient -lz} option on the link command. You may also need to
specify a @code{-L} option to tell the linker where to find the library. For
example, if the library is installed in @file{/usr/local/mysql/lib}, use
-@code{-L/usr/local/mysql/lib -lmysqlclient} on the link command.
+@code{-L/usr/local/mysql/lib -lmysqlclient -lz} on the link command.
For clients that use @strong{MySQL} header files, you may need to specify a
@code{-I} option when you compile them (for example,
@@ -5658,10 +5642,10 @@ dynamic linking.
If you are using a @code{libc}-based system (instead of a @code{glibc2}
system), you will probably get some problems with hostname resolving and
-getpwnam() with the binary release. (This is because @code{glibc}
+@code{getpwnam()} with the binary release. (This is because @code{glibc}
unfortunately depends on some external libraries to resolve hostnames
-and getpwent() , even when compiled with @code{-static}). In this case
-you probably get the following error message when you run
+and @code{getpwent()}, even when compiled with @code{-static}). In this
+case you probably get the following error message when you run
@code{mysql_install_db}:
@example
@@ -5693,7 +5677,7 @@ Start mysqld with @code{su} instead of using @code{--user}.
@end itemize
The Linux-Intel binary and RPM releases of @strong{MySQL} are configured
-for the highest possible speed. We are always trying to use the fastest
+for the highest possible speed. We are always trying to use the fastest
stable compiler available.
@strong{MySQL} Perl support requires Version Perl 5.004_03 or newer.
@@ -5728,10 +5712,9 @@ file you must be running at least HP-UX 10.x to have access to HP's
software depot tools.
The HP version of @strong{MySQL} was compiled on an HP 9000/8xx server
-under HP-UX 10.20, and uses MIT-pthreads. It is known to work
-well under this configuration.
-@strong{MySQL} Version 3.22.26 and newer can also be built with HP's native
-thread package.
+under HP-UX 10.20, and uses MIT-pthreads. It is known to work well under
+this configuration. @strong{MySQL} Version 3.22.26 and newer can also be
+built with HP's native thread package.
Other configurations that may work:
@@ -5787,12 +5770,11 @@ shell> /usr/sbin/swinstall -s /path/to/depot mysql.developer
The depot places binaries and libraries in @file{/opt/mysql} and data in
@file{/var/opt/mysql}. The depot also creates the appropriate entries in
@file{/etc/init.d} and @file{/etc/rc2.d} to start the server automatically
-at boot time. Obviously, this entails being @code{root} to install.
+at boot time. Obviously, this entails being @code{root} to install.
To install the HP-UX tar.gz distribution, you must have a copy of GNU
@code{tar}.
-
@cindex installing, source distribution
@cindex source distribution, installing
@cindex installation overview
@@ -5806,15 +5788,15 @@ You need the following tools to build and install @strong{MySQL} from source:
GNU @code{gunzip} to uncompress the distribution.
@item
-A reasonable @code{tar} to unpack the distribution. GNU @code{tar} is
+A reasonable @code{tar} to unpack the distribution. GNU @code{tar} is
known to work. Sun @code{tar} is known to have problems.
@item
-A working ANSI C++ compiler. @code{gcc} >= 2.8.1, @code{egcs} >=
+A working ANSI C++ compiler. @code{gcc} >= 2.8.1, @code{egcs} >=
1.0.2, SGI C++, and SunPro C++ are some of the compilers that are known to
work. @code{libg++} is not needed when using @code{gcc}. @code{gcc}
2.7.x has a bug that makes it impossible to compile some perfectly legal
-C++ files, such as @file{sql/sql_base.cc}. If you only have @code{gcc} 2.7.x,
+C++ files, such as @file{sql/sql_base.cc}. If you only have @code{gcc} 2.7.x,
you must upgrade your @code{gcc} to be able to compile @strong{MySQL}.
@code{gcc} >= 2.95.2 is recommended when compiling @strong{MySQL}
@@ -5832,8 +5814,8 @@ posting questions to @email{mysql@@lists.mysql.com}. Even if the problem
isn't a bug, @code{mysqlbug} gathers system information that will help others
solve your problem. By not using @code{mysqlbug}, you lessen the likelihood
of getting a solution to your problem! You will find @code{mysqlbug} in the
-@file{scripts} directory after you unpack the distribution. @xref{Bug
-reports}.
+@file{scripts} directory after you unpack the distribution.
+@xref{Bug reports}.
@menu
* Quick install:: Quick installation overview
@@ -5891,7 +5873,7 @@ Obtain a distribution file from one of the sites listed in
If you are interested in using Berkeley DB tables with MySQL, you
will need to obtain a patched version of the Berkeley DB source
code. Please read the chapter on Berkeley DB tables before
-proceeding. @xref{BDB}.
+proceeding. @xref{BDB}.
@strong{MySQL} source distributions are provided as compressed @code{tar}
archives and have names like @file{mysql-VERSION.tar.gz}, where
@@ -5946,7 +5928,7 @@ If @code{configure} fails, and you are going to send mail to
@email{mysql@@lists.mysql.com} to ask for assistance, please include any
lines from @file{config.log} that you think can help solve the problem. Also
include the last couple of lines of output from @code{configure} if
-@code{configure} aborts. Post the bug report using the @code{mysqlbug}
+@code{configure} aborts. Post the bug report using the @code{mysqlbug}
script. @xref{Bug reports}.
If the compile fails, see @ref{Compilation problems}, for help with
@@ -5995,9 +5977,9 @@ see @ref{Perl support}.
@item
If you would like @strong{MySQL} to start automatically when you boot your
machine, you can copy @code{support-files/mysql.server} to the location where
-your system has its startup files. More information can be found in the
-@code{support-files/mysql.server} script itself and in @ref{Automatic
-start}.
+your system has its startup files. More information can be found in the
+@code{support-files/mysql.server} script itself and in
+@ref{Automatic start}.
@end enumerate
After everything has been installed, you should initialize and test your
@@ -6008,10 +5990,9 @@ shell> /usr/local/mysql/bin/safe_mysqld --user=mysql &
@end example
If that command fails immediately with @code{mysqld daemon ended} then you can
-find some information in the file
-@file{mysql-data-directory/'hostname'.err}. The likely reason is that
-you already have another @code{mysqld} server running. @xref{Multiple
-servers}.
+find some information in the file @file{mysql-data-directory/'hostname'.err}.
+The likely reason is that you already have another @code{mysqld} server
+running. @xref{Multiple servers}.
@xref{Post-installation}.
@@ -6068,7 +6049,7 @@ The @code{configure} script gives you a great deal of control over how
you configure your @strong{MySQL} distribution. Typically you do this
using options on the @code{configure} command line. You can also affect
@code{configure} using certain environment variables. @xref{Environment
-variables}. For a list of options supported by @code{configure}, run
+variables}. For a list of options supported by @code{configure}, run
this command:
@example
@@ -6100,11 +6081,13 @@ to tell it to continue with the rest of the build even if errors occur.)
If you don't want your log files and database directories located under
@file{/usr/local/var}, use a @code{configure} command, something like one
of these:
+
@example
shell> ./configure --prefix=/usr/local/mysql
shell> ./configure --prefix=/usr/local \
--localstatedir=/usr/local/mysql/data
@end example
+
The first command changes the installation prefix so that everything is
installed under @file{/usr/local/mysql} rather than the default of
@file{/usr/local}. The second command preserves the default installation
@@ -6112,42 +6095,47 @@ prefix, but overrides the default location for database directories
(normally @file{/usr/local/var}) and changes it to
@code{/usr/local/mysql/data}.
+@cindex changing socket location
+@cindex socket location, changing
+@cindex mysql.sock, changing location of
@item
If you are using Unix and you want the @strong{MySQL} socket located somewhere
other than the default location (normally in the directory @file{/tmp} or
@file{/var/run}) use a @code{configure} command like this:
+
@example
shell> ./configure --with-unix-socket-path=/usr/local/mysql/tmp/mysql.sock
@end example
+
Note that the given file must be an absolute pathname!
-@cindex socket location
+@cindex compiling statically
+@cindex statically, compiling
@item
If you want to compile statically linked programs (for example, to make a
binary distribution, to get more speed, or to work around problems with some
-RedHat distributions), run @code{configure} like this:
+RedHat Linux distributions), run @code{configure} like this:
@example
shell> ./configure --with-client-ldflags=-all-static \
--with-mysqld-ldflags=-all-static
@end example
-@cindex statistically-linked programs
+@tindex CC environment variable
+@tindex environment variable, CC
+@tindex CXX environment variable
+@tindex environment variable, CXX
+@cindex gcc
+@cindex C++ complier, gcc
+@cindex compiler, C++ gcc
@item
If you are using @code{gcc} and don't have @code{libg++} or @code{libstdc++}
installed, you can tell @code{configure} to use @code{gcc} as your C++
compiler:
-@tindex CC environment variable
-@tindex Environment variable, CC
-@tindex CXX environment variable
-@tindex Environment variable, CXX
@example
shell> CC=gcc CXX=gcc ./configure
@end example
-@cindex gcc
-@cindex C++ complier, gcc
-@cindex compiler, C++ gcc
When you use @code{gcc} as your C++ compiler, it will not attempt to link in
@code{libg++} or @code{libstdc++}.
@@ -6156,7 +6144,7 @@ Here is some common environment variables to set depending on
the compiler you are using:
@tindex CXXFLAGS environment variable
-@tindex Environment variable, CXXFLAGS
+@tindex environment variable, CXXFLAGS
@multitable @columnfractions .20 .80
@item gcc 2.7.2.1 @tab
CC=gcc CXX=gcc CXXFLAGS="-O6 -felide-constructors"
@@ -6168,8 +6156,8 @@ CFLAGS="-O6 -mpentiumpro" CXX=gcc CXXFLAGS="-O6 -mpentiumpro -felide-constructor
CFLAGS="-O6 -mpentiumpro -mstack-align-double" CXX=gcc CXXFLAGS="-O6 -mpentiumpro -mstack-align-double -felide-constructors -fno-exceptions -fno-rtti"
@end multitable
-In most cases you can get a resonable optimal @strong{MySQL} binary
-picking the options from the above and add the following options to the
+In most cases you can get a reasonably optimal @strong{MySQL} binary by
+using the options from the above and adding the following options to the
configure line:
@example
@@ -6183,10 +6171,10 @@ following for all recent gcc versions:
CFLAGS="-O6 -mpentiumpro" CXX=gcc CXXFLAGS="-O6 -mpentiumpro -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --enable-assembler --with-mysqld-ldflags=-all-static
@end example
-The binaries we provide at on the @strong{MySQL} home site
-@uref{http://www.mysql.com}, are all compiled with full optimization and
-should be ok for most users. @xref{MySQL binaries}. There is some
-things one can tweak to make an even faster binary, but this is only for
+The binaries we provide on the @strong{MySQL} Web site at
+@uref{http://www.mysql.com} are all compiled with full optimization and
+should be perfect for most users. @xref{MySQL binaries}. There are some
+things you can tweak to make an even faster binary, but this is only for
advanced users. @xref{Compile and link options}.
If the build fails and produces errors about your compiler or linker not
@@ -6195,6 +6183,8 @@ is a version number), you can work around this problem by giving the
@code{--disable-shared} option to @code{configure}. In this case,
@code{configure} will not build a shared @code{libmysqlclient.so.#} library.
+@cindex default values, suppression
+@cindex suppression, default values
@item
You can configure @strong{MySQL} not to use @code{DEFAULT} column values for
non-@code{NULL} columns (that is, columns that are not allowed to be
@@ -6204,13 +6194,13 @@ non-@code{NULL} value. To suppress use of default values, run
@code{configure} like this:
@tindex CXXFLAGS environment variable
-@tindex Environment variable, CXXFLAGS
+@tindex environment variable, CXXFLAGS
@example
shell> CXXFLAGS=-DDONT_USE_DEFAULT_FIELDS ./configure
@end example
-@cindex default values, suppression
-@cindex suppression, default values
+@cindex character sets
+@findex configure option, --with-charset
@item
By default, @strong{MySQL} uses the ISO-8859-1 (Latin1) character set. To
change the default set, use the @code{--with-charset} option:
@@ -6224,8 +6214,6 @@ shell> ./configure --with-charset=CHARSET
@code{latin2}, @code{sjis}, @code{swe7}, @code{tis620}, @code{ujis},
@code{usa7}, or @code{win1251ukr}.
@xref{Character sets}.
-@cindex character sets
-@findex CHARSET
If you want to convert characters between the server and the client,
you should take a look at the @code{SET OPTION CHARACTER SET} command.
@@ -6239,8 +6227,8 @@ install @strong{MySQL}, create some tables, then reconfigure
@strong{MySQL} to use a different character set and reinstall it.)
@item
-To configure
-@strong{MySQL} with debugging code, use the @code{--with-debug} option:
+To configure @strong{MySQL} with debugging code, use the @code{--with-debug}
+option:
@example
shell> ./configure --with-debug
@end example
@@ -6253,7 +6241,7 @@ If your client programs are using threads, you need to also compile a
thread-safe version of the @strong{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{Thread-safe clients}.
@item
Options that pertain to particular systems can be found in the
@@ -6264,6 +6252,10 @@ system-specific sections later in this chapter.
@node Installing source tree, Compilation problems, Installing source, Installing
@section Installing from development source tree
+@cindex development source tree
+@cindex BitKeeper tree
+@cindex cvs tree
+
@strong{CAUTION:} You should only read this section if you are
interested in helping us test our new code. If you just want to get
@strong{MySQL} up and running on your system, you should use either
@@ -6272,22 +6264,25 @@ source or binary distribution.
Below are the instructions to obtain our most recent development
source tree:
-@itemize
+@enumerate
@item
Download @strong{BitKeeper} from
@uref{http://www.bitmover.com/cgi-bin/download.cgi}. You will need
@strong{Bitkeeper} 2.0 or newer to access our repository.
+
@item
Follow the instructions to install it.
+
@item
Once @strong{BitKeeper} is installed, if you want to clone 3.23 branch,
@code{bk clone bk://work.mysql.com:7000 mysql}, and
-@code{bk clone bk://work.mysql.com:7001 mysql-4.0} for 4.0 branch
+@code{bk clone bk://work.mysql.com:7001 mysql-4.0} for 4.0 branch.
The initial download may take a while, depending on the speed of your
connection.
+
@item
-You will need GNU autoconf/automake, libtool, and m4 to do the next stage.
+You will need GNU autoconf, automake, libtool, and m4 to do the next stage.
If you get some strange error during the first stage, check that you really
have libtool installed!
@@ -6299,44 +6294,48 @@ aclocal; autoheader; autoconf; automake;
make
@end example
-We have a collection of our standard configure scripts in the
-@code{BUILD/} subdirectory - if you are lazy, you can do
-@code{BUILD/compile-pentium-debug} . It will actually work on a lot of
+We have a collection of our standard configure scripts in the @file{BUILD/}
+subdirectory. If you are lazy, you can use
+@file{BUILD/compile-pentium-debug}. It will actually work on a lot of
non-x86 machines despite its name.
+
@item
-Once the build is done, @code{make install}. Be careful with this on
-a production machine - this may overwrite your live release binary. We
+Once the build is done, @code{make install}. Be careful with this on
+a production machine - this may overwrite your live release binary. We
recommend that if you have another installation of @strong{MySQL} that
you @code{./configure} with different values for @code{prefix},
@code{tcp-port}, and @code{unix-socket-path}.
+
@item
Play hard with your new installation and try to make the new features
-crash. Start by running @code{make test}. @xref{MySQL test suite}.
+crash. Start by running @code{make test}. @xref{MySQL test suite}.
+
@item
If you have gotten to the @code{make} stage and it does not compile,
-please report it to @email{bugs@@lists.mysql.com}. If you have
-installed the update version of the required GNU tools, and they crash
-trying to process our configuration files, please report it also. However,
+please report it to @email{bugs@@lists.mysql.com}. If you have
+installed the latest version of the required GNU tools, and they crash
+trying to process our configuration files, please report it also. However,
if you execute @code{aclocal} and get @code{command not found}, or a
-similar problem, do not report it - make sure all the needed tools are
+similar problem, do not report it, make sure all the needed tools are
installed and your @code{PATH} variable is set correctly.
+
@item
-After the initial @code{bk clone}, do @code{bk pull} to get the updates. If
-you are using the most recent beta version of BitKeeper, you should use
-@code{bk opull} instead.
+After the initial @code{bk clone}, do @code{bk pull} to get the updates.
+
@item
You can examine change history of the tree with all the diffs with
-@code{bk sccstool}. If you see some funny diffs or code that you have a
-question about, do not hesitate and e-mail
-@email{internals@@lists.mysql.com}. Also if you think you have a
-better idea on how to do something, send an email to the same place
-with a patch - @code{bk diffs} will produce a patch for you after you
-have made changes to the source. If you do not have the time to code
+@code{bk sccstool}. If you see some funny diffs or code that you have a
+question about, do not hesitate and e-mail @email{internals@@lists.mysql.com}.
+Also if you think you have a better idea on how to do something, send an email
+to the same place with a patch. @code{bk diffs} will produce a patch for you
+after you have made changes to the source. If you do not have the time to code
your idea, just send a description.
+
@item
-@strong{BitKeeper} has a nice help utility - @code{bk helptool}.
+@strong{BitKeeper} has a nice help utility that you can access via
+@code{bk helptool}.
-@end itemize
+@end enumerate
@cindex compiling, problems
@cindex problems, compiling
@@ -6347,8 +6346,8 @@ your idea, just send a description.
@section Problems Compiling?
All @strong{MySQL} programs compile cleanly for us with no warnings on
-Solaris using @code{gcc}. On other systems, warnings may occur due to
-differences in system include files. See @ref{MIT-pthreads}, for warnings
+Solaris using @code{gcc}. On other systems, warnings may occur due to
+differences in system include files. See @ref{MIT-pthreads} for warnings
that may occur when using MIT-pthreads. For other problems, check the list
below.
@@ -6357,6 +6356,8 @@ reconfigure, take note of the following:
@cindex running @code{configure} after prior invocation
@cindex @code{configure}, running after prior invocation
+@cindex reconfiguring
+@cindex config.cache
@itemize @bullet
@item
If @code{configure} is run after it already has been run, it may use
@@ -6365,6 +6366,7 @@ information is stored in @file{config.cache}. When @code{configure} starts
up, it looks for that file and reads its contents if it exists, on the
assumption that the information is still correct. That assumption is invalid
when you reconfigure.
+
@item
Each time you run @code{configure}, you must run @code{make} again
to recompile. However, you may want to remove old object files from previous
@@ -6391,6 +6393,7 @@ that have been found to occur most often:
@cindex @code{sql_yacc.cc} problems
@cindex internal compiler errors
@cindex virtual memory, problems while compiling
+@cindex configure option, --with-low-memory
If you get errors when compiling @file{sql_yacc.cc}, such as the ones shown
below, you have probably run out of memory or swap space:
@@ -6475,13 +6478,13 @@ Solaris and FreeBSD are known to have troublesome @code{make} programs.
GNU @code{make} Version 3.75 is known to work.
@tindex CC environment variable
-@tindex Environment variable, CC
+@tindex environment variable, CC
@tindex CXX environment variable
-@tindex Environment variable, CXX
+@tindex environment variable, CXX
@tindex CFLAGS environment variable
-@tindex Environment variable, CFLAGS
+@tindex environment variable, CFLAGS
@tindex CXXFLAGS environment variable
-@tindex Environment variable, CXXFLAGS
+@tindex environment variable, CXXFLAGS
@item
If you want to define flags to be used by your C or C++ compilers, do so by
adding the flags to the @code{CFLAGS} and @code{CXXFLAGS} environment
@@ -6551,8 +6554,7 @@ and use that instead.
@item
If you need to debug @code{mysqld} or a @strong{MySQL} client, run
@code{configure} with the @code{--with-debug} option, then recompile and
-link your clients with the new client library.
-@xref{Debugging client}.
+link your clients with the new client library. @xref{Debugging client}.
@end itemize
@cindex MIT-pthreads
@@ -6593,12 +6595,12 @@ to use @code{-h} or @code{--host} when you run client programs.
@item
When @strong{MySQL} is compiled using MIT-pthreads, system locking is
-disabled by default for performance reasons. You can tell the server to use
+disabled by default for performance reasons. You can tell the server to use
system locking with the @code{--use-locking} option.
@item
Sometimes the pthread @code{bind()} command fails to bind to a socket without
-any error message (at least on Solaris). The result is that all connections
+any error message (at least on Solaris). The result is that all connections
to the server fail. For example:
@example
@@ -6613,9 +6615,9 @@ a restart immediately.
@item
With MIT-pthreads, the @code{sleep()} system call isn't interruptible with
-@code{SIGINT} (break). This is only noticeable when you run @code{mysqladmin
---sleep}. You must wait for the @code{sleep()} call to terminate before the
-interrupt is served and the process stops.
+@code{SIGINT} (break). This is only noticeable when you run
+@code{mysqladmin --sleep}. You must wait for the @code{sleep()} call to
+terminate before the interrupt is served and the process stops.
@item
When linking, you may receive warning messages like these (at least on
@@ -6641,7 +6643,7 @@ implicit declaration of function `int strtoul(...)'
@end example
@item
-We haven't gotten @code{readline} to work with MIT-pthreads. (This isn't
+We haven't gotten @code{readline} to work with MIT-pthreads. (This isn't
needed, but may be interesting for someone.)
@end itemize
@@ -6663,7 +6665,7 @@ needed, but may be interesting for someone.)
Perl support for @strong{MySQL} is provided by means of the
@code{DBI}/@code{DBD} client interface. @xref{Perl}. The Perl
@code{DBD}/@code{DBI} client code requires Perl Version 5.004 or later. The
-interface @emph{will not work} if you have an older version of Perl.
+interface @strong{will not work} if you have an older version of Perl.
@strong{MySQL} Perl support also requires that you've installed
@strong{MySQL} client programming support. If you installed @strong{MySQL}
@@ -6672,7 +6674,8 @@ support is in the developer RPM. Make sure you've installed the latter RPM.
As of Version 3.22.8, Perl support is distributed separately from the main
@strong{MySQL} distribution. If you want to install Perl support, the files
-you will need can be obtained from @uref{http://www.mysql.com/Downloads/Contrib/}.
+you will need can be obtained from
+@uref{http://www.mysql.com/Downloads/Contrib/}.
The Perl distributions are provided as compressed @code{tar} archives and
have names like @file{MODULE-VERSION.tar.gz}, where @code{MODULE} is the
@@ -6737,13 +6740,41 @@ To install the @strong{MySQL} @code{DBD} module with ActiveState Perl on
Windows, you should do the following:
@itemize @bullet
-@item Get activestate perl from @uref{http://www.activestate.com/Products/ActivePerl/index.html} and install it.
-@item Open a DOS shell.
-@item If required, set the HTTP_proxy variable. For example, you might try:
-@code{set HTTP_proxy=my.proxy.com:3128}
-@item Start the PPM program: @code{C:\perl\bin\ppm.pl}
-@item If you have not already done so, install @code{DBI}: @code{install DBI}
-@item If this succeeds, install @code{ftp://ftp.de.uu.net/pub/CPAN/authors/id/JWIED/DBD-mysql-1.2212.x86.ppd}
+@item
+Get ActiveState Perl from
+@uref{http://www.activestate.com/Products/ActivePerl/index.html}
+and install it.
+
+@item
+Open a DOS shell.
+
+@item
+If required, set the HTTP_proxy variable. For example, you might try:
+
+@example
+set HTTP_proxy=my.proxy.com:3128
+@end example
+
+@item
+Start the PPM program:
+
+@example
+C:\> c:\perl\bin\ppm.pl
+@end example
+
+@item
+If you have not already done so, install @code{DBI}:
+
+@example
+ppm> install DBI
+@end example
+
+@item
+If this succeeds, run the following command:
+
+@example
+install ftp://ftp.de.uu.net/pub/CPAN/authors/id/JWIED/DBD-mysql-1.2212.x86.ppd
+@end example
@end itemize
The above should work at least with ActiveState Perl Version 5.6.
@@ -6765,13 +6796,22 @@ The @strong{MySQL} Perl distribution contains @code{DBI},
@code{DBD:MySQL} and @code{DBD:ODBC}.
@itemize @bullet
-@item Get the Perl distribution for Windows from
+@item
+Get the Perl distribution for Windows from
@uref{http://www.mysql.com/download.html}.
-@item Unzip the distribution in @code{C:} so that you get a @file{C:\PERL} directory.
-@item Add the directory @file{C:\PERL\BIN} to your path.
-@item Add the directory @file{C:\PERL\BIN\MSWIN32-x86-thread} or
+
+@item
+Unzip the distribution in @code{C:} so that you get a @file{C:\PERL} directory.
+
+@item
+Add the directory @file{C:\PERL\BIN} to your path.
+
+@item
+Add the directory @file{C:\PERL\BIN\MSWIN32-x86-thread} or
@file{C:\PERL\BIN\MSWIN32-x86} to your path.
-@item Test that @code{perl} works by executing @code{perl -v} in a DOS shell.
+
+@item
+Test that @code{perl} works by executing @code{perl -v} in a DOS shell.
@end itemize
@cindex problems, installing Perl
@@ -6779,7 +6819,7 @@ The @strong{MySQL} Perl distribution contains @code{DBI},
@node Perl support problems, , Windows Perl, Perl support
@subsection Problems Using the Perl @code{DBI}/@code{DBD} Interface
-If Perl reports that it can't find the @code{../mysql/mysql.so} module,
+If Perl reports that it can't find the @file{../mysql/mysql.so} module,
then the problem is probably that Perl can't locate the shared library
@file{libmysqlclient.so}.
@@ -6795,13 +6835,13 @@ Copy @code{libmysqlclient.so} to the directory where your other shared
libraries are located (probably @file{/usr/lib} or @file{/lib}).
@item
-On @code{Linux} you can add the pathname of the directory where
-@code{libmysqlclient.so} is located to the @file{/etc/ld.so.conf} file.
+On Linux you can add the pathname of the directory where
+@file{libmysqlclient.so} is located to the @file{/etc/ld.so.conf} file.
-@item
@tindex LD_RUN_PATH environment variable
@tindex Environment variable, LD_RUN_PATH
-Add the pathname of the directory where @code{libmysqlclient.so} is located
+@item
+Add the pathname of the directory where @file{libmysqlclient.so} is located
to the @code{LD_RUN_PATH} environment variable.
@end itemize
@@ -6944,8 +6984,8 @@ In this case, you must use GNU @code{tar} (@code{gtar}) to unpack the
distribution. You can find a precompiled copy for Solaris at
@uref{http://www.mysql.com/Downloads/}.
-Sun native threads work only on Solaris 2.5 and higher. For Version 2.4 and
-earlier, @strong{MySQL} will automatically use MIT-pt threads.
+Sun native threads work only on Solaris 2.5 and higher. For Version 2.4 and
+earlier, @strong{MySQL} will automatically use MIT-pthreads.
@xref{MIT-pthreads}.
If you get the following error from configure:
@@ -6955,10 +6995,10 @@ checking for restartable system calls... configure: error can not run test
programs while cross compiling
@end example
-this means that you have something wrong with your compiler installation!
+This means that you have something wrong with your compiler installation!
In this case you should upgrade your compiler to a newer version. You may
also be able to solve this problem by inserting the following row into the
-@code{config.cache} file:
+@file{config.cache} file:
@example
ac_cv_sys_restartable_syscalls=$@{ac_cv_sys_restartable_syscalls='no'@}
@@ -7002,7 +7042,7 @@ to this:
@end example
If you turn on @code{__STDC__} with the @code{-Xc} option, the Sun compiler
-can't compile with the Solaris @file{pthread.h} header file. This is a Sun
+can't compile with the Solaris @file{pthread.h} header file. This is a Sun
bug (broken compiler or broken include file).
If @code{mysqld} issues the error message shown below when you run it, you have
@@ -7061,17 +7101,19 @@ The problem can be avoided by one of the following methods:
@item
Link the client with the following flag (instead of @code{-Lpath}):
@code{-Wl,r/full-path-to-libmysqlclient.so}.
+
@item
-Copy @code{libmysqclient.so} to @file{/usr/lib}.
-@item
+Copy @file{libmysqclient.so} to @file{/usr/lib}.
+
@tindex LD_RUN_PATH environment variable
@tindex Environment variable, LD_RUN_PATH
-Add the pathname of the directory where @code{libmysqlclient.so} is located
+@item
+Add the pathname of the directory where @file{libmysqlclient.so} is located
to the @code{LD_RUN_PATH} environment variable before running your client.
@end itemize
When using the @code{--with-libwrap} configure option, you must also
-include the libraries that @code{libwrap.a} needs:
+include the libraries that @file{libwrap.a} needs:
@example
--with-libwrap="/opt/NUtcpwrapper-7.6/lib/libwrap.a -lnsl -lsocket
@@ -7084,6 +7126,7 @@ you don't have @code{zlib} installed, you have two options:
@item
If you want to be able to use the compressed communication protocol,
you need to get and install zlib from ftp.gnu.org.
+
@item
Configure with @code{--with-named-z-libs=no}.
@end itemize
@@ -7094,7 +7137,7 @@ into @strong{MySQL}, try adding @code{-lgcc} to the link line for the
If you would like @strong{MySQL} to start automatically, you can copy
@file{support-files/mysql.server} to @file{/etc/init.d} and create a
-symbolic link to it named @code{/etc/rc3.d/S99mysql.server}.
+symbolic link to it named @file{/etc/rc3.d/S99mysql.server}.
@node Solaris 2.7, Solaris x86, Solaris, Source install system issues
@subsection Solaris 2.7/2.8 Notes
@@ -7105,7 +7148,7 @@ of the Solaris 2.6 issues also apply for Solaris 2.7 and 2.8.
Note that @strong{MySQL} Version 3.23.4 and above should be able to autodetect
new versions of Solaris and enable workarounds for the following problems!
-Solaris 2.7 / 2.8 has some bugs in the include files. You may see the
+Solaris 2.7 / 2.8 has some bugs in the include files. You may see the
following error when you use @code{gcc}:
@example
@@ -7133,7 +7176,7 @@ way, after you make the fix, you should remove @file{config.cache} and run
If you get errors like this when you run @code{make}, it's because
@code{configure} didn't detect the @file{curses.h} file (probably
-because of the error in @code{/usr/include/widec.h}):
+because of the error in @file{/usr/include/widec.h}):
@example
In file included from mysql.cc:50:
@@ -7146,8 +7189,10 @@ The solution to this is to do one of the following:
@itemize @bullet
@item
Configure with @code{CFLAGS=-DHAVE_CURSES_H CXXFLAGS=-DHAVE_CURSES_H ./configure}.
+
@item
Edit @file{/usr/include/widec.h} as indicted above and rerun configure.
+
@item
Remove the @code{#define HAVE_TERM} line from @file{config.h} file and
run @code{make} again.
@@ -7161,13 +7206,16 @@ following methods:
@itemize @bullet
@item
Add @file{/usr/local/lib} to @code{LD_LIBRARY_PATH}.
+
@item
-Add a link to @code{libz.so} from @code{/lib}.
+Add a link to @file{libz.so} from @file{/lib}.
+
@item
If you are using Solaris 8, you can install the optional zlib from your
Solaris 8 CD distribution.
+
@item
-configure @strong{MySQL} with the @code{--with-named-z-libs=no} option.
+Configure @strong{MySQL} with the @code{--with-named-z-libs=no} option.
@end itemize
@node Solaris x86, SunOS, Solaris 2.7, Source install system issues
@@ -7196,9 +7244,8 @@ it with a trace file or under @code{gdb}. @xref{Debugging server}.
On SunOS 4, MIT-pthreads is needed to compile @strong{MySQL}, which in turn
means you will need GNU @code{make}.
-Some SunOS 4 systems have problems with dynamic libraries and
-@code{libtool}. You can use the following @code{configure} line to avoid
-this problem:
+Some SunOS 4 systems have problems with dynamic libraries and @code{libtool}.
+You can use the following @code{configure} line to avoid this problem:
@example
shell> ./configure --disable-shared --with-mysqld-ldflags=-all-static
@@ -7215,114 +7262,113 @@ of function} warnings. These may be ignored.
@strong{MySQL} uses LinuxThreads on Linux. If you are using an old
Linux version that doesn't have @code{glibc2}, you must install
-LinuxThreads before trying to compile
-@strong{MySQL}. @uref{http://www.mysql.com/Downloads/Linux}
+LinuxThreads before trying to compile @strong{MySQL}. You can get
+LinuxThreads at @uref{http://www.mysql.com/Downloads/Linux}.
Note that @code{glibc} versions before and including Version 2.1.1 have
a fatal bug in @code{pthread_mutex_timedwait} handling, which is used
-when you do @code{INSERT DELAYED}. We recommend you to not use
+when you do @code{INSERT DELAYED}. We recommend you to not use
@code{INSERT DELAYED} before upgrading glibc.
If you plan to have 1000+ concurrent connections, you will need to make
some changes to LinuxThreads, recompile it, and relink @strong{MySQL} against
-the new @file{libpthread.a}. Increase @code{PTHREAD_THREADS_MAX} in
+the new @file{libpthread.a}. Increase @code{PTHREAD_THREADS_MAX} in
@file{sysdeps/unix/sysv/linux/bits/local_lim.h} to 4096 and decrease
@code{STACK_SIZE} in @file{linuxthreads/internals.h} to 256 KB. The paths are
-relative to the root of @code{glibc} Note that MySQL
-will not be stable with around 600-1000 connections if @code{STACK_SIZE}
-is the default of 2 MB.
+relative to the root of @code{glibc} Note that @strong{MySQL} will not be
+stable with around 600-1000 connections if @code{STACK_SIZE} is the default
+of 2 MB.
-@code{STACK_SIZE} constant in @strong{LinuxThreads} controls the spacing
-of thread
-stacks in the address space. It needs to be large enough so that there will
+The @code{STACK_SIZE} constant in LinuxThreads controls the spacing of thread
+stacks in the address space. It needs to be large enough so that there will
be plenty of room for the stack of each individual thread, but small enough
to keep the stack of some thread from running into the global @code{mysqld}
-data. Unfortunately, Linux implementation of @code{mmap()}, as we have
+data. Unfortunately, the Linux implementation of @code{mmap()}, as we have
experimentally discovered, will successfully unmap an already mapped region
if you ask it to map out an address already in use, zeroing out the data
-on the entire page, instead of returning an error. So the safety of
-@code{mysqld} or any other threaded
-application depends on the "gentleman" behaviour of the code
-that creates threads - the user must take measures to make sure the number
-of running threads at any time is sufficiently low for thread stacks to
-stay away from the global heap.
-With @code{mysqld}, you should enforce this "gentleman"
-behaviour by setting a reasonable value for @code{max_connections} variable.
+on the entire page, instead of returning an error. So, the safety of
+@code{mysqld} or any other threaded application depends on the "gentleman"
+behaviour of the code that creates threads. The user must take measures to
+make sure the number of running threads at any time is sufficiently low for
+thread stacks to stay away from the global heap. With @code{mysqld}, you
+should enforce this "gentleman" behaviour by setting a reasonable value for
+the @code{max_connections} variable.
+
If you build @strong{MySQL} yourself and do not what to mess with patching
-@strong{LinuxThreads}, you should set @code{max_connections} to a value no
-higher than 500. It should be even less if you have a large key buffer,
-large heap tables, or some other things that make @strong{mysqld} allocate
-a lot of memory or if you are running a 2.2 kernel with a 2 GB patch. If
-you are using our binary or RPM version 3.23.25 or later, you can safely set
-@code{max_connections} at 1500 again assuming no large key buffer or heap
-tables with lots of data. The more you reduce @code{STACK_SIZE} in
-LinuxThreads the more threads you can safely create. We recommend the values
-between 128K and 256 K.
-
-If you use a lot of concurrent connections, you may suffer from a 2.2
-kernel "feature" in 2.2 kernel that penalizes a process for
-forking or cloning a child
-in an attempt to prevent a fork bomb attack. This will cause @strong{MySQL}
-not to scale well as you increase the number of concurrent clients. On
+LinuxThreads, you should set @code{max_connections} to a value no higher
+than 500. It should be even less if you have a large key buffer, large
+heap tables, or some other things that make @strong{mysqld} allocate a lot
+of memory or if you are running a 2.2 kernel with a 2GB patch. If you are
+using our binary or RPM version 3.23.25 or later, you can safely set
+@code{max_connections} at 1500, assuming no large key buffer or heap tables
+with lots of data. The more you reduce @code{STACK_SIZE} in LinuxThreads
+the more threads you can safely create. We recommend the values between
+128K and 256K.
+
+If you use a lot of concurrent connections, you may suffer from a "feature"
+in the 2.2 kernel that penalizes a process for forking or cloning a child
+in an attempt to prevent a fork bomb attack. This will cause @strong{MySQL}
+not to scale well as you increase the number of concurrent clients. On
single CPU systems, we have seen this manifested in a very slow thread
-creation - which means it may take a long time to connect to @strong{MySQL}
-(as long as 1 minute), and it may take just as long to shut it down. On
+creation, which means it may take a long time to connect to @strong{MySQL}
+(as long as 1 minute), and it may take just as long to shut it down. On
multiple CPU systems, we have observed a gradual drop in query speed as
-the number of clients increases. In the process of trying to find a
+the number of clients increases. In the process of trying to find a
solution, we have received a kernel patch from one of our users, who
-claimed it made a lot of difference for his site. We have done some
+claimed it made a lot of difference for his site. We have done some
limited testing in which the patch greatly improved the scalability of
-@strong{MySQL}. The patch is available here
-(@uref{http://www.mysql.com/Downloads/Patches/linux-fork.patch}). We have
-done a rather extensive testing of this patch - Sasha Pachev has bravely put
-it on his development machine, and it now has run without problems for a year.
-Eventually, we have felt sufficiently confident about it that we installed it
-on several systems of one of our biggest customers. The patch has significantly
-improved @code{MySQL} performance without causing any problems. So it should
-be pretty safe. This issue has been fixed in the 2.4 kernel.
-
-We have also tested @strong{MySQL} on 2.4 kernel on a 2 CPU machine and
-found @strong{MySQL} scales MUCH better - there was virtually no slowdown
-on query throughput all the way up
-to 1000 clients. If your plan to set up a
+@strong{MySQL}.
+
+The patch is available at
+@uref{http://www.mysql.com/Downloads/Patches/linux-fork.patch}. We have
+done a rather extensive testing of this patch, it has run, without problems,
+on some of our development machines, for more than a year. Eventually, we
+have felt sufficiently confident about it that we installed it on several
+systems of one of our biggest customers. The patch has significantly
+improved @code{MySQL} performance without causing any problems. It should
+be pretty safe. This issue has been fixed in the 2.4 kernel.
+
+We have also tested @strong{MySQL} on 2.4 kernel on 2- and 4-CPU machines and
+found @strong{MySQL} scales MUCH better. There was virtually no slowdown
+on query throughput all the way up to 1000 clients. If you plan to set up a
dedicated Linux SMP machine to run @strong{MySQL} under heavy load, we
-recommend that you give 2.4 kernel a try! We are currently trying to collect
-some info on how well @code{MySQL} performs on 2.4 kernel on 4-way and 8-way
-systems. If you have access such a system and have done some benchmarks,
-please send a mail to @email{docs@@mysql.com} with the results - we will
-include them in the manual.
-
-The following paragraph is only relevant if you are using a glibc
-version older than 2.2.2 (Note that if you are going to use MANY
-connections to MySQL, you still need to change the STACK_SIZE and
+recommend that you give the 2.4 kernel a try! We are currently trying to
+collect more information on how well @code{MySQL} performs on the 2.4 kernel
+on 4- and 8-CPU systems. If you have access such a system and have done some
+benchmarks, please send a mail to @email{docs@@mysql.com} with the results,
+and we will include them in the manual.
+
+The following paragraph is only relevant if you are using a glibc version
+older than 2.2.2 (Note that if you are going to use MANY connections to
+@strong{MySQL}, you still need to change the STACK_SIZE and
PTHREAD_THREADS_MAX variables in glibc 2.2.2).
There is another issue that greatly hurts @strong{MySQL} performance,
-especially on SMP systems. The old implementation of mutex in
+especially on SMP systems. The old implementation of mutexes in
LinuxThreads was also very bad for programs with many threads that only
-hold the mutex for a short time. On an SMP system, ironic as it is, if
+hold the mutex for a short time. On an SMP system, ironic as it is, if
you link @strong{MySQL} against unmodified @strong{LinuxThreads},
removing processors from the machine improves @strong{MySQL} performance
in many cases. We have made a patch available for glibc 2.1,
-@uref{http://www.mysql.com/Downloads/Linux/linuxthreads-2.1-patch,linuxthreads-2.1-patch}
+@uref{http://www.mysql.com/Downloads/Linux/linuxthreads-2.1-patch}
and for glibc 2.2,
-@uref{http://www.mysql.com/Downloads/Linux/linuxthreads-2.2-patch,linuxthreads-2.2-patch}
-to correct this behaveour. Please note that since there are so many
+@uref{http://www.mysql.com/Downloads/Linux/linuxthreads-2.2-patch}
+to correct this behavior. Please note that since there are so many
versions of glibc floating around, the patch may not apply cleanly to
yours, so some manual work may be required.
We recommend that you use the above patches to build a special static
-version of @code{libpthread.a} and use it only for statically linking
-against @code{MySQL}. We know that the patch is safe for @code{MySQL}
+version of @file{libpthread.a} and use it only for statically linking
+against @code{MySQL}. We know that the patch is safe for @code{MySQL}
and significantly improves its performance, but we cannot say anything
-about other applications. If you link other applications against the
+about other applications. If you link other applications against the
patched version of the library, or build a patched shared version and
install it on your system, you are doing it at your own risk with regard
to other applications that depend on @code{LinuxThreads}.
If you can't start @code{mysqld} or if @code{mysql_install_db} doesn't work,
please continue reading! This only happens on Linux system with problems in
-the LinuxThreads or @code{libc}/@code{glibc} libraries. There are a lot of
+the LinuxThreads or @code{libc}/@code{glibc} libraries. There are a lot of
simple workarounds to get @strong{MySQL} to work! The simplest is to use the
binary version of @strong{MySQL} (not the RPM) for Linux x86. One nice
aspect of this version is that it's probably 10% faster than any version you
@@ -7333,15 +7379,15 @@ systems that use @code{libc} (like RedHat 4.x or Slackware), you will get
some non-fatal problems with hostname resolution.
@xref{Binary notes-Linux}.
-@code{myisamchk} hangs with @code{libc.so.5.3.12}. Upgrading to the newest
+@code{myisamchk} hangs with @code{libc.so.5.3.12}. Upgrading to the newest
@code{libc} fixes this problem.
When using LinuxThreads you will see a minimum of three processes
-running. These are in fact threads. There will be one thread for the
+running. These are in fact threads. There will be one thread for the
LinuxThreads manager, one thread to handle connections, and one thread
to handle alarms and signals.
-Note that the linux kernel and the linuxthread library can by default
+Note that the Linux kernel and the LinuxThread library can by default
only have 1024 threads. This means that you can only have up to 1021
connections to @strong{MySQL} on an unpatched system. The page
@uref{http://www.volano.com/linuxnotes.html} contains information how to
@@ -7349,13 +7395,13 @@ go around this limit.
If you see a dead @code{mysqld} daemon process with @code{ps}, this usually
means that you have found a bug in @strong{MySQL} or you have a corrupted
-table. @xref{Crashing}.
+table. @xref{Crashing}.
-To get a core dump on Linux if mysqld dies with a SIGSEGV
-signal, you can start mysqld with the @code{--core-file} option. Note
-that you also probably need to raise the @code{core file size} by adding
-@code{ulimit -c 1000000} to @code{safe_mysqld} or starting @code{safe_mysqld}
-with @code{--core-file-sizes=1000000}. @xref{safe_mysqld}.
+To get a core dump on Linux if mysqld dies with a SIGSEGV signal, you can
+start mysqld with the @code{--core-file} option. Note that you also probably
+need to raise the @code{core file size} by adding @code{ulimit -c 1000000} to
+@code{safe_mysqld} or starting @code{safe_mysqld} with
+@code{--core-file-sizes=1000000}. @xref{safe_mysqld}.
@c the stuff below is really out of date - hardly anybody uses it anymore
@@ -7374,7 +7420,7 @@ If so, you should upgrade your version of @code{rpm} to
@file{rpm-2.4.11-1.i386.rpm} and @file{rpm-devel-2.4.11-1.i386.rpm} (or later).
You can get the upgrades of libraries to RedHat Version 4.2 from
-@uref{ftp://ftp.redhat.com/updates/4.2/i386}. Or
+@uref{ftp://ftp.redhat.com/updates/4.2/i386}. Or
@uref{http://www.sunsite.unc.edu/pub/Linux/distributions/redhat/code/rpm/}
for other distributions.
@@ -7391,11 +7437,13 @@ methods:
@item
Link the client with the following flag (instead of @code{-Lpath}):
@code{-Wl,r/path-libmysqlclient.so}.
+
@item
Copy @code{libmysqclient.so} to @file{/usr/lib}.
-@item
+
@tindex LD_RUN_PATH environment variable
-@tindex Environment variable, LD_RUN_PATH
+@tindex environment variable, LD_RUN_PATH
+@item
Add the pathname of the directory where @code{libmysqlclient.so} is located
to the @code{LD_RUN_PATH} environment variable before running your client.
@end itemize
@@ -7425,7 +7473,7 @@ CC=fcc CFLAGS="-O -K fast -K lib -K omitfp -Kpreex -D_GNU_SOURCE -DCONST=const -
@subsubsection Linux-x86 Notes
@strong{MySQL} requires @code{libc} Version 5.4.12 or newer. It's known to
-work with @code{libc} 5.4.46. @code{glibc} Version 2.0.6 and later should
+work with @code{libc} 5.4.46. @code{glibc} Version 2.0.6 and later should
also work. There have been some problems with the @code{glibc} RPMs from
RedHat, so if you have problems, check whether or not there are any updates!
The @code{glibc} 2.0.7-19 and 2.0.7-29 RPMs are known to work.
@@ -7466,7 +7514,7 @@ under the @strong{MySQL} installation directory or in the
If @code{mysqld} always core dumps when it starts up, the problem may be that
you have an old @file{/lib/libc.a}. Try renaming it, then remove
@file{sql/mysqld} and do a new @code{make install} and try again. This
-problem has been reported on some Slackware installations. RedHat Version 5.0
+problem has been reported on some Slackware installations. RedHat Version 5.0
also has a similar problem with some new @code{glibc} versions.
@xref{Linux-RedHat50}.
@@ -7497,17 +7545,17 @@ any trouble!
The updates are needed because there is a bug in @code{glibc} 2.0.5 in how
@code{pthread_key_create} variables are freed. With @code{glibc} 2.0.5, you
-must use a statically linked @strong{MySQL} binary distribution. If you
+must use a statically linked @strong{MySQL} binary distribution. If you
want to compile from source, you must install the corrected version of
LinuxThreads from @uref{http://www.mysql.com/Downloads/Linux} or upgrade your
@code{glibc}.
If you have an incorrect version of @code{glibc} or LinuxThreads, the symptom
-is that @code{mysqld} crashes after each connection. For example,
+is that @code{mysqld} crashes after each connection. For example,
@code{mysqladmin version} will crash @code{mysqld} when it finishes!
Another symptom of incorrect libraries is that @code{mysqld} crashes at
-once when it starts. On some Linux systems, this can be fixed by configuring
+once when it starts. On some Linux systems, this can be fixed by configuring
like this:
@example
@@ -7520,6 +7568,7 @@ On Redhat Version 5.0, the easy way out is to install the @code{glibc}
For the source distribution of @code{glibc} 2.0.7, a patch that is easy to
apply and is tested with @strong{MySQL} may be found at:
+
@example
@uref{http://www.mysql.com/Download/Linux/glibc-2.0.7-total-patch.tar.gz}
@end example
@@ -7563,40 +7612,40 @@ the limits in @file{include/linux/tasks.h} and recompile your kernel!
@subsubsection Linux-SPARC Notes
In some implementations, @code{readdir_r()} is broken. The symptom is that
-@code{SHOW DATABASES} always returns an empty set. This
-can be fixed by removing @code{HAVE_READDIR_R} from @file{config.h} after
-configuring and before compiling.
+@code{SHOW DATABASES} always returns an empty set. This can be fixed by
+removing @code{HAVE_READDIR_R} from @file{config.h} after configuring and
+before compiling.
Some problems will require patching your Linux installation. The patch can
be found at
-@uref{http://www.mysql.com/Downloads/patches/Linux-sparc-2.0.30.diff}. This patch is
-against the Linux distribution @file{sparclinux-2.0.30.tar.gz} that is
-available at @code{vger.rutgers.edu} (a version of Linux that was
-never merged with the official 2.0.30). You must also install
-LinuxThreads Version 0.6 or newer.
+@uref{http://www.mysql.com/Downloads/patches/Linux-sparc-2.0.30.diff}.
+This patch is against the Linux distribution @file{sparclinux-2.0.30.tar.gz}
+that is available at @code{vger.rutgers.edu} (a version of Linux that was
+never merged with the official 2.0.30). You must also install LinuxThreads
+Version 0.6 or newer.
@node Linux-Alpha, MKLinux, Linux-SPARC, Linux
@subsubsection Linux-Alpha Notes
@strong{MySQL} Version 3.23.12 is the first @strong{MySQL} version that is
-tested on Linux-Alpha. If you plan to use @strong{MySQL} on
-Linux-Alpha, you should ensure that you have this version or newer.
+tested on Linux-Alpha. If you plan to use @strong{MySQL} on Linux-Alpha,
+you should ensure that you have this version or newer.
-We have tested @strong{MySQL} on Alpha with our benchmarks + test suite and
-it appears to work nicely. The main thing we haven't yet had time to test
-is how things works with many concurrent users.
+We have tested @strong{MySQL} on Alpha with our benchmarks and test suite,
+and it appears to work nicely. The main thing we haven't yet had time to
+test is how things works with many concurrent users.
When we compiled the standard @strong{MySQL} binary we are using SuSE 6.4,
kernel 2.2.13-SMP, Compaq C compiler (V6.2-504) and Compaq C++ compiler
-(V6.3-005) on a Comaq DS20 machine with an Alpha EV6 processor
+(V6.3-005) on a Comaq DS20 machine with an Alpha EV6 processor.
-You can find the above compilers at
-@uref{http://www.support.compaq.com/alpha-tools}). By using these compilers,
+You can find the above compilers at
+@uref{http://www.support.compaq.com/alpha-tools}). By using these compilers,
instead of gcc, we get about 9-14 % better performance with @strong{MySQL}.
Note that the configure line optimized the binary for the current CPU; This
-means you can only use our binary if you have an Alpha EV6 processor.
-We also compile statically to avoid library problems.
+means you can only use our binary if you have an Alpha EV6 processor. We also
+compile statically to avoid library problems.
@example
CC=ccc CFLAGS="-fast" CXX=cxx CXXFLAGS="-fast -noexceptions -nortti" ./configure --prefix=/usr/local/mysql --disable-shared --with-extra-charsets=complex --enable-thread-safe-client --with-mysqld-ldflags=-non_shared --with-client-ldflags=-non_shared
@@ -7614,10 +7663,11 @@ Some known problems when running @strong{MySQL} on Linux-Alpha:
@item
Debugging threaded applications like @strong{MySQL} will not work with
@code{gdb 4.18}. You should download and use gdb 5.0 instead!
+
@item
If you try linking mysqld statically when using gcc, the resulting image
will core dump at start. In other words, @strong{DON'T} use
-@code{--with-mysqld-ldflags=-all-static} with gcc
+@code{--with-mysqld-ldflags=-all-static} with gcc.
@end itemize
@node MKLinux, Qube2, Linux-Alpha, Linux
@@ -7631,10 +7681,9 @@ will core dump at start. In other words, @strong{DON'T} use
To get @strong{MySQL} to work on Qube2, (Linux Mips), you need the
newest @code{glibc} libraries (@code{glibc-2.0.7-29C2} is known to
-work). You must also use the @code{egcs} C++ compiler
+work). You must also use the @code{egcs} C++ compiler
(@code{egcs-1.0.2-9}, @code{gcc 2.95.2} or newer).
-
@node Linux-Ia64, , Qube2, Linux
@subsubsection Linux IA64 Notes
@@ -7649,11 +7698,12 @@ CFLAGS="-O2" CXX=gcc CXXFLAGS="-O2 -felide-constructors -fno-exceptions -fno-rtt
@end example
After @code{make} you will get an error that @code{sql/opt_range.cc}
-will not compile (internal compiler error). To fix this, go to the sql
-directory and type @code{make} again. Copy the compile line, but change
--O2 to -O0. The file should now compile.
+will not compile (internal compiler error). To fix this, go to the sql
+directory and type @code{make} again. Copy the compile line, but change
+-O2 to -O0. The file should now compile.
Now you can do:
+
@example
cd ..
make
@@ -7686,7 +7736,7 @@ mysqld.cc:626: passing long unsigned int *' as argument 3 of
accept(int,sockadddr *, int *)'
@end example
-You can safely ignore these warnings. They occur because @code{configure}
+You can safely ignore these warnings. They occur because @code{configure}
can detect only errors, not warnings.
If you start the server directly from the command line, you may have problems
@@ -7829,7 +7879,7 @@ Please submit a full bug report.
To fix this you should change to the @code{sql} directory and do a ``cut
and paste'' of the last @code{gcc} line, but change @code{-O3} to
@code{-O0} (or add @code{-O0} immediately after @code{gcc} if you don't
-have any @code{-O} option on your compile line.) After this is done you
+have any @code{-O} option on your compile line.) After this is done you
can just change back to the top-level directly and run @code{make}
again.
@@ -7848,12 +7898,12 @@ shell> chcap "CAP_SCHED_MGT+epi" /opt/mysql/libexec/mysqld
You may have to undefine some things in @file{config.h} after running
@code{configure} and before compiling.
-In some Irix implementations, the @code{alloca()} function is broken. If the
+In some Irix implementations, the @code{alloca()} function is broken. If the
@code{mysqld} server dies on some @code{SELECT} statements, remove the lines
from @file{config.h} that define @code{HAVE_ALLOC} and @code{HAVE_ALLOCA_H}.
-If @code{mysqladmin create} doesn't work, remove the line from
-@file{config.h} that defines @code{HAVE_READDIR_R}. You may have to remove
-the @code{HAVE_TERM_H} line as well.
+If @code{mysqladmin create} doesn't work, remove the line from @file{config.h}
+that defines @code{HAVE_READDIR_R}. You may have to remove the
+@code{HAVE_TERM_H} line as well.
SGI recommends that you install all of the patches on this page as a set:
http://support.sgi.com/surfzone/patches/patchset/6.2_indigo.rps.html
@@ -7863,7 +7913,7 @@ latest @code{rld} rollup, and the latest @code{libc} rollup.
You definitely need all the POSIX patches on this page, for pthreads support:
-http://support.sgi.com/surfzone/patches/patchset/6.2_posix.rps.html
+@uref{http://support.sgi.com/surfzone/patches/patchset/6.2_posix.rps.html}
If you get the something like the following error when compiling
@file{mysql.cc}:
@@ -7872,8 +7922,8 @@ If you get the something like the following error when compiling
"/usr/include/curses.h", line 82: error(1084): invalid combination of type
@end example
-then type the following in the top-level directory of your @strong{MySQL}
-source tree:
+Type the following in the top-level directory of your @strong{MySQL} source
+tree:
@example
shell> extra/replace bool curses_bool < /usr/include/curses.h > include/curses.h
@@ -7881,8 +7931,8 @@ shell> make
@end example
There have also been reports of scheduling problems. If only one thread is
-running, things go slow. Avoid this by starting another client. This may lead
-to a 2-to-10-fold increase in execution speed thereafter for the other
+running, things go slow. Avoid this by starting another client. This may
+lead to a 2-to-10-fold increase in execution speed thereafter for the other
thread. This is a poorly understood problem with Irix threads; you may have
to improvise to find solutions until this can be fixed.
@@ -7900,19 +7950,21 @@ CC=gcc CXX=gcc CXXFLAGS=-O3 \
FreeBSD 3.x is recommended for running @strong{MySQL} since the thread package
is much more integrated.
-The easiest and therefor the preferred way to install is to use the
-mysql-server and mysql-client ports available on
-@uref{http://www.freebsd.org}.
+The easiest and therefor the preferred way to install is to use the
+mysql-server and mysql-client ports available on @uref{http://www.freebsd.org}.
Using these gives you:
@itemize @bullet
@item
A working @strong{MySQL} with all optimizations known to work on your version
of FreeBSD enabled.
+
@item
Automatic configuration and build.
+
@item
Startup scripts installed in /usr/local/etc/rc.d.
+
@item
Ability to see which files that are installed with pkg_info -L. And to
remove them all with pkg_delete if you no longer want @strong{MySQL} on that
@@ -7927,7 +7979,7 @@ The @strong{MYSQL} Makefiles require GNU make (@code{gmake}) to work.
If you want to compile @strong{MYSQL} you need to install GNU make
first.
-Be sure to have your name resolver setup correct. Otherwise you may
+Be sure to have your name resolver setup correct. Otherwise you may
experience resolver delays or failures when connecting to mysqld.
Make sure that the @code{localhost} entry in the @file{/etc/hosts} file is
@@ -7939,11 +7991,11 @@ correct (otherwise you will have problems connecting to the database). The
@end example
If you notice that @code{configure} will use MIT-pthreads, you should read
-the MIT-pthreads notes. @xref{MIT-pthreads}.
+the MIT-pthreads notes. @xref{MIT-pthreads}.
If you get an error from @code{make install} that it can't find
@file{/usr/include/pthreads}, @code{configure} didn't detect that you need
-MIT-pthreads. This is fixed by executing these commands:
+MIT-pthreads. This is fixed by executing these commands:
@example
shell> rm config.cache
@@ -7951,23 +8003,23 @@ shell> ./configure --with-mit-threads
@end example
FreeBSD is also known to have a very low default file handle limit.
-@xref{Not enough file handles}. Uncomment the ulimit -n section in
+@xref{Not enough file handles}. Uncomment the ulimit -n section in
safe_mysqld or raise the limits for the mysqld user in /etc/login.conf
-(and rebuild it witg cap_mkdb /etc/login.conf.) Also be sure you set the
+(and rebuild it with cap_mkdb /etc/login.conf). Also be sure you set the
appropriate class for this user in the password file if you are not
-using the default (use: chpass mysqld-user-name). @xref{safe_mysqld}.
+using the default (use: chpass mysqld-user-name). @xref{safe_mysqld}.
If you get problems with the current date in @strong{MySQL}, setting the
-@code{TZ} variable will probably help. @xref{Environment variables}.
+@code{TZ} variable will probably help. @xref{Environment variables}.
To get a secure and stable system you should only use FreeBSD kernels
-that are marked @code{-STABLE}
+that are marked @code{-STABLE}.
@node NetBSD, OpenBSD, FreeBSD, Source install system issues
@subsection NetBSD notes
-To compile on NetBSD you need GNU @code{make}. Otherwise the compile will crash
-when @code{make} tries to run @code{lint} on C++ files.
+To compile on NetBSD you need GNU @code{make}. Otherwise the compile will
+crash when @code{make} tries to run @code{lint} on C++ files.
@node OpenBSD, BSDI, NetBSD, Source install system issues
@subsection OpenBSD Notes
@@ -7979,6 +8031,7 @@ when @code{make} tries to run @code{lint} on C++ files.
@node OpenBSD 2.5, OpenBSD 2.8, OpenBSD, OpenBSD
@subsubsection OpenBSD 2.5 Notes
+
On OpenBSD Version 2.5, you can compile @strong{MySQL} with native threads
with the following options:
@@ -7988,11 +8041,12 @@ CFLAGS=-pthread CXXFLAGS=-pthread ./configure --with-mit-threads=no
@node OpenBSD 2.8, , OpenBSD 2.5, OpenBSD
@subsubsection OpenBSD 2.8 Notes
+
Our users have reported that OpenBSD 2.8 has a threading bug which causes
-problems with MySQL. The OpenBSD Developers have fixed the problem, but as
-of January 25th, 2001, it's only available in the ``-current'' branch. The
-symptoms of this threading bug are: slow response, high load, high cpu usage,
-and crashes.
+problems with @strong{MySQL}. The OpenBSD Developers have fixed the problem,
+but as of January 25th, 2001, it's only available in the ``-current'' branch.
+The symptoms of this threading bug are: slow response, high load, high CPU
+usage, and crashes.
@node BSDI, SCO, OpenBSD, Source install system issues
@subsection BSD/OS Notes
@@ -8025,12 +8079,12 @@ If you are using @code{gcc}, you may also use have to use the
@file{sql_yacc.cc}.
If you get problems with the current date in @strong{MySQL}, setting the
-@code{TZ} variable will probably help. @xref{Environment variables}.
+@code{TZ} variable will probably help. @xref{Environment variables}.
@node BSDI3, BSDI4, BSDI2, BSDI
@subsubsection BSD/OS Version 3.x Notes
-Upgrade to BSD/OS Version 3.1. If that is not possible, install
+Upgrade to BSD/OS Version 3.1. If that is not possible, install
BSDIpatch M300-038.
Use the following command when configuring @strong{MySQL}:
@@ -8071,8 +8125,8 @@ If this doesn't work and you are using @code{bash}, try switching to
@subsubsection BSD/OS Version 4.x Notes
BSDI Version 4.x has some thread-related bugs. If you want to use
-@strong{MySQL} on this, you should install all thread-related patches. At least
-M400-023 should be installed.
+@strong{MySQL} on this, you should install all thread-related patches. At
+least M400-023 should be installed.
On some BSDI Version 4.x systems, you may get problems with shared libraries.
The symptom is that you can't execute any client programs, for example,
@@ -8099,7 +8153,7 @@ The current port is tested only on a ``sco3.2v5.0.4'' and
``sco3.2v5.0.5'' system. There has also been a lot of progress on a
port to ``sco 3.2v4.2''.
-For the moment the recommended compiler on OpenServer is gcc 2.95.2. With this
+For the moment the recommended compiler on OpenServer is gcc 2.95.2. With this
you should be able to compile @strong{MySQL} with just:
@example
@@ -8117,16 +8171,19 @@ to execute the following command:
@example
shell> cp -p /usr/include/pthread/stdtypes.h /usr/local/lib/gcc-lib/i386-pc-sco3.2v5.0.5/egcs-2.91.66/include/pthread/
@end example
+
@item
You need the port of GCC 2.5.x for this product and the Development
system. They are required on this version of SCO Unix. You cannot
just use the GCC Dev system.
+
@item
You should get the FSU Pthreads package and install it first. This can be
found at
@uref{http://www.cs.wustl.edu/~schmidt/ACE_wrappers/FSU-threads.tar.gz}.
You can also get a precompiled package from
@uref{http://www.mysql.com/Downloads/SCO/FSU-threads-3.5c.tar.gz}.
+
@item
FSU Pthreads can be compiled with SCO Unix 4.2 with tcpip. Or
OpenServer 3.0 or Open Desktop 3.0 (OS 3.0 ODT 3.0), with the SCO
@@ -8135,37 +8192,47 @@ Development System installed using a good port of GCC 2.5.x ODT or OS
without a good port. The port for this product requires the SCO Unix
Development system. Without it, you are missing the libraries and the
linker that is needed.
+
@item
To build FSU Pthreads on your system, do the following:
+
@enumerate a
@item
Run @code{./configure} in the @file{threads/src} directory and select
the SCO OpenServer option. This command copies @file{Makefile.SCO5} to
@file{Makefile}.
+
@item
Run @code{make}.
+
@item
To install in the default @file{/usr/include} directory, login as root,
then @code{cd} to the @file{thread/src} directory, and run @code{make
install}.
@end enumerate
+
@item
Remember to use GNU @code{make} when making @strong{MySQL}.
+
@item
If you don't start @code{safe_mysqld} as root, you probably will get only the
default 110 open files per process. @code{mysqld} will write a note about this
in the log file.
+
@item
With SCO 3.2V5.0.5, you should use FSU Pthreads version 3.5c or newer.
You should also use gcc 2.95.2 or newer!
The following @code{configure} command should work:
+
@example
shell> ./configure --prefix=/usr/local/mysql --disable-shared
@end example
+
@item
With SCO 3.2V4.2, you should use FSU Pthreads version 3.5c or newer.
The following @code{configure} command should work:
+
@example
shell> CFLAGS="-D_XOPEN_XPG4" CXX=gcc CXXFLAGS="-D_XOPEN_XPG4" \
./configure \
@@ -8173,11 +8240,12 @@ shell> CFLAGS="-D_XOPEN_XPG4" CXX=gcc CXXFLAGS="-D_XOPEN_XPG4" \
--with-named-thread-libs="-lgthreads -lsocket -lgen -lgthreads" \
--with-named-curses-libs="-lcurses"
@end example
+
You may get some problems with some include files. In this case, you can
find new SCO-specific include files at
@uref{http://www.mysql.com/Downloads/SCO/SCO-3.2v4.2-includes.tar.gz}.
-You should unpack this file in the @file{include}
-directory of your @strong{MySQL} source tree.
+You should unpack this file in the @file{include} directory of your
+@strong{MySQL} source tree.
@end enumerate
SCO development notes:
@@ -8186,16 +8254,19 @@ SCO development notes:
@item
@strong{MySQL} should automatically detect FSU Pthreads and link @code{mysqld}
with @code{-lgthreads -lsocket -lgthreads}.
+
@item
-The SCO development libraries are re-entrant in FSU Pthreads. SCO claims
+The SCO development libraries are re-entrant in FSU Pthreads. SCO claims
that its libraries' functions are re-entrant, so they must be reentrant with
-FSU Pthreads. FSU Pthreads on OpenServer tries to use the SCO scheme to
+FSU Pthreads. FSU Pthreads on OpenServer tries to use the SCO scheme to
make re-entrant libraries.
+
@item
-FSU Pthreads (at least the version at @uref{http://www.mysql.com/}) comes linked with
-GNU @code{malloc}. If you encounter problems with memory usage, make sure that
-@file{gmalloc.o}
-is included in @file{libgthreads.a} and @file{libgthreads.so}.
+FSU Pthreads (at least the version at @uref{http://www.mysql.com/}) comes
+linked with GNU @code{malloc}. If you encounter problems with memory usage,
+make sure that @file{gmalloc.o} is included in @file{libgthreads.a} and
+@file{libgthreads.so}.
+
@item
In FSU Pthreads, the following system calls are pthreads-aware: @code{read()},
@code{write()}, @code{getmsg()}, @code{connect()}, @code{accept()},
@@ -8253,7 +8324,7 @@ If you want to use @code{gcc}, you must use @code{gcc} 2.95.2 or newer.
Automatic detection of @code{xlC} is missing from Autoconf, so a
@code{configure} command something like this is needed when compiling
-@strong{MySQL} (The example uses the IBM compiler):
+@strong{MySQL} (This example uses the IBM compiler):
@example
export CC="xlc_r -ma -O3 -qstrict -qoptimize=3 -qmaxmem=8192 "
@@ -8273,7 +8344,7 @@ export CXXFLAGS=$CFLAGS
@end example
Above are the options used to compile the @strong{MySQL} distribution that
-can be found at @uref{http://www-frec.bull.com/, www-frec.bull.com}.
+can be found at @uref{http://www-frec.bull.com/}.
If you change the @code{-O3} to @code{-O2} in the above configure line,
you must also remove the @code{-qstrict} option (this is a limitation in
@@ -8295,16 +8366,16 @@ CXXFLAGS="-felide-constructors -fno-exceptions -fno-rtti" \
./configure --prefix=/usr/local/mysql --with-low-memory
@end example
-The @code{-Wa,-many} is necessary for the compile to be successful. IBM is
-aware of this problem but is in to hurry to fix it because of the
-workaround available. We don't know if the @code{-fno-exceptions} is required
-with @code{gcc 2.95}, but as @strong{MySQL} doesn't use exceptions and the
-above option generates faster code, we recommend that you should always use
-this option with @code{egcs / gcc}.
+The @code{-Wa,-many} is necessary for the compile to be successful. IBM is
+aware of this problem but is in to hurry to fix it because of the workaround
+available. We don't know if the @code{-fno-exceptions} is required with
+@code{gcc 2.95}, but as @strong{MySQL} doesn't use exceptions and the above
+option generates faster code, we recommend that you should always use this
+option with @code{egcs / gcc}.
If you have problems with signals (@strong{MySQL} dies unexpectedly
under high load) you may have found an OS bug with threads and
-signals. In this case you can tell @strong{MySQL} not to use signals by
+signals. In this case you can tell @strong{MySQL} not to use signals by
configuring with:
@example
@@ -8319,7 +8390,7 @@ effect that you can't kill clients that are ``sleeping'' on a connection with
will die when it issues its next command.
On some versions of AIX, linking with @code{libbind.a} makes
-@code{getservbyname} core dump. This is an AIX bug and should be reported
+@code{getservbyname} core dump. This is an AIX bug and should be reported
to IBM.
@node HP-UX 10.20, HP-UX 11.x, IBM-AIX, Source install system issues
@@ -8381,7 +8452,7 @@ In file included from item.h:306,
The problem is that HP-UX doesn't define @code{pthreads_atfork()} consistently.
It has conflicting prototypes in
@file{/usr/include/sys/unistd.h}:184 and
-@file{/usr/include/sys/pthread.h}:440 (I post the details below).
+@file{/usr/include/sys/pthread.h}:440 (details below).
One solution is to copy @file{/usr/include/sys/unistd.h} into
@file{mysql/include} and edit @file{unistd.h} and change it to match
@@ -8439,15 +8510,14 @@ Here is some information that a HPUX Version 11.x user sent us about compiling
@itemize @bullet
@item
-I had to use the compile-time flag @code{-D_REENTRANT} to get the
-compiler to recognize the prototype for
-@code{localtime_r}. Alternatively I could have supplied the prototype
-for @code{localtime_r}. But I wanted to catch other bugs without needing
-to run into them. I wasn't sure where I needed it, so I added it to all
-flags.
+I had to use the compile-time flag @code{-D_REENTRANT} to get the compiler
+to recognize the prototype for @code{localtime_r}. Alternatively I could have
+supplied the prototype for @code{localtime_r}. But I wanted to catch other
+bugs without needing to run into them. I wasn't sure where I needed it, so I
+added it to all flags.
@item
-The optimization flags used by @strong{MySQL} (-O3) are not recognized
-by HP's compilers. I did not change the flags.
+The optimization flags used by @strong{MySQL} (-O3) are not recognized by HP's
+compilers. I did not change the flags.
@end itemize
@node Mac OS X, BEOS, HP-UX 11.x, Source install system issues
@@ -8461,15 +8531,15 @@ by HP's compilers. I did not change the flags.
@node Mac OS X Public Data, Mac OS X Server, Mac OS X, Mac OS X
@subsubsection Mac OS X Public beta
-@strong{MySQL} should work without any problems on Mac OS X public beta.
-(Darwin); You don't need the pthread patches for this os!
+@strong{MySQL} should work without any problems on Mac OS X Public Beta
+(Darwin). You don't need the pthread patches for this OS!
@node Mac OS X Server, , Mac OS X Public Data, Mac OS X
@subsubsection Mac OS X Server
Before trying to configure @strong{MySQL} on Mac OS X server you must
first install the pthread package from
-@uref{http://www.prnet.de/RegEx/mysql.html}. Note that this is not needed
+@uref{http://www.prnet.de/RegEx/mysql.html}.
Our binary for Mac OS X is compiled on Rhapsody 5.5 with the following
configure line:
@@ -8490,8 +8560,8 @@ alias mysqladmin '/usr/local/mysql/bin/mysqladmin'
@subsection BeOS Notes
We are really interested in getting @strong{MySQL} to work on BeOS, but
-unfortunately we don't have any person who knows BeOS or has
-time to do a port.
+unfortunately we don't have any person who knows BeOS or has time to do
+a port.
We are interested in finding someone to do a port, and we will help them
with any technical questions they may have while doing the port.
@@ -8503,8 +8573,8 @@ in a while.
@node Windows, OS/2, Source install system issues, Installing
@section Windows Notes
-This section describes installation and use of @strong{MySQL} on Windows. This
-is also described in the @file{README} file that comes with the
+This section describes installation and use of @strong{MySQL} on Windows.
+This is also described in the @file{README} file that comes with the
@strong{MySQL} Windows distribution.
@menu
@@ -8555,14 +8625,14 @@ character in @strong{MySQL}. @xref{Option files}.
@strong{MySQL} uses TCP/IP to connect a client to a server. (This will
allow any machine on your network to connect to your @strong{MySQL}
-server.) Because of this, you must install TCP/IP on your machine before
+server.) Because of this, you must install TCP/IP on your machine before
starting @strong{MySQL}. You can find TCP/IP on your Windows CD-ROM.
Note that if you are using an old Win95 release (for example OSR2), it's
likely that you have an old Winsock package! @strong{MySQL} requires
-Winsock 2! You can get the newest Winsock from
-@uref{http://www.microsoft.com,Microsoft}. Win98 has as default the new
-Winsock 2 library, so the above doesn't apply for Win98.
+Winsock 2! You can get the newest Winsock from
+@uref{http://www.microsoft.com/}. Win98 has the new Winsock 2 library, so
+the above doesn't apply for Win98.
There are 2 different @strong{MySQL} servers you can use:
@@ -8599,7 +8669,7 @@ get some useful information on the screen that may help solve this.
The last option is to start @code{mysqld} with @code{--debug}. In this
case @code{mysqld} will write a log file in @file{\mysqld.trace}
that should contain the reason why @code{mysqld} doesn't start. If you
-make a bug report about this, please only send the lines to the mailing list
+make a bug report about this, please only send the lines to the mailing list
where something seems to go wrong!
@node NT start, Windows running, Win95 start, Windows
@@ -8639,9 +8709,9 @@ without options on NT, @code{mysqld-nt} tries to starts itself as a service
with the default service options. If you have stopped @code{mysqld-nt}, you
have to start it with @code{NET START mysql}.
-The service is installed with the name @code{MySql}. Once installed, it must
+The service is installed with the name @code{MySQL}. Once installed, it must
be started using the Services Control Manager (SCM) Utility (found in Control
-Panel) or by using the @code{NET START MySQL} command. If any options are
+Panel) or by using the @code{NET START MySQL} command. If any options are
desired, they must be specified as "Startup parameters" in the SCM utility
before you start the @strong{MySQL} service. Once running, @code{mysqld-nt}
can be stopped using @code{mysqladmin} or from the SCM utility or by using
@@ -8703,8 +8773,8 @@ which protocol is used:
@end multitable
You can force a @strong{MySQL} client to use named pipes by specifying the
-@code{--pipe} option or by specifying @code{.} as the host name.
- Use the @code{--socket} option to specify the name of the pipe.
+@code{--pipe} option or by specifying @code{.} as the host name. Use the
+@code{--socket} option to specify the name of the pipe.
You can test whether or not @strong{MySQL} is working by executing the
following commands:
@@ -8717,7 +8787,7 @@ C:\mysql\bin\mysql test
@end example
If @code{mysqld} is slow to answer to connections on Win95/Win98, there is
-probably a problem with your DNS. In this case, start @code{mysqld} with
+probably a problem with your DNS. In this case, start @code{mysqld} with
@code{--skip-name-resolve} and use only @code{localhost} and IP numbers in
the @strong{MySQL} grant tables. You can also avoid DNS when connecting to a
@code{mysqld-nt} @strong{MySQL} server running on NT by using the
@@ -8740,9 +8810,9 @@ should set a password for all users and remove the row in the
@code{mysql.user} table that has @code{Host='localhost'} and
@code{User=''}.
-You should also add a password for the @code{root} user.
-(The following example starts by removing the anonymous user, that allows
-anyone to access the 'test' database.):
+You should also add a password for the @code{root} user. (The following
+example starts by removing the anonymous user, that allows anyone to access
+the 'test' database.):
@example
C:\mysql\bin\mysql mysql
@@ -8770,6 +8840,7 @@ With the newer @strong{MySQL} versions you can easily add new users
and change privileges with @code{GRANT} and @code{REVOKE} commands.
@xref{GRANT}.
+@c FIX this is ugly, real ugly.
@cindex SSH
@cindex connecting, remotely with SSH
@node Windows and SSH, Windows symbolic links, Windows running, Windows
@@ -8781,14 +8852,16 @@ Here is a note about how to connect to get a secure connection to remote
@itemize @bullet
@item
Install an SSH client on your windows machine - As a user, the best non-free
-one I've found is from @code{secureCRT} from @uref{http://www.vandyke.com/}.
+one I've found is from @code{SecureCRT} from @uref{http://www.vandyke.com/}.
Another option is @code{f-secure} from @uref{http://www.f-secure.com/}. You
can also find some free ones on @strong{Google} at
@uref{http://directory.google.com/Top/Computers/Security/Products_and_Tools/Cryptography/SSH/Clients/Windows/}.
@item
-Start your windows SSH client. Set @code{Host_Name = yourmysqlserver_URL_or_IP}. Set
-@code{userid=your_userid} to log in to your server (probably not the same as your @strong{MySQL} login/ password.
+Start your windows SSH client.
+Set @code{Host_Name = yourmysqlserver_URL_or_IP}.
+Set @code{userid=your_userid} to log in to your server (probably not the same
+as your @strong{MySQL} login/password.
@item
Set up port forwarding. Either do a remote forward (Set @code{local_port: 3306}, @code{remote_host: yourmysqlservername_or_ip}, @code{remote_port: 3306} )
@@ -8823,9 +8896,9 @@ symbolic links works on Unix).
On windows you make a symbolic link to a database by creating a file
that contains the path to the destination directory and saving this in
-the @code{mysql_data} directory under the filename @code{database.sym}.
+the @file{mysql_data} directory under the filename @file{database.sym}.
Note that the symbolic link will only be used if the directory
-@code{mysql_data_dir\database} doesn't exist.
+@file{mysql_data_dir\database} doesn't exist.
For example, if you want to have database @code{foo} on @file{D:\data\foo}, you
should create the file @file{C:\mysql\data\foo.sym} that contains the
@@ -8882,7 +8955,7 @@ a new thread! WinNT and Win98 don't suffer from this bug.
@item Concurrent reads
@strong{MySQL} depends on the @code{pread()} and @code{pwrite()} calls to be
-able to mix @code{INSERT} and @code{SELECT}. Currently we use mutexes
+able to mix @code{INSERT} and @code{SELECT}. Currently we use mutexes
to emulate @code{pread()}/@code{pwrite()}. We will, in the long run,
replace the file level interface with a virtual interface so that we can
use the @code{readfile()}/@code{writefile()} interface on NT to get more speed.
@@ -8911,7 +8984,7 @@ If a connection hangs, it's impossible to break it without killing
connections.
@end itemize
-We plan to fix this when our windows developers have figured out a nice
+We plan to fix this when our Windows developers have figured out a nice
workaround for this.
@item UDF functions
@@ -8923,7 +8996,7 @@ You can't drop a database that is in use by some thread.
@item Killing @strong{MySQL} from the task manager
You can't kill @strong{MySQL} from the task manager or with the shutdown
-utility in Win95. You must take it down with @code{mysqladmin shutdown}.
+utility in Win95. You must take it down with @code{mysqladmin shutdown}.
@item Case-insensitive names
Filenames are case insensitive on Windows, so database and table names
@@ -8936,6 +9009,7 @@ Pathname components in Win95 are separated by the @samp{\} character, which is
also the escape character in @strong{MySQL}. If you are using @code{LOAD
DATA INFILE} or @code{SELECT ... INTO OUTFILE}, you must double the @samp{\}
character or use Unix style filenames @samp{/} characters:
+
@example
LOAD DATA INFILE "C:\\tmp\\skr.txt" INTO TABLE skr;
SELECT * INTO OUTFILE 'C:/tmp/skr.txt' FROM skr;
@@ -8950,10 +9024,10 @@ error 2017: can't open named pipe to host: . pipe...
@end example
@tindex .my.cnf file
-This is because the release version of @strong{MySQL} uses
-named pipes on NT by default. You can avoid this error by using the
-@code{--host=localhost} option to the new @strong{MySQL} clients
-or create a file @file{C:\my.cnf} that contains the following information:
+This is because the release version of @strong{MySQL} uses named pipes on NT
+by default. You can avoid this error by using the @code{--host=localhost}
+option to the new @strong{MySQL} clients or create a file @file{C:\my.cnf}
+that contains the following information:
@example
[client]
@@ -8975,16 +9049,16 @@ following information:
@item @code{ALTER TABLE}
While you are doing an @code{ALTER TABLE} the table is locked from usage
-by other threads. This has to do with the fact that you on Windows can't
-delete a file that is in use by another threads. (We may in the future
-find some way to go around this problem).
+by other threads. This has to do with the fact that you on Windows can't
+delete a file that is in use by another threads. (We may in the future
+find some way to go around this problem.)
@item @code{DROP TABLE} on a table that is in use by a @code{MERGE} table will not work.
The @code{MERGE} handler does it table mapping hidden from @strong{MySQL}.
-Because windows doesn't allow one to drop files that are open, you have
+Because Windows doesn't allow one to drop files that are open, you have
to first flush all @code{MERGE} tables (with @code{FLUSH TABLES}) or drop the
-@code{MERGE} table before drooping the table. We will fix this at
-the same time we introduce @code{VIEW}'s.
+@code{MERGE} table before droping the table. We will fix this at the same
+time we introduce @code{VIEW}s.
@end table
Here are some open issues for anyone who might want to help us with the Windows
@@ -9004,10 +9078,10 @@ Add some nice start and shutdown icons to the @strong{MySQL} installation.
@item
Create a tool to manage registry entries for the @strong{MySQL} startup
-options. The registry entry reading is already coded into @code{mysqld.cc},
-but it should be recoded to be more parameter oriented.
-The tool should also be able to update the @file{\my.cnf} file if the user
-prefers to use this instead of the registry.
+options. The registry entry reading is already coded into @file{mysqld.cc},
+but it should be recoded to be more parameter oriented. The tool should
+also be able to update the @file{\my.cnf} file if the user prefers to use
+this instead of the registry.
@item
When registering @code{mysqld} as a service with @code{--install} (on NT)
@@ -9016,13 +9090,13 @@ For the moment, the workaround is to update the @file{C:\my.cnf} file
instead.
@item
-When you suspend a laptop running Win95, the @code{mysqld}
-daemon doesn't accept new connections when the laptop is resumed.
-We don't know if this is a problem with Win95, TCP/IP, or @strong{MySQL}.
+When you suspend a laptop running Win95, the @code{mysqld} daemon doesn't
+accept new connections when the laptop is resumed. We don't know if this
+is a problem with Win95, TCP/IP, or @strong{MySQL}.
@item
-It would be real nice to be able to kill @code{mysqld} from the
-task manager. For the moment, you must use @code{mysqladmin shutdown}.
+It would be real nice to be able to kill @code{mysqld} from the task manager.
+For the moment, you must use @code{mysqladmin shutdown}.
@item
Port @code{readline} to Windows for use in the @code{mysql} command line tool.
@@ -9032,14 +9106,13 @@ GUI versions of the standard @strong{MySQL} clients (@code{mysql},
@code{mysqlshow}, @code{mysqladmin}, and @code{mysqldump}) would be nice.
@item
-It would be nice if the socket read and write functions in
-@file{net.c} were interruptible. This would make it possible to kill open
-threads with @code{mysqladmin kill} on Windows.
+It would be nice if the socket read and write functions in @file{net.c} were
+interruptible. This would make it possible to kill open threads with
+@code{mysqladmin kill} on Windows.
@item
-Documentation of which Windows programs work with
-@strong{MySQL}-Windows/@strong{MyODBC} and what must be done to get them
-working.
+Documentation of which Windows programs work with @strong{MySQL}-Windows or
+@strong{MyODBC} and what must be done to get them working.
@item
@code{mysqld} always starts in the "C" locale and not in the default locale.
@@ -9060,8 +9133,8 @@ comes with the @strong{MySQL}-Windows distribution.
@node OS/2, MySQL binaries, Windows, Installing
@section OS/2 Notes
-@strong{MySQL} uses quite a few open files. Because of this, you
-should add something like the following to your @file{CONFIG.SYS} file:
+@strong{MySQL} uses quite a few open files. Because of this, you should add
+something like the following to your @file{CONFIG.SYS} file:
@example
SET EMXOPT=-c -n -h1024
@@ -9081,7 +9154,7 @@ in a partition that supports long filenames such as HPFS, FAT32, etc.
The @file{INSTALL.CMD} script must be run from OS/2's own @file{CMD.EXE}
and may not work with replacement shells such as @file{4OS2.EXE}.
-The @file{scripts/mysql-install-db} script has been renamed. It is now called
+The @file{scripts/mysql-install-db} script has been renamed. It is now called
@file{install.cmd} and is a REXX script, which will set up the default
@strong{MySQL} security settings and create the WorkPlace Shell icons
for @strong{MySQL}.
@@ -9122,9 +9195,8 @@ As a service, we at @strong{MySQL AB} provide a set of binary distributions
of @strong{MySQL} that are compiled at our site or at sites where customers
kindly have given us access to their machines.
-These distributions are generated with
-@code{scripts/make_binary_distribution} and are configured with the
-following compilers and options:
+These distributions are generated with @code{scripts/make_binary_distribution}
+and are configured with the following compilers and options:
@table @asis
@item SunOS 4.1.4 2 sun4c with @code{gcc} 2.7.2.1
@@ -9260,7 +9332,7 @@ shell> scripts/mysql_install_db
Typically, @code{mysql_install_db} needs to be run only the first time you
install @strong{MySQL}. Therefore, if you are upgrading an existing
-installation, you can skip this step. (However, @code{mysql_install_db} is
+installation, you can skip this step. (However, @code{mysql_install_db} is
quite safe to use and will not update any tables that already exist, so if
you are unsure of what to do, you can always run @code{mysql_install_db}.)
@@ -9298,12 +9370,12 @@ script as it is provided in the @strong{MySQL} distribution:
@itemize @bullet
@item
-You may want to edit @code{mysql_install_db} before running it, to
-change the initial privileges that are installed into the grant tables.
-This is useful if you want to install @strong{MySQL} on a lot of machines
-with the same privileges. In this case you probably should need only to add
-a few extra @code{INSERT} statements to the @code{mysql.user} and
-@code{mysql.db} tables!
+You may want to edit @code{mysql_install_db} before running it, to change
+the initial privileges that are installed into the grant tables. This is
+useful if you want to install @strong{MySQL} on a lot of machines with the
+same privileges. In this case you probably should need only to add a few
+extra @code{INSERT} statements to the @code{mysql.user} and @code{mysql.db}
+tables!
@item
If you want to change things in the grant tables after installing them, you
@@ -9322,10 +9394,12 @@ For more information about these alternatives, see @ref{Default privileges}.
@item
Start the @strong{MySQL} server like this:
+
@example
shell> cd mysql_installation_directory
shell> bin/safe_mysqld &
@end example
+
If you have problems starting the server, see @ref{Starting server}.
@item
@@ -9422,7 +9496,7 @@ shell> BINDIR/mysql -e "select host,db,user from db" mysql
There is also a benchmark suite in the @file{sql-bench} directory (under the
@strong{MySQL} installation directory) that you can use to compare how
-@strong{MySQL} performs on different platforms. The @file{sql-bench/Results}
+@strong{MySQL} performs on different platforms. The @file{sql-bench/Results}
directory contains the results from many runs against different databases and
platforms. To run all tests, execute these commands:
@@ -9433,7 +9507,7 @@ shell> run-all-tests
If you don't have the @file{sql-bench} directory, you are probably using an
RPM for a binary distribution. (Source distribution RPMs include the
-benchmark directory.) In this case, you must first install the benchmark
+benchmark directory.) In this case, you must first install the benchmark
suite before you can use it. Beginning with @strong{MySQL} Version 3.22,
there are benchmark RPM files named @file{mysql-bench-VERSION-i386.rpm} that
contain benchmark code and data.
@@ -9454,7 +9528,6 @@ The expected results are shown in the @file{./tests/auto_increment.res} file.
@cindex @code{mysql_install_db} script
@cindex scripts, @code{mysql_install_db}
-
The purpose of the @code{mysql_install_db} script is to generate new
@strong{MySQL} privilege tables. It will not affect any other data!
It will also not do anything if you already have @strong{MySQL} privilege
@@ -9544,8 +9617,8 @@ shell> BINDIR/safe_mysqld &
If you are running RedHat Version 5.0 with a version of @code{glibc} older than
2.0.7-5, you should make sure you have installed all @code{glibc} patches!
There is a lot of information about this in the @strong{MySQL} mail
-archives. Links to the mail archives are available at the online
-@uref{http://www.mysql.com/documentation/, @strong{MySQL} documentation page}.
+archives. Links to the mail archives are available online at
+@uref{http://www.mysql.com/documentation/}.
Also, see @ref{Linux}.
You can also start @code{mysqld} manually using the @code{--skip-grant-tables}
@@ -9574,9 +9647,11 @@ Generally, you start the @code{mysqld} server in one of three ways:
By invoking @code{mysql.server}. This script is used primarily at
system startup and shutdown, and is described more fully in
@ref{Automatic start}.
+
@item
By invoking @code{safe_mysqld}, which tries to determine the proper options
for @code{mysqld} and then runs it with those options. @xref{safe_mysqld}.
+
@item
On NT you should install @code{mysqld} as a service as follows:
@example
@@ -9595,6 +9670,7 @@ You can remove the service as follows:
@example
bin\mysqld-nt --remove # remove MySQL as a service
@end example
+
@item
By invoking @code{mysqld} directly.
@end itemize
@@ -9647,7 +9723,7 @@ If you find something like the following in the log file:
000729 14:50:10 Can't init databases
@end example
-this means that you didn't started mysqld with @code{--bdb-no-recover}
+This means that you didn't start mysqld with @code{--bdb-no-recover}
and Berkeley DB found something wrong with its log files when it
tried to recover your databases. To be able to continue, you should
move away the old Berkeley DB log file from the database directory to
@@ -9709,16 +9785,16 @@ C:\mysql\bin\mysqld --standalone --debug
This will not run in the background and it should also write a trace in
@file{\mysqld.trace}, which may help you determine the source of your
-problems. @xref{Windows}.
+problems. @xref{Windows}.
If you are using BDB (Berkeley DB) tables, you should familiarize
-yourself with the different BDB specific startup options. @xref{BDB start}.
+yourself with the different BDB specific startup options. @xref{BDB start}.
If you are using Gemini tables, refer to the Gemini-specific startup options.
@xref{GEMINI start}.
If you are using Innobase tables, refer to the Innobase-specific startup
-options. @xref{INNOBASE start}.
+options. @xref{INNOBASE start}.
@node Automatic start, Command-line options, Starting server, Post-installation
@subsection Starting and Stopping MySQL Automatically
@@ -9739,14 +9815,13 @@ under the @strong{MySQL} installation directory or in the @file{support-files}
directory of the @strong{MySQL} source tree.
Before @code{mysql.server} starts the server, it changes directory to
-the @strong{MySQL} installation directory, then invokes
-@code{safe_mysqld}. You might need to edit @code{mysql.server} if you
-have a binary distribution that you've installed in a non-standard
-location. Modify it to @code{cd} into the proper directory before it
-runs @code{safe_mysqld}. If you want the server to run as some specific
-user, you can change the @code{mysql_daemon_user=root} line to use
-another user. You can also modify @code{mysql.server} to pass other
-options to @code{safe_mysqld}.
+the @strong{MySQL} installation directory, then invokes @code{safe_mysqld}.
+You might need to edit @code{mysql.server} if you have a binary distribution
+that you've installed in a non-standard location. Modify it to @code{cd}
+into the proper directory before it runs @code{safe_mysqld}. If you want the
+server to run as some specific user, you can change the
+@code{mysql_daemon_user=root} line to use another user. You can also modify
+@code{mysql.server} to pass other options to @code{safe_mysqld}.
@code{mysql.server stop} brings down the server by sending a signal to it.
You can take down the server manually by executing @code{mysqladmin shutdown}.
@@ -9802,18 +9877,17 @@ uses:
@code{mysqld} accepts the following command-line options:
@table @code
-
@item --ansi
-Use ANSI SQL syntax instead of MySQL syntax. @xref{ANSI mode}.
+Use ANSI SQL syntax instead of MySQL syntax. @xref{ANSI mode}.
@item -b, --basedir=path
-Path to installation directory. All paths are
-usually resolved relative to this.
+Path to installation directory. All paths are usually resolved relative to
+this.
@item --big-tables
-Allow big result sets by saving all temporary sets on file. It solves
+Allow big result sets by saving all temporary sets on file. It solves
most 'table full' errors, but also slows down the queries where
-in-memory tables would suffice. Since Version 3.23.2, @strong{MySQL} is
+in-memory tables would suffice. Since Version 3.23.2, @strong{MySQL} is
able to solve it automatically by using memory for small temporary
tables and switching to disk tables where necessary.
@@ -9821,26 +9895,26 @@ tables and switching to disk tables where necessary.
IP address to bind to.
@item --character-sets-dir=path
-Directory where character sets are. @xref{Character sets}.
+Directory where character sets are. @xref{Character sets}.
@item --chroot=path
-Chroot mysqld daemon during startup.
-Recommended security measure. It will somewhat limit @code{LOAD DATA INFILE}
-and @code{SELECT ... INTO OUTFILE} though.
+Chroot mysqld daemon during startup. Recommended security measure. It will
+somewhat limit @code{LOAD DATA INFILE} and @code{SELECT ... INTO OUTFILE}
+though.
@item -h, --datadir=path
Path to the database root.
@item --default-character-set=charset
-Set the default character set. @xref{Character sets}.
+Set the default character set. @xref{Character sets}.
@item --default-table-type=type
-Set the default table type for tables. @xref{Table types}.
+Set the default table type for tables. @xref{Table types}.
@item --debug[...]=
-If @strong{MySQL} is configured with @code{--with-debug}, you can use
-this option to get a trace file of what @code{mysqld} is
-doing. @xref{The DBUG package}.
+If @strong{MySQL} is configured with @code{--with-debug}, you can use this
+option to get a trace file of what @code{mysqld} is doing.
+@xref{The DBUG package}.
@item --delay-key-write-for-all-tables
Don't flush key buffers between writes for any @code{MyISAM} table.
@@ -9869,7 +9943,7 @@ Display short help and exit.
Read SQL commands from this file at startup.
@item -L, --language=...
-Client error messages in given language. May be given as a full path.
+Client error messages in given language. May be given as a full path.
@xref{Languages}.
@item -l, --log[=file]
@@ -9880,7 +9954,7 @@ Log all ISAM/MyISAM changes to file (only used when debugging ISAM/MyISAM).
@item --log-slow-queries[=file]
Log all queries that have taken more than @code{long_query_time} seconds to
-execute to file. @xref{Slow query log}.
+execute to file. @xref{Slow query log}.
@item --log-update[=file]
Log updates to @code{file.#} where @code{#} is a unique number if not given.
@@ -9893,12 +9967,11 @@ to the slow query log.
@item --low-priority-updates
Table-modifying operations (@code{INSERT}/@code{DELETE}/@code{UPDATE})
-will have lower priority than selects.
-It can also be done via @code{@{INSERT | REPLACE | UPDATE | DELETE@}
-LOW_PRIORITY ...} to lower the priority of only one query, or by
-@code{SET OPTION SQL_LOW_PRIORITY_UPDATES=1} to change the
-priority in one thread.
-@xref{Table locking}.
+will have lower priority than selects. It can also be done via
+@code{@{INSERT | REPLACE | UPDATE | DELETE@} LOW_PRIORITY ...} to lower
+the priority of only one query, or by
+@code{SET OPTION SQL_LOW_PRIORITY_UPDATES=1} to change the priority in one
+thread. @xref{Table locking}.
@item --memlock
Lock the @code{mysqld} process in memory. This works only if your system
@@ -9907,22 +9980,27 @@ a problem where the operating system is causing @code{mysqld} to swap on disk.
@item --myisam-recover [=option[,option...]]] where option is one of DEFAULT, BACKUP, FORCE or QUICK.
If this option is used, @code{mysqld} will on open check if the table is
-marked as crashed or if if the table wasn't closed properly
-(The last option only works if you are running with @code{--skip-locking}).
-If this is the case mysqld will run check on the table. If the table was
-corrupted, @code{mysqld} will attempt to repair it.
+marked as crashed or if if the table wasn't closed properly. (The last
+option only works if you are running with @code{--skip-locking}). If this
+is the case mysqld will run check on the table. If the table was corrupted,
+@code{mysqld} will attempt to repair it.
The following options affects how the repair works.
@multitable @columnfractions .3 .7
-@item DEFAULT @tab The same as not giving any option to @code{--myisam-recover}.
-@item BACKUP @tab If the data table was changed during recover, save a backup of the @file{table_name.MYD} data file as @file{table_name-datetime.BAK}.
-@item FORCE @tab Run recover even if we will loose more than one row from the .MYD file.
-@item QUICK @tab Don't check the rows in the table if there isn't any delete blocks.
+@item DEFAULT @tab The same as not giving any option to
+ @code{--myisam-recover}.
+@item BACKUP @tab If the data table was changed during recover, save a
+ backup of the @file{table_name.MYD} data file as
+ @file{table_name-datetime.BAK}.
+@item FORCE @tab Run recover even if we will loose more than one row
+ from the .MYD file.
+@item QUICK @tab Don't check the rows in the table if there isn't any
+ delete blocks.
@end multitable
-Before a table is automatically repaired, mysqld will add a note about
-this in the error log. If you want to be able to recover from most
+Before a table is automatically repaired, @strong{MySQL} will add a note
+about this in the error log. If you want to be able to recover from most
things without user intervention, you should use the options
@code{BACKUP,FORCE}. This will force a repair of a table even if some rows
would be deleted, but it will keep the old data file as a backup so that
@@ -9939,84 +10017,77 @@ Use the 3.20 protocol for compatibility with some very old clients.
@xref{Upgrading-from-3.20}.
@item --one-thread
-Only use one thread (for debugging under Linux). @xref{Debugging server}.
+Only use one thread (for debugging under Linux). @xref{Debugging server}.
@item -O, --set-variable var=option
-Give a variable a value. @code{--help} lists variables.
-You can find a full description for all variables in the @code{SHOW VARIABLES}
-section in this manual. @xref{SHOW VARIABLES}.
-The tuning server parameters section includes information of how to optimize
-these. @xref{Server parameters}.
+Give a variable a value. @code{--help} lists variables. You can find a full
+description for all variables in the @code{SHOW VARIABLES} section in this
+manual. @xref{SHOW VARIABLES}. The tuning server parameters section includes
+information of how to optimize these. @xref{Server parameters}.
@item --safe-mode
-Skip some optimize stages.
-Implies @code{--skip-delay-key-write}.
+Skip some optimize stages. Implies @code{--skip-delay-key-write}.
@item --safe-show-database
Don't show databases for which the user doesn't have any privileges.
@item --secure
IP numbers returned by the @code{gethostbyname()} system call are
-checked to make sure they resolve back to the original hostname. This
+checked to make sure they resolve back to the original hostname. This
makes it harder for someone on the outside to get access by pretending
-to be another host. This option also adds some sanity checks of
-hostnames. The option is turned off by default in @strong{MySQL} Version 3.21
+to be another host. This option also adds some sanity checks of
+hostnames. The option is turned off by default in @strong{MySQL} Version 3.21
because sometimes it takes a long time to perform backward resolutions.
@strong{MySQL} Version 3.22 caches hostnames (unless @code{--skip-host-cache}
is used) and has this option enabled by default.
@item --skip-concurrent-insert
Turn off the ability to select and insert at the same time on @code{MyISAM}
-tables. (This is only to be used if you think you have found a bug
-in this feature).
+tables. (This is only to be used if you think you have found a bug in this
+feature).
@item --skip-delay-key-write
Ignore the @code{delay_key_write} option for all tables.
@xref{Server parameters}.
@item -Sg, --skip-grant-tables
-This option causes the server not to use the privilege system at all. This
+This option causes the server not to use the privilege system at all. This
gives everyone @emph{full access} to all databases! (You can tell a running
server to start using the grant tables again by executing @code{mysqladmin
flush-privileges} or @code{mysqladmin reload}.)
@item --skip-locking
-Don't use system locking. To use @code{isamchk} or @code{myisamchk} you must
-shut down the server. @xref{Stability}. Note that in @strong{MySQL} Version
+Don't use system locking. To use @code{isamchk} or @code{myisamchk} you must
+shut down the server. @xref{Stability}. Note that in @strong{MySQL} Version
3.23 you can use @code{REPAIR} and @code{CHECK} to repair/check @code{MyISAM}
tables.
@item --skip-name-resolve
-Hostnames are not resolved. All @code{Host} column values in the grant
-tables must be IP numbers or @code{localhost}. @xref{DNS}.
+Hostnames are not resolved. All @code{Host} column values in the grant tables
+must be IP numbers or @code{localhost}. @xref{DNS}.
@item --skip-networking
-Don't listen for TCP/IP connections at all.
-All interaction with @code{mysqld} must be made via Unix sockets.
-This option is highly recommended for systems where only local requests
-are allowed. @xref{DNS}.
+Don't listen for TCP/IP connections at all. All interaction with
+@code{mysqld} must be made via Unix sockets. This option is highly
+recommended for systems where only local requests are allowed. @xref{DNS}.
@item --skip-host-cache
-Never use host name cache for faster name-ip resolution, but query
-DNS server on every connect instead. @xref{DNS}.
+Never use host name cache for faster name-ip resolution, but query DNS server
+on every connect instead. @xref{DNS}.
@item --skip-new
-Don't use new, possible wrong routines.
-Implies @code{--skip-delay-key-write}.
-This will also set default table type to @code{ISAM}. @xref{ISAM}.
+Don't use new, possible wrong routines. Implies @code{--skip-delay-key-write}.
+This will also set default table type to @code{ISAM}. @xref{ISAM}.
@item --skip-safemalloc
-If @strong{MySQL} is configured with @code{--with-debug=full}, all
-programs will check the memory for overruns for every memory allocation /
-memory freeing. As this checking is very slow, you can avoid this,
-when you don't need memory checking, by using this option.
-
-this option to get a trace file of what @code{mysqld} is
-doing. @xref{The DBUG package}.
+If @strong{MySQL} is configured with @code{--with-debug=full}, all programs
+will check the memory for overruns for every memory allocation and memory
+freeing. As this checking is very slow, you can avoid this, when you don't
+need memory checking, by using this option.
@item --skip-show-database
-Don't allow 'SHOW DATABASE' commands, unless the user has
-@strong{process} privilege.
+Don't allow 'SHOW DATABASE' commands, unless the user has @strong{process}
+privilege.
@item --skip-thread-priority
Disable using thread priorities for faster response time.
@@ -10026,14 +10097,14 @@ Socket file to use for local connections instead of default
@code{/tmp/mysql.sock}.
@item transaction-isolation= @{ READ-UNCOMMITTED | READ-COMMITTED | REPEATABLE-READ | SERIALIZABLE @}
-Sets the default transaction isolation level. @xref{SET TRANSACTION}.
+Sets the default transaction isolation level. @xref{SET TRANSACTION}.
@item -t, --tmpdir=path
Path for temporary files. It may be useful if your default @code{/tmp}
directory resides on a partition too small to hold temporary tables.
@item -u, --user=user_name
-Run @code{mysqld} daemon as user @code{user_name}. This option is
+Run @code{mysqld} daemon as user @code{user_name}. This option is
@emph{mandatory} when starting @code{mysqld} as root.
@item -V, --version
@@ -10048,7 +10119,7 @@ Output version information and exit.
@node Option files, , Command-line options, Post-installation
@subsection Option Files
-@strong{MySQL} Version 3.22 can read default startup options for the
+@strong{MySQL} can, since Version 3.22, read default startup options for the
server and for clients from option files.
@strong{MySQL} reads default options from the following files on Unix: